前言

  • 最近搭建了 Nuvoton NK-980IOT开发板 的开发编译环境,记录一下 u-boot 的 编译流程
  • Nuvoton NK-980IOT开发板 资源还是比较的丰富的,可以用于 嵌入式Linux 或者 RT-Thread 的学习开发
  • 开发板上电比较的容易,两根 USB 线即可,不需要额外的直流电源供电,板子比较的小巧,不占用太大的空间。
  • 开发板可以通过 USB 进行烧写,默认烧写到 SPI Flash 中,有【拨码开关】用于切换启动模式,烧写时,需要切换到 USB 模式

Nuvoton NK-980IOT开发板 u-boot 编译_980iot

开发环境

  • 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 提供的 软件包中可以找到

Nuvoton NK-980IOT开发板 u-boot 编译_980iot_02

  • 方法是 进入官方网站 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 ,交叉编译工具链即可生效

Nuvoton NK-980IOT开发板 u-boot 编译_开发板_03

  • 可以输入 $ arm-linux-gcc -v 验证 交叉编译工具链 环境变量配置成功

Nuvoton NK-980IOT开发板 u-boot 编译_980iot_04

编译 u-boot

  • 进入 uboot 的目录下,执行
  • 1、$ make distclean 清理工程
  • 2、 $ make nuc980_iot_defconfig 开发板默认配置
  • 3、 $ make -j4 进行编译

编译 u-boot 产物

  • 编译后,有两个产物,可以复制出来,用于下载到 开发板

Nuvoton NK-980IOT开发板 u-boot 编译_linux_05

  • 1、 u-boot.bin
  • 2、u-boot-spl.bin

烧写 u-boot 与 u-boot-spl

  • 如果开发板已经烧写过镜像,并且已经开机,就不需要每次都全部擦除一遍。
  • 这里使用 NuWriter 进行 USB 烧写
  • 烧写前,需要开发板 波动拨码开关,切换到 【USB 启动】模式,点击一下 【复位键】
  • u-boot-spl.bin,bootloader 烧写到 0x400 处

Nuvoton NK-980IOT开发板 u-boot 编译_解压缩_06

  • u-boot.bin , data 方式,烧写到 0x100000 处

Nuvoton NK-980IOT开发板 u-boot 编译_980iot_07

  • 详细的烧写方法参考官方的文档: NK-980IoT_Quick_Start_Guide_EN_Rev1.01.pdf

烧写后启动

  • 启动模式拨码开关,切回 SPI Flash 启动,然后点击【复位键】重启,看一下启动信息

Nuvoton NK-980IOT开发板 u-boot 编译_980iot_08

  • 这样 u-boot 与 u-boot-spl 编译并烧写成功了

小结

  • Nuvoton NK-980IOT开发板 还有 USB、网络等接口,接下来可以用于嵌入式Linux 与 RT-Thread 的学习与研究