页次: 1
static void test_spi(void)
{
#define TEST_SPI_NAME "spi10"
struct rt_spi_device *spi_dev_test = RT_NULL;
struct rt_spi_message msg1;
struct rt_spi_configuration cfg;
//rt_uint8_t msg = 0x0a;
spi_dev_test = (struct rt_spi_device *)rt_device_find(TEST_SPI_NAME);
if(spi_dev_test == RT_NULL)
{
rt_kprintf("test spi error\n");
return;
}
cfg.data_width = 8;
cfg.mode = RT_SPI_MODE_0 | RT_SPI_MSB; /* SPI Compatible Modes 0 and 3 */
cfg.max_hz = 500000; /* Atmel RapidS Serial Interface: 66MHz Maximum Clock Frequency */
rt_spi_configure(spi_dev_test, &cfg);
msg1.send_buf = "lmnb66";
msg1.recv_buf = RT_NULL;
msg1.length = 6;
msg1.cs_take = 1;
msg1.cs_release = 1;
msg1.next = RT_NULL;
rt_kprintf("test spi\n");
rt_spi_transfer_message(spi_dev_test, &msg1);
}
我放歌是正常的,那个数据格式改成16bit了,效果好像好了点但只限热血格斗,超级玛丽还会声音滞后,太难了
//16bit PCM 数据
if(0 > snd_pcm_hw_params_set_format(playback_handle, hw_params, SND_PCM_FORMAT_U16_LE))
{
printf("snd_pcm_hw_params_set_format err\n");
return -1;
}
//单声道 非立体声
if(0 > snd_pcm_hw_params_set_channels(playback_handle, hw_params, 1))
{
printf("snd_pcm_hw_params_set_channels err\n");
return -1;
}
void nes_apu_fill_buffer(int samples,u16* wavebuf)
{
//audio_pcm_play((unsigned char*)wavebuf,APU_PCMBUF_SIZE*2);
#if 1
int ret;
ret = snd_pcm_writei(playback_handle, (u8*)wavebuf, samples);
#endif
}
# mpv --vo=gpu --gpu-context=drm kun.mp4
Error parsing option gpu-context (option parameter could not be parsed)
Setting commandline option --gpu-context=drm failed.
Exiting... (Fatal error)
# mpv --vo=gpu --gpu-api=opengl kun.mp4
Error parsing option gpu-api (option parameter could not be parsed)
Setting commandline option --gpu-api=opengl failed.
Exiting... (Fatal error)
# mpv --vo=gpu --gpu-api=vulkan kun.mp4
Error parsing option gpu-api (option parameter could not be parsed)
Setting commandline option --gpu-api=vulkan failed.
Exiting... (Fatal error)
# mpv --vo=gpu --gpu-api=help kun.mp4
GPU APIs (contexts):
auto (autodetect)
@晕哥
我靠不用2024的也行,我的是2017.8的,原来是我选漏了,下面这样就可以了
自动编译确实好→ Target packages → Libraries → Database [*] mysql support mysql variant (oracle mysql) ---> [*] oracle mysql server
然后在开发板里面复制/usr/share/mysql/my-small.cnf到/etc/my.cnf下面
cp /usr/share/mysql/my-small.cnf /etc/my.cnf
再在my.cnf里面加点东西,我是在[mysqldump]前面加的
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/run/mysql/mysqld.pid
reboot之后自己就启动了
================================
这里是手动编译的,自动编译看4,5楼
================================
下载ncurses5.6,解压,进入到目录
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
tar zxvf ncurses-5.6.tar.gz
cd ncurses-5.6.tar.gz
切换到root用户
su
配置,这里的-host是我交叉编译工具的前缀,按实际情况改
./configure -host=arm-buildroot-linux-gnueabi -prefix=/ -enable-static
开始编译,安装
make -j2
make install DESTDIR=$PWD/tmp
用这条命令看一下交叉编译工具搜索的文件和库路径在哪
echo 'main(){}'|arm-buildroot-linux-gnueabi-gcc -E -v -
可以看到头文件和库目录的路径分别在这里
然后进入安装的tmp目录下分别把include下的文件放到上面的头文件路径,lib下单文件放到库路径并且保持链接
cd tmp
cp -rf include/* /home/lmnb/f1c100s/buildroot-2017.08/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/include
cp -rfd lib/* /home/lmnb/f1c100s/buildroot-2017.08/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/
可以退出root了。
=========================================================
开始移植MySQL5.1.73
在阿里云上下载mysql5.1.73源码包https://mirrors.aliyun.com/mysql/MySQL-5.1/
一直往下拉,找到这两个的任意一个下载
然后开始解压
unzip mysql-5.1.73.zip
这里复制两份一份命名为pc-mysql-5.1.73,另一份命名为arm-mysql-5.1.73,随便取都可以区分开就行
cp mysql-5.1.73 pc-mysql-5.1.73
mv mysql-5.1.73 arm-mysql-5.1.73
先进入到pc-mysql-5.1.73目录里面,然后配置,注意了这里应该是不用root的,然后直接编译就好了不用安装
cd pc-mysql-5.1.73/
./configure -prefix=/usr
make -j2
然后进入arm-mysql-5.1.73目录,这里先不要配置,改一下配置文件
cd arm-mysql-5.1.73/
vim configure
找到这4处注释掉,大概位置在26303,48121,48227,48440
注释后还要加上后面那句
{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
{ { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling
See \`config.log' for more details." >&5
$as_echo "$as_me: error: cannot run test program while cross compiling
See \`config.log' for more details." >&2;}
{ (exit 1); exit 1; }; }; }
echo "skip....!"
# { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
#$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
#{ { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling
#See \`config.log' for more details." >&5
#$as_echo "$as_me: error: cannot run test program while cross compiling
#See \`config.log' for more details." >&2;}
# { (exit 1); exit 1; }; }; }
ok,开始配置
./configure --host=arm-buildroot-linux-gnueabi --enable-static --prefix=/usr --without-debug --without-docs --without-man --without-bench --with-charset=gb2312 --with-extra-charsets=ascii,latin1,utf8
然后删掉Makefile里面do_abi_check:后面的内容,注意是有tab后的
可以编译了,但是会报错,注意要先编译等报错了再处理后面的操作
make -j2
报错内容
./gen_lex_hash > lex_hash.h-t
解决办法,把pc-mysql-5.1.73/sql/gen_lex_hash复制到当前目录下的sql目录里
cp ../pc-mysql-5.1.73/sql/gen_lex_hash
touch -m sql/gen_lex_hash
又可以愉快的编译和安装了
make
make install DESTDIR=$PWD/tmp
也一样又进入tmp/usr目录复制include目录下的内容和lib/mysql/下的内容到交叉编译的环境中
然后就是把tmp目录下的内容拷贝到开发板了,先随便放,我这里放/root
==========================================================
到操作开发板了,我自己画的板,可以连wifi
同样的操作,复制bin,复制保持连接lib,复制sheare,复制libexec
cd tmp/usr/
cp -rf bin/* /usr/bin
cp -rfd lib/mysql/* /usr/lib
cp -rf libexec/* /usr/libexec/
cp -rf share/mysql /usr/share/
进入/etc目录,创建my.cnf文件复制如下代码到my.cnf里
cd /etc
vi my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
datadir=/usr/var/data
socket=/tmp/mysql.sock
user=root
old_passwords=1
skip-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/lib/mysqld/mysqld.pid
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
创建这几个目录和文件
mkdir -p /var/lib/mysqld/
mkdir -p /var/log/
touch /var/lib/mysqld/mysqld.pid
mkdir -p /usr/var/data/
安装mysql,启动
mysql_install_db -u root
mysqld_safe --user=root --skip-grant-tables --skip-networking &
没问题,可以操作数据库了
设置开机启动,回到刚才那个目录,复制这个脚本,Sxx随便取
cd /root/tmp/usr
cp share/mysql/mysql.server /etc/init.d/S90mysqld
cd /etc/init.d/
先改一下内容再操作,到69行改为跟my.cnf里一样的路径, datadir=/usr/var/data
然后保存要先启动一下再改其他内容
./S90mysqld start
应该是可以的不过会出现什么hostname找不到的情况
再进去改59和60行
pid_file=/var/lib/mysqld/mysqld.pid
server_pid_file=/var/lib/mysqld/mysqld.pid
到这里应该就没什么问题了先reboot。
上电就可以看到mysql启动了
连上wife,小试一下牛刀
mysql -h 192.168.43.198 -P 3306 -u lmnb -p
show databases;
哟吼,毕设要采集的数据可以用数据库来管理了
不错不错,查一下表看看
===================================================================
网上找了个C语言操作的方法
/*************************************************************************
> File Name: connect.c
> Author: 杨永利
> Mail: 1795018360@qq.com
> Created Time: 2020年08月14日 星期五 20时39分56秒
************************************************************************/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
// 定义连接时所需要的数据宏
#define HOST "192.168.43.198" // 所连数据库的ip 127.0.0.1是本机ip
#define USER "lmnb" // 数据库用户
#define PASSWORD "123456" // 该用户密码(自设)
#define DBNAME "szjcxt" // 要操作的数据库名
// 打印结果集函数
void show_result(MYSQL_RES * result)
{
//打印表头
unsigned int num_fields;
unsigned int i;
// MYSQL_FIELD 该结构包含关于字段的信息,如字段名、类型和大小
MYSQL_FIELD *fields;
// 返回结果集中的行数。
num_fields = mysql_num_fields(result);
// mysql_fetch_fields 对于结果集,返回所有MYSQL_FIELD结构的数组。每个结构提供了结果集中1列的字段定义。
fields = mysql_fetch_fields(result);
// 输出结果
for(i = 0; i < num_fields; i++)
{
printf("%s\t", fields[i].name);
}
// 这个输出是打造表的结构边框便于查看数据,准确的输出按照你的数据自行增加减去+号
printf("\n+----+-------+\n");
// 行数
MYSQL_ROW row;
num_fields = mysql_num_fields(result);//取字段个数
while ((row = mysql_fetch_row(result)))//循环取一行
{
for(i = 0; i < num_fields; i++)
{
// 看是否为空
printf("%s\t", row[i] ? row[i] : "NULL");
}
printf("\n");
}
}
int main(int argc, char* argv[])
{
// 定义mysql指针并初始化
MYSQL *mysql=mysql_init(NULL);
if(mysql== NULL)
{
printf("init err! 数据库初始化错误!\n");
return -1;
}
// 初始化成功就连接数据库
mysql = mysql_real_connect(mysql,HOST,USER,PASSWORD,DBNAME,0,NULL,0);
if(mysql == NULL)
{
printf("connect err! 数据库连接失败! \n");
return -1;
}
printf("数据库连接成功!\n");
// 定义查询语句
char rSql[256]={0};
// 我的表名为example
strcpy(rSql,"select * from users");
// 查询指向的SQL查询
if(mysql_query(mysql,rSql) != 0){
printf("mysql_query err! 查询失败\n");
exit(1);
}
// 取回结果集
int i=0;
// mysql_store_result()将查询的全部结果读取到客户端,分配1个MYSQL_RES结构,并将结果置于该结构中。
MYSQL_RES * result = mysql_store_result(mysql);
MYSQL_ROW row;
if(result != NULL){
//需要打印结果集
show_result(result);
mysql_free_result(result);//释放结果集
}
// 最后关闭连接
mysql_close(mysql);
printf("数据库关闭成功!\n");
return 0;
}
编译选择手动连接库
arm-buildroot-linux-gnueabi-gcc -o select select.c -lmysqlclient
============================================================
参考链接:
https://blog.csdn.net/wangn222/article/details/71624492
https://blog.csdn.net/weixin_39887748/article/details/111676316
https://bbs.elecfans.com/jishu_910286_1_1.html
https://blog.csdn.net/weixin_45525272/article/details/108014858
dtsi
i2c0: i2c@1c27000 {
compatible = "allwinner,sun6i-a31-i2c";
reg = <0x01c27000 0x400>;
interrupts = <7>;
clocks = <&ccu CLK_BUS_I2C0>;
resets = <&ccu RST_BUS_I2C0>;
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>;
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
dts
&i2c0 {
status = "okay";
tsc2007@48 {
compatible = "ti,tsc2007";
reg = <0x48>;
interrupt-parent = <&pio>;
interrupts = <4 10 0x2>;
gpios = <&pio 4 10 GPIO_ACTIVE_LOW>;
pendown-gpio = <&pio 4 10 GPIO_ACTIVE_LOW>;
ti,x-plate-ohms = <660>;
wakeup-source;
status = "okay";
};
};
用了这个命令ts_test发现一直在打印数据,而且那个点也一直在lcd左上角动,然后使用cat /proc/interrupts命令发现居然一直在中断
[root@lmnb:~]$ cat /proc/interrupts
CPU0
16: 12129 sun4i_irq 13 Edge timer@1c20c00
17: 298 sun4i_irq 29 Edge 1c0c000.lcd-controller
18: 0 sun4i_irq 18 Edge 1c02000.dma-controller
20: 0 sun4i_irq 10 Edge sun6i-spi
21: 0 sun4i_irq 11 Edge sun6i-spi
22: 298480 sun4i_irq 7 Edge mv64xxx_i2c
26: 3159 sun4i_irq 23 Edge sunxi-mmc
27: 12897 sun4i_irq 1 Edge ttyS0
28: 0 sun4i_irq 26 Edge musb-hdrc.1.auto
64: 1 sunxi_pio_edge 34 Edge usb0-id-det
72: 17059 sunxi_pio_edge 42 Edge tsc2007
Err: 0
解决了,参考这里求助linux-5.2-nano-tf声卡问题
我已经按照这个教程来了,启动日志也有加载声卡
[ 1.865834] ALSA device list:
[ 1.868942] #0: Loopback 1
[ 1.871826] #1: F1C100s Audio Codec
使用命令查看声卡也有
[root@lmnb:~]$ cat /proc/asound/cards
0 [Loopback ]: Loopback - Loopback
Loopback 1
1 [Codec ]: F1C100s_Audio_C - F1C100s Audio Codec
F1C100s Audio Codec
为什么我用mplayer -ao alsa xxx.mp3就报这样的错呢
No such audio driver 'alsa'
Could not open/initialize audio device -> no sound.
Audio: no sound
Video: no video
用这个命令也是tinymix contents,跳出一堆奇奇怪怪的东西,我看别看只有13个的,我这怎么会有96个,还全是重复的
0 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
1 BOOL 1 PCM Notify Off
2 BOOL 1 PCM Slave Active Off
3 INT 1 PCM Slave Format 2 (range 0->52)
4 INT 1 PCM Slave Rate 48000 (range 0->192000)
5 INT 1 PCM Slave Channels 2 (range 1->1024)
6 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
7 BOOL 1 PCM Notify Off
8 BOOL 1 PCM Slave Active Off
9 INT 1 PCM Slave Format 2 (range 0->52)
10 INT 1 PCM Slave Rate 48000 (range 0->192000)
11 INT 1 PCM Slave Channels 2 (range 1->1024)
12 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
13 BOOL 1 PCM Notify Off
14 BOOL 1 PCM Slave Active Off
15 INT 1 PCM Slave Format 2 (range 0->52)
16 INT 1 PCM Slave Rate 48000 (range 0->192000)
17 INT 1 PCM Slave Channels 2 (range 1->1024)
18 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
19 BOOL 1 PCM Notify Off
20 BOOL 1 PCM Slave Active Off
21 INT 1 PCM Slave Format 2 (range 0->52)
22 INT 1 PCM Slave Rate 48000 (range 0->192000)
23 INT 1 PCM Slave Channels 2 (range 1->1024)
24 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
25 BOOL 1 PCM Notify Off
26 BOOL 1 PCM Slave Active Off
27 INT 1 PCM Slave Format 2 (range 0->52)
28 INT 1 PCM Slave Rate 48000 (range 0->192000)
29 INT 1 PCM Slave Channels 2 (range 1->1024)
30 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
31 BOOL 1 PCM Notify Off
32 BOOL 1 PCM Slave Active Off
33 INT 1 PCM Slave Format 2 (range 0->52)
34 INT 1 PCM Slave Rate 48000 (range 0->192000)
35 INT 1 PCM Slave Channels 2 (range 1->1024)
36 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
37 BOOL 1 PCM Notify Off
38 BOOL 1 PCM Slave Active Off
39 INT 1 PCM Slave Format 2 (range 0->52)
40 INT 1 PCM Slave Rate 48000 (range 0->192000)
41 INT 1 PCM Slave Channels 2 (range 1->1024)
42 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
43 BOOL 1 PCM Notify Off
44 BOOL 1 PCM Slave Active Off
45 INT 1 PCM Slave Format 2 (range 0->52)
46 INT 1 PCM Slave Rate 48000 (range 0->192000)
47 INT 1 PCM Slave Channels 2 (range 1->1024)
48 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
49 BOOL 1 PCM Notify Off
50 BOOL 1 PCM Slave Active Off
51 INT 1 PCM Slave Format 2 (range 0->52)
52 INT 1 PCM Slave Rate 48000 (range 0->192000)
53 INT 1 PCM Slave Channels 2 (range 1->1024)
54 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
55 BOOL 1 PCM Notify Off
56 BOOL 1 PCM Slave Active Off
57 INT 1 PCM Slave Format 2 (range 0->52)
58 INT 1 PCM Slave Rate 48000 (range 0->192000)
59 INT 1 PCM Slave Channels 2 (range 1->1024)
60 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
61 BOOL 1 PCM Notify Off
62 BOOL 1 PCM Slave Active Off
63 INT 1 PCM Slave Format 2 (range 0->52)
64 INT 1 PCM Slave Rate 48000 (range 0->192000)
65 INT 1 PCM Slave Channels 2 (range 1->1024)
66 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
67 BOOL 1 PCM Notify Off
68 BOOL 1 PCM Slave Active Off
69 INT 1 PCM Slave Format 2 (range 0->52)
70 INT 1 PCM Slave Rate 48000 (range 0->192000)
71 INT 1 PCM Slave Channels 2 (range 1->1024)
72 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
73 BOOL 1 PCM Notify Off
74 BOOL 1 PCM Slave Active Off
75 INT 1 PCM Slave Format 2 (range 0->52)
76 INT 1 PCM Slave Rate 48000 (range 0->192000)
77 INT 1 PCM Slave Channels 2 (range 1->1024)
78 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
79 BOOL 1 PCM Notify Off
80 BOOL 1 PCM Slave Active Off
81 INT 1 PCM Slave Format 2 (range 0->52)
82 INT 1 PCM Slave Rate 48000 (range 0->192000)
83 INT 1 PCM Slave Channels 2 (range 1->1024)
84 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
85 BOOL 1 PCM Notify Off
86 BOOL 1 PCM Slave Active Off
87 INT 1 PCM Slave Format 2 (range 0->52)
88 INT 1 PCM Slave Rate 48000 (range 0->192000)
89 INT 1 PCM Slave Channels 2 (range 1->1024)
90 INT 1 PCM Rate Shift 100000 100000 (range 80000->120000)
91 BOOL 1 PCM Notify Off
92 BOOL 1 PCM Slave Active Off
93 INT 1 PCM Slave Format 2 (range 0->52)
94 INT 1 PCM Slave Rate 48000 (range 0->192000)
95 INT 1 PCM Slave Channels 2 (range 1->1024)
为什么啊,我要疯了
我按照这里的教程来做的,自己画的板,留了个耳机孔来用耳机播放音乐但是我通过这个命令
mplayer -ao alsa long.mp3
会报错内容如下,有大佬知道怎么解决吗
# mplayer -ao alsa long.mp3
MPlayer 1.3.0-6.4.0 (C) 2000-2016 MPlayer Team
Playing long.mp3.
libavformat version 57.25.100 (internal)
Audio only file format detected.
Load subtitles in ./
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
libavcodec version 57.24.102 (internal)
AUDIO: 11025 Hz, 2 ch, floatle, 32.0 kbit/4.54% (ratio: 4000->88200)
Selected audio codec: [ffmp3float] afm: ffmpeg (FFmpeg MPEG layer-3 audio)
==========================================================================
No such audio driver 'alsa'
Could not open/initialize audio device -> no sound.
Audio: no sound
Video: no video
Exiting... (End of file)
页次: 1