前言
- 最近搭建了 Nuvoton NK-980IOT开发板 的开发编译环境,记录一下 u-boot 的 编译流程
- Nuvoton NK-980IOT开发板 资源还是比较的丰富的,可以用于 嵌入式Linux 或者 RT-Thread 的学习开发
- 开发板上电比较的容易,两根 USB 线即可,不需要额外的直流电源供电,板子比较的小巧,不占用太大的空间。
- 开发板可以通过 USB 进行烧写,默认烧写到 SPI Flash 中,有【拨码开关】用于切换启动模式,烧写时,需要切换到 USB 模式
开发环境
- Win10 64位
- ubuntu 20.04
- 虚拟机 VMware® Workstation 16 Pro
- NUC980 bsp 自带的编译工具链: nuc980bsp.tar.gz,版本 gcc version 4.8.4 (GCC)
- NUC980 uboot 2016.11 版本 :
https://gitee.com/OpenNuvoton/NUC970_U-Boot_v2016.11
获取 u-boot
- 打算让 Nuvoton NK-980IOT开发板 引导 RT-Thread,发现有两个 bin 文件, u-boot-spl 与 u-boot,所以想亲自编译出这两个固件来
- u-boot 下载地址:https://gitee.com/OpenNuvoton/NUC970_U-Boot_v2016.11
- 使用 git 拉取 u-boot 代码到 ubuntu 主机中
git clone https://gitee.com/OpenNuvoton/NUC970_U-Boot_v2016.11.git
编译工具链
- Nuvoton NK-980IOT 的芯片是 nuc980 32位 ARM9 系列的CPU,需要使用较老版本的gcc 交叉编译工具链,这个工具链,在 Nuvoton 提供的 软件包中可以找到
- 方法是 进入官方网站
https://www.nuvoton.com.cn/
,然后搜索 nuc980,找到 相关的软件,下载NUC980_Linux-4.4_BSP
软件包 - 解压缩
NUC980_Linux-4.4_BSP_v1.05.000.zip
,然后把 解压后的nuc980bsp.tar.gz
复制到 ubuntu Linux 主机中,在 ubuntu Linux 主机中解压缩nuc980bsp.tar.gz
。 - 解压缩命令:
tar xzf nuc980bsp.tar.gz -C /home/zhangsz/nuc980
,命令后面的-C /home/zhangsz/nuc980
为指定的解压缩路径,不指定会解压缩在当前的目录下。
zhangsz@zhangsz:~/nuc980d$ cd nuc980bsp/
zhangsz@zhangsz:~/nuc980d/nuc980bsp$ ls
arm_linux_4.8.tar.gz image.tar.gz install.sh rootfs.tar.gz
- 这里只需要再次解压缩
arm_linux_4.8.tar.gz
即可,不需要使用install.sh
。 - 解压缩
arm_linux_4.8.tar.gz
命令tar xzf arm_linux_4.8.tar.gz -C /home/zhangsz/nuc980/tools
,解压缩到 指定目录下 - 配置gcc 的环境变量,我这里修改
/ect/profile
的方式, sudo vim /etc/profile
, 文件最后追加export PATH=$PATH:/home/zhangsz/nuc980d/tools/arm_linux_4.8/bin
- wq 保存后,然后
source /etc/profile
,交叉编译工具链即可生效
- 可以输入
$ arm-linux-gcc -v
验证 交叉编译工具链 环境变量配置成功
编译 u-boot
- 进入 uboot 的目录下,执行
- 1、
$ make distclean
清理工程 - 2、
$ make nuc980_iot_defconfig
开发板默认配置 - 3、
$ make -j4
进行编译
编译 u-boot 产物
- 编译后,有两个产物,可以复制出来,用于下载到 开发板
- 1、 u-boot.bin
- 2、u-boot-spl.bin
烧写 u-boot 与 u-boot-spl
- 如果开发板已经烧写过镜像,并且已经开机,就不需要每次都全部擦除一遍。
- 这里使用
NuWriter
进行 USB 烧写 - 烧写前,需要开发板 波动拨码开关,切换到 【USB 启动】模式,点击一下 【复位键】
u-boot-spl.bin
,bootloader 烧写到 0x400 处
-
u-boot.bin
, data 方式,烧写到 0x100000 处
- 详细的烧写方法参考官方的文档:
NK-980IoT_Quick_Start_Guide_EN_Rev1.01.pdf
烧写后启动
- 启动模式拨码开关,切回 SPI Flash 启动,然后点击【复位键】重启,看一下启动信息
- 这样 u-boot 与 u-boot-spl 编译并烧写成功了
小结
- Nuvoton NK-980IOT开发板 还有 USB、网络等接口,接下来可以用于嵌入式Linux 与 RT-Thread 的学习与研究