前言

本系列请点击:《搞一下TDA4》


所有系列请点击:《汽车电子系列分享》


本文将会分享TDA4VM的SDK的安装和使用的一些入门经验,便于读者上手和开发这个SDK。主要内容会包含下载路径,SDK内容分享,软件结构分析。


全系内容可在《搞一下汽车电子》后台回复 "系列",或进入菜单栏 "分享平台" --> "系列分享"

一、开始


相比于其他汽车处理器厂商,德州仪器总是会将所有的芯片资料和SDK软件开发包都公开在外网上,非常便于芯片选型和软件开发包的评估。文档和各个软件包目前的成熟度相比国产芯片都会有更好的表现。技术讨论可以在e2e论坛进行,虽然反应速度不尽如人意,但是聊胜于无,能够有机会接触到原厂的技术支持。


本文将和各位读者分享拿到TDA4VM的EVM后,用到SDK的使用经验和软件结构的初步分析。


TDA4VM的芯片资料都位于TI官网上,网址输入ti.com,然后搜索TDA4VM,就可以看到TDA4VM的Datasheet和Technical Reference Manual(TRM)。


在这里插入图片描述
在这里插入图片描述


向下滚动,可以看到有软件开发包的下载界面


在这里插入图片描述


点开以后会发现TI提供了三个SDK,分别是Linux SDK、QNX SDK和RTOS SDK。每一个SDK都是独立的安装包和文档。从名称可以看到,DRA829和TDA4VM是共用同一套SDK,并且DRA829和TDA4VM都被叫做J721E。


在这里插入图片描述


按照目前的使用经验,在购买QNX BSP后才会用到QNX SDK,本文不会涵盖QNX部分。在一般开发过程中,主要用到的是RTOS SDK,偶尔会用到Linux SDK。这些SDK全部都是基于Ubuntu 18.04 64bit环境进行编译和开发。包括MCU部分也是在Ubuntu环境下开发,对现有常见的Windows界面MCU开发带来一定的难度。新版本的SDK也陆续开始提供Windows环境下的工具。


二、准备工作


下载RTOS SDK和Linux SDK所有文件,部分文件很大(包含数据集总计约10+GB)。另需准备一个Ubuntu 18.04 64bit虚拟机(如果使用18.04以外的版本可能会导致编译失败)。推荐实体Ubuntu服务器,编译速度更快。Ubuntu的安装过程本文在此略过。


三、Linux SDK


在Ubuntu 18.04 64bit环境下,在命令行下运行下载到的Linux SDK安装包(ti-processor-sdk-linux-j7-evm-07_02_00_07-Linux-x86-Install.bin),按照一步一步的安装界面操作可以将SDK安装到你的Ubuntu中。


安装完成后,你会看到这样的目录结构。文档位于这里面的docs文件里的index.html。所有的文档都是基于网页的英文文档。双击打开即可通过浏览器阅读里面的内容,左上角有搜索栏,可以快速定位页面。


在这里插入图片描述


参考文档1.1.2章节所指示的步骤,运行setup.sh脚本即可安装依赖的系统软件包和工具。按照目前的经验,其中NFS、minicom、TFTP等过程是不必需的,可以通过修改setup.sh的内容跳过,不然部分步骤需要EVM链接才能完成。


1.1.3章节说明了如何格式化SD卡。在TDA4VM的开发过程中,都是使用TF卡进行开发的。这个和一般单片机开发平台的开发是不同的,在单片机开发平台下,通常是直接用电脑使用USB方式将固件烧写到板卡的eMMC或FLASH中去。在TI平台下,首选的调试方法是使用TF卡:TF卡会被划分为两个分区,一个是BOOT分区(FAT32),用于存放bootloader如uboot等,另一个是rootfs分区(ext4),用于存放Linux需要的文件系统。每次Ubuntu编译完成的固件都需要手工拷贝到TF卡中,然后将TF卡插入EVM上电启动。这种开发方式更类似于NVIDIA的Jetson Xavier的方式,都是使用TF卡进行开发。


1.1.4章节介绍了顶层的Makefile。通过在根目录下make linux或u-boot等各种命令,可以快速的让SDK编译出你所需要的产物。注意需要手工修改Rules.mak文件中的DESTDIR变量为你的TF卡挂载路径。


4.1章节也提供了很多常见问题的解答。


主要用法


在这里插入图片描述


