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

来源:互联网 发布:js及jq基础知识 编辑:程序博客网 时间:2024/05/09 02:49

 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 : c659fe68ip : 8fe00080fp : c659fe90[/font][font=Times New Roman]r10: bf015bc0r9 : c8900180r8 : 00000000[/font][font=Times New Roman]r7 : bf015bc0r6 : c8900080r5 : c8901100r4 : 00008000[/font][font=Times New Roman]r3 : 87e01100r2 : c8068060r1 : 00000001r0 : 00000000[/font][font=Times New Roman]Flags: nZCvIRQs offFIQs onMode SVC_32Segment user[/font][font=Times New Roman]Control: 5317FTable: 85D28000DAC: 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 = FFFFFFE7r4 = C6478900[/font][font=Times New Roman][<c0094bd0>] (do_ioctl+0x0/0x90) from [<c0094f54>] (vfs_ioctl+0x2f4/0x314)[/font][font=Times New Roman]r7 = 00000000r6 = 00000008r5 = 412C94D8r4 = C6478900[/font][font=Times New Roman][<c0094c60>] (vfs_ioctl+0x0/0x314) from [<c0094fb4>] (sys_ioctl+0x40/0x64)[/font][font=Times New Roman]r7 = 00000036r6 = 00006F05r5 = FFFFFFF7r4 = C6478900[/font][<c0094f74>] (sys_ioctl+0x0/0x64) from [<c002c9c0>] (ret_fast_syscall+0x0/0x2c)[/font]r6 = 000276F4r5 = 00000001r4 = 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也相符合


        

0 0
原创粉丝点击