目录
虚拟机: VMware
操作系统版本: ubuntu 22.04
文本编辑器: vscode
开发板: LubanCat-RK3568
USB转TTL模块:CH340
AArch64位编译器命名规则
aarch64是全新的64位指令集,aarch64前缀直接表明64位架构,64位架构统一了浮点支持,无需像arm32用eabihf标记硬浮点;
[arch] [-vendor] [-os] [-abi] [-gcc/g++]
arch:目标芯片架构, RK3568开发板为Cortex-A55内核,架构为aarch64
vendor:工具链提供商,当工具链不依赖特定芯片厂商,采用none替代
OS:用于明确目标设备的操作环境,当os字段值为none时,表示目标设备无操作系统(裸机),当os字段值为linux时,表示目标设备运行linux操作系统;当
os字段值为none时,适用场景如下:
- 单片机、嵌入式系统初始化代码
Bootloader开发- 内核引导阶段代码
RTOS(实时操作系统)开发当
os字段值为linux时,适用场景如下:
Linux应用程序- 内核模块
- 驱动程序
abi:工具链提供应用二进制接口,elf表示裸机,GNU 表示GNU/Linux的glibc,其中glibc是GNU项目提供的C标准库实现,为Linux系统和其他基于GNU工具链的操作系统提供核心API。

安装交叉工具链编译
RK3568为ARM Cortex-A55内核(基于ARMV8-A架构),64位架构,目标开发板需要运行裸机程序,因此选择交叉编译工具链为 aarch64-none-elf-gcc;
首先查看当前ubuntu系统运行的cpu架构,方便官网下载与当前系统架构匹配的工具链;


安装aarch64-none-elf工具链
步骤一:将下载到本地的工具链上传到ubuntu系统下的自定义目录,解压该文件;
tar -xJvf arm-gnu-toolchain-14.2.rel1-x86_64-aarch64-none-elf.tar.xz

步骤二:查看解压后的bin目录所在路径,将此路径添加到~/.bashrc中;

sudo vim ~/.bashrc
bashrc是Bash Shell的 运行时配置文件,可以设置环境变量,将自定义路径添加到系统路径中,在bashrc文件最后一行添加如下内容,需要注意路径替换;
export PATH="/home/shuju/Linux/ToolChain/aarch64-none-elf/arm-gnu-toolchain-14.2.rel1-x86_64-aarch64-none-elf/bin:$PATH"

步骤三:使能环境变量,使配置文件生效;
source ~/.bashrc
步骤四:验证安装是否成功
aarch64-none-elf-gcc -v

安装aarch64-none-linux-gnu工具链
RK3568为ARM Cortex-A55内核(基于ARMV8-A架构),64位架构,目标开发板需要运行U-Boot程序,U-Boot虽然属于裸机开发,但U-Boot是为 Linux 系统启动服务的,因此需要同时使用 裸机工具链 和 Linux 交叉编译工具链;

步骤一:将下载到本地的工具链上传到ubuntu系统下的自定义目录,解压该文件;
tar -xJvf arm-gnu-toolchain-14.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz

步骤二:查看解压后的bin目录所在路径,将此路径添加到~/.bashrc中;


161

被折叠的 条评论
为什么被折叠?



