AM57X Processor SDK Linux - run Installer

当你拿到一款IC芯片板卡的时候,第一步就是找 Getting Started Guide <-- Start Here。例如你拿到的是 AM57x Processor SDK Linux 这种完整 BSP 类 SDK,第一步永远都是搭环境,跑例程。也就是说先执行 *.Linux-x86-Install.bin,把交叉工具链、预编译内核、U-Boot、rootfs、board-support、devkit 等完整环境落地到你的主机目录。后续才是跑 setup.sh、制作 SD 卡、编译内核还是移植驱动。

借此来说明一下MPU开发流程与MCU的开发流程对比吧。。。

传统的MCU,非常简单,无非就是上电,然后片内 ROM(检查 Boot 引脚),之后就是 App(直接跑,裸机或 FreeRTOS),更简单的程序员写的程序几乎都是直接裸机app启动的。

那对比MPU呢,首先MPU有很多层,每一层都需要单独编译和维护。其次,整体流程就是上电,到ROM Bootloader(片内固化,不可改),到SPL(U-Boot 第一阶段),初始化 DDR3,再到U-Boot(第二阶段),再加载 ATF(ARM Trusted Firmware)加载 OP-TEE(可信执行环境,可选),再加载 Linux Kernel,挂载 rootfs(文件系统),App(用户态进程),上述流程针对当前板卡所述,大致流程都是类似的,无非就是DDR型号换一下,不是ARM的就没有ATF仅此而已。

那两者的工具链跟开发环境更不用说了,其次就是AM57x的特殊的一些组件如下。

SPL U-Boot 的第一阶段,体积极小,负责初始化 DDR

ATF ARM Trusted Firmware,处理安全启动、电源管理

OP-TEE 可信执行环境,运行在安全世界(TrustZone)

Device Tree(DTS) 描述硬件信息,替代 MCU 的 HAL 配置

PRU-ICSS 片上实时协处理器,运行工业协议(EtherCAT 等)

rootfs 根文件系统,包含库、工具、App

那到此为止,最后需要知道的就是开发流程了。

  1. 搭建开发环境,安装工具链(arm-linux-gnueabihf-gcc),安装依赖包,配置 TFTP / NFS 服务

  2. 编译 U-Boot(Bootloader),生成 MLO(SPL)+ u-boot.img

  3. 编译 Linux Kernel,生成 zImage + am57xx.dtb

  4. 构建 rootfs,Yocto 构建 or 使用预编译的

  5. 烧录到 SD 卡 / eMMC,分区:boot 分区 + rootfs 分区+拷贝对应文件

  6. 开发你的 App,交叉编译 之后 运行

U-Boot/ Bootloader 文档和构建指南

Kernel/ Linux 内核配置、驱动开发

Filesystem/ rootfs 构建(基于 Yocto)

PRU-ICSS/ 实时协处理器开发

Examples_and_Demos/ 应用示例

Industrial_Protocols/ HSR/PRP、EtherCAT 等工业协议

(只有下了才知道。。)

AM57X Processor SDK 文件层级说明

processor-sdk-linux-AM57X/

├── board-support/ ← 【板级代码】(最常修改的地方)

│ ├── ti-u-boot-2025.01+git/ ← U-Boot 源码

│ ├── ti-linux-kernel-6.12.43+git-ti/ ← Linux Kernel 源码

│ ├── prebuilt-images/ ← 预编译好的镜像(可直接烧录)

│ │ ├── MLO ← SPL(第一阶段引导)

│ │ ├── u-boot.img ← U-Boot 镜像

│ │ ├── zImage ← Kernel 镜像

│ │ ├── am57xx-evm.dtb ← 设备树

│ │ └── boot-am57xx-evm.tar.gz ← boot 分区打包

│ └── extra-drivers/ ← 额外驱动

├── linux-devkit/ ← 【交叉编译工具链】(不用改)

│ └── sysroots/x86_64-arago-linux/usr/bin/arm-oe-linux-gnueabi/

│ └── arm-oe-linux-gnueabi-gcc ← 交叉编译器(GCC 13.4.0)

├── filesystem/ ← 预编译根文件系统

│ ├── tisdk-default-image-am57xx-evm.rootfs.tar.xz ← 完整版 rootfs

│ ├── tisdk-base-image-am57xx-evm.rootfs.tar.xz ← 精简版 rootfs

│ └── tisdk-thinlinux-image-am57xx-evm.rootfs.tar.xz

├── example-applications/ ← 示例应用源码

├── yocto-build/ ← Yocto 构建系统

├── setup.sh ← 环境初始化脚本

├── Makefile ← 顶层 Makefile(一键编译)

└── Rules.make ← 编译变量配置(工具链路径等)

