移植知识点整理(续,后期持续添加)

news2024/10/6 10:31:23

一: uboot源码移植准备工作


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.在家目录下创建一个FSMP1A文件夹
5.进入到~/demo/stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/进入拷贝uboot源码

二:分析uboot源码


以 tar -vxf u-boot-stm32mp-v2020.10-stm32mp-r2-r0.tar.gz 为例

    1.进入/home/linux/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0目录 cd /home/linux/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0

    2.对uboot源码进行解压 tar -vxf u-boot-stm32mp-v2020.10-stm32mp-r2-r0.tar.gz

    3.进入uboot源码目录下 cd u-boot-stm32mp-v2020.10-stm32mp-r2/

    4.分析uboot源码目录

1>平台相关代码 arch:存放平台架构相关的文件 board:存放各个板子相关文件

2>平台无关代码 Makefile:工程管理文件

                           README:帮助文档,所有源码配置核编译的信息,都可以在README文件中找到

                            lib :存放库相关文件

                            Kconfig:配置相关文件

                            dts:存放是设备树相关内容

                            drivers:驱动相关内容

    5.因为uboot源码使用的是Makefile工程管理文件进行编译,所以需要查看makefile编译相关命令----->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>  编译命令 ---->make all all - Build all necessary images depending on configuration 6.分析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                 

        通过以上分析可知:编译板子的命令:make <board_name>_defconfig

三:如何确定<board name> 名字


只记录常用方法

        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

四: basic版本启动流程


BL0:芯片厂家固化到芯片内部程序

BL1:FSBL(u-boot-spl.stm32)

BL2:SSBL(u-boot.img)

五: uboot源码配置和编译流程


1.进入uboot源码顶层目录下

2..配置交叉编译工具链,打开uboot源码顶层目录下Makefile,搜索CROSS_COMPILE,替换文件

3.在uboot源码顶层目录下,配置非安全模式的默认缺省配置文件

4..在uboot源码目录下,执行图形化界面信息命令:make menuconfig(只读)

5.设备树相关内容

6.复制DK1公板相关设备树内容

        1>在uboot源码顶层目录下,进入arch/arm/dts,查找DK1公板相关设备树内容

        2>进入arch/arm/dts,将DK1公板设备树相关内容,复制为FSMP1A相关平台内容

        3>进入arch/arm/dts,打开stm32mp157a-fsmp1a.dts文件

        4>进入arch/arm/dts,打开sMakefile文件,添加stm32mp157a-fsmp1a.dtb

7.进入uboot源码顶层目录下,对uboot源码进行编译

六:制作TF卡启动盘


1>对TF卡进行分区,将TF开插入到读卡器中,将读卡器插入到电脑中,并且被ubuntu识别,点击确定

2>查看TF卡分区

例:linux@ubuntu:~/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0/u-boot-stm32mp-v2020.10-stm32mp-r2$ ls /dev/sd*

 3>删除TF卡所有分区

4>对TF卡进行分区

5>进入uboot源码顶层目录下,对uboot源码镜像文件进行烧写

例:linux@ubuntu:$ sudo dd if=u-boot-spl.stm32 of=/dev/sdb1 conv=fdatasync         linux@ubuntu:$ sudo dd if=u-boot-spl.stm32 of=/dev/sdb2 conv=fdatasync         linux@ubuntu:$ sudo dd if=u-boot.img of=/dev/sdb3 conv=fdatasync

8.(uboot电源管理问题)

1/  错误信息

例:错误现象: U-Boot SPL 2020.10 (Nov 03 2022 - 10:41:21 +0800) Model: STMicroelectronics STM32MP157C eval daughter on eval mother stpmic1_read: failed to read register x : 32stpmic1_read: failed to read register x : 24RAM: DDR3-DDR3L 32bits 533000Khz stpmic1_read: failed to read register x : 39ddr power init failed resetting ...

1> 通过打印信息的关键字(POWER/PMIC)猜测可能是电源管理相关问题

2>分析:

(1)通过打印信息的关键字(POWER/PMIC)猜测可能是电源管理相关问题

(2)去对比以下FSMP1A开发板和DK1公板电源电路图

2/DK1/FSMP1A公板电源电路图

 

 3/ 删除DK1公板相关电源内容

