DSP

调试经验--工具链

2019-07-13 18:24发布


调试经验--工具链 davinci的工具链就是dvsdk,是TI公司推出的一个软件套件,主要作用是建立ARM与DSP之间的联系。
在工具链的使用中,我总结了遇到的3个问题:
1,切换工具链时遇到的问题;2,ccs编译环境的升级;3,单独升级dvsdk中的bios。
一、切换工具链时遇到的问题 在调试dm6446过程中,遇到问题,TI的技术支持推荐使用新工具链试试。就进行了一次工具链的升级。 原工具链:dvsdk1.3
新工具链:dvsdk2.0 总的思路:
先用TI板卡试验,再用自己的板卡。毕竟,TI提供的dvsdk都是针对TI的开发板的,若是自己开发的板卡,硬件有改动,首次使用新工具链,出了问题不好确定问题的原因是新工具链没用好,还是与板卡硬件不匹配。 测试过程,也是逐步进行:
(1)安装mvl+dvsdk ;
(2)运行小例程; 工具链的安装,比较顺利,按照dvsdk的使用指南操作即可。 问题1:在编译内核时出错,信息如下:
UIMAGE arch/arm/boot/uImage
"mkimage" command not found - U-Boot images will not be built
从uboot的tools中复制mkimage到/usr/bin中,ok。 问题2:内核编译通过后,使用新内核,挂载nfs文件系统,此时出错,信息如下:
nfsd: unexporting all filesystems
RPC: failed to contact portmap (errno -5)
Starting RPC idmapd: FATAL: Module sunrpc not found.
两种解决方法:
1,在内核中配置编译选项:如下,注意 CONFIG_NFS_V4 不能选中
 CONFIG_SUNRPC=m,CONFIG_SUNRPC_GSS=m,CONFIG_RPCSEC_GSS_KRB5=m,CONFIG_RPCSEC_GSS_SPKM3=m
2,由于SUNRPC其实已经编译进内核,不需要load modules,在/etc/init.d/rpcidmapd中屏蔽该部分代码 此处我采用第一种方法,修改编译选项,重新编译内核,继续挂载nfs文件系统,再次报错:
Starting RPC idmapd: Error: RPC MTAB does not exist.
  解决方法:把以下内容加入到"/etc/fstab"里面 
  rpc_pipefs  /var/lib/nfs/rpc_pipefs rpc_pipefs  defaults 0 0 
  nfsd   /proc/fs/nfsd    nfsd   defaults 0 0
至此,nfs mount成功。 继续测试,用旧的uboot,新的内核与文件系统,板卡启动成功,运行hello程序成功。   二、ccs编译环境的升级 在升级linux下的工具链之后,由于我们的算法也是自己开发的,所以,相应的,需要升级开发算法的环境,即ccs。
ccs下编译的是算法库,是在ccs下最终生成一个a64P文件,然后拷贝到dvsdk下,根据工具链下的配置,生成可执行文件x64P。
在ccs中,需要相应升级bios、cgtools至与dvsdk相同的版本。 升级步骤如下: 
 1,查看dvsdk中软件版本(bios_5_32_04,cgx_6_0_16),在TI的网站上下载相应版本的的windows下的安装文件。
 2,分别运行,安装下载的新工具。安装时,对路径没有限制。
 3,在ccs中设置使用新的工具:
  说明:我使用的是ccs3.3,其它ccs版本的设置方法可能有所不同。
  在ccs中,依次选择Help -> About -> Component Manager;
  选择工具,处理器,选中新安装版本的工具;
  File -> Save.
  重新打开ccs,修改工程中与旧工具相关的文件,特别是编译选项中与bios路径相关的内容。
  重新编译。   三、单独升级dvsdk中的bios
 
 1,在TI的网站上下载bios_5_32_04的linux下的安装文件。
 2,在linux下运行,安装。安装时,应该将路径设置为dvsdk目录下,保证与旧的bios在同一目录下,那么后面的配置修改,相应会简单一些。  3,修改dvsdk中相关编译配置:
  dvsdk中,rules.make, 
  app的makefile
  codec的makefile 
 
 4,先编译dvsdk下的combos,再替换a64P,编译servers,得到x64P;
 5,整个工程重新编译,运行,ok。