Linux第38步_编译“正点原子移植好的uboot”

uboot的全称是Universal Boot Loader,uboot是一个遵循GPL协议的开源软件,uboot是一个裸机代码,可以看作是一个裸机综合例程。现在的 uboot 已经支持液晶屏、网络、USB等高级功能

uboot官方的uboot源码是给所有的半导体厂商准备的。ST公司会uboot官方下载uboot源码,将自家的芯片移植进去,做了一个自己定制的uboot源码。显然,uboot官方的uboot源码没有ST公司做的全面。

学习Linux第38步,就是编译“正点原子移植好的uboot”,了解uboot是怎么编译的。

正点原子移植好的 uboot,路径为: “01、程序源码\01、正点原子Linux出厂系统源码\u-boot-stm32mp-2020.01-g00f14581-v1.4.tar.bz2”。

1、创建正点原子的uboot目录“alientek_uboot”

打开终端

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd linux回车”,切换“linux”目录下

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd atk-mp1/回车”,切换“atk-mp1”目录下

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“madir uboot回车”,创建“uboot”目录

输入“ls回车”,列出“atk-mp1”目录下所有的文件和文件夹

输入“cd uboot回车”,切换“uboot”目录下

输入“ls回车”,列出“uboot”目录下所有的文件和文件夹

输入“madir alientek_uboot回车”,创建“alientek_uboot”目录

输入“ls回车”,列出“uboot”目录下所有的文件和文件夹

见下图:

2、拷贝正点原子公司的uboot源码包

1)、双击桌面图标“FileZilla Client”,见下图:

2)、点击“文件”,接着点击“站点管理器(S)”,见下图:

得到下图:

3)、点击“连接”

4)、将“u-boot-stm32mp-2020.01-g00f14581-v1.4.tar.bz2”拖到“alientek_uboot”目录下。见下图:

3、回到终端修改“Makefile”文件,并编译uboot

1)、输入“cd alientek_uboot回车”,切换“alientek_uboot”目录下

输入“ls回车”,列出“alientek_uboot”目录下所有的文件和文件夹

见下图:

2)、解压

输入“tar -vxf u-boot-stm32mp-2020.01-g00f14581-v1.4.tar.bz2回车” ,解压

输入“ls -l回车”,列出“alientek_uboot”目录下所有的文件和文件夹

u-boot-stm32mp-2020.01-g00f14581-v1.4.tar.bz2是正点原子提供的uboot源码压缩包,其它文件和文件夹都是解压出来的uboot源码,见下图:

3)、输入“vim Makefile回车”,使用vim命令打开已有的“Makefile”文件,见下图:

4)、按“ESC键”,输入“/CROSS_COMPILE ?=”,查找“CROSS_COMPILE ?=”所在的位置,见下图:

5)、输入“回车键”,光标跳到/CROSS_COMPILE ?=”,见下图:

6)、输入“A”,光标跳到/CROSS_COMPILE ?=”所在行的尾部,见下图:

7)、移动光标键,添加ARCH = arm;

添加CROSS_COMPILE = arm-none-linux-gnueabihf-”;

见下图:

修改“Makefile”的原因:

如果不修改,我们需要输入很长的命令,才可以实现编译,如下面的命令:

make distclean

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- stm32mp157d_atk_defconfig

make V=1 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- DEVICE_TREE=stm32mp157d-atk all

修改后,就很简化了,就可以输入下面的命令来实现编译了:

make distclean回车                            //清除

make stm32mp157d_atk_defconfig回车           //配置uboot

make V=1 DEVICE_TREE=stm32mp157d-atk all回车  //编译

8)、按“ESC键”+“:wq键”,保存退出,见下图:

9)、编译

输入“make distclean回车”                            //清除

输入“make stm32mp157d_atk_defconfig回车”           //配置uboot

输入“make V=1 DEVICE_TREE=stm32mp157d-atk all回车”  //编译

10)、输入“ls -l回车”,列出“alientek_uboot”目录下所有的文件和文件夹

4、修改“tf-a.tsv”

1)、双击桌面图标“FileZilla Client”

将“u-boot.stm32”复制到“C:\Program Files\STMicroelectronics\images”目录下。

见下图:

2)、用“Notepad++”软件打开“后缀为.tsv”的脚本文件,修改如下:

3)、点击文件,再点击全部保存。

5、烧录

1)、关闭虚拟机,防止开发板连接到虚拟机

2)、将开发板上拨码开关拨到“000”位置

3)、将USB导线连接电脑的USB3.0接口,另外一端连接开发板的USB OTG接口;

4)、将USB导线连接电脑的USB3.0接口,另外一端连接到开发板的USB TTL接口;

5)、双击“STM32CubeProgrammer”图标

6)、选择上图中的USB,然后点击“Connect”

7)、点击“刷新”,直到出现USB1,表示连接成功。

8)、点击“Open file”,找到“C:\Program Files\STMicroelectronics\images”目录下“tf-a.tsv”打开。

9)、点击“Browse”,打开“C:\Program Files\STMicroelectronics\images”目录。

10)、点击下图中的“选择文件夹”

11)、点击下图中的“Download”

12)、烧录结束后,点击“确定”,见下图:

13)、关闭电源,将拨码开关设置为“010”

14)、重新上电启动开发板。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-31 03:14:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-31 03:14:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-31 03:14:01       82 阅读
  4. Python语言-面向对象

    2024-01-31 03:14:01       91 阅读

热门阅读

  1. 英语的历史

    2024-01-31 03:14:01       63 阅读
  2. 正则表达式

    2024-01-31 03:14:01       47 阅读
  3. QT基础篇(19)QT Quick Controls开发基础

    2024-01-31 03:14:01       49 阅读
  4. 大模型学习与实践笔记(十五)

    2024-01-31 03:14:01       69 阅读
  5. el-tooltip超出显示

    2024-01-31 03:14:01       58 阅读
  6. 【linux-interconnect】What NVIDIA MLNX_OFED is?

    2024-01-31 03:14:01       57 阅读
  7. How to compare canvas and svg usage scenarios

    2024-01-31 03:14:01       46 阅读
  8. TensorFlow2实战-系列教程 总目录

    2024-01-31 03:14:01       63 阅读