OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3946|回复: 14

正点原子stm32mp157开发板linux5.10移植

[复制链接]

3

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2020-6-11
在线时间
55 小时
发表于 2022-6-25 19:01:00 | 显示全部楼层 |阅读模式
正点原子stm32mp157开发板linux5.10移植
stm32官网下载以下文件:
en.SDK-x86_64-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17.tar.xz
en.SOURCES-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17_tar.xz
en.FLASH-stm32mp1-openstlinux-5-10-dunfell-mp1-21-11-17_tar.xz
解压en.SOURCES-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17_tar.xz文件会得到源码文件,解压并安装en.SDK-x86_64-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17.tar.xz可以得到一些必要的工具,比如fiptool-stm32mpfiptool,不过fiptool可以在/tf-a-stm32mp-v2.4-stm32mp-r2-r0/tf-a-stm32mp-v2.4-stm32mp-r2/tools/fiptool编译得到。
Stm32官方编译自定义设备树教程参考
目录结构:
图片1.png
1. Tf-a 2.4
准备源码:
tar xfz tf-a-stm32mp-v2.4-stm32mp-r2-r0.tar.gz
cd tf-a-stm32mp-v2.4-stm32mp-r2
for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
按照正点原子的教程修改设备树,修改完成后,我在这里遇到了第一个坑:
参考链接ST官方最新TF-A 2.4 移植问题-OpenEdv-开源电子网然而他们的解决办法对我来说并没有用,修改代码甚至直接删除drivers/st/regulator/regulator_fixed.c文件都没用,尝试两天后,我再次编译了uboot,突然发现可以了,执行到修改的bl32代码了,终于松了一口气,不容易。因为改了很多调试信息比较乱,所以重新解压tfa源码。
只需要修改一个宏定义:
tf-a-stm32mp-v2.4-stm32mp-r2-r0/tf-a-stm32mp-v2.4-stm32mp-r2/plat/st/stm32mp1/stm32mp1_def.h 中的
#define PLAT_NB_FIXED_REGS                U(1)
改为
#define PLAT_NB_FIXED_REGS                U(12)
执行以下命令编译:
cd tf-a-stm32mp-v2.4-stm32mp-r2
export FIP_DEPLOYDIR_ROOT=$PWD/../../FIP_artifacts
make -f ../Makefile.sdk TF_A_DEVICETREE=stm32mp157d-stm32 FIP_CONFIG=" trusted" FIP_BL32_CONF="tfa," TF_A_CONFIG="trusted emmc nand nor sdcard uart usb" DEPLOYDIR=$FIP_DEPLOYDIR_ROOT/arm-trusted-firmware stm32
得到以下文件:
图片2.png

