TI davinci 实验遇到的问题及解决(待续)

 1: 配置好虚拟linux主机、windows主机的IP后,给开发的启动参数写入合适的IP后,开发板启动到后面,显示:Looking up port of RPC 10003/2 on 192.168.1.3(这是linux虚拟主机的IP)。。。。

      原因是linux主机的nfs服务没有开启。

     解决:可以在linux主机中的命令行上输入: /etc/init.d/nfs restart

      返回指令显示:Shutting down NFS mountd: 【failed】

                                   ........

                                  Starting NFS mountd:[ok]

        更好的解决方法是让linux主机的nfs服务开机自启动:

Chkconfig --list name  列出指定服务的运行级别情况
    Chkconfig   [--level <levels>]  <name>  <on|off|reset>  更改/重设指定服务的运行级别
  我们输入chkconfig --level 345 nfs on,即可使NFS服务在运行级别3、4、5上自动运行。 

2.在合众达的dvs6446 跑video_appd例程,出错,报错为:
 TraceUtil> Error: Failed to open codec engine "video_copy.x64P"

出现这个问题是因为运行的程序跟二进制的DSP文件不在一个文件夹,程序找不到对应的video_copy引擎,移到同一个文件夹下就OK了

即忘记把servers文件夹里make生成的video_copy.x64P放入和运行程序video_appd放入一个文件夹


3.接上一个,上一个改好后,运行程序依旧报错:(未解决)已经解决

以下错误反馈是复制来的,与我的反馈相似

