新唐的nuc980/nuc972的开发3-官方源码编译

news2024/11/18 15:43:39

上一节中bsp已经安装,交叉环境已经搭建,理应就可以正常的编写上层的应用程序啦。

但是系统启动次序是- uboot-> kernel内核 ->挂载文件系统 ->上层应用程序
下面是bsp安装后的文件:

因此本章节,将讲解 uboot-> kernel内核 ->挂载文件系统 等的官方源码编译

有一个问题:新唐官方在github,gitee,gitlab都有源代码,但是很多事网速和墙的原因,访问可以会出现问题,可以参考
国内gitee:OpenNuvoton - OpenNuvoton

github:
https://github.com/OpenNuvoton/MPU-Family

  • 官方源码编译

3.1编译Uboot

进入uboot源码目录     cd u-boot-2016.11/

在目录的configs文件下有很多的配置文件。   ls configs/nuc980*

查到与980相关的配置有三个。

随便选一个,开始编译。

make nuc980_defconfig

make

编译结束,会生成u-boot.bin 及 spl/u-boot-spl.bin

3.2编译Linux Kernel

BSP安装之后会获取到官方的linux kernel。

进入源码目录:cd linux-4.4.y/

查看配置文件  : ls arch/arm/configs/nuc980*

选一个进行配置:make nuc980_defconfig

现在还不能直接编译,会报错找不到文件系统。

到之前下载bsp目录下,将rootfs拷贝到kernel源码同级目录。

官方配置的ramdisk镜像,文件系统会和kernel一起被打包。同时在kernel同级目录创建image文件夹 : mkdir ../image

安装软件: sudo apt-get install u-boot-tools

编译内核镜像 :make uImage

编译完成,生成镜像文件

3.3 烧录准备-安装虚拟串口的驱动

首先安装驱动,....安装完成

这个时候插上USB,应该可以正常识别出一个设备

一定要把这一步实现, 不管使用哪种方式启动,下载镜像始终是要USB的。

3.4 启动方式

NUC980支持4种启动方式

目前板子上有SD卡、SPI FLASH以及NAND FLASH的接口。

先打开原理图。

首先看原理图,在板子上有两个拨码开关。

连接着上图所示的IO口

数据手册上:

 

启动整理如下:

 

主要关注的是PG0和PG1,上电的不同方式决定了四种启动形式

然后比较重要的是PG3和PG5。PG3管的是看门狗,PG5管的是调试串口。

那么作为一个开发者,PG3和PG5应该都是在ON的位置

 3.5USB启动方式

阅读USB启动方式的程序流程图,可以知道,数据被下载到了DRAM里面,这种方式应该是用于调试,一旦断电就会丢失数据。

连接PUTTY,使能串口,方便调试

打开终端,成功设置为USB启动,串口终端将有类似 如下的打印:

 

 接下来,确定USB正常工作;打开烧录软件;连接设备;

随便选个bin文件过来,放心刷,反正是在dram里面,掉电就没了的

 

看终端信息
 

3.6 NAND启动方式

之前编译了uboot和kernel,现在可以使用那些固件了

首先把之前编译的内容拿到桌面

一共是四个文件,设置启动方式为nand,通过串口终端确认如下:

 打开烧录软件

烧录u-boot-spl.bin

烧录uboot.bin

烧录kernel

文件系统的烧录可以根据自己的需要进行(需要启动后mount),

烧录完成 ,然后复位,启动

没有跑起来,不要紧,看调试信息,有个时间输出,可以证明烧录是正常的
找个正常的镜像,再来一次

正常启动,这里还有个配置过程,先不管,后面再说


3.7 Linux内核启动

前面已经将镜像烧录进了nand
但是没有启动,因为还有一个配置过程(没有环境变量的参数文件)
以NAND启动方式,进入putty

从nand里面读取数据到DRAM运行
nand read 0x7FC0 0x200000 0x800000

启动
bootm 0x7FC0

就 正常进入

这种方式 时不常用的;缺乏env和文件系统的实现,后续再跟进讲解!

正常编译好之后,如何打包,并且进行烧录,可以参考如下教程:https://blog.csdn.net/xiaoxilang/article/details/133675267

最后可以实现一键烧录,才是便于量产的方式!!!! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1637191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySql-日期分组

一、分别统计各时间各类型数据条数 数据库的 request_time字段 数据类型:timestamp 默认值:CURRENT_TIMESTAMP 例子: 2024-01-26 08:25:48 原数据: 1、将数据按照日期(年月日)形式输出 按照request_…

C语言:文件操作(下)

片头 嗨!小伙伴们,在前2篇中,我们分别讲述了C语言:文件操作(上)和 C语言:文件操作(中),今天我们将会学习文件操作(下),准…

电商技术揭秘四十一:电商平台的营销系统浅析

相关系列文章 电商技术揭秘相关系列文章合集(1) 电商技术揭秘相关系列文章合集(2) 电商技术揭秘相关系列文章合集(3) 文章目录 引言一、用户画像与精准营销用户画像与精准营销的概念用户画像在精准营销中…

基于FPGA的数字信号处理(7)--如何确定Verilog表达式的位宽

一般规则 很多时候,Verilog中表达式的位宽都是被隐式确定的,即使你自己设计了位宽,它也是根据规则先确定位宽后,再扩展到你的设计位宽,这常常会导致结果产生意想不到的错误。比如: timescale 1ns/1ns mod…

Docker命令(持续更新)

