系统移植 uboot 2

news2024/11/18 15:29:16

一、uboot源码获取

1.1 uboot官网获取

ftp://ftp.denx.de/pub/u-boot/ 前提是是芯片厂家将uboot源码开源到uboot官网上

1.2 ST开发社区获取

https://wiki.stmicroelectronics.cn/stm32mpu/wiki/STM32MP1_Developer_Package

1.3 ST官网

https://www.st.com/en/embedded-software/stm32mp1dev.html

1.4 开发板厂家

直接找对应的开发板厂家进行获取,一定有支持开发板的相关镜像文件

1.5 项目经理

一定有支持开发板的相关镜像文件

二、uboot源码命名方式

u-boot-年-月-rc.tar.bz2
    带rc:表示测试版本
    不rc:表示稳定版本
    tar.bz2:压缩方式

三、了解硬件平台

1.本次课程学习的开发板使用:华清远见研发中心提供 2.使用开发板参考ST公司提供demo板,DK1和DK2开发板

四、硬件平台描述

1.硬件信息:
    CPU板:cortex-A7 * 2  和 cortex-M4
    架构:arm-V7架构
    厂商:ST
    SOC:STM32MP157aaa
    board:FSMP1A
2.参考华清远见wiki百科网址进行移植
http://wiki.farsightdev.com/index.php?title=FS-MP1A

五、uboot源码移植准备工作

5.1 uboot源码拷贝到ubuntu中

1.在家目录下创建一个文件夹demo
2.将en.SOURCES-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17_tar_v3.1.0.xz拷贝到demo目录下
3.对en.SOURCES-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17_tar_v3.1.0.xz进行解压
    tar -vxf en.SOURCES-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17_tar_v3.1.0.xz
4.如下图可以查看到uboot源码目录

5.2 分析uboot源码

1.在家目录下创建一个文件夹FSMP1A
2.将u-boot-stm32mp-v2020.10-stm32mp-r2-r0拷贝到FSMP1A目录下
     cp u-boot-stm32mp-v2020.10-stm32mp-r2-r0/ ~/FSMP1A/ -rf
3.进入到~/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0目录
4.对u-boot-stm32mp-v2020.10-stm32mp-r2-r0.tar.gz目录进行解压
     tar -vxf u-boot-stm32mp-v2020.10-stm32mp-r2-r0.tar.gz 
5.进入uboot源码目录下,对uboot源码进行解析
    1>平台相关
        arch:存放平台相关架构内容
        board:存放各个板子相关文件
    2>平台无关
        Makefile:工程管理文件
        configs:配置相关文件
        drivers:存放驱动相关内容
        README:帮助文档
6.因为uboot源码使用Makefile进行编译的,所以需要查看make相关帮助命令信息 ----->make help
    1>清除中间文件  -----> make distclean
    Cleaning targets:
      clean          - Remove most generated files but keep the config
      mrproper      - Remove all generated files + config + various backup files
      distclean      - mrproper + remove editor backup and patch files
      2>基于图形化界面配置 -----> make menuconfig
      menuconfig      - Update current config utilising a menu based program
      3>编译uboot源码 -----> make all
      all          - Build all necessary images depending on configuration
7.分析README文件
     195 For all supported boards there are ready-to-use default
     196 configurations available; just type "make <board_name>_defconfig".
     197 
     198 Example: For a TQM823L module type:
     199 
     200     cd u-boot                                                                                                
     201     make TQM823L_defconfig
8.总结
    通过README文件分析可知,配置板子的默认(缺省)命令是:make <board_name>_defconfig
    问题:如何确定本次移植FSMP1A开发板<board_name>是什么?

5.3 如何确定名字!!!

1.方法1:如何确定<board_name>名字
    1>在uboot源码顶层目录下执行: make fsmp1a_defconfig
    2>在源码目录下出现如下错误信息:

    *** Can't find default configuration "arch/../configs/fsmp1a_defconfig"!
    通过阅读可知:在arch/../configs/fsmp1a_defconfig不能找到默认的配置文件

    3>进入uboot源码顶层目录下,进入configs目录,查看配置文件: ls stm32mp*
        stm32mp15_basic_defconfig  : 非安全默认配置文件
        stm32mp15_trusted_defconfig :安全默认配置文件
        
