该问题未解,仅做笔记供将来参考。
问题起源是,在Huangpu里面加printf没有输出,而且终端无法输入。
1) 终端无法输入的原因是:
rootfs/etc/inittab下面行
::respawn:-/bin/sh
应该修改成
ttyS1::respawn:-/bin/sh
即定义/bin/sh的输入和输出为ttyS1.
2) 而printf没有输出,应该修改inittab下面行:
::sysinit:/etc/init.d/rcS
前面加ttyS1.
因为huangpu_app是通过rcS运行/opt/bin/autorun.sh执行的。
但是,遗憾的是,第二步的修改似乎带来更严重的问题,好像启动失败。
下面记录debug过程,
a) 从打印看到
lircd: daemon() failed
lircd: No such device
lircd: caught signal
所以debug lircd,事实上lircd在huangpu中未被使用。
debug中发现,lircd的一个好处,如果被使用的话,可以通过一个外部的进程给lircd发送模拟的遥控输入。
b) PVR Error
既然lircd无关紧要,分析下一个错误。
PVR:(Error): SetupuKernel : EDM status value DevVAddr: 0x0F003000 pvLinAddrKM: 0xA0CF9000 [2136, /[42949387.410000] PVR: Installing MISR with cookie 7f0e5898
[42949387.420000] PVR: Installing system LISR on IRQ 116 with cookie 7f0e5898
这是一个非常有迷惑性的错误。最终的分析结果是,这并不是一个错误,是一个Trace,但是开发者错有PVR_DBG_ERROR,而应该是PVR_DBG_MESSAGE之类。
不管怎样,在上面混迹了一阵,关联到tmvssDD3DGraphics的驱动部分,有下面一些记录。
*) 编译完后,模块相关的内容好像没有拷贝到rootfs下面,所以要手动拷贝
output/objs/summit-dualhd-gnu-4.4.0-linux-debug/comps/tmvssDD3DGraphics/bin/armgnu_linux_static_el_cortex-a9_g_flo_linux_mp_/root/
注意: root下面的lib应该拷贝到appfs/lib下面
*) 第二,该模块的编译
编译video系统是不能编译到该模块的,需要到
target/src/sd/video/drivers/comps/tmvssDD3DGraphics
下面编译,然后手动拷贝。
对于类似的模块的调试问题,可以参考以前调试directfb方法加special tag as jiangjqian etc.
*)调试
通过rmmod / insmod / mknode / /proc/devices 等配合使用即可
c) 其它
*) 第三,链接路径的查找
见autorun.sh,对LD_LIBRARY_PATH进行设置
export LD_LIBRARY_PATH=/opt/lib:/opt/3ddrivers/usr/lib
*)后台运行和输出到文件
如: ls / > output.txt &
最后发现,如果把
./huangpu_app &
改成
./huangpu_app
能够运行,并且看到打印。
大概写该autorun.sh的人为了后面能够得到shell,所以把huangpu_app放在后台运行,但是没料到是和printf到ttyS1产生冲突。
有机会再研究。。。。。。
对了,再有就是,huangpu的打印是用cnxt_kal_trace等。