目录 下载和安装 安装必要的依赖项 添加Docker仓库 安装Docker Engine 启动Docker服务 配置阿里云镜像 卸载Docker 镜像 删除指定id镜像 删除所有镜像 镜像保存本地 本地镜像加载到docker服务器内 容器 创建容器 查看所有容器 停止所有容器 启动已存在容器 删…

从键入网址到网页显示,期间发生了什么?

从键入网址到网页显示,期间发生了什么? 孤单小弟【HTTP】真实地址查询【DNS】指南帮手【协议栈】可靠传输【TCP】远程定位【IP】两点传输【MAC】出口【网卡】送别者【交换机】出境大门【路由器】互相扒皮【服务器与客户端】相关问答 不少小伙伴在面试过程…

【千帆平台】AppBuilder工作流编排新功能体验之创建自定义组件

欢迎来到《小5讲堂》 这是《千帆平台》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言工作流编排组件 创建组件组件界面组件信息 组件画布操作节点…

Liunx发布tomcat项目

Liunx在Tomcat发布JavaWeb项目 1.问题2.下载JDK3.下载Tomcat4.Tomcat本地JavaWeb项目打war包、解压、发布5.重启Tomcat,查看项目 1.问题 1.JDK 与 Tomcat 版本需匹配,否则页面不能正确显示 报错相关:Caused by: java.lang.ClassNotFoundException: java…

Tag文件与Tag标记

一、Tag文件 Tag文件与JSP文件很类似,可以被JSP页面动态加载调用,实现代码的复用,但用户不能通过该Tag文件所在Web服务目录直接访问Tag文件 1、文件结构 Tag文件是扩展名为.tag的文本文件,其结构和JSP文件类似。一个Tag文件中可…

十一、大模型-Semantic Kernel与 LangChain 的对比

Semantic Kernel 与 LangChain 的对比 Semantic Kernel 和 LangChain 都是用于开发基于大型语言模型(LLM)的应用程序的框架,但它们各有特点和优势。 基本概念和目标 Semantic Kernel 是一个由微软开发的轻量级 SDK,旨在帮助开发…

nginx版本号隐藏

隐藏Nginx版本号的主要作用是增强服务器的安全性。当Nginx的版本号被隐藏时,攻击者就难以利用已知的漏洞来攻击特定版本的软件,因为他们无法确切知道服务器上运行的Nginx版本。这样可以降低攻击者对系统的了解,增加攻击的复杂性,从…

【大模型系列】大模型的上下文长度解释与拓展

文章目录 1 什么是大模型的上下文长度?2 拓展大模型上下文长度的方式参考资料 1 什么是大模型的上下文长度? 大模型的上下文长度(Context Length)是指在自然语言处理(NLP)的大型语言模型(Large…

《QT实用小工具·四十四》支持图片和动图的文本编辑器

1、概述 源码放在文章末尾 该项目实现了一个功能丰富的文本编辑器,除了包含文本常规的编辑功能,还包括图片的插入功能和动图的插入功能,项目demo演示如下所示: 项目部分代码如下所示: #include "imagehelper.…

【Linux网络编程】DNS、ICMP、NAT技术、代理服务器+网络通信各层协议总结

DNS、ICMP、NAT技术、代理服务器网络通信总结 1.DNS2.ICMP协议2.1ping命令2.2traceroute命令 3.NAT技术4.NAT和代理服务器5.网线通信各层协议总结 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励&…

第七篇:专家级指南:Python异常处理的艺术与策略

专家级指南:Python异常处理的艺术与策略 1 引言 在编程的世界中,异常处理是一门必修的艺术。它不仅涉及到程序的错误处理,更广泛地影响着软件的稳定性、健壮性和用户体验。本篇文章将深入探讨Python中的异常处理,展示如何通过精心…

瘦身秘籍:如何使用 PyInstaller 打造超小型 Python 可执行文件

你是否曾经尝试过将你的 Python 程序打包成一个可执行文件,却发现生成的文件大得惊人?别担心,本文将教你如何使用 PyInstaller 尽可能减小生成的 onefile 大小,让你的程序轻盈如风! 1. 使用虚拟环境 首先&#xff0c…

边循环边删除List中的数据

List边循环,边删除;这种一听感觉就像是会出问题一样,其实只要是删除特定数据,就不会出问题,你如果直接循环删除所有数据,那可能就会出问题了,比如: public static void main(String[…

基于RK1126的小型化低功耗AI相机,支持人体特征识别、人脸特征识别、案例帽识别等

提供可定制的⼀套 AI相机软硬件开发平台, 硬件采⽤ RockchipRV1126处理器解决 ⽅案,可选择搭配 SonyIMX系列传感器,POE供电与数据传输,采⽤ 38板标准结构设计,快速按需定制外壳,⽀撑从开发到验证到批量⽣产…

Redis集群模式:高可用性与性能的完美结合!

【更多精彩内容,欢迎关注小米的微信公众号“软件求生”】 大家好,我是小米,一个积极活泼、喜好分享技术的29岁程序员。今天我们来聊聊Redis的集群模式,以及它是如何实现高可用的。 什么是Redis集群模式? Redis的集群模式是为了避免单一节点负载过高导致不稳定的一种解决…

Windows之隐藏特殊文件夹(自定义快捷桌面程序)

作者主页:点击! 创作时间:2024年5月1日12点55分 祝大家劳动节快乐~ Windows中的特殊文件夹是指一些预定义的文件夹,用于存储特定类型的数据或文件。这些文件夹通常由操作系统或应用程序使用,但用户也可以访问和管理它…