从单片机开发转向Linux开发系列博客三:uboot编译下载

 

1.引言

本篇介绍如何编译及下载uboot到ARM板子上。对于初学者有这么三个名词,分别是uboot、kernel和rootfs。这三个名词我刚开始接触是非常的困惑,现在随着使用增多稍微有一点点感觉。大家刚开始学不用太纠结这个问题,等实际操作一段时间就会理解了。uboot的主要作用是用来启动linux内核,因为CPU不能直接从块设备(如NAND/EMMC/SD卡)中执行代码,需要把块设备中的程序复制到内存中,而复制之前还需要进行很多初始化工作,如时钟、串口等;要想让CPU启动linux内核,只能通过另外的程序,进行必要的初始化工作,再把linux内核中代码复制到内存中,并执行这块内存中的代码,即可启动linux内核;一般情况下,我们把linux镜像储存在块设备中如SD卡、Nandflash等块设备中,首先执行uboot代码,在uboot中把块设备中的内核代码复制到某内存地址处,然后再执行这个地址,即可启动内核。

2.官方资料下载

针对某一款具体的芯片,我建议从该芯片原厂那里拿到官方的资料,因为官方的资料会不断的更新同时也更有权威性,NUC972的官方bsp资料位于:https://github.com/OpenNuvoton/ARM7-ARM9-Family

我们先把Uboot:https://github.com/OpenNuvoton/NUC970_U-Boot_v2016.11 下载下来,最简单的方法就是直接点击Clone or download  -   Download Zip文件。

 

3.Uboot编译

步骤1:在虚拟机~/nuc972 目录下,新建uboot文件夹

 

步骤2:将windows下载的NUC970_U-Boot_v2016.11-master.zip 放到虚拟机上述目录

 

步骤3:解压NUC970_U-Boot_v2016.11-master.zip文件

 

步骤4:进入到NUC970_U-Boot_v2016.11-master目录,编译前先source /home/topsemic/nuc972/toolchain/environment.sh

输入make,先编译下试试,提示以下错误:

make:arm-linux-gcc:命令未找到

 

我们要看下Makefile,原因是Makefile中CROSS_COMPILE设置的问题,需要修改下,改成我们装的交叉编译链,

 

再次编译,提示如下错误:

 

提示我们没有.config 文件,让我们输入make oldconfig 或者make menuconfig 或者make xconfig

我们先make menuconfig 试试,输入make menuconfig,又提示错误了

 

我们上网百度查一下,是缺少libncurses5-dev库的原因,安装一下,

sudo apt-get install libncurses5-dev

 

再一次输入make menuconfig,过一会弹出了如下界面:

 

这就表示make menuconfig执行成功了。

这是一个图像化的配置界面,可以用来配置uboot里的各种参数。我们使用键盘方向键向右移动到Save,按Enter键我们先保存下试试。

 

在下图弹出的OK上按Enter键保存

 

再Exit就行了

 

 

最后Exit即可。这样就生成了.config文件。

注意.config 文件是个隐藏文件(以.开头的都是隐藏文件),需要ls -a 才能看到

 

这时再次输入make

 

又提示了错误我们猜测可能是config文件不对,我们用nuc972相关的配置,输入make nuc970_defconfig,其实这个nuc970_deconfig是个文件,在configs目录中,打开看下,里面就是一些配置选项。关于uboot里这些参数的定义,大家可以参考《NUC970 Linux BSP User Manual CHT.pdf》4.1节介绍。

 

再次make,成功,生成u-boot.bin(在uboot根目录下)和u-boot-spl.bin(uboot 根目录的spl文件夹里)

 

 

关于uboot的详细启动过程,大家也可以上网查阅资料了解。

4.烧写uboot

既然已经成功编译uboot,那么我们烧写到板子里看看能否运行吧。烧写前准备工作:

在Windows上线安装WinUSB4NuVCOM_NUC970.exe,这是一个驱动,具体安装步骤参考《NUC970 Linux Quick Start Guide CHT.pdf》中3.1节介绍,此文档在百度网盘里。

1)板子上会有跳线帽或者拨码开关,将其置于usb下载模式,连接usb到电脑,给板子上电

2)打开NuWriter.exe,

 

   因为我的板子里原来有uboot,kernel,文件系统,我先Erase一下:

 

3)将上面生成的u-boot-spl.bin放进来

 

烧录成功后显示:

 

再烧录uboot.bin

 

4)将跳线帽或者拨码开关切换回NAND 运行模式,上电,

连接上调试串口输出以下信息:

 

6.结束语

本篇本来计划把Kernel和rootfs一起写了的,但是由于时间原因,先介绍uboot,感兴趣的朋友可以先自行编译kernel,烧写,看看效果。

本期相关的资料还是在百度网盘,链接:https://pan.baidu.com/s/1pN5Jc8L2FbrD8YgX6yHWhQ 提取码:lke3;(03 Lesson3 uboot编译下载)里面。

 

有任何问题欢迎大家留言交流讨论。

   下期会给大家介绍kernel以及rootfs。

 

pdf原文请到:https://topsemic.com/2019/04/15/linux%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97%E4%B8%89%EF%BC%9Auboot%E7%BC%96%E8%AF%91%E4%B8%8B%E8%BD%BD/

下载

更多嵌入式相关原创文章,请参考:

https://topsemic.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值