• 华清远见11.3


    basic版本uboot移植

    1.因为是在ubuntu下编译生成arm架构的文件,所以需要现在makefile中设置arm-linux-gnueabihf-的交叉编译工具链。然后make stm32mp15_basic_defconfig配置非安全模式的默认缺省文件。

    然后打开图形化界面(make menuconfig),确定图形化见面可用,这里并不需要进行修改。

    在arm/arm/dts中把DK1的三个文件改为与实验用板fsmp1a文件。

    打开stm32mp157a-fsmp1a.dts修改其包含头文件为刚刚修改的fsmp1a头文件。

    打开makefile ,添加stm32mp157a-fsmp1a.dtb。回到uboot顶层编译。

    2.对TF卡分区

    将TF开插入到读卡器中,并且被ubuntu识别,ls /dev/sd*可以查看现有分区。

    删除TF卡所有分区 sudo parted -s /dev/sdb mklabel msdos,再查看ls  /dev/sd*,保留/dev/sdb即可。

    sudo sgdisk --resize-table=128 -a 1 

    -n 1:34:545 -c 1:fsbl1

    -n 2:546:1057 -c 2:fsbl2

    -n 3:1058:5153 -c 3:ssbl

    -n 4:5154:136225 -c 4:bootfs

    -n 5:136226 -c 5:rootfs

    -A 4:set:2 -p /dev/sdb -g对TF卡进行分区(以上代码为同一条,分行写方便看)。

    --resize-table=128 -a 1:对齐

    -n:创建一个分区

    1:第一个分区

    34:第一个分区起始块号

    545:第一个分区终止块号

    -c 1:fsbl1:第一个分区名字

    -A 4:set:2:设置分区表属性

    -p /dev/sdb -g:打印分区表

    最后进入顶层目录烧写sudo dd if=u-boot-spl.stm32 of=/dev/sdb1 conv=fdatasync

    3.修改电源设置信息

    由于编译文件中使用的还是DK1的电源信息而不是fsmp1a的信息,所以要进行修改。

    在uboot源码顶层目录下,进入arch/arm/dts,打开DK1公板设备树相关文件 ,vi stm32mp15xx-fsmp1x.dtsi,搜索i2c4关键字。把这个标签的所有内容注释或删除。

    在uboot源码顶层目录下,进入arch/arm/dts,打开DK1公板设备树相关文件 ,vi stm32mp15xx-fsmp1x.dtsi,搜索cpu0和cpu1关键字。把这个标签的所有内容注释或删除。

    在uboot源码顶层目录下,进入arch/arm/dts,打开DK1公板设备树相关文件vi stm32mp157a-fsmp1a-u-boot.dtsi,搜索cpu0和cpu1关键字。把这个标签的所有内容注释或删除。

    在uboot源码顶层目录下,执行make menuconfig,去掉电源管理相关内容Device Drivers ---> Power ---> [ ] Enable support for STMicroelectronics STPMIC1 PMIC

    再删除原版信息后要加入fsmp1a的信息

    在uboot源码顶层目录下,进入arch/arm/dts,打开DK1公板设备树相关文件 ,vi stm32mp15xx-fsmp1x.dtsi,搜索sound关键字。再sound末尾的两个};中间加入fsmp1a配置信息

    1. v3v3: regulator-3p3v {
    2. compatible = "regulator-fixed";
    3. regulator-name = "v3v3";
    4. regulator-min-microvolt = <3300000>;
    5. regulator-max-microvolt = <3300000>;
    6. regulator-always-on;
    7. regulator-boot-on;
    8. };
    9. v1v8_audio: regulator-v1v8-audio {
    10. compatible = "regulator-fixed";
    11. regulator-name = "v1v8_audio";
    12. regulator-min-microvolt = <1800000>;
    13. regulator-max-microvolt = <1800000>;
    14. regulator-always-on;
    15. regulator-boot-on;
    16. };
    17. v3v3_hdmi: regulator-v3v3-hdmi {
    18. compatible = "regulator-fixed";
    19. regulator-name = "v3v3_hdmi";
    20. regulator-min-microvolt = <3300000>;
    21. regulator-max-microvolt = <3300000>;
    22. regulator-always-on;
    23. regulator-boot-on;
    24. };
    25. v1v2_hdmi: regulator-v1v2-hdmi {
    26. compatible = "regulator-fixed";
    27. regulator-name = "v1v2_hdmi";
    28. regulator-min-microvolt = <1200000>;
    29. regulator-max-microvolt = <1200000>;
    30. regulator-always-on;
    31. regulator-boot-on;
    32. };
    33. vdd: regulator-vdd {
    34. compatible = "regulator-fixed";
    35. regulator-name = "vdd";
    36. regulator-min-microvolt = <3300000>;
    37. regulator-max-microvolt = <3300000>;
    38. regulator-always-on;
    39. regulator-boot-on;
    40. };
    41. vdd_usb: regulator-vdd-usb {
    42. compatible = "regulator-fixed";
    43. regulator-name = "vdd_usb";
    44. regulator-min-microvolt = <3300000>;
    45. regulator-max-microvolt = <3300000>;
    46. regulator-always-on;
    47. regulator-boot-on;
    48. };

    接下来编译,烧写,运行。发现内存报错

    4.uboot内存相关问题

    再makefile中把arch-dtbs的参数用echo打印出来,为stm32mp157c-ev1

    不是fsmp1a的文件,所以要进入图形化界面把原来的Device Tree Control ---> (stm32mp157c-ev1) Default Device Tree for DT control改为

    Device Tree Control ---> (stm32mp157a-fsmp1a) Default Device Tree for DT control

    然后回顶层目录编译,烧写,上电,发现关于emmc报错

    5.ubootEMMC相关问题

    由于DK1不支持emmc,所以采用更改TF卡的方式

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

    在原来的gpio部分改为移植板的TF卡的gpio接口,fsmp1a为gpioh 3,保存后回到顶层目录编译,烧写运行。

    以上需要保持拨码开关处于SD卡(TF卡启动方式)。

    最后虽然有些许报错,但是也可以进入交互模式了。

  • 相关阅读:
    Windows Service Wrapper 一个将可执行文件封装为windows服务的工具
    MySQL高级语句
    java基于ssm+vue+elementui楼盘房屋销售系统 前后端分离
    Mysql安装详细教程
    用好 DIV 和 API,在前端系统中轻松嵌入数据分析模块
    Docker私库
    Json 转sqlserver创建表脚本 JSONtoSQLGenerator
    c++面试题目汇总-1-57
    一次简单的创建LinuxMysql备份脚本
    二层业务与隔离(VLAN与Trunk)
  • 原文地址:https://blog.csdn.net/qq_49971476/article/details/127677484