iTop4412的开发板,官方带的编译环境是ubuntu12. ubuntu12是十年前的发行版本,无法安装我需要的vscode编译环境,所以尝试在最新版的ubuntu22.04上面搭建所需要的编译环境。 步骤如下:
1.交叉编译链
- 交叉编译链下载: https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- 将下载的交叉编译链 gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 通过SSH工具(比如xftp)拷贝到 ubuntu /usr/local/arm 目录下,然后解压(先拷贝再解压 顺序不能反,否则会有未知错误,比如cc1):
root@lnx:/usr/local/arm# ls gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 root@lnx:/usr/local/arm# tar -jxvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- 配置环境变量:在/etc/profile 最后一行加入环境变量
并重新加载PATH=$PATH:/usr/local/arm/gcc-arm-none-eabi-10.3-2021.10/bin
root@lnx:/usr/local/arm# source /etc/profile
2.源码
将iTOP-4412全功能版V4.0光盘资料\06_源码_uboot和kerne 中的 CodeSign4SecureBoot_POP.zip 、 CodeSign4SecureBoot_SCP.zip、iTop4412_uboot_20180320.tar.gz 拷贝到ubuntu的工作目录下并解压:
root@lnx:/home/rhine/i4412/ubootsrc# ls
CodeSign4SecureBoot_POP CodeSign4SecureBoot_SCP iTop4412_uboot
3.编译
1. 进入iTop4412_uboot目录,修改Makefile.找到Makefile CROSS_COMPLIE关键字改为:
CROSS_COMPILE = /usr/local/arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-
2.先在iTop4421_uboot 路径运行make指令解决编译错误:
root@lnx:/home/rhine/i4412/ubootsrc/iTop4412_uboot# make
此时可能出现两个错误:
(1) 999#define:删掉999
(2)“xxx aliased to external symbol xxx” :删掉错误提示未知附近的__inline__关键字
3.在源代码中修改一句打印
4.当改完报错 make 指令运行不再报错时,运行top4412的编译脚本(根据硬件型号确定编译参数)
root@lnx:/home/rhine/i4412/ubootsrc/iTop4412_uboot# sudo ./build_uboot.sh SCP_2GDDR
5.编译成功,生成.bin文件
6.烧写SD卡(根据SD卡盘符确定参数sdx):
root@lnx:/home/rhine/i4412/ubootsrc/iTop4412_uboot# ./mkuboot /dev/sdb
7.插上串口验证:
第三步中修改生效。
完。