2.方法2:因为uboot源码使用makefile进行管理编译,所以在makefile文件中可以找到make <board_name>_defconfig对应的目标信息:
        1>在uboot源码顶层目录下,打开Makefile文件,搜索:config
             564 %config: scripts_basic outputmakefile FORCE
             565     $(Q)$(MAKE) $(build)=scripts/kconfig $@
        2>在uboot源码顶层目录下,打开Makefile文件,搜索:config,使用echo将变量信息进行打印
            564 %config: scripts_basic outputmakefile FORCE
            565     @echo $(Q)
            566     @echo $(MAKE)
            567     @echo $(build)
            568     @echo $@                                                                                                 
            569     $(Q)$(MAKE) $(build)=scripts/kconfig $@
        3>在uboot源码顶层目录下执行: make fsmp1a_defconfig,会出现如下打印信息
            @
            make
            -f ./scripts/Makefile.build obj
            fsmp1a_defconfig
        4>总结:通过以上命令打印可知$(Q)取消回显,所以将$(Q)去掉,在次执行 make fsmp1a_defconfig,查看打印信息
        make -f ./scripts/Makefile.build obj=scripts/kconfig fsmp1a_defconfig = make obj=scripts/kconfig fsmp1a_defconfig
        
3.方式3:通过方法2分析可知,到指定scripts/kconfig目录下,打开Makefile文件,搜索目标:defconfig
        1>在scripts/kconfig目录下,打开Makefile文件,搜索目标:defconfig
            109 %_defconfig: $(obj)/conf
            110     $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)  
        2>在scripts/kconfig目录下,打开Makefile文件,搜索目标:defconfig,使用echo命令,对变量信息进行打印
                109 %_defconfig: $(obj)/conf
                110     @echo $(Q)
                111     @echo $(silent)
                112     @echo $(SRCARCH)
                113     @echo $@
                114     @echo $(Kconfig)
                115    $(Q)  $< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)  
        3>在uboot源码顶层目录下执行: make fsmp1a_defconfig,会出现如下打印信息
                @
                
                ..
                fsmp1a_defconfig
                Kconfig
        4>总结:通过以上命令打印可知$(Q)取消回显,所以将$(Q)去掉,在次执行 make fsmp1a_defconfig,查看打印信息
            scripts/kconfig/conf  --defconfig=arch/../configs/fsmp1a_defconfig Kconfig
4.总结:make <board_name>_defconfig执行过程
    scripts/kconfig/conf:通过file命令进行查看,可知是一个elf可执行文件
    --defconfig=arch/../configs/fsmp1a_defconfig:板子目标文件
    Kconfig:uboot源码目录下配置文件
    通过以上分析可知:conf是一个可执行文件,--defconfig=arch/../configs/fsmp1a_defconfig和Kconfig作为参数传递给conf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opcj3—人人开源三大套件的简单用法

renren开源是一个很不错的开源开发组件&#xff0c;人人开源 其中目前对我们最有用的有三个&#xff1a;renren-fast、renren-fast-vue和renren-generator。 renren-generator是核心服务&#xff0c;可以根据数据库自动生成从controller层到service层&#xff0c;再到持久层的…

.net开发安卓入门 - 环境安装

文章目录工具VS2022Android SDK Manager如下图&#xff0c;安装一个镜像和工具模拟器设备管理器如下图启动模拟器&#xff0c;看一下效果常见问题工具 VS2022 下载地址&#xff1a;https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?skuCom…

Linux邮件服务Postfix部署

我们看下邮件协议&#xff1a; 简单邮件传输协议&#xff08;SMTP&#xff09;&#xff1a;用于发送和中转出的电子邮件。使用TCP/25端口。 邮局协议版本&#xff08;POP3&#xff09;&#xff1a;用于将邮件存储到本地&#xff0c;占用服务器的TCP/110端口。 Internet 消息访问…

【Python游戏】一个csdn小编用Python语言写了一个足球游戏,成功模拟世界杯决赛现场

前言 halo&#xff0c;包子们下午好 最近世界杯不是很火呀 很多小伙伴应该都知道球赛反正买&#xff0c;别墅靠大海&#xff01; 今天就给大家实现一个类似世界杯的足球小游戏&#xff0c;咱就说真的堪比国足了&#xff01; 哈哈哈~ 好啦 直接开整&#xff01;&#xff01;&am…

「以代码作画」从数据角度剖析Art Blocks生成艺术

作者&#xff1a;Mia Bao, co-founder of thepass.to, chief partner of WHALE members 数据&#xff1a;Jin, data analyst of thepass.to 出品&#xff1a;ThePASS & BeepCrypto 文章数据&#xff1a;https://docs.google.com/spreadsheets/d/1zDun4eUTwA-BMU5Hl2c5EC…

基于SSM网上商城购物系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

目标检测算法——人体姿态估计数据集汇总 2(附下载链接)

&#x1f384;&#x1f384;近期&#xff0c;小海带在空闲之余收集整理了一批人体姿态估计数据集供大家参考。 整理不易&#xff0c;小伙伴们记得一键三连喔&#xff01;&#xff01;&#xff01;&#x1f388;&#x1f388; 目录 一、V-COCO数据集 二、宜家 ASM 数据集 三、…

