三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

保姆级教程:在Ubuntu 20.04上为TDA4VM搭建Linux+RTOS双系统开发环境(含SDK 08.02.00下载与编译避坑指南)

保姆级教程:在Ubuntu 20.04上为TDA4VM搭建Linux+RTOS双系统开发环境(含SDK 08.02.00下载与编译避坑指南)

保姆级教程:在Ubuntu 20.04上为TDA4VM搭建Linux+RTOS双系统开发环境

当一块TDA4VM开发板从包装盒中取出时,许多嵌入式开发者会面临一个共同的挑战:如何快速搭建一个既能运行Linux应用又能处理实时任务的开发环境。这个看似简单的需求背后,隐藏着工具链配置、SDK版本匹配、依赖项安装等一系列"暗礁"。本文将用最直白的语言,带你避开所有可能的陷阱。

1. 环境准备:从零开始的基石搭建

在开始之前,我们需要确保主机环境满足基本要求。不同于普通的嵌入式开发,TDA4VM的异构计算架构对开发主机有特定约束。以下是经过实际验证的配置清单:

  • 操作系统:Ubuntu 20.04.3 LTS(官方推荐版本)
  • 磁盘空间:至少预留100GB空闲空间(SDK和编译中间文件会占用大量空间)
  • 内存:建议16GB以上(8GB可能导致编译失败)
  • 网络环境:稳定连接(部分依赖需要在线下载)

注意:虽然Ubuntu 22.04也可以使用,但部分工具链可能需要额外配置,不建议初学者尝试。

安装基础依赖包是第一步,也是容易出错的地方。执行以下命令时,建议逐个复制而非整段粘贴,便于排查问题:

sudo apt-get update && sudo apt-get install -y \ build-essential \ git \ cmake \ python3 \ device-tree-compiler \ u-boot-tools \ flex bison \ libssl-dev \ libncurses-dev

如果遇到E: Unable to locate package错误,可能是源列表需要更新。可以尝试先执行sudo apt update --fix-missing再重新安装。

2. SDK获取与验证:避开下载陷阱

TI官方提供的PROCESSOR-SDK-RTOS-J721E版本08.02.00是构建双系统环境的核心。但直接从官网下载可能会遇到两个问题:下载速度极慢(尤其在国内),以及文件完整性校验失败。这里提供三种替代方案:

获取方式优点注意事项
官方下载版本最新需注册MyTI账号
镜像站点下载速度快需验证SHA256
预编译包开箱即用可能缺少部分组件

推荐使用国内镜像站点下载后,用以下命令验证文件完整性:

echo "a1b2c3d4e5f6... ti-processor-sdk-rtos-j721e-evm-08.02.00-Linux-x86-64.bin" | sha256sum -c

提示:完整的校验值可在TI官方发布的manifest.txt中找到,务必确保完全匹配。

解压SDK时,建议在home目录下创建专用文件夹,避免路径中包含空格或特殊字符:

mkdir ~/tda4_dev && chmod 777 ~/tda4_dev ./ti-processor-sdk-rtos-j721e-evm-08.02.00-Linux-x86-64.bin --mode console --prefix ~/tda4_dev

3. 工具链配置:容易被忽视的关键细节

TDA4VM需要ARM64和ARM-R5两个不同的工具链。常见的误区是只安装主CPU所需的aarch64工具链,而忽略了实时子系统需要的R5工具链。以下是具体配置步骤:

  1. 安装ARM64工具链

    sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
  2. 获取ARM-R5工具链: 这个工具链不包含在标准Ubuntu仓库中,需要从ARM官网下载。使用以下命令快速获取:

    wget https://developer.arm.com/-/media/Files/downloads/gnu/12.2.rel1/binrel/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.xz tar xf arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.xz -C /opt/
  3. 环境变量配置: 在~/.bashrc末尾添加以下内容:

    export PATH="/opt/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi/bin:$PATH" export CROSS_COMPILE_A72=aarch64-linux-gnu- export CROSS_COMPILE_R5=arm-none-eabi-

验证工具链是否安装成功:

aarch64-linux-gnu-gcc --version arm-none-eabi-gcc --version

4. 构建系统镜像:从编译到烧录的完整流程

有了准备好的SDK和工具链,现在可以开始构建系统镜像。这个过程分为Linux部分和RTOS部分,需要特别注意两者的集成方式。

4.1 Linux系统构建

进入SDK的linux目录,执行以下命令开始构建:

cd ~/tda4_dev/ti-processor-sdk-rtos-j721e-evm-08.02.00/board-support/linux-5.10.100+gitAUTOINC+2d8e1e5d3a-g2d8e1e5d3a make defconfig ti_arm64_prune.config make menuconfig # 根据需要调整配置 make -j$(nproc) Image dtbs

常见编译错误及解决方案:

  • 错误:fatal error: openssl/bio.h
    解决方案:安装libssl-dev
    sudo apt install libssl-dev

  • 错误:gcc: error: unrecognized command line option ‘-mstack-protector-guard=global’
    解决方案:检查工具链版本,确保使用gcc 9或更高版本

4.2 RTOS系统构建

RTOS部分的构建需要特别注意内存区域的配置,这直接影响到双系统间的通信机制:

cd ~/tda4_dev/ti-processor-sdk-rtos-j721e-evm-08.02.00 make -j$(nproc) BUILD_PROFILE=release sysfw-image

构建完成后,关键输出文件位于:

~/tda4_dev/ti-processor-sdk-rtos-j721e-evm-08.02.00/binary-dir/ti-sci-firmware-j721e-gp.bin ~/tda4_dev/ti-processor-sdk-rtos-j721e-evm-08.02.00/binary-dir/tiboot3.bin

4.3 镜像打包与烧录

使用TI提供的脚本打包镜像:

cd ~/tda4_dev/ti-processor-sdk-rtos-j721e-evm-08.02.00 ./create-sdcard.sh

生成的sd_card.img可以直接用dd命令写入SD卡:

sudo dd if=sd_card.img of=/dev/sdX bs=1M status=progress

警告:确保/dev/sdX是正确的设备节点,错误的设备选择可能导致数据丢失。

5. 双系统调试技巧:提升开发效率

当系统成功启动后,如何高效调试双系统是下一个挑战。以下是几个实用技巧:

  1. RTOS日志查看

    sudo apt install netcat nc -u -l 5555 # 在主机上运行
  2. 共享内存监控

    // 在RTOS端添加调试代码 #include <ti/ipc/SharedRegion.h> SharedRegion_setEntry(0, 0x9C000000, 0x04000000, NULL, NULL);
  3. 性能分析工具链

    sudo apt install ti-processor-sdk-rtos-j721e-evm-perf

在项目实践中,最耗时的往往不是代码编写,而是环境配置和问题排查。记得定期备份工作环境,可以使用以下命令创建系统快照:

sudo timeshift --create --comments "Before SDK update"
← 返回列表