2. Uboot
准备源码:
tar xfz u-boot-stm32mp-v2020.10-stm32mp-r2-r0.tar.gz
cd u-boot-stm32mp-v2020.10-stm32mp-r2
for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
按照正点原子的教程修改设备树,修改完成后编译:
cd u-boot-stm32mp-v2020.10-stm32mp-r2
export FIP_DEPLOYDIR_ROOT=$PWD/../../FIP_artifacts
make -f ../Makefile.sdk all UBOOT_CONFIG=trusted UBOOT_DEFCONFIG=stm32mp15_trusted_defconfig UBOOT_BINARY=u-boot.dtb FIP_CONFIG="trusted" FIP_BL32_CONF="tfa," DEVICETREE="stm32mp157d-stm32"
得到以下文件:
图片3.png
问题注意:
以前发的一个帖子uboot usb otg 设备树I2C1的引脚和linu 内核usb otg 设备树I2C1的引脚为什么不一致-OpenEdv-开源电子网不知道和前文tfa中说的otg不往下走有没有关系,不过我是改回了引脚,没有遇到任何问题。
3. Kernel
准备源码:
tar xfJ linux-5.10.61.tar.xz
cd linux-5.10.61
for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
mkdir -p ../build
make ARCH=arm O="$PWD/../build" multi_v7_defconfig fragment*.config
for f in `ls -1 ../fragment*.config`; do scripts/kconfig/merge_config.sh -m -r -O $PWD/../build $PWD/../build/.config $f; done
yes '' | make ARCH=arm oldconfig O="$PWD/../build"
按照正点原子的教程修改内核设备树,修改完成后添加设备树到makefile文件,编译:
cd linux-5.10.61
make ARCH=arm -j4 uImage dtbs LOADADDR=0xC2000040 O="$PWD/../build"
图片4.png
4. 烧写
en.FLASH-stm32mp1-openstlinux-5-10-dunfell-mp1-21-11-17_tar.xz中找到FlashLayout_emmc_stm32mp157d-ev1-trusted.tsv文件,修改内容如下:
#Opt        Id        Name        Type        IP        Offset        Binary
-        0x01        fsbl1-boot        Binary        none        0x0        arm-trusted-firmware/tf-a-stm32mp157d-stm32-usb.stm32
-        0x03        fip-boot        Binary        none        0x0        fip/fip-stm32mp157d-stm32-trusted.bin
P        0x04        fsbl1        Binary        mmc1        boot1        arm-trusted-firmware/tf-a-stm32mp157d-stm32-emmc.stm32
P        0x05        fsbl2        Binary        mmc1        boot2        arm-trusted-firmware/tf-a-stm32mp157d-stm32-emmc.stm32
PD        0x06        fip        Binary        mmc1        0x00080000        fip/fip-stm32mp157d-stm32-trusted.bin
P        0x10        boot        System        mmc1        0x00480000        boot/bootfs.ext4
P        0x11        rootfs        FileSystem        mmc1        0x04480000        rootfs.ext4
文件系统rootfs可以用以前编译好的buildroot文件系统
Uboot设置启动参数:
mmc:
setenv bootcmd 'ext4load mmc 1:2 c2000000 uImage;ext4load mmc 1:2 c4000000 stm32mp157d-stm32.dtb;bootm c2000000 - c4000000'
没有启用wifi的:
setenv bootargs 'console=tty1 console=ttySTM0,115200 root=/dev/mmcblk1p3 rootwait rw'
启用wifi接口的:
setenv bootargs 'console=tty1 console=ttySTM0,115200 root=/dev/mmcblk2p3 rootwait rw'
保存:
saveenv
启动:
boot
出现问题:屏幕无法正常显示,/sys/class/drm/ 目录下没有设备,但是触摸是可以的,后面看看能不能解决吧
附几张张启动日志:
图片5.png
图片6.png
图片7.png

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

396

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2058
金钱
2058
注册时间
2012-5-8
在线时间
308 小时
发表于 2022-6-29 08:28:47 | 显示全部楼层
赞一个!希望楼主继续更新...
回复 支持 反对

使用道具 举报

2

主题

396

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2058
金钱
2058
注册时间
2012-5-8
在线时间
308 小时
发表于 2022-6-29 09:41:27 | 显示全部楼层
看手册fb的配置,默认是没有配置的
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2020-6-11
在线时间
55 小时
 楼主| 发表于 2022-6-29 19:26:45 | 显示全部楼层
zuoyi 发表于 2022-6-29 09:41
看手册fb的配置,默认是没有配置的

和fb没关系吧,我是直接测试drm,fb不是drm模拟的吗?
使用正点原子查看设备信息指令:
modetest -M stm
一堆错误,没有设备
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2020-6-11
在线时间
55 小时
 楼主| 发表于 2022-6-29 19:34:53 | 显示全部楼层
图片是5.4的启动调试信息,5.10的drm启动调试信息最多显示到蓝色
[    3.575654] [drm:stm_drm_platform_probe] stm_drm_platform_probe
[    3.580543] [drm:stm_drm_platform_probe] drv_load
[    3.587125] [drm:ltdc_load]

后面就不往下走了
屏幕截图 2022-06-29 192956.png

回复 支持 反对

使用道具 举报

2

主题

