嵌入式Linux系列第3篇:uboot编译下载

简介: 嵌入式Linux系列第3篇:uboot编译下载

01.引言

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

02.官方资料下载

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

下载下来,最简单的方法就是直接点击Clone or download - Download Zip文件。


03.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的详细启动过程,大家也可以上网查阅资料了解。

04.烧写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 运行模式,上电,连接上调试串口输出以下信息:

06.结束语

   本篇介绍了uboot的编译和烧写,uboot的编译方法和传统的MCU编译有很大的区别,需要大家熟悉一下。

有问题欢迎大家留言讨论。

   相关资料下载链接:https://github.com/TopSemic/NUC972_Linux  03 Lesson3 uboot编译下载中。

   下期会给大家介绍kernel相关内容。

相关文章
|
1月前
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
|
5天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
46 13
|
1月前
|
人工智能 Java 关系型数据库
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
75 4
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
|
18天前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
1月前
|
Linux 数据安全/隐私保护
适用于 Linux 的最佳命令行下载加速器
适用于 Linux 的最佳命令行下载加速器
56 3
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
111 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
2月前
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
|
1月前
|
Linux
Linux - 如何编译源码安装软件
源码编译安装通常包括三个步骤:1) `./configure` 检测平台特征和依赖项,生成 Makefile;2) `make` 编译源码,生成可执行文件;3) `make install` 将可执行文件安装到指定目录并配置环境变量。
51 0
|
2月前
|
Linux 开发工具
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
95 8