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. 题解 Division Game

    link Description 懒得写了. Solution 设 \(f(x)\) 表示对于一个位置操作了 \(x\) 次后刚好变为 \(1\) 的方案数,可以看出的是 \(f(x)\) 同样也是对 ...

  2. bzoj2460元素(线性基,贪心)

    题目大意: 给定\(n\)个二元组\((a,b)\),求一个最大的\(\sum b\)的集合,满足这个集合的任意子集的\(a\)的\(xor\)值不为0 这道题需要一个线性基的性质: 线性基的任何非空 ...

  3. find+xargs+sed批量替换

    写代码时经常遇到要把 .c  和 .h的文件中的某些内容全部替换的情况,用sourceinsight 进行全局的查找是一个方法,但是sourceinsight只能替换一个文件中的字符串,不能同时替换多 ...

  4. python socket 基本使用

    socket通常也叫做"套接字",用于连接server client,是一个通信链的句柄,应用程序通常通过套接字向网络发出请求或应答网络请求. 就像python 处理file一样: ...

  5. pycharm安装pika提示CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com>

    1. 问题描述: pycharm安装第三方库时提示CondaHTTPError: HTTP 000 CONNECTION FAILED. 2. 错误原因:默认镜像源访问速度过慢,会导致超时从而导致更新 ...

  6. Python小工具:据说这是搜索文件最快的工具!没有之一!一起感受下......

    电脑自带的搜索文件功能相信大家都体验过,那是真的慢,等它找到文件,我都打完一把游戏了! 那必须不能忍,于是我自己做了一个文件搜索工具,犄角旮旯的文件都能一秒钟搜索出来的那种! 保证能把你们男(女)朋友 ...

  7. kettle使用

    Kettle的安装及简单使用 目录 Kettle的安装及简单使用 一.kettle概述 二.kettle安装部署和使用 Windows下安装 案例1:MySQL to MySQL 案例2:使用作业执行 ...

  8. 基于Apache Zookeeper手写实现动态配置中心(纯代码实践)

    相信大家都知道,每个项目中会有一些配置信息放在一个独立的properties文件中,比如application.properties.这个文件中会放一些常量的配置,比如数据库连接信息.线程池大小.限流 ...

  9. anaconda+pytorch安装

    环境配置说明: 因项目需要,需要写一个说明文档交付公司人员,指导其进行环境的安装 1. 安装 Anaconda 进入清华开源软件镜像站,其网址如下:https://mirrors.tuna.tsing ...

  10. logstash的mutate过滤器的使用

    logstash的mutate过滤器的使用 一.背景 二.需求 三.实现步骤 1.安装 `csv codec` 插件 2.准备需要读取的文件数据 3.编写 pipeline ,读取和输出数据 4.mu ...