Linux学习 - 树莓派4b的U-Boot的初识

初识U-Boot

学习书籍:《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.1》

章节:第三十章

学习内容:

书中介绍uboot的获取可以有三个途径:第一个是uboot的官方代码。第二个是半导体的厂商的uboot代码。第三个是开发板厂商的uboot代码。为了移植简单推荐选择支持较好的开发板厂商的代码。如果是自己的板子推荐使用半导体厂商的代码。我手中有一个树莓派4b。网上的烧写树莓派教程很多,但是为了学习我选择了uboot官方的uboot代码。

下载uboot代码:进入官网:http://www.denx.de/wiki/U-Boot/,点击Source Code。

可以选择FTP或者HTTPS下载。我下载的是:u-boot-2022.01-rc1 。把文件通过FTP或者文件共享等方式传入Ubuntu虚拟机。注意:在虚拟机的非root用户中有些目录的操作权限是受到限制的。比如我在这里将下载好的uboot放到根目录下的,在根目录下创建文件夹会发现需要sudo权限。创建好文件夹后将uboot解压也需要对应权限。配置好环境变量后make uboot时候也需要权限,否则就会提示不能mkdir之类的权限的错误。这时候配置的交叉编译工具的环境变量是为当前用户配置的,如果使用sudo会发现提示没有配置交叉编译工具不能正常编译。对于Linux小白的我来说这个坑踩了一周。建议将uboot放在家目录下。使用命令:tar -jxvf u-boot-2022.01-rc1.tar.bz2将文件进行解压得到u-boot-2022.01-rc1。

​ 配置交叉编译工具:首先了解一下交叉编译工具。百度搜索“ARM交叉编译工具链分类说明”可以了解到交叉编译工具的几大分类。树莓派4b是ARM v8架构。支持64位,同时也兼容32位。查看uboot文件夹下的configs文件夹中对树莓派的支持可以看到支持如下几种树莓派:

这里可以看到如果使用rpi_4_32b_defconfig则使用32位的交叉编译工具:arm-linux-gnueabihf-gcc。如果使用rpi_4_defconfig则使用64位的交叉编译工具:aarch64-linux-gnu-gcc。(这里总结的教训是:做之前多百度,因为不知道rpi_4_defconfig需要64位的交叉编译工具而失去无数头发)。这里我使用的是64位的。下载aarch64-linux-gnu-gcc

sudo apt-get install gcc-9-aarch64-linux-gnu
sudo apt-get install gcc-aarch64-linux-gnu

配置环境变量:使用命令sudo vi /etc/profile,在末尾添加环境变量export PATH=$PATH:你的目录/bin。保存退出后使用命令source /etc/profile。测试有没有安装成功在任意终端中输入aarch加两下Tab后会不会出现提示:

使用aarch64-linux-gnu-gcc -v可以验证一下是不是能正确打印出版本号。

​ uboot的编译,模仿书中先使用命令make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- distclean先清除一下编译后生成的文件。然后使用命令make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- rpi_4_defconfig配置uboot。最后使用命令make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-编译uboot。如果都没有问题后就会出现u-boot.bin等文件。其中如果有error出现就直接百度安装相关的库文件就可以。

​ uboot的烧写,尝试了好几个烧写方法,发现最好用的是使用工具:raspberry pi imager。这个官方下载可能慢一点,万能的百度下载。然后再下载一个树莓派的镜像,使用工具烧写进去,也可以让它自己下载镜像不过速度很慢。下载完了先插到树莓派上连接串口

需要一个TTL转串口模块。打开串口8N1。上电看一下系统能不能跑起来。然后将SD卡插入电脑,将编译好的u-boot.bin文件传入到SD卡中,修改一下config.txt文件。我是参考博客:(14条消息) <第2章>树莓派4B上运行 uboot_Fythons的博客-CSDN博客做的。将树莓派的设备树都放好后发现还是可在博客中下图所示位置

博客中有一句话猜想可能是串口的问题这个我们可以关注一下,在我这个版本的uboot中好像就是uboot的串口没有配置。

​ 配置uboot串口,下面记录的过程是我操作的过程,可能有问题。我使用的是uboot图形化的配置。参考手册的第三十四章进入uboot的图形化配置界面。

然后再将编译后的u-boot.bin启动就可以看到打印了。

这里一些信息是错误的,常用的uboot命令也没有测试过,接着折腾……

