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/,需要自行处理定位。

相关推荐
敲代码的哈吉蜂2 小时前
haproxy的算法——静态算法
linux·运维·服务器·算法
Y1rong2 小时前
linux之TCP
linux
苏宸啊2 小时前
OS环境变量
linux·c++
浩瀚之水_csdn2 小时前
avcodec_parameters_copy详解
linux·人工智能·ffmpeg
头发那是一根不剩了2 小时前
Linux 常用服务器命令
linux·运维·服务器
锅包一切2 小时前
二、几种安装类型
linux·运维·后端·操作系统
vortex52 小时前
详解Linux磁盘相关命令:从基础查看到底层运维
linux·运维
敲代码的哈吉蜂2 小时前
Haproxy
linux·运维·服务器
敲代码的哈吉蜂2 小时前
haproxy的算法——混合算法
linux·运维·服务器·算法