优雅的玩转TDA4VM

SDK简介

目前SDK是基于8.05版本基线进行开发,分为LINUX SDK工具开发包和RTOS SDK工具开发包。
LINUX SDK工具包为TDA4VM提供u-boot、内核以及文件系统。
RTOS SDK工具包包含视觉应用、以太网固件、MCU、RTOS系统设备驱动、HS设备开发等工具包开发功能,其中R5F核心、C66x核心、C7x深度学习核心的软件包都位于RTOS SDK中。

环境准备

  • 需要准备Ubuntu 18.04 64编译环境,官方指定在这个环境上编译和开发;
  • 如果需要快速调试,则准备一张不小于16G大小的SD卡;
  • 一根USB转UART的串口线;
  • TDA4VM-EVM硬件开发平台。

SDK下载

image.png
image.png
image.png
image.png

SDK安装

LINUX-SDK安装

进入Ubuntu 18.04 64的终端,执行以下命令

user@user:~$   chmod +x ./ti-processor-sdk-linux-j7-evm-<version>-Linux-x86-Install.bin 
user@user:~$   ./ti-processor-sdk-linux-j7-evm-<version>-Linux-x86-Install.bin

RTOS-SDK解压

进入Ubuntu 18.04 64的终端,执行以下命令

user@user:~$   tar -xf TI-processor-SDK-RTOS-J721E-evm-08_05_00_11.tar.gz

目录结构

LINUX-SDK目录

目录 目录功能
bin 包含用于配置主机系统的帮助程序脚本和目标设备。这些脚本中的大多数都由setup.sh使用脚本。
board-support 主要包含linux内核源码,uboot源码,及其他组件。
configs yocto工具的构建链接(yocto构建大约需要十几个小时)。
docs 直接打开index.html,即可阅读整个SDK的官方文档。
example-applications 包含一些benchmarks等app demo。
filesystem 存放默认、最小的文件系统。
linux-devkit 交叉编译工具链和库以加快目标设备的开发速度。
Makefile 顶级编译脚本(make)。
patches 补丁、预留目录。
Rules.make 设置顶级生成文件使用的默认值以及子组件生成文件。
setup.sh 配置用户主机系统和目标开发系统。
yocto-build 此目录允许重建SDK组件和使用Yocto Bitbake的文件系统。

RTOS-SDK目录

目录 目录功能
cg_xml_2.61.00 这是一个Perl脚本包,用于处理来的XML文件从TI代码生成工具。
dsplib_02_05_00_03 DSPLIB 是使用TI-Keystone-3器件上提供的矩阵乘法加速器(MMA)和C7x ISA实现低级数字信号处理(DSP)功能的软件库。
dsplib_c66x_3_4_0_0 是面向C程序员的优化DSP函数库。它包括许多可调用的、优化的、通用的信号处理例程。
ethfw 以太网交换机固件软件堆栈,是基于FreeRTOS的应用程序,用于配置以太网交换机,托管在J721E和J7200 SoC主域中的Cortex R5F 0核0上。
fftlib_02_05_00_02 FFTLIB是使用TI-Keystone-3器件上提供的矩阵乘法加速器(MMA)和C7x ISA实现低级快速傅立叶变换(FFT)函数的软件库。
imaging 包含适用于TI-ISP的自动曝光、自动切换平衡算法,它还包含图像传感器驱动程序和调整参数。
ivision 该软件包包括XDAIS DSP算法接口的扩展 用于TIDL和TIADALG。
mathlib_02_05_00_02 为C7x实现了常见的优化math.h函数,可在TI的Keystone-3器件上使用。
mathlib_c66x_3_1_2_1 实现了常见的优化math.h函数,通常用于计算密集型实时应用程序。
mcusw 由微控制器抽象层(MCAL)和演示应用(MCUSS Demos)两部分组成,MCAL是AUTOSAR基本软件架构的最低层,用于AutoSAR的MCAL,在CCS中开发。
mmalib_02_05_00_07 提供的矩阵乘法加速器(MMA)和C7x ISA实现低级卷积神经网络(CNN)、线性代数(LINALG)、快速傅立叶变换(FFT)和数字信号处理(DSP)函数的软件库。
pdk_jacinto_08_05_* 此软件包包含设备驱动程序、引导加载程序、用于裸机/RTOS的CSL。
psdk_rtos sdk的脚本及相关文档。
remote_device 远程设备是处理器SDK RTOS汽车(PSDKRA)中的设备虚拟化和共享组件,可用于跨多个内核和操作系统(计算实体)共享物理设备。
sdl 提供安全机制和功能的接口,用于开发涉及功能的软件应用程序安全。
tiadalg 包含示例预处理、后处理和其他算法,用于自动驾驶。
ti-cgt-armllvm_* TI-Arm-Clang编译器工具1.3.0.LTS版本的代码生成器,包含TI-ARM-R5F编译器、链接器。
ti-cgt-c6000_8.3.7 包含 C6x 编译器、链接器。
ti-cgt-c7000_3.0.0* 包含 C7x 编译器、链接器、主机仿真模式库。
tidl_j721e_08_05* 包含 TI 的深度学习推理解决方案,提供一套丰富的工具和优化的库,简化了 DNN 开发和部署的整个产品生命周期。
tiovx TIOVX是TI对OpenVX标准的实现,为C66x-DSP提供了优化的OpenVX内核;扩展API允许用户集成自己原生开发的自定义内核,并使用OpenVX-API调用它们。
ti-perception-toolkit 里面的每个组件都提供数据结构和通用处理算法,用于有效开发自治系统所需的传感和感知功能。
vision_apps 包含摄像头,ADAS,视觉,感知,OpenVX演示。
vxlib 为C66x实现了OpenVX v1.1低级内核。
xdais_7_24_00_04 由XDAIS DSP算法接口组成。
index.html 直接打开index.html,即可阅读整个SDK的官方文档。

