| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 新唐NUC980使用记录:U-Boot & Linux 编译与烧录(基于SPI NAND) -> 正文阅读 |
|
[系统运维]新唐NUC980使用记录:U-Boot & Linux 编译与烧录(基于SPI NAND) |
目的这篇文章中将测试在 NUC980 中运行Linux系统(基于SPI NAND)。 本文相关的开发环境准备请查看下面这篇文章: 这篇文章中内容均在下面的开发板上进行测试(理论上也可以在新唐官方NUMAKER NUC980 IIOT开发板中进行测试): 开始前请将将开发板的USB0和UART0都接到Windows电脑上,电脑上使用终端工具连接UART0。另外拨动拨动开关将PG[9:8]设置为01,以使用SPI FLASH U-Boot编译NUC980 U-Boot针对不同启动源的修改调整具体参考BSP包中的文档《NUC980 U-Boot v2016_11 User Manual》。 我这里使用自制的开发板所以从nuc980_evb.h和nuc980_defconfig这对最基础的配置上进行修改:
修改配置文件:
配置文件中找到对应位置进行修改:
修改配置选项:
配置选项中找到对应位置进行设置: 进行编译:
编译完成后u-boot.bin位于当前目录下,对于NAND而言还需要spl目录下的u-boot-spl.bin。将其拷贝至Windows中进行烧录。比如我的 /media/sf_common/ 是和Windows共享的目录,拷贝到这里即可:
拨动拨动开关将PG[1:0]设置为00,按下复位键。在Windows中使用NuWriter进行烧录: 烧录完成后拨动拨动开关将PG[1:0]设置为11,按下复位键。可以在终端界面中看到启动信息: U-Boot环境变量U-Boot最重要的是用来启动 Linux Kernel 的,比较常用的做法是使用U-Boot环境变量中设置的参数来读取内核镜像,然后启动内核。 环境变量可以写死在U-Boot程序中,可以使用U-Boot命令来设置,也可以通过烧录工具烧录到保存环境变量的存储区域。下面是最后一种方式的演示: 拨动拨动开关将PG[1:0]设置为00,按下复位键。在Windows中使用NuWriter进行烧录(如果选择时看不到文件,弹窗右下角选择All Files): 上面烧录的环境变量如下:
上面环境变量中使用 nand 命令从nand的0x200000位置读取0x1000000大小(16M)的数据到内存0x7fc0位置;然后启动位于内存0x7fc0开始的程序。当然因为现在还没有烧录内核所以启动会失败。 Linux编译默认设置NUC980 U-Boot针对不同启动源的修改调整具体参考BSP包中的文档《NUC980 Linux 4.4 BSP User Manual》。 我这里使用自制的开发板所以以nuc980_defconfig这个最基础的配置进行使用:
套用配置:
进行编译:
注意默认配置下编译时会将 NUC980-linux-4.4.y 同级的 rootfs 目录打包进内核(作为ramfs启动),同时会将编译出的镜像 980uimage 放到 NUC980-linux-4.4.y 同级的 image 目录中。 将其拷贝至Windows中进行烧录。比如我的 /media/sf_common/ 是和Windows共享的目录,拷贝到这里即可:
拨动拨动开关将PG[1:0]设置为00,按下复位键。在Windows中使用NuWriter进行烧录(如果选择时看不到文件,弹窗右下角选择All Files): 使用SPI NAND剩余分区前面U-Boot配置文件中对NAND的分区设置中除去U-Boot、环境变量、内核等需要的空间,剩余空间都被分配为user分区。但是上面默认编译出来的内核并没有把这个分区用起来,如果想用的话需要进行调整。 首先内核要支持对应的 SPI NAND 芯片型号:
接着要确保相关芯片驱动:
找到对应位置进行修改:
修改配置选项:
配置选项中找到对应位置进行设置:
重新编译烧录内核就可以看到效果了:
使用SPI NAND YAFFS2作为rootfs前面的使用中根据默认配置,用的是ramfs,这个对嵌入式设备来说是挺不错的,可以有效防止断电引起的文件系统出错的问题,缺点就是无法在烧录后运行时对rootfs修改保存。通常直接使用flash上多余的分区存放rootfs是更加常见的做法。 在上节的基础上取消ramfs,然后设置从flash分区启动rootfs: 修改后重新编译内核并烧录:
要使用SPI NAND YAFFS2作为rootfs,还需要制作可供烧录到flash中的rootfs数据。新唐的NUC980_Linux_Applications项目中的yaffs2utils套件工具可以将rootfs目录转化为可供烧录的数据。
打包镜像上面烧录过程都是分块一个个进行的,烧录不同的内容还需要设置不同的参数,开发中这样没问题,但是批量烧录时这样并不方便。使用NuWriter工具可以将所有需要的内容打包成一个镜像,烧录时也只要烧录这一个镜像即可。 下面是打包生成镜像演示:
镜像使用非常方便,并不需要关系地址参数等: 如果觉得镜像文件存放占空间的话可以镜像压缩(使用前需要解压): 更多内容可以参考BSP包中的文档《NUC980 NuWriter User Manual》。 总结根据上面的内容基本可以基于SPI NAND在NUC980上运行起系统来了。接下来使用中更多的是根据需求对kernel、rootfs、application的调整编写等。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 12:35:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |