嵌入式Linux自学阶段性总结(6)
2019-07-13 00:40发布
生成海报
三 配置linux kernel及安装alsa-driver
经历了上面两个阶段,mscore乐谱程序可以在开发板上运行起来了,已经看到了胜利的曙光。下面面临的问题有几点:
-
mscore在开发板上运行比老黄牛都慢,触摸屏点击后几秒才有反应。可能原因:a. qte4.4.3在编译的时候,没有在qfeature.h中去掉某些不必要的功能,这是为了尽可能的满足mscore的需求。b. msocre程序本身还存在错误,在运行的过程中,不断的想stderr输出错误信息。c. mscore本来是运行在PC上的,程序自身就有42M,arm9平台速度比较低。
-
mscore不能发声。Qq2440附带linux-kernel-2.6.13内核中配置好了touchscreen, lcd, framebuffer, net card, oss sound driver, led, i2c, keyboard, usb ssci设备等驱动,但是没有提供s3c24xx系统处理器上采用uda1341音频dsp解码芯片,基于iis音频传输接口和L3控制接口的alsa驱动。这个要自己找驱动,然后编译进内核中,实现对alsa音频的支持。
-
mscore程序界面上某些工具栏图标没有显示出来,可能是该图片格式不被qte支持。
下面对第二点关于alsa驱动解决方法:
1. qq2440开发板附带的内核源码,已经针对开发板硬件进行了修改,主要是在内核驱动模块选项上,修改了相关目录下KConfig和Makefile文件,使得make menuconfig图形配置界面里出现了相关了驱动选项,比如L3接口(声卡驱动用到,同时还有IIS,但是这个内核自身就包括), touchscreen驱动,lcd驱动等.但是唯独没有添加alsa的驱动,需要我手工把alsa驱动源代码放进内核源码中,修改sound下KConfig 和 Makefile,编译alsa驱动.
2. 对于嵌入式linux应用来说,硬件变化多,要灵活的配置内核,光考内核自带的make menuconfig是不行的,许多情况想还要自己修改KConfig和Makefile,把自己的驱动放进内核的编译环境中.首先要了解内核的KConfig文件的语法结构.
3. 另一种可能的安装alsa驱动的方法,就是我第一次的那种,直接在主机alsa-driver代码目录中configure,然后make,这样做内核和alsa是独立的,大概需要把编译出来的点o文件考进文件系统中,然后用mknod命令,生成需要的声卡设备节点.
/bin/mkdir /dev/snd
/bin/mknod /dev/snd/controlC0 c 116 0
/bin/mknod /dev/snd/hwC0D0 c 116 4
/bin/mknod /dev/snd/pcmC0D0c c 116 24
/bin/mknod /dev/snd/pcmC0D0p c 116 16
/bin/mknod /dev/snd/seq c 116 1
/bin/mknod /dev/snd/timer c 116 33
但是这样,怎么保证内核启动的时候自己加载alsa驱动模块?
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