396

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2058
金钱
2058
注册时间
2012-5-8
在线时间
308 小时
发表于 2022-6-30 08:54:34 | 显示全部楼层
1203385078 发表于 2022-6-29 19:34
图片是5.4的启动调试信息,5.10的drm启动调试信息最多显示到蓝色
[    3.575654] [drm:stm_drm_platform_p ...

modetest 测试没有显示的话,那就是驱动有问题了,看看屏幕配置的参数
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2020-6-11
在线时间
55 小时
 楼主| 发表于 2022-6-30 14:43:00 | 显示全部楼层
zuoyi 发表于 2022-6-30 08:54
modetest 测试没有显示的话,那就是驱动有问题了,看看屏幕配置的参数

stm32官方可能更改了ltdc 的驱动,对比内核配置,多出了一些选项。panel-simple.c文件里的数据定义也有一些变化,算了,不用追究了,其他的驱动测试都没啥问题,屏亮了也没啥用。
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2020-6-11
在线时间
55 小时
 楼主| 发表于 2022-6-30 19:43:33 | 显示全部楼层
经过多次检查确认,rgb屏无法加载驱动,确认设备树编写和代码修改无误,5.4的内核是可以的,5.10rgb屏的驱动无法正常加载,但是使用HDMI接口是没有问题的,截取部分日志如下:
屏幕截图 2022-06-30 193901.png
可以看到drm驱动加载的过程,查看/sys/class/drm目录,存在HDMI设备:
屏幕截图 2022-06-30 193933.png
可以确定panel-simple驱动参数做出了修改。
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2020-6-11
在线时间
55 小时
 楼主| 发表于 2022-6-30 20:05:06 | 显示全部楼层
上传修改好的设备树和一些编写的脚本,使用的编译器是gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf

环境变量:
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabihf-
export PATH=$PATH:/home/ubuntu/arm-gcc/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin


其他什么错误正点原子的教程都有写,就不说了,设置环境变量后,基本不需要修改tfa和uboot的Makefile.sdk文件,上传的文件中带有fiptool和fiptool-stm32mp,怎么配置可以参考正点原子教程stm32wrapper4dbg

希望谁解决了rgb屏驱动的问题可以告诉我,感谢

stm32mp157.zip

73.66 KB, 下载次数: 5

回复 支持 反对

使用道具 举报

2

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-8-17
在线时间
35 小时
发表于 2022-9-20 20:48:23 | 显示全部楼层
老哥,你修改的这里【#define PLAT_NB_FIXED_REGS                U(1) 改为 #define PLAT_NB_FIXED_REGS                U(12)】,是修改的固定电源的数量吗?这里是怎么确定的
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2020-6-11
在线时间
55 小时
 楼主| 发表于 2022-9-21 14:44:25 | 显示全部楼层
aaa2742 发表于 2022-9-20 20:48
老哥,你修改的这里【#define PLAT_NB_FIXED_REGS                U(1) 改为 #define PLAT_NB_FIXED_REGS   ...

是设备树固定电源节点数,只要大于你改设备树的节点数就行,我这里随便写的一个12
回复 支持 反对

使用道具 举报

2

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-8-17
在线时间
35 小时
发表于 2022-9-21 20:04:14 | 显示全部楼层
OP-TEE会移植吗?
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2020-6-11
在线时间
55 小时
 楼主| 发表于 2022-9-27 16:54:19 | 显示全部楼层
aaa2742 发表于 2022-9-21 20:04
OP-TEE会移植吗?

5.15的版本stm32 wiki有教程,基本差不多
回复 支持 反对

使用道具 举报

2

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-8-17
在线时间
35 小时
发表于 2022-9-30 12:51:13 | 显示全部楼层
1203385078 发表于 2022-9-27 16:54
5.15的版本stm32 wiki有教程,基本差不多

我移植时出了问题,如果您会的话,可以出个教程,让大家学习一下
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2020-6-11
在线时间
55 小时
 楼主| 发表于 2022-10-1 13:41:03 | 显示全部楼层
aaa2742 发表于 2022-9-30 12:51
我移植时出了问题,如果您会的话,可以出个教程,让大家学习一下

http://www.openedv.com/forum.php ... p;extra=#pid1285097
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-10 13:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表