Linux学习 - 树莓派4b的U-Boot的初识的更多相关文章

  1. linux学习:【第1篇】初识Linux及安装

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! linux学习:[第1篇]初识Linux及安装 写在前面 学习之初看了一段文章,很有感触,所以也 ...

  2. 树莓派(4B)Linux + .Net Core嵌入式-初始化环境(一)

    一.树莓派简单介绍 二.软&件准备 硬件:树莓派4B主机.电源线.TF卡&TF读卡器.PC 软件:win32diskimager(用于烧系统到TF卡).Xshell或Windows T ...

  3. 树莓派4B学习札记

    防静电 树莓派比较容易被静电损坏,要做好以下预防措施 使用的时候不要用手去触摸PCB和针脚!特别是上电之后! 拿板卡的时候,要习惯性拿板卡的边缘 勤洗手,勤摸墙壁,释放身上的静电 系统安装 8GB以上 ...

  4. 树莓派4B安装64位Linux(不用显示器键盘鼠标)

    入手了树莓派4B,我对它的定位是作为一个Docker实验环境,平时用到的镜像多为Java服务端常用的技术.以及自己作的Java应用镜像,因此宿主机需要64位操作系统,而树莓派官方操作系统只有32位的, ...

  5. 树莓派4B安装docker-compose(64位Linux)

    准备工作 树莓派4B已装好64位Linux,并且装好了19.03.1版本的Docker,具体的安装步骤请参考<树莓派4B安装64位Linux(不用显示器键盘鼠标)> 安装docker-co ...

  6. 树莓派(4B)Linux + .Net Core嵌入式-HelloWorld(二)

    一.新建.Net Core项目 新建.Net Core3.0的控制台应用,代码如下 namespace Demo { class Program { static void Main(string[] ...

  7. 树莓派4B智能小车机器套件——入手组装实验记录

    树莓派4B智能小车机器套件--入手组装实验记录 4WD智能小车(4WD SMART ROBOT KIT),支持Arduino.51.STM32.Raspberry Pi等4个版本.本套件采用的是树莓派 ...

  8. 树莓派4b通过外接ssd硬盘启动系统失败的排查和解决

    树莓派4b通过外接ssd硬盘启动系统失败,症状: 屏幕卡在黑屏或提示 mmc1:Controller never released inhibit bit(s).... 先说如何设置硬盘启动,后面是解 ...

  9. 树莓派4B无屏幕连接Wi-Fi/启用ssh/创建用户

    前边总得说点什么 最近每次在Win10上写代码需要启动Redis,残血Redis For Windows有卡死系统的bug.由于主机内存不大够用(已经扩到顶了),开虚拟机运行Redis更别提了..想起 ...

随机推荐

  1. 树上DFS序在换根时的变化规律

    其中\(12324215\)为循环链表,可用双倍空间存(如图)

  2. xml文件报Element 'beans' cannot have character [children],because the type's content type is element

    写springMvc.xml文件时,偶然遇到 Element 'beans' cannot have character [children],because the type's content t ...

  3. python中\t、\n含义

    \t :代表着四个空格也就是一个tab \n:代表着换行

  4. 【UE4 设计模式】享元模式 Flyweight Pattern

    概述 描述 运用共享技术有效地支持大量细粒度对象的复用.系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用. 由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻 ...

  5. 【数据结构与算法Python版学习笔记】树——二叉查找树 Binary Search Tree

    二叉搜索树,它是映射的另一种实现 映射抽象数据类型前面两种实现,它们分别是列表二分搜索和散列表. 操作 Map()新建一个空的映射. put(key, val)往映射中加入一个新的键-值对.如果键已经 ...

  6. win 常用修复蓝屏,系统比对最后更新20210804

    您可以尝试以下方案: 在管理员命令提示符下键入以下命令:Dism /Online /Cleanup-Image /ScanHealth这条命令将扫描全部系统文件并和官方系统文件对比,扫描计算机中的不一 ...

  7. 普通用户在命令终端使用Python脚本连入校园网

    普通用户在命令终端使用Python脚本连入校园网 想要连入校园网的步骤: 浏览器输入对应的IP地址,输入账号密码连网: 下载对应软件,输入账号密码连网: 而面对没有界面的服务器,而你又没有root权限 ...

  8. [Beta]the Agiles Scrum Meeting 6

    会议时间:2020.5.20 21:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 帮助成员解决配置环境问题 tq 增加功能:添加多个评测机 评测部分增加更多评测指标 ...

  9. Spring Security Resource Server的使用

    Spring Security Resource Server的使用 一.背景 二.需求 三.分析 四.资源服务器认证流程 五.实现资源服务器 1.引入jar包 2.资源服务器配置 3.资源 六.测试 ...

  10. 2021.7.17 NKOJ周赛总结

    发现自己简直是个智障:T1模数写成1e9+9:T2居然没有考虑刚好一个周期的情况:T4用"%lld"读入"unsigned long long".~qwq~ T ...