如何解决在加载、保存或覆盖项目文件时 Lumion 可能无法打开或显示错误的问题?

为什么在加载、保存或覆盖项目文件时 Lumion 可能无法打开或显示错误&#xff1f;那么这个问题大家跟着赞奇云工作站一起来解答吧。 1. 这就是为什么 如果Lumion在加载 .LS Project文件时崩溃或显示错误 &#xff0c;通常意味着 .LS Project 文件因保存错误而损坏。遗憾的是&…

电脑技巧:分享6个实用的资源网站

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

一框式检索和高级检索

0. 学习内容 2022年12月8日15:38:07CNKI学习 学会多种检索方式检索基础文献 1. 一框式检索 1.1 简单使用 左侧选择检索字段 根据需求选择 输入想要的检索词输入想要的检索范围 顾名思义&#xff1a;在检索的时候只有一个搜索框&#xff0c;从而实现对文献进行检索 2. 高级检索…

「MacOS」在MacOS中添加环境变量

背景 最近在学习cmake使用&#xff0c;官网有dmg的安装教程&#xff0c;直接下载dmg文件然后拖拽到Application文件里就好。但在终端中执行cmake命令却显示没有cmake命令。下面内容以cmake为例&#xff0c;介绍如何在环境变量中添加命令行命令&#xff0c;其他命令也是如此。 …

m分别使用Dijkstra算法和Astar算法进行刚体机器人最短路径搜索和避障算法的matlab仿真,带GUI界面

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 Dijkstra&#xff08;迪杰斯特拉&#xff09;算法是典型的最短路径路由算法&#xff0c;用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展&#xff0c;直到扩展…

图片加贴纸怎么添加?快来使用这些实用的添加方法

有时候我们需要发送一些图片给对方&#xff0c;可是图片上有自己的隐私&#xff0c;而且这些信息都显示在图片中间&#xff0c;那我们应该怎么处理这部分信息呢&#xff1f;可能有些小伙伴会使用马赛克来模糊这部分信息&#xff0c;但是马赛克不但影响图片美观&#xff0c;处理…

乐园管理系统| 乐园小程序 | 数字化门店会员管理

商场乐园总是不缺小孩子们的嬉闹&#xff0c;旁边也不缺拥挤的家长&#xff0c;不同于以前&#xff0c;现在的年轻家长&#xff0c;由于市场服务/产品多样化及思想进步&#xff0c;对自己孩子的衣食住行玩等方面非常上心&#xff0c;小孩子的天性使然&#xff0c;乐园行业在近些…

pca降维

两个矩阵相乘的意义是将右边矩阵中的每一列向量 ai 变换到左边矩阵中以每一行行向量为基所表示的空间中去 选择不同的基可以对同样一组数据给出不同的表示&#xff0c;如果基的数量少于向量本身的维数&#xff0c;则可以达到降维的效果。 将一组 N 维向量降为 K 维&#xff0…

SpringCloud-Ribbon负载均衡

关于Ribbon负载均衡 1.什么是Ribbon Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。 简单的说&#xff0c;Ribbon 是 Netflix 发布的开源项目&#xff0c;主要功能是提供客户端的软件负载均衡算法&#xff0c;将 Netflix的中间层服务连接在一起。…

智慧工地管理系统解决方案厂商-喜讯科技

智慧工地是建筑行业管理结合互联网的一种新的管理系统&#xff0c;应用最新的大数据、云计算和物联网的技术&#xff0c;对施工现场的人、机、料、法、环等资源进行集中管理&#xff0c;以可控化、数据化以及可视化的智能系统对项目管理进行全方位立体化的实时监管。 喜讯科技智…

elasticsearch8.5体验(docker部署)

服务部署 拉取elasticsearch镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.5.0拉取kibana镜像 docker pull docker.elastic.co/kibana/kibana:8.5.0创建docker网络 docker network create elastic启动elasticsearch docker run --name es01 --net el…

使用固定的公网TCP端口地址远程桌面【内网穿透】

文章目录1. 为远程桌面保留一个TCP地址2. 配置远程桌面隧道2.1 登录cpolar web ui2.2 修改远程桌面隧道信息2.3 查看公网地址3. 使用固定TCP地址远程桌面总结在上一篇文章中&#xff0c;我们通过cpolar映射远程桌面3389端口&#xff0c;成功实现了在外远程桌面控制家里/公司的W…

万字干货|Synchronized关键字详解

文章目录前言线程安全什么是synchronized关键字&#xff1f;synchronized实现方式1.修饰实例方法2.修饰静态方法3.修饰代码块synchronized关键字底层原理synchronized修饰实例方法monitor锁是什么&#xff1f;Java对象内存布局synchronized修饰代码块锁优化自旋锁锁粗化锁消除锁…