废话不多说,接下来就是环境需求的对齐,如下内容。

主机系统

Ubuntu 22.04 LTS 64位

必需软件包

sudo apt install -y \

xinetd tftpd nfs-kernel-server minicom \

build-essential libncurses5-dev \

autoconf automake dos2unix \

screen lrzsz lzop u-boot-tools

交叉编译工具链

ARM GCC 13.4.0(ARMv7 32位)

SDK 内已预装路径:linux-devkit/sysroots/x86_64-arago-linux/usr/bin/

构建系统

Yocto 5.0 (Scarthgap)

Python 3.12+、Git、CMake 3.28+

目标平台

芯片:AM5728 / AM5748

CPU:ARM Cortex-A15

Linux Kernel:6.12

U-Boot:2025.01

安装依赖包

bash 复制代码
sudo apt install -y \
    xinetd tftpd-hpa nfs-kernel-server \
    libncurses5-dev dos2unix screen lzop flex u-boot-tools \
    gcc-arm-linux-gnueabihf libssl-dev bc bison device-tree-compiler

配置 TFTP 服务

修改配置文件 /etc/default/tftpd-hpa:

bash 复制代码
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create"

sudo systemctl restart tftpd-hpa

sudo systemctl enable tftpd-hpa

配置 NFS 服务

修改配置文件 /etc/exports,添加:

bash 复制代码
/home/yewh/nfs *(rw,sync,no_subtree_check,no_root_squash)
/tftpboot      *(rw,sync,no_subtree_check,no_root_squash)

更新 Rules.make

bash 复制代码
EXEC_DIR?=/home/yewh/nfs/home/root    # App 安装到 NFS 目录
ROOTFS_PART?=/home/yewh/nfs           # rootfs 挂载点
BOOT_PART?=/tftpboot                  # boot 文件目录

接着就是编译u-boot以及kernel了,命令如下,非常简单。

cd /home/yewh/SDK/PROCESSOR_SDK_AM57X/processor-sdk-linux-AM57X

make u-boot

还有一个手动编译的,其实就是不涉及顶层makefile

SDK=/home/yewh/SDK/PROCESSOR_SDK_AM57X/processor-sdk-linux-AM57X

CROSS=$SDK/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-

UBOOT=$SDK/board-support/ti-u-boot-2025.01+git

配置

make -C UBOOT ARCH=arm CROSS_COMPILE=CROSS am57xx_evm_defconfig O=$UBOOT/build/a15

图形化配置(可选,修改配置项)

make -C UBOOT ARCH=arm CROSS_COMPILE=CROSS menuconfig O=$UBOOT/build/a15

编译

make -j(nproc) -C UBOOT ARCH=arm CROSS_COMPILE=CROSS O=UBOOT/build/a15

烧录到板卡

假设 SD 卡 boot 分区挂载在 /mnt/boot

sudo cp board-support/ti-u-boot-2025.01+git/build/a15/MLO /mnt/boot/

sudo cp board-support/ti-u-boot-2025.01+git/build/a15/u-boot.img /mnt/boot/

cd /home/yewh/SDK/PROCESSOR_SDK_AM57X/processor-sdk-linux-AM57X

make linux

交叉编译器(linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-)

其中设备树会有问题的,board-support/ti-linux-kernel-6.12.43+git-ti/arch/arm/boot/dts/ti/om

ap/,需要自行处理定位。

相关推荐
踏着七彩祥云的小丑3 小时前
嵌入式——认识电子元器件——温度开关系列
单片机·嵌入式硬件
嵌入式小企鹅3 小时前
CPU供需趋紧、DeepSeek V4全链适配、小米开源万亿模型
人工智能·学习·开源·嵌入式·小米·算力·昇腾
草莓熊Lotso3 小时前
Vibe Coding 时代:LangChain 与 LangGraph 全链路解析
linux·运维·服务器·数据库·人工智能·mysql·langchain
蜡台9 小时前
Python包管理工具pip完全指南-----2
linux·windows·python
Ujimatsu10 小时前
虚拟机安装Debian 13.x及其常用软件(2026.4)
linux·运维·ubuntu
千百元10 小时前
zookeeper启不来了
linux·zookeeper·debian
FreakStudio10 小时前
亲测可用!可本地部署的 MicroPython 开源仿真器
python·单片机·嵌入式·面向对象·并行计算·电子diy·电子计算机
AnalogElectronic12 小时前
linux 测试网络和端口是否连通的命令详解
linux·网络·php
rit843249912 小时前
STM32 + DS3231 + TM1640 实时时钟数码管显示系统
stm32·单片机·嵌入式硬件
Edward1111111112 小时前
4月28日防火墙问题
linux·运维·服务器