当前位置: 首页 > news >正文

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

前言

  • 最近搭建了 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 的学习与研究

相关文章:

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

前言 最近搭建了 Nuvoton NK-980IOT开发板 的开发编译环境,记录一下 u-boot 的 编译流程 Nuvoton NK-980IOT开发板 资源还是比较的丰富的,可以用于 嵌入式Linux 或者 RT-Thread 的学习开发 开发板上电比较的容易,两根 USB 线即可&#xff0…...

OpenCL使用CL_MEM_USE_HOST_PTR存储器对象属性与存储器映射

随着OpenCL的普及,现在有越来越多的移动设备以及平板、超级本等都支持OpenCL异构计算。而这些设备与桌面计算机、服务器相比而言性能不是占主要因素的,反而能耗更受人关注。因此,这些移动设备上的GPU与CPU基本都是在同一芯片上(So…...

浅谈osgEarth操控器类的createLocalCoordFrame函数如何将局部坐标系的点转为世界坐标系下的Martix(ENU坐标)

在osgEarth操控器类的EarthManipulator中的如下函数: void EarthManipulator::setLookAt(const osg::Vec3d& center,double azim,double pitch,double range,const osg::Vec3d& posOffset) {setCenter( center );.... //…...

PHP程序员和Python程序员的职业前景怎么样?我来聊聊自己的体会

大家好,今天我们来聊一下程序员这个职业的特点。在讲这个话题之前,我先说一下我自己的情况:我在福州和深圳做了8年左右的程序员,然后回到老家,在家里面为福州的一个公司做远程开发。目前已经在老家做了将近3年。 今天…...

【MATLAB图像处理实用案例详解(8)】—— 图像数字水印算法

目录 一、背景意义二、基本原理三、算法介绍3.1 数字水印嵌入3.2 数字水印提取 四、程序实现 一、背景意义 数字水印技术作为信息隐藏技术的一个重要分支,是将信息(水印)隐藏于数字图像、视频、音频及文本文档等数字媒体中,从而实现隐秘传输、存储、标注…...

最全的免费SSL证书申请方式

在SSL广泛普及的今天,申请一张免费的SSL证书是一件非常容易的事情。这里为大家总结当前阶段(2023年)拥有一张免费SSL证书的方式。首推的方式为来此加密网站,文章后面会有详细的介绍。 下面介绍几种获取免费SSL证书的方式,大家可以根据自己的…...

Ceph入门到精通-CrushMap算法概述

下面是伪代码object到osd的伪代码 locator =object_name obj_hash =hash(locator) pg =obj_hash %num_pg OSDs_for_pg =crush(pg) # returns a list of OSDs primary =osds_for_pg[0] replicas =osds_for_pg[1:] defcrush(pg): all_osds=[osd.0,osd.1,osd.2,...] resu…...

如何利用API做好电商,接口如何凋用关键字

一.随着互联网的快速发展,电子商务成为了众多企业的首选模式,而开放API则成为了电商业务中不可或缺的部分。API(Application Programming Interface),即应用程序接口,是软件系统不同组件之间交互的约定。电…...

Give me a logic game idea about economics

Here’s an logic game idea about economics: Game name: “Economics Tycoon” Game Objective: Build an economic empire and grow from a small business owner to a global tycoon. Gameplay: Start with a small business and limited resources. Manage your compa…...

测试之路,2023年软件测试市场领域有哪些变化?突破走得更远...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…...

配置Windows终端直接执行Python脚本,无需输入“python“

配置Windows终端直接执行Python脚本,无需输入"python" 1. 将Python加入环境变量2. 将Python后缀加入环境变量PATHEXT中3. 修改Python脚本的默认打开方式4. *将Python脚本命令加入环境变量*5. 测试 在Linux系统中,在Python脚本的开头指定Python…...

IDEA快捷键

文章目录 快捷键介绍重点掌握CtrlAltShiftCtrl AltCtrl ShiftAlt ShiftCtrl Shift Alt其他 快捷键介绍 重点掌握 psvmmain函数sout输出soutv带变量名输出.sout变量.调用 输出变量值.if布尔值.调用 生成if语句.for数组类型变量.for 生成for语句.var补全接收的变量&#x…...

关于c++指针数组的要设置初值的情况

在大多数情况下,都应该对指针数组进行初始化,以避免出现未知的值和潜在的未定义行为。指针数组在定义时必须指定元素个数,如果未指定元素值,则需要对其进行显式初始化。如果未初始化数组,则未知的值可能指向无效的内存…...

泰克RSA306B频谱分析仪测试信道功率方法

泰克RSA306B实时频谱分析仪是一种用于无线信号分析的仪器。它可以实时监控无线信号的频谱,帮助用户分析信号特征,掌握信号的功率、频率、调制等关键信息。在无线通信中,信道功率是一个非常重要的指标,它反映了信号在传输过程中的强…...

深度学习技巧应用12-神经网络训练中批归一化的应用

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用12-神经网络训练中批归一化的应用,在深度学习中,批归一化(Batch Normalization,简称BN)是一种重要的技巧,它在许多神经网络中都得到了广泛应用。本文将详细介绍批归一化的原理和应用,并结合PyTorch框架构建一个简…...

Masonry使用以及源码解析(未完待续

文章目录 Masonry使用约束约束优先级 以及 intrinsicContentSize相关问题 Masonry:iOS12Masonry源码解析下面是使用make.width点语法后的全部内部调用过程: Masonry使用 约束 在写Masonry之前,我想先来聊聊约束的基础知识,我们首先要了解一…...

118-Linux_数据库_索引

文章目录 一.索引是什么?二.索引为什么选择b树三.测试索引1.在mysql中创建数据库 test_indexdb2.在test_indexdb中创建表 test_index3.运行程序向表中插入1万条数据,都是字符串4. 查询验证 一.索引是什么? 索引是一种特殊的文件,它包含着对数据表里所…...

macos和windows区别 macos怎么运行windows程序

在我们使用电脑时,重要的是电脑内应用,而系统不过是运行软件的“容器”。日常生活中,我们常见的操作系统是macos和windows,那么macos和windows区别在哪?这两款操作系统的区别很大。macos怎么运行windows程序&#xff1…...

一起Talk Android吧(第五百四十二回:无进度值ProgressBar)

文章目录 概念介绍使用资源文件实现使用默认设置修改风格使用动画资源 使用代码实现经验总结 各位看官们大家好,上一回中咱们说的例子是"ProgressBar总结",本章回中介绍的例子是" 无进度值ProgressBar"。闲话休提,言归正转&#xf…...

Oracle DataGuard奇怪的ORA-16494错误

Oracle数据库DataGuard数据无法同步,主库查询v$archive_dest出现ORA-16494错误。 数据库版本Oracle 12.1.0.2.0: SQL> select * from v$version;BANNER --------------------------------------------------------------------------------CON_ID --…...

JavaSec-RCE

简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性&#xff0c…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​,覆盖应用全生命周期测试需求,主要提供五大核心能力: ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...