微处理器开发使用前需要先准备相应的开发环境,主要涉及源码获取、交叉编译工具链配置、烧录工具准备等。这篇文章将对基于新唐NUC980的相关内容做个说明。
如果是要烧录到Flash等需要用到新唐官方烧录工具的场合推荐在Windows中进行,需要安装相关驱动,以及下载烧录工具。
在新唐官网NUC980页面的 资源>软件 中找到开发包软件开发包进行下载:
https://www.nuvoton.com.cn/products/microprocessors/arm9-mpus/nuc980-industrial-control-iot-series/
下载得到NUC980_Linux-4.4_BSP_v1.03.000.zip压缩包,解压得到的文件夹中包含BSP、Documents、Tools。
Documents 中含有相关内容详细的中英文文档,这些文档对于入门使用非常有帮助。
Tools中WinUSB4NuVCOM.exe是新唐设备的USB-ISP驱动,NuWriter是烧录工具。
驱动安装完成后,如果开发板 PG[1:0] = 00
,USB0和UART0都接到电脑上,按复位按钮复位开发板后分别可以在串口终端和设备管理器中看到信息和设备:
如果使用新唐官方的开发板的话还要下载USB-CDC串口驱动 NuvotonCDC_V1.00.001_Setup :
https://www.nuvoton.com/resource-download.jsp?tp_GUID=SW1020160914071736
下载安装Ubuntu Desktop(这里使用版本为20.04.4):
https://ubuntu.com/download/desktop
安装完成后进行基础环境安装与设置:
sudo apt update
sudo apt install -y build-essential
sudo apt install -y git-all
# git使用时可能需要设置用户名和邮箱
# git config --global user.name "naisu"
# git config --global user.email [email protected]
sudo apt install -y libc6:i386
sudo apt install -y lib32stdc++6
sudo apt install -y lib32z1
sudo apt install -y libusb-1.0-0-dev
sudo apt install -y libncurses5-dev
sudo apt install -y u-boot-tools
以下根据需求安装:
# 安装SSH服务
sudo apt install -y openssh-server
# 安装编辑器 VS Code
sudo snap install code --classic
# VS Code中可以安装Embedded Linux Kernel Dev扩展,方便开发
如果使用虚拟机的话为了方便可以开启共享粘贴板、共享目录以及桥接网络。
编译工具链也在上面的BSP包中,我这里通过Ubuntu自带的浏览器下载,得到的 NUC980_Linux-4.4_BSP_v1.03.000.zip 文件位于 ~/Downloads/ 目录下。
# 建立并进入工作目录
mkdir ~/nuc980-sdk
cd ~/nuc980-sdk/
# 解压BSP包
mv ~/Downloads/NUC980_Linux-4.4_BSP_v1.03.000.zip ./
unzip NUC980_Linux-4.4_BSP_v1.03.000.zip
tar xzvf NUC980_Linux-4.4_BSP_v1.03.000/BSP/nuc980bsp.tar.gz
# 解压得到nuc980bsp文件夹中包含 arm_linux_4.8.tar.gz image.tar.gz install.sh rootfs.tar.gz
# 分别是 编译工具链 预编译好的系统文件 安装脚本 预先准备的根文件系统
可以使用install.sh脚本进行安装,它会将编译工具链安装到/usr/local目录下,设置环境变量,然后解压剩余image.tar.gz和rootfs.tar.gz到指定的工作目录下的nuc980bsp目录中:(这个方式我个人并不喜欢看看就好)
cd ~/nuc980-sdk/
cd nuc980bsp/
sudo ./install.sh
# 安装过程中根据提示输入工作目录,比如我这里是/home/nx/nuc980-sdk
# 安装完成后重启系统即可使环境变量生效
官方工具的把编译工具链安装到非工作目录下,以及登录设置环境变量这种操作我个人不太喜欢,所以我一般使用下面方式:(如果使用官方方式安装下面内容可以不用查看)
cd ~/nuc980-sdk/
tar xzf nuc980bsp/arm_linux_4.8.tar.gz
tar zxf nuc980bsp/image.tar.gz
sudo tar zxf nuc980bsp/rootfs.tar.gz
# 这种方式下可以使用下面命令临时性的将编译工具链路径设置到环境变量中
# 注意使用自己的路径,每次打开终端都需要重新设置:
export PATH=$PATH:/home/nx/nuc980-sdk/arm_linux_4.8/bin
# 删除无用的东西
# rm -rf nuc980bsp/
# rm -rf NUC980_Linux-4.4_BSP_v1.03.000/
# rm -rf NUC980_Linux-4.4_BSP_v1.03.000.zip
# 目前工作目录中包含 arm_linux_4.8 image rootfs 几个文件夹
特别需要注意的是我这里Ubuntu是64位的,而这个编译工具链是32位的,前面开发编译环境准备时相关的32位库必须完整安装,不然可能工具链无法正常使用。
uboot和linux项目需要从网上下载,下载地址可以在BSP解压得到的Documents文件夹中的《NUC980 Linux 4.4 BSP User Manual》文档中找到。官方提供了github、gitee和gitlab三种链接,选择合适的进行下载即可:
cd ~/nuc980-sdk/
git clone --depth=1 https://github.com/OpenNuvoton/NUC970_U-Boot_v2016.11.git
# 得到的NUC970_U-Boot_v2016.11文件夹就是uboot项目了,这个是NUC970和NUC980共用的
# 当前版本由ychuang3在2022-01-17 10:36:11 +0800最后提交,hash为ca47203
# tar -cJf NUC970_U-Boot_v2016.11.tar.xz NUC970_U-Boot_v2016.11/
git clone --depth=1 https://github.com/OpenNuvoton/NUC980-linux-4.4.y.git
# 得到的NUC980-linux-4.4.y文件夹就是linux项目了
# 当前版本由mjchen在2022-03-21 14:09:54 +0800最后提交,hash为b488a698
# tar -cJf NUC980-linux-4.4.y.tar.xz NUC980-linux-4.4.y/
buildroot是一个嵌入式Linux构建工具,这里使用它来构建根文件系统,通常选择下载最新的长期支持版即可:
cd ~/nuc980-sdk/
# 下载与解压
wget https://buildroot.org/downloads/buildroot-2022.02.3.tar.xz
tar -xJf buildroot-2022.02.3.tar.xz
# rm buildroot-2022.02.3.tar.xz
新唐官方提供了应用程序示例,和上面一样也从网上进行下载:
cd ~/nuc980-sdk/
git clone --depth=1 https://github.com/OpenNuvoton/NUC980_Linux_Applications.git
# 得到的NUC980_Linux_Applications文件夹就是各种示例和工具了
前面提到了NuWriter这个Windows版本的烧录工具,这个工具也有Linux命令行版本的,在某些特定情况下命令行版本的工具是比较有用的,这里也对此进行安装:
cd ~/nuc980-sdk/
git clone --depth=1 https://github.com/OpenNuvoton/NUC980_NuWriter_CMD.git
# 下载得到NUC980_NuWriter_CMD目录
cd NUC980_NuWriter_CMD/
# 配置、编译、安装
./configure --prefix=$PWD/install
make
make install
安装完成后会在NUC980_NuWriter_CMD目录下得到程序nuwriter,该程序接收一个配置文件,根据配置文件配置的内容进行程序烧录,比如下面方式:
./nuwriter run.ini
默认情况下工具安装完成后工具同目录下会有一个 run.ini 文件,可以参考这个文件中说明来编写自己的配置文件。
经过上面的安装之后nuc980-sdk目录下应该包含下面几个内容:
目录 | 说明 | 注释 |
---|---|---|
arm_linux_4.8 | 交叉编译工具链 | 下面方式临时添加到环境变量,注意使用自己的路径:export PATH=$PATH:/home/nx/nuc980-sdk/arm_linux_4.8/bin |
NUC970_U-Boot_v2016.11 | U-Boot源码 | |
NUC980-linux-4.4.y | 内核源码 | |
buildroot-2022.02.3 | 构建工具 | 这里用它来构建文件系统 |
image | 预置的系统镜像 | 其中内容没用,目录本身有用; 默认配置下内核编译时会输出结果到内核源码目录同级的image目录中; |
rootfs | 预置的文件系统 | 仅供测试使用; 默认配置下内核编译时会将内核源码目录同级的rootfs打包到内核中; |
NUC980_Linux_Applications | 应用程序示例 | |
NUC980_NuWriter_CMD | 命令行烧写工具 |
特别需要注意的是新唐官方提供的Linux内核项目默认配置下和其同级的image、rootfs目录会有交互。
新唐官方的 U-Boot 项目中与NUC980相关的一些目录或文件如下:
只是使用的话需要关注的主要就是 configs/
目录和 include/configs/
目录下的文件,两个目录下内容有一定关联,主要都是各个官方开发板的配置信息。
新唐官方的 Linux Kernel 项目中与NUC980相关的一些目录或文件如下:
只是使用的话需要关注的主要就是 arch/arm/configs/
目录下的文件,主要是各个官方开发板的配置信息。
鉴于整个过程中有很多东西需要下载,部分内容可能下载缓慢,所以将本文中出现的主要的几个项目内容进行了打包,方便将来使用。下载链接如下:
链接:https://pan.baidu.com/s/15T3W1v7fhAgP-4BtbCaO4g
提取码:oiv7
下载下来是个zip格式压缩包,解压后得到下面内容(Ubuntu上可以使用 unzip 进行解压):
各个文件说明如下:
文件 | 说明 |
---|---|
buildroot-2022.02.3.tar.xz | 根据上文下载的压缩包 |
buildroot-2022.02.3-with-ssh-dl.tar.xz | 使用 make menuconfig(配置目标、工具链、SSH) > make > make clean 后的文件夹进行重新打包压缩,其dl文件夹中包含了所有make时需要下载的东西 |
NUC970_U-Boot_v2016.11.tar.xz | 根据上文下载的项目重新打包 |
NUC980_Linux_Applications.tar.xz | 根据上文下载的项目重新打包 |
NUC980_Linux-4.4_BSP_v1.03.000.zip | 从新唐官网下载的BSP包 |
NUC980_NuWriter_CMD.tar.xz | 根据上文下载的项目重新打包 |
NUC980-linux-4.4.y.tar.xz | 根据上文下载的项目重新打包 |
上面为止新唐NUC980开发使用基础的准备工作了,主要都下载解压安装等内容。对于NUC980芯片本身的一些内容可以参考 《新唐NUC980使用记录:基础说明与资料索引》 。