[font=Times New Roman]loopback demo started.[/font]
[font=Times New Roman]Unable to handle kernel NULL pointer dereference at virtual address 00000000[/font]
[font=Times New Roman]pgd = c5d28000[/font]
[font=Times New Roman][00000000] *pgd=8637d031, *pte=00000000, *ppte=00000000[/font]
[font=Times New Roman]Internal error: Oops: 817 [#1][/font]
[font=Times New Roman]Modules linked in: dsplinkk cmemk[/font]
[font=Times New Roman]CPU: 0[/font]
[font=Times New Roman]PC is at SHMIPS_Send+0x114/0x13c [dsplinkk][/font]
[font=Times New Roman]LR is at SHMIPS_Send+0x10c/0x13c [dsplinkk][/font]
[font=Times New Roman]pc : [<bf00c704>]
lr : [<bf00c6fc>]
Tainted: PF[/font]
[font=Times New Roman]sp : c659fe68
ip : 8fe00080
fp : c659fe90[/font]
[font=Times New Roman]r10: bf015bc0
r9 : c8900180
r8 : 00000000[/font]
[font=Times New Roman]r7 : bf015bc0
r6 : c8900080
r5 : c8901100
r4 : 00008000[/font]
[font=Times New Roman]r3 : 87e01100
r2 : c8068060
r1 : 00000001
r0 : 00000000[/font]
[font=Times New Roman]Flags: nZCv
IRQs off
FIQs on
Mode SVC_32
Segment user[/font]
[font=Times New Roman]Control: 5317F
Table: 85D28000
DAC: 00000015[/font]
[font=Times New Roman]Process video_app (pid: 1115, stack limit = 0xc659e1a0)[/font]
[font=Times New Roman]Stack: (0xc659fe68 to 0xc65a0000)[/font]
[font=Times New Roman]fe60:
00008000 00000000 c889d000 00010000 412c9524 00000001[/font]
[font=Times New Roman]fe80: 000276f4 c659fed0 c659fe94 bf00db08 bf00c600 00000000 00000000 00000001[/font]
[font=Times New Roman]fea0: c88c6000 c8901100 8000802d 412c9524 00000000 00000000 c8078000 000276f4[/font]
[font=Times New Roman]fec0: 00008000 c659ff0c c659fed4 bf00a884 bf00da04 412c9524 0001bd1c 00000003[/font]
[font=Times New Roman]fee0: bf00d3c4 412c94d8 00008000 00006f05 412c94d8 c002d154 c659e000 00900036[/font]
[font=Times New Roman]ff00: c659ff1c c659ff10 bf005724 bf00a7e4 c659ff34 c659ff20 bf005474 bf005724[/font]
[font=Times New Roman]ff20: c6478900 ffffffe7 c659ff54 c659ff38 c0094c4c bf0051d4 c6478900 412c94d8[/font]
[font=Times New Roman]ff40: 00000008 00000000 c659ff7c c659ff58 c0094f54 c0094be0 00026d70 00000000[/font]
[font=Times New Roman]ff60: c6478900 fffffff7 00006f05 00000036 c659ffa4 c659ff80 c0094fb4 c0094c70[/font]
[font=Times New Roman]ff80: 00026d70 00000001 000000f0 00026cdc 00000001 000276f4 00000000 c659ffa8[/font]
[font=Times New Roman]ffa0: c002c9c0 c0094f84 00026cdc 00000001 00000008 00006f05 412c94d8 00027740[/font]
[font=Times New Roman]ffc0: 00026cdc 00000001 000276f4 412c9524 0001bd1c 000004b4 00026830 412c94d4[/font]
[font=Times New Roman]ffe0: 000268ac 412c9480 000146e0 401a0344 80000010 00000008 00000000 00000000[/font]
[font=Times New Roman]Backtrace:[/font]
[font=Times New Roman][<bf00c5f0>] (SHMIPS_Send+0x0/0x13c [dsplinkk]) from [<bf00db08>] (ZCPYMQT_Locat[/font]
[font=Times New Roman]e+0x114/0x2b0 [dsplinkk])[/font]
[font=Times New Roman][<bf00d9f4>] (ZCPYMQT_Locate+0x0/0x2b0 [dsplinkk]) from [<bf00a884>] (LDRV_MSGQ_[/font]
[font=Times New Roman]Locate+0xb0/0xf8 [dsplinkk])[/font]
[font=Times New Roman][<bf00a7d4>] (LDRV_MSGQ_Locate+0x0/0xf8 [dsplinkk]) from [<bf005724>] (PMGR_MSGQ[/font]
[font=Times New Roman]_Locate+0x10/0x14 [dsplinkk])[/font]
[font=Times New Roman][<bf005714>] (PMGR_MSGQ_Locate+0x0/0x14 [dsplinkk]) from [<bf005474>] (DRV_Ioctl[/font]
[font=Times New Roman]+0x2b0/0x34c [dsplinkk])[/font]
[font=Times New Roman][<bf0051c4>] (DRV_Ioctl+0x0/0x34c [dsplinkk]) from [<c0094c4c>] (do_ioctl+0x7c/0[/font]
[font=Times New Roman]x90)[/font]
[font=Times New Roman]
r5 = FFFFFFE7
r4 = C6478900[/font]
[font=Times New Roman][<c0094bd0>] (do_ioctl+0x0/0x90) from [<c0094f54>] (vfs_ioctl+0x2f4/0x314)[/font]
[font=Times New Roman]
r7 = 00000000
r6 = 00000008
r5 = 412C94D8
r4 = C6478900[/font]
[font=Times New Roman][<c0094c60>] (vfs_ioctl+0x0/0x314) from [<c0094fb4>] (sys_ioctl+0x40/0x64)[/font]
[font=Times New Roman]
r7 = 00000036
r6 = 00006F05
r5 = FFFFFFF7
r4 = C6478900[/font]
[<c0094f74>] (sys_ioctl+0x0/0x64) from [<c002c9c0>] (ret_fast_syscall+0x0/0x2c)[/font]
r6 = 000276F4
r5 = 00000001
r4 = 00026CDC[/font]
Code: e3a03001 ebfff2a4 e5963004 e3a01001 (e5803000)[/font]
<6>note: video_app[1115] exited with preempt_count 1[/font]
[font=Times New Roman]BUG: scheduling while atomic: video_app/0x00000001/1115[/font]
[font=Times New Roman]caller is do_exit+0xd3c/0xda0[/font]
我把未make clean掉,也就是本来在文件夹里的 video_copy.x64P放入运行文件夹,问题就没有了。而自己在servers文件夹里做make clean && make生成的video_copy.x64P就不行会报错!

问题一定出在 server中!

原理:参考了davinci技术原理与应用指南p114~117页内容。

    有三个方面的东西:dsplinkk.ko  loadmodules.sh video_copy.x64P.

它们间需要有几个对应关系:

1.首先dsplinkk.ko中DSPLINKMEM起始地址和长度(在dsplink的子子文件夹里有个CFG_Davinci.TXT定义了)需要与video_copy.x64P的DSPLINKMEM起始地址和长度(servers文件夹中的*.tcf文件定义的dsplink存储区)相同。

2.loadmodules.sh中的语句 :

insmod dsplinkk.koddr_start=0x87600000ddr_size=0x800000

0x87600000 0x800000 必须与video_copy.x64P的标签为DDR的内存区起始地址和长度(servers文件夹中的*.tcf文件定义的片外程序和数据存储区)相同。ddr_start 和 ddr_size 应该是指codec算法的片外程序和数据存储区起始地址和长度

解决方法:保证了上述两个条件就可以使程序正常运行。现在最简单的方法就是把dsplink_1_30*/packages/dsplink/gpp/export/BIN/Linux/Davinci里面的dsplinkk.so复制到运行文件夹中(之所以这样,是因为我查看了CFG_Davinci.TXT 的dsplinkmem定义与*.tcf相同,loadmodule.sh与*.tcf也相符合


        

你可能感兴趣的:(TI davinci 实验遇到的问题及解决(待续))