当前位置:网站首页>新唐NUC980使用记录:开发环境准备与编译配置基础说明
新唐NUC980使用记录:开发环境准备与编译配置基础说明
2022-06-22 17:55:00 【Naisu Xu】
文章目录
目的
微处理器开发使用前需要先准备相应的开发环境,主要涉及源码获取、交叉编译工具链配置、烧录工具准备等。这篇文章将对基于新唐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
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:38:53 +0800最后提交,hash为ca47203
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
buildroot
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文件夹就是各种示例和工具了
NUC980 NuWriter Linux command line tool
前面提到了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
新唐官方的 U-Boot 项目中与NUC980相关的一些目录或文件如下:
只是使用的话需要关注的主要就是 configs/ 目录和 include/configs/ 目录下的文件,两个目录下内容有一定关联,主要都是各个官方开发板的配置信息。
Linux Kernel
新唐官方的 Linux Kernel 项目中与NUC980相关的一些目录或文件如下:
只是使用的话需要关注的主要就是 arch/arm/configs/ 目录下的文件,主要是各个官方开发板的配置信息。
总结
上面为止新唐NUC980开发使用基础的准备工作了,主要都下载解压安装等内容。对于NUC980芯片本身的一些内容可以参考 《新唐NUC980使用记录:基础说明与资料索引》 。
边栏推荐
- Getting started with database connection pooling (c3p0, Druid)
- Cluster, distributed and microservice concepts and differences
- IPLOOK 5GC与亚信国际CHF(计费功能)对接成功
- Active Directory用户登录报告
- Detailed explanation of session mechanism and related applications of session
- Shell编程规范与变量
- Flutter系列-flutter路由管理
- PostgreSQL 字符串分隔函数(regexp_split_to_table)介绍以及示例应用
- PAT甲级1093 Count PAT‘s (25分)
- 下拉刷新及上拉加载更多的ListView
猜你喜欢

Detailed explanation of session mechanism and related applications of session

Robotframework installation tutorial

第八届 GopherChina 大会蓄势待发!

c# sqlsugar,hisql,freesql orm框架全方位性能测试对比之sqlserver

Message Oriented Middleware (I) MQ explanation and comparison of four MQS

shell脚本(五)——函数

智能家居不知如何选?不妨看下这篇选购指南

5gc and satellite integrated communication scheme

链表4- 21 合并两个有序链表

Redis中的布隆过滤器与布谷鸟过滤器,你了解多少?
随机推荐
Set of redis data structure
链表4- 21 合并两个有序链表
shell脚本详解(七)——正则表达式、sort、uniq、tr
AUTOCAD——五种标注快捷键
Thread pool: reading the source code of threadpoolexcutor
In the first half of the year, there were 7 new unicorns in this field, and the capital scrambled to enter the market
实现领域驱动设计 - 使用ABP框架 - 解决方案概览
贪心之分配问题(2)
Typescript (7) generic
PLSQL variable assignment
Niuke.com: consolidation interval
shell脚本详解(四)——循环语句之while循环和until循环(附加例题及解析)
2022 R2 mobile pressure vessel filling test question simulation test platform operation
程序员工具大全【持续更新】
维智科技亮相西部数博会,时空AI技术获高度认可
STM32 control matrix key, Hal library, cubemx configuration
如何在 FlowUs和Notion 等笔记软件中进行任务管理?
Error in created hook: “TypeError: Cannot read property ‘tableId‘ of undefined“
如何提高工作效率?苹果电脑效率工具合集
How to manage tasks in note taking software such as flowus and notation?