3.29号系统移植

本文详细描述了如何将非安全版本的UBOOT移植到FSMP1A开发板,包括清除目标、配置、设备树移植、电源和内存问题解决、EMMC设备添加、网卡补丁应用以及备份配置。移植过程中涉及关键步骤如交叉编译、设备树编辑和错误排查。
摘要由CSDN通过智能技术生成

非安全版本uboot移植流程

1. 移植流程(重点)

1.1 移植步骤

1、进入家目录下FSMP1A目录uboot源码目录下
    linux@ubuntu:~$ cd FSMP1A/u-boot-2021.07/
2、在uboot源码目录下,执行make distclean清除目标
    linux@ubuntu:~/FSMP1A/u-boot-2021.07$ make distclean
3、在uboot源码目录下,执行非安全版本的默认配置文件
     linux@ubuntu:~/FSMP1A/u-boot-2021.07$ make stm32mp15_basic_defconfig
     成功现象:
        #
        # configuration written to .config
        #
4、在uboot源码目录下,打开Makefile文件,配置交叉编译工具链,编译生成arm架构
        266 ifeq ($(HOSTARCH),$(ARCH))
        267 CROSS_COMPILE ?=    
        修改为:
         266 ifeq (arm,arm)
         267 CROSS_COMPILE ?= arm-linux-gnueabihf-           
5、安装库:sudo apt-get install libncurses5-dev
6、在uboot源码目录下,执行make menuconfig,进入图形化界面信息
    备注:不需要修改任何内容,只是查看是否可以进入图形化界面
7、FSMP1A开发板参考DK1公板进行移植的,DK1公板所有的硬件信息都在设备树中进行存放所以需要将DK1设备树的信息复制为FSMP1A信息
8、介绍设备树相关信息 ====> 驱动课程中重点进行讲解
    源文件:*.dts ===========> 类似于C语言中*.c
    头文件:*.dtsi ===========> 类似于C语言中*.h
    编译工具:DTC ===========> 类似于C语言中gcc编译工具
    编译命令:make dtbs ===========> 类似于C语言中 gcc *.c
    镜像文件:*.dtb s ===========> 类似于C语言中 a.out