编译

运行以下命令,安装被Makefile编译所需要的包。

user@user:~$ sudo apt-get install build-essential autoconf automake bison flex libssl-dev bc u-boot-tools

快速编译命令

在ti-processor-sdk-linux目录下,顶层的Makefile。可以在根目录下执行下表相关命令,可以快速的让SDK工具包编译出所需要的产物。
使用以下编译命令,根据所需的输出内容执行编译,没有执行顺序。

命令 含义 文件路径
make linux 编译 Linux 内核,生成*.dtbo,Image内核等文件 ti-processor-sdk-linux-j7-evm*/board-support/built-images/
注:make linux执行完后,需要执行make linux install才能生成built-images这个文件(执行过程可能出现报错,只需要看是否生产built-images文件即可,不用管错误)
make u-boot 将构建 u-boot 二进制文件 tiboot3.bin, tispl.bin & u-boot.img ti-processor-sdk-linux-j7-evm*/board-support/u-boot_build/
make sysfw-image 构建系统固件 itb 文件,该文件是单个 系统固件版本以及不同主板的二进制文件配置 ti-processor-sdk-linux-j7-evm*/board-support/k3-image-gen*/

编译u-boot映像

  • 进入所在Linux-SDK目录
#编译u-boot、构建 u-boot 二进制文件 tiboot3.bin, tispl.bin & u-boot.img
user@user:~/ti-processor-sdk-linux-j7-evm*$   make u-boot

编译系统固件

  • 进入所在Linux-SDK目录
#编译系统固件,生成sysfw.itb文件
user@user:~/ti-processor-sdk-linux-j7-evm*$   make sysfw-image

编译Image内核

  • 进入所在Linux-SDK目录
#编译linux内核,生成*.dtbo,Image内核等文件
user@user:~/ti-processor-sdk-linux-j7-evm*$   make linux

生成放置

系统由两部分组成:一个是boot分区,用于存放bootloader的uboot等;另一个是rootfs分区,用于存放Linux需要的文件系统。
注意:其中官方对boot分区使用fat32文件格式,rootfs分区使用ext4文件格式;但是ext4是相当于fat32文件格式的升级版本,所以可以根据自己的需求将两个分区统一为ext4文件格式。
所以生成的文件需要分别放置在两个不同的分区。

boot分区

boot分区放置在SD卡中
编译u-boot映像后,将生成的tiboot3.bin, tispl.bin & u-boot.img和sysfw.itb文件拷贝到boot分区,用于启动引导和引导内核加载。
boot分区放置在EMMC、OSPI上
具体参考烧写章节。

rootfs分区

rootfs分区放置在SD卡中
编译Linux内核后,将生成的*.dtbo,Image内核等文件拷贝到rootfs分区对于的目录下,实现内核和设备树的更新。
rootfs分区放置在EMMC上
具体参考烧写章节。
其中rootfs是存放根文件系统的,rootfs需要一个完整的文件系统。

烧写

快速上手

这里的快速上手,主要基于TDA4VM-EVM硬件平台环境的SD卡启动系统。

前置条件
  • TDA4VM-EVM硬件平台环境,及PC端Ubuntu 18.04 64编译环境;
  • TDA4VM-EVM本身带有SD卡接口;
  • SD卡会被划分为两个分区,u-boot分区和rootfs分区;

在ti-processor-sdk-linux-j7-evm*/bin/目录下包含一个名为 mksdboot.sh 的脚本。
此脚本的目地是通过对SD卡进行boot和rootfs分区、格式化来创建可启动的SD卡,最后将所需文件分别拷贝到所需分区,以便目标可以使用引导映像和文件系统。

格式化及烧写
  • 将SD卡插入PC中,查看df -h设备节点/dev/sd*,如/dev/sdb
  • 默认情况下,Ubuntu 使用 “dash” 作为 /bin/sh 的默认 shell,你必须通过运行以下命令重新配置为使用 bash
user@user:~$sudo dpkg-reconfigure dash
#出现选择,则选择否
  • 进入ti-processor-sdk-linux-j7-evm*文件目录下,执行以下脚本完成
#--device:指SD卡的设备节点名称
#--sdk:指SDK的目录路径
user@user:~$  sudo ./ti-processor-sdk-linux-j7-evm*/bin/mksdboot.sh --device /dev/sdb --sdk ./ti-processor-sdk-linux-j7-evm*
  • 将USB转串口的连接线接入TDA4VM开发板的SOC-UART

image.png

  • 配置sw8、sw9拨码开关至SD卡启动模式,参考”引导开关设置“章节
  • 烧写好的SD卡插入TDA4VM开发板,上电等待系统启动

image.png

  • 出现”j7-evm login:“需要输入root,即可进入系统

猜你喜欢

转载自blog.csdn.net/yiyu20180729/article/details/130315178
vm