资讯专栏INFORMATION COLUMN

树莓派4B安装uboot

izhuhaodev / 2787人阅读

摘要:要想放到树莓派上运行,需要官方提供的固件四下载直接下载我们所需的在文件夹中,将其中的复制到卡的分区中之前分区时大小为,格式为的那个,再将编译好的一同复制进去。

2021SC@SDUSC

一、uboot的介绍

1.1、计算机系统的主要部件

(1)计算机系统就是以CPU为核心来运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑、游戏机)、单片机(家用电器像电饭锅、空调)

(2)计算机系统的组成部件非常多,不同的计算机系统组成部件也不同。但是所有的计算机系统运行时需要的主要核心部件都是3个东西:

CPU + 外部存储器(Flash/硬盘) + 内部存储器(DDR SDRAM/SDRAM/SRAM)

1.2、PC机的启动过程

(1)部署:典型的PC机的BIOS程序部署在PC机主板上(随主板出厂时已经预制了),操作系统部署在硬盘上,内存在掉电时无作用,CPU在掉电时不工作。

(2)启动过程:PC上电后先执行BIOS程序(实际上PC的BIOS就是NorFlash),BIOS程序负责初始化DDR内存,负责初始化硬盘,然后从硬盘上将OS镜像读取到DDR中,然后跳转到DDR中去执行OS直到启动(OS启动后BIOS就无用了)

1.3、典型嵌入式linux系统启动过程

(1)典型嵌入式系统的部署:uboot程序部署在Flash(能作为启动设备的Flash)上、OS部署在FLash(嵌入式系统中用Flash代替了硬盘)上、内存在掉电时无作用,CPU在掉电时不工作。

(2)启动过程:嵌入式系统上电后先执行uboot、然后uboot负责初始化DDR,初始化Flash,然后将OS从Flash中读取到DDR中,然后启动OS(OS启动后uboot就无用了)

总结:嵌入式系统和PC机的启动过程几乎没有两样,只是BIOS成了uboot,硬盘成了Flash。

1.4、android系统启动过程

(1)Android系统的启动和Linux系统(前面讲的典型的嵌入式系统启动)几乎一样。几乎一样意思就是前面完全一样,只是在内核启动后加载根文件系统后不同了。

(2)可以认为启动分为2个阶段:第一个阶段是uboot到OS启动;第二个阶段是OS启动后到rootfs加载到命令行执行;现在我们主要研究第一个阶段,android的启动和linux的差别在第二阶段。

1.5、总结:uboot到底是干嘛的

(1)uboot主要作用是用来启动操作系统内核。

(2)uboot还要负责部署整个计算机系统。

(3)uboot中还有操作Flash等板子上硬盘的驱动。

 (4)uboot还得提供一个命令行界面供人来操作。

二、安装uboot

一、对 SD 卡进行格式化和创立分区

1 SD 卡通过读卡器插入电脑,并连接 Linux 系统
2 打开命令行(随便任何位置都可以)
运行 sudo fdisk -l ,查看 SD 卡的设备名,一般为 /dev/sdX ( 下图中,红框中的就
SD 卡的设备号,就为 /dev/sdb)
运行 sudo fdisk /dev/sdX (如上图中设备号为 /dev/sdb ,则需运行 /dev/sdb ),
界面就会进入到下图,开始给 SD 卡进行分区
输入 o 并回车,这将会删除所有分区
输入 p 并回车,这将会列出所有分区,此时应该没有任何分区
输入 n 并回车,创建新分区,引导分区
输入 p 并回车,新分区为主分区
输入 1 并回车,分区序号是 1
按键盘回车,默认初始扇区
输入 +256M 并回车,设置终止扇区
输入 t 并回车,再输入 c 并回车,设置该分区文件系统格式为 Fat32
输入 n 并回车,创建新分区,根分区
输入 p 并回车,新分区为主分区
输入 2 并回车,分区序号是 2
按键盘回车,默认初始扇区
按键盘回车,默认终止扇区
输入 w 并回车,写入设置

 

写完分区后,要进行格式化。推荐 256M 空间作为 boot 分区,分区文件系统 Fat32
再把剩余的空间创建一个分区,分区文件系统为 Ext4 ,作为 root, 然后运行一下命令格式化
保存
sudo mkfs.vfat /dev/sdX1
sudo mkfs.ext4 /dev/sdX2
目前为止, SD 卡的格式化和分区便设置好了

、交叉编译 u-boot.bin,并移植到 SD 卡的 boot 分区。

1 、首先通过以下命令安装工具包 git net-tools vim
Sudo apt install git net-tools vim
( 之后可通过命令 sudo apt install XXX ,来安装工具包 )
2 、需要安装 arm 64 位交叉编译环境。
https://snapshots.linaro.org/gnu-toolchain/
从上面的网站中进去。下载自己想用的版本,但注意需要下载的文件命名格式为:
gcc-linaro- 版本号 - 时间 -x86_64_aarch64-linux-gnu.tar.xz.
下图下载的为 gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