9、进入uboot源码设备树目录,将DK1公板设备树信息,复制为FSMP1A设备树内容
    1)进入设备树目录:linux@ubuntu:~/FSMP1A/u-boot-2021.07$ cd arch/arm/dts/
    2)将 DK1公板设备树信息,复制为FSMP1A设备树内容  
        cp stm32mp157a-dk1.dts  stm32mp157a-fsmp1a.dts 
        cp stm32mp157a-dk1-u-boot.dtsi stm32mp157a-fsmp1a-u-boot.dtsi 
        cp stm32mp15xx-dkx.dtsi stm32mp15xx-fsmp1x.dtsi
    3)修改设备树的源文件 linux@ubuntu:~/FSMP1A/u-boot-2021.07/arch/arm/dts$ vi stm32mp157a-fsmp1a.dts 
         12 #include "stm32mp15xx-dkx.dtsi"
         13 
         14 / {
         15     model = "STMicroelectronics STM32MP157A-DK1 Discovery Board";
         16     compatible = "st,stm32mp157a-dk1", "st,stm32mp157";
        修改为
        12 #include "stm32mp15xx-fsmp1x.dtsi"
        13 
        14 / {
        15     model = "STMicroelectronics STM32MP157A-FSMP1A Discovery Board";
        16     compatible = "hqyj,stm32mp157a-fsmp1a", "hqyj,stm32mp157";     
    4)添加FSMP1A平台的设备树被编译 linux@ubuntu:~/FSMP1A/u-boot-2021.07/arch/arm/dts$ vi Makefile 
        1061 dtb-$(CONFIG_STM32MP15x) += \
        1062     stm32mp157a-dk1.dtb \                                                                                    
        1063     stm32mp157a-fsmp1a.dtb \  #========> 备注:这一行内容为需要添加内容
10、在uboot源码目录下,编译uboot源码,生成uboot镜像文件
    time make -j4 all 

1.2 测试步骤

将TF卡进行相关配置后,通过TF卡方式将uboot源码下载到板子上

在串口工具打印信息上回发现错误

2. 解决问题

2.1 电源问题

分析错误原因

通过打印内容 ======> power init failed

可知电源初始化失败

所以应该对比FSMP1A和DK1开发板的电源电路图

总结

由于官方参考板DK1采用电源管理芯片做电源管理

而 FS-MP1A 采用分离电路作为电源管理

本例需要将DK1公板中原有电源管理芯片相关内容去掉

增加上FSMP1A固定电源相关内容

进行删除和添加后编译测试

2.2 内存问题

分析错误原因

通过错误信息打印可知DDR内存相关问题

所以应该对比FSMP1A内存电路图和DK1内存电路图

总结

通过对比可知,FSMP1A和DK1公板内存电路图完全一致

查看设备树是否编译

修改编译的设备树

2.3 EMMC问题

分析错误原因

目前的启动阶段为TF卡的启动方式

所以问题还是在TF卡,和EMMC无关

总结

通过以上分析可知,DK1公板:uSD_DETECT ===> PB7

FSMP1A开发板:SD1_CD ===> PH3

修改引脚编号

编译测试

2.4 ADC电流问题

分析错误原因

官方参考板DK1通过ADC检测开机电流,如果供电电流不足3A 则启动失败

FS-MP1A 没有设计这个功能,所以需要去掉adc这部分功能

否则就会出现adc电流启动失败

去掉ADC电流

编译测试

3. 移植EMMC设备

3.1 mmc相关命令

FSMP1A>  mmc list =======> 显示设备列表
    STM32 SD/MMC: 0 (SD)
FSMP1A>  mmc dev 0 =======> 选择tf卡设备
    switch to partitions #0, OK
    mmc0 is current device
FSMP1A>  mmc dev 1 =======> 选择EMMC设备
    MMC Device 1 not found
    no mmc device at slot

3.2 添加emmc设备步骤

1、在uboot源码目录下,进入设备树目录,打开设备树头文件:
    linux@ubuntu:~/FSMP1A/u-boot-2021.07$ cd arch/arm/dts/
    linux@ubuntu:~/FSMP1A/u-boot-2021.07/arch/arm/dts$ vi stm32mp15xx-fsmp1x.dtsi
&sdmmc2 {
        pinctrl-names = "default", "opendrain", "sleep";
        pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>;
        pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_a>;
        pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_a>;
        non-removable;
        no-sd;
        no-sdio;
        st,neg-edge;
        bus-width = <8>;
        vmmc-supply = <&v3v3>;
        vqmmc-supply = <&vdd>;
        mmc-ddr-3_3v;
        status = "okay";
    };      
2、在uboot源码目录下,进入设备树目录,打开设备树头文件:
linux@ubuntu:~/FSMP1A/u-boot-2021.07/arch/arm/dts$ vi stm32mp157a-fsmp1a-u-boot.dtsi 
 10 / {
 11     aliases {
 12         i2c3 = &i2c4;
 13         mmc0 = &sdmmc1;
 14         mmc1 = &sdmmc2; ===========> 这一行为需要添加的内容
 15         usb0 = &usbotg_hs;
 16     };   
3、在uboot源码目录下,进入设备树目录,打开设备树头文件:
linux@ubuntu:~/FSMP1A/u-boot-2021.07/arch/arm/dts$ vi stm32mp157a-fsmp1a-u-boot.dtsi 
165 &sdmmc1 {
166     u-boot,dm-spl;
167 };
168  ============这一行下面的内容为需要添加的内容============                                                                                                             
169 &sdmmc2 {
170     u-boot,dm-spl;
171 };

4. 网卡打补丁

将群里下发的补丁文件,拷贝到ubuntu中的uboot源码目录下

在uboot源码目录下执行打补丁命令

在uboot源码目录下,将补丁文件配置到当前的源码目录下

设置uboot支持百兆全双工模式

编译测试

5. 备份(重点)

linux@ubuntu:~/FSMP1A/u-boot-2021.07$ cp .config

configs/stm32mp15_fsmp1a_basic_defconfig

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值