例:1>在uboot源码顶层目录下,进入arch/arm/dts,打开DK1公板设备树相关文件 ,vi stm32mp15xx-fsmp1x.dtsi,搜索i2c4关键字,删除电源内容

         2>在uboot源码顶层目录下,进入arch/arm/dts,打开DK1公板设备树相关文件 ,vi stm32mp15xx-fsmp1x.dtsi,搜索cpu0和cpu1关键字,删除电源内容

          3>在uboot源码顶层目录下,进入arch/arm/dts,打开DK1公板设备树相关文件vi stm32mp157a-fsmp1a-u-boot.dtsi,搜索cpu0和cpu1关键字,删除电源内容

          4>在uboot源码顶层目录下,执行make menuconfig,去掉电源管理相关内容

4/添加FSMP1A电源相关内容

1.在uboot源码顶层目录下,进入arch/arm/dts,打开DK1公板设备树相关文件 ,vi stm32mp15xx-fsmp1x.dtsi,搜索sound关键字

5/对uboot源码编译测试

进入uboot源码顶层目录下,对uboot源码进行编译

time make -j4 all time:显示编译时间 -j4:开启4个线程进行编译

2.编译成功现象: u-boot-spl.stm32 u-boot.img

3.将sdtools.sh拷贝到uboot源码顶层目录下,并且添加最高权限

4.将TF开插入到读卡器中,将读卡器插入到电脑中,并且被ubuntu识别,点击确定

5.在uboot源码顶层目录下执行:./sdtools.sh /dev/sdb,参考如下图片进行选择

6.首先将读卡器从ubuntu中断开,并将TF卡从读卡器中拔出

7.将TF卡插入到开发板中

8.将拨码开关拨到SD卡启动方式

9.查看电路板显示情况

 uboot启动时没有设置物理地址ip(补充)

1.错误现象 invalid MAC address in OTP 00:00:00:00:00:00 invalid MAC address in OTP 00:00:00:00:00:00 Net: Error: ethernet@5800a000 address not set. No ethernet found

2.通过以上分析可知 没有设置物理地址ip

3.通过pri查看物理地址环境变量信息   ethaddr pri ethaddr

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

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

相关文章

RK3568平台开发系列讲解(安卓适配篇)获取 root 权限

🚀返回专栏总目录 文章目录 一、关闭 selinux二、注释用户组权限检测三、su 文件默认授予 root 权限沉淀、分享、成长,让自己和他人都能有所收获!😄 📢此部分可以参考瑞芯微官方文档,在源码“Android11/rk_android11.0_sdk/RKDocs/android/patches/root”目录下。 一…

太全了!学Java项目,这就够了

你是否为不知道怎么入手去看一个开源项目&#xff1f; 你是否想看别人的项目学习笔记&#xff1f; 你是否想跟着别人的项目搭建过程一步一步跟着做项目&#xff1f; 今天给大家介绍一个网站&#xff0c;为了让更多Java的开发者能更容易找到值得学习的开源项目&#xff0c;我…

微服务框架 SpringCloud微服务架构 微服务保护 32 隔离和降级 32.4 熔断降级

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护32 隔离和降级32.4 熔断降级32.4.1 熔断降级32 隔离和降级 32.4 熔断降级 32.4.1 熔断降级 熔断…

[附源码]Python计算机毕业设计宠物交易网站Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

springcloud03:Eureka和Ribbon

Eureka和RibbonEureka介绍三大角色Eureka详解Eureka注册中心创建(springcloud-eureka模块)服务注册-信息配置-自我保护机制(服务提供模块)CAP原则Ribbon&#xff1a;负载均衡及Ribbon服务消费方(客户端)集成RibbonEureka介绍 三大角色 Eureka Serrver:提供服务的注册与发现。z…

day18【代码随想录】用栈实现队列、用队列实现栈、有效的括号

文章目录前言一、用栈实现队列&#xff08;力扣232&#xff09;二、用队列实现栈&#xff08;力扣225&#xff09;三、有效的括号&#xff08;力扣20&#xff09;前言 用栈实现队列 用队列实现栈 有效的括号 一、用栈实现队列&#xff08;力扣232&#xff09; 请你仅使用两个…

SpringBoot2基础入门

SpringBoot2基础入门学习要求环境要求学习资料01、Spring与SpringBoot1、Spring能做什么1.1、Spring的能力1.2、Spring的生态1.3、Spring5重大升级1.3.1、响应式编程1.3.2、内部源码设计2、为什么用SpringBoot2.1、SpringBoot优点2.2、SpringBoot缺点3、时代背景3.1、微服务3.2…