将下载的 .xz 压缩文件放到 Linux 中,在同一目录下运行以下命令:
# 创建一个文件夹
sudo mkdir -p /opt/linaro
# 解压到指定的文件夹路径
sudo tar -xvf gcc-linaro-XXX-XXXX.XX-x86_64_aarch64-linux-gnu.tar -C /opt/linaro
(sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar -C
/opt/linaro)
、下载 u-boot 源码并开始编译:
git clone https://github.com/u-boot/u-boot.git
(有可能会失败,失败的原因在与无法连接或是连接中断,检查网络多重复几
次)
切换到 u-boot 目录,然后开始编译。
运行 cd u-boot 进入到 u-boot 目录
在编译之前,首先需要安装编译必备的程序
sudo apt install u-boot-tools bison bc make flex libssl-dev ncurses-*
安装完成后,执行下面两行命令来设置环境
export ARCH=arm64
export CROSS_COMPILE=/opt/linaro/gcc-linaro-XXXX-XXXX-x86_64_aarch64-linux-gnu
/bin/aarch64-linux-gnu- (其中 XXXX 的部分是自己下的文件对应的版号和时间)
( 如果之后你想重新编译 u-boot ,先运行 sudo make distclean ,清理掉之前编
译的文件,在运行上面的两行命令,并且注意当你每次想要编译 u-boot 的时候,都
要运行这两行命令。 )
接着运行以下命令,来配置 config
make rpi_arm64_defconfig
(rpi_arm64_defconfig 位于 u-boot/configs 目录下,可在目录搜寻 rpi ,查找出
试用树莓派的所有 config ,我们配制 64 位的 u-boot ,所以用到 rpi_arm64_defconfig)
接着运行以下命令开始编译
make -j4 ( 直接 make -j 就可编译,后面的 4 是用 4 线程来进行编译,加
快编译速度 )
编译完成后的 uboot.bin 文件就是可以直接在树莓派 4b 上执行的程序。

 

到此, u-boot.bin 编译完成。要想放到树莓派上运行,需要官方提供的固件 (firmware)
、下载 firmware
https://github.com/raspberrypi/firmware
直接下载 firmware-master
我们所需的 firmware boot 文件夹中,将其中的 bcm2711-rpi-4-b.dtb
fixup4.dat start4.elf 复制到 SD 卡的 boot 分区中 ( 之前分区时大小为 256M ,格式
fat32 的那个 ) ,再将编译好的 u-boot.bin 一同复制进去。自己创建一个 config.txt,
其中写入内容 enable_uart=1    arm_64bit=1     kernel=u-boot.bin
到此, u-boot 编译并移植成功。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/122107.html

相关文章

  • Linux学习

    摘要:学习树莓派的的初识学习树莓派的的初识初识初识学习书籍正点原子嵌入式驱动开发指南章节第三十章学习内容书中介绍的获取可以有三个途径第一个是的官方代码。网上的烧写树莓派教程很多,但是为了学习我选择了官方的代码。Linux学习 - 树莓派4b的U-Boot的初识初识U-Boot学习书籍:《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.1》章节:第三十章学习内容:书中介绍uboot的获...

    不知名网友 评论0 收藏0
  • 树莓系列(十四) 树莓4B安装 docker并配置为 MQTT服务器

    摘要:配置图形化界面下载图形化界面创建容器运行运行之后在浏览器中输入树莓派进入界面。拉取镜像启动容器用树莓派进入服务器后台默认账号默认密码 树莓派4B安装 docker并...

    lemon 评论0 收藏0
  • 树莓4B安装OpenCV-4.5.2

    摘要:最近实验室有个图像识别的项目,目前程序写得差不多了,硬件设备在别人公司,想着在自己的树莓派上运行一下。安装之前的配置要做好。与不同的是,在处理依赖问题上更佳一些。举例来说,在删除一个包时,会同时删除本身所依赖的包。         最近实验室有个图像识别的项目,目前程序写得差不多了,硬件设备...

    Betta 评论0 收藏0
  • 树莓Opencv-python快速安装

    摘要:下载文件并传到树莓派上在电脑上打开下载与自己版本相对的文件,本文下载的是将其使用传输到树莓派,打开文件所在的树莓派目录,安装文件,显示成功安装。 在树莓派上直接下载opencv-python往往不能成功,近期查阅了csdn中的很多相关文章,发现大多文章讲解的过程比较复杂又麻烦且不一定能成功...

    J4ck_Chan 评论0 收藏0
  • 树莓利用DHT11上传数据到电脑MySQL上

    摘要:工具树莓派温湿度传感器在开始实验之前,要在电脑上安装,并且建立好一个数据库连接。到这里对电脑配置就结束了,对了,还有如果你们到时运行树莓派代码出现远程连接失败错误码,像下图这是因为,你的防火墙开了,把防火墙关掉就不会报这个错误了。 ...

    不知名网友 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<