yocto_build
Yocto是一个用于自动化编译文件系统的框架,由于文件系统互相之间的版本依赖关系非常复杂,所以使用yocto来自动化编译生成文件系统会非常方便。进入yocto_build文件夹,使用./oe-layertool-setup.sh -f 命令就可以初始化yocto相关的代码。注意,编译下载yocto会占用大约300~500GB硬盘,编译时间会长达12小时以上,并且下载源都位于国外。一般情况下不会去编译yocto。


综上所述,Linux SDK最主要是用于A72核心上的启动引导、操作系统、文件系统,一般只有在修改到这部分的时候才会使用到Linux SDK。


四、RTOS SDK


在Ubuntu 18.04 64bit环境下,在命令行下解压下载到的RTOS SDK安装包(ti-processor-sdk-rtos-j721e-evm-07_02_00_06.tar.gz),RTOS SDK是在TDA4VM上开发的最主要的SDK。因为TDA4VM芯片最大特点就是异构多核,其中的R5F核心、C66x核心、C7x深度学习核心的软件包都位于RTOS SDK中。解压后得到的目录结构如下:


在这里插入图片描述


文档为根目录下的index.html。按照文档的说明,使用psdk_rtos/scripts/setup_psdk_rtos.sh来安装依赖库和下载编译器。完成后就可以到vision_apps中使用make sdk和make vision_apps来编译深度学习或摄像头相关的Demo。各个软件包的介绍和文档可以深入去看文档中的章节3。


编译框架
RTOS SDK主要使用了一个开源编译框架concerto,这个框架基于Makefile,他能够自动搜索当前目录内的所有concerto.mak文件,并且分析依赖,一次将各个核心的固件全部编译出来。编译生成的文件位于


在这里插入图片描述


这些固件会被拷贝到TF卡rootfs分区的/lib/firmware中,作为各个核心的固件,在开机的时候被加载,这些固件在运行过程中间一般不会更换。


在这里插入图片描述


五、RTOS SDK prebuilt


SDK中提供了很多Demo,如双目视觉、稠密光流、AVP深度学习、目标检测等等。快速搭建这些Demo看到TDA4深度学习的能力的话,Prebuilt压缩包(ti-processor-sdk-rtos-j721e-evm-07_02_00_06-prebuilt.tar.gz)是最快上手的,解压后提供了几个常用脚本,这些脚本可以很方便的制作可以启动的TF卡,并且可以运行完整的Demo。


mk-linux-card.sh


用法:


在这里插入图片描述


用途:将TF卡重新分区、并且格式化。


install_to_sd_card.sh


用法:


在这里插入图片描述


用途:将该脚本旁边的文件系统压缩包直接拷贝到/media/USER/BOOT和/media/USER/rootfs中,此时该卡就可以启动了。


install_data_set_to_sd_card.sh


用法:


在这里插入图片描述


用途:将数据集解压到TF卡中对应的位置,这样默认SDK配套的Demo就可以正常运行。


六、开发和调试方法


不同平台的开发调试方法略有不同,TI的平台也提供了多种调试手段:TF卡、串口、CCS JTAG、Lauterbach等。


TF卡:如Linux SDK章节所述,TDA4的开发一般都是基于TF卡的BOOT分区和rootfs分区进行开发,不断更新TF卡中的程序,进而对A72、C66x、C7x、R5F进行开发。


串口:最经典的调试方法就是加打印,TDA4有多个串口,默认情况下A72会将各个核心的调试信息通过串口打印出来。


MCU R5F开发:MCU R5F的开发既可以用TF卡,也是可以使用Nor FLASH的。可以通过TF卡的u-boot命令行烧写进Nor FLASH,也可以使用TI提供的UNIFLASH工具通过串口烧写进去。


CCS JTAG调试:JTAG对于芯片调试几乎是万能的,它可以加载代码,可以Attach到正在运行的代码上。CCS是TI提供的图形化开发和调试界面,但是这个开发界面不能用于整个SDK的编译和开发。在TDA4开发过程中,一般都是使用TF卡正常启动,启动后使用JTAG Attach到正在运行的核心上,加载符号表后进行单步、断点、内存读写等调试。JTAG需要用TI的仿真器,从最便宜的XDS110到最贵的XDS560v2都可以用于调试TDA4,调试速度上基本上没有差异。

本期分享就到这里,欢迎大家一起交流学习,如果有不合理的地方也请大家指正,愿和大家一起学习进步,一步步做好汽车电子软件开发。

如果大家有想分享的内容,欢迎大家一起来分享! 更多内容请关注微信公众号《搞一下汽车电子》


更多其他内容,也可以随时与我们联系。


联系我们

微信:shactiontech
邮箱:support@shactiontech.com

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