学生HTML个人网页作业作品:基于web在线汽车网站的设计与实现 (宝马轿车介绍)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

代码随想录刷题记录 day41 单词拆分+背包总结

代码随想录刷题记录 day41 单词拆分背包总结 参考&#xff1a;代码随想录 139. 单词拆分 思想 dp[i] 字符串长度为i&#xff0c;若dp[i]true&#xff0c;表示可以拆分为一个或多个在字典中出现的单词 递推公式 ​ 如果dp[j]true&#xff0c;[j,i]这个区间的子串出现在字典…

[附源码]Python计算机毕业设计大学生兼职平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

[附源码]计算机毕业设计基于Java的失物招领平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

C++ 多态之虚继承

什么是虚继承 C支持多继承的形式&#xff0c;但若被继承的不同基类又同属与某一个接口类or基类的派生类&#xff0c;那么很容易产生经典的菱形继承问题&#xff0c;这样不可避免的带来了命名冲突&#xff0c;访问不明确的问题&#xff0c;如图所示&#xff1a; 虚继承解决的…

【目标感知:IVIF:轻量级架构】

SELAFUSE: SEARCH A LIGHTWEIGHT ARCHITECTURE FOR TARGET-AWARE INFRARED AND VISIBLE IMAGE FUSION &#xff08;SELAFUSE: 搜索轻量级架构以实现目标感知的红外和可见光图像融合&#xff09; 尽管深度学习技术最近在红外和可见光图像融合方面表现出出色的性能&#xff0c;…

如何使用DNS加速你的浏览器访问速度?

不知道大家有没有遇到过这种情况, 我们访问用浏览器网页无法正常显示, 但是我们使用的QQ却能正常的打开? 这是因为 : 我们在登录QQ的时候是直接访问的腾讯的服务器, 在下载好的QQ客户端已经帮你配置好了所有的IP, 所有没有域名解析的操作, 所以可以正常的登录 解决办法如下…

c#入门-引用变量

引用变量 引用传递&#xff0c;是c#为了以更为安全的方式代替指针做出来的产物。 类似引用类型储存一个地址。但和引用类型不同的是&#xff0c;连对他本身的访问和修改都会转为对原值的访问和修改。 声明引用变量 引用变量在声明是&#xff0c;需要给类型前加上关键字ref。…

02.Ioc容器加载过程-Bean的生命周期深度剖析——四

BeanFactory&#xff1a;使用简单工厂&#xff0c;负责生产Bean FactoryBean&#xff1a;被他修饰的的类&#xff0c;成为特殊的类&#xff0c;调用getObgrct()得到最终的类。。。用于类的实现接口重写方法&#xff0c;从而扩展功能 IOC再总结&#xff1a; 实例化AnnotationCo…

【阅读笔记】《人月神话》思想提炼

文章目录前言1. 衡量工作量1.1. 单位1.2. 工作量与人月&#xff08;人天&#xff09;的关系1.2.1 忽略了沟通成本1.2.2 忽略了需求的特征2. 外科手术团队 —— 少部分人主导项目2.1. 执行方式2.2. 遵守的理念3. 警惕“遗留需求”4. 管理进度4.1 不要泄气4.2. 设定合适的里程碑并…

java项目_第170期ssm二手手机回收平台系统_ssm毕业设计_计算机毕业设计

java项目-第170期ssm二手手机回收平台系统-ssm毕业设计_计算机毕业设计 【源码请到下载专栏下载】 今天分享的项目是《ssm二手手机回收平台系统》 该项目分为2个角色&#xff0c;管理员和用户。 用户可以浏览前台,包含功能有&#xff1a; 首页、手机商城、新闻资讯、跳转到后台…

MRR和ICP

MRR和ICPMulti-Range Read优化ICP索引下推优化Multi-Range Read优化 MySQL5.6版本开始支持Multi-Range Read&#xff08;MRR&#xff09;优化。Multi-Range Read优化的目的就是为了减少磁盘的随机访问&#xff0c;并且将随机访问转化为较为顺序的数据访问&#xff0c;这对于IO…

每天进步一点点 -- pytorch学习:张量的介绍与创建

推荐查看的文档&#xff1a;机器视觉全栈|机器视觉教程|docsify|pytorch官方教程中文版|opencv-python官方教程中文版|open3D(0.15.1)官方教程中文版 Tensors个人理解为在GPU上工作的数组和矩阵&#xff0c;既然是数组和矩阵&#xff0c;那么里面也保存一些类型的内容&#xf…