7151|14

1382

帖子

2

TA的资源

五彩晶圆(初级)

楼主
 

STM32MP157A-DK1测评 (1)官方OpenSTLinux烧写 [复制链接]

 
 

  STM32MP157A-DK1 这个板子从主要特征上看,就和风靡已久的各种“派”相似了,而和 STM32 MCU 的discovery比变化较大。至于玩法,因为目标平台是 ARM cortex-A 系列CPU的Linux系统,在应用层面上和其它 Linux 板子(比如各种“派”)风格就一致。

  本来这个套件已经带了烧写好官方提供的 OpenSTLinux 的MicroSD卡,但不幸我收到的这套里面MicroSD卡已经壮烈牺牲了。于是我不能立即体验其demo. 得自己找个卡做个系统上去才能玩了。有点障碍的小问题是板子电源是 USB type-C 口提供电源(没有常规DC插座),而随板子给的一条USB线是双头 Type-C 口,这样我还没有电源可以直接插上去。ST-Link部分仍然是 USB micro 接口,但MPU并不从ST-Link这里获取电源,板子也没有电源跳线选择。按惯例某些插针上会连到5V电源,然而作为电源输入也不合适,我得找个 Type-C 的插头焊个电源线来用。

  首先明确一点,STM32MP157A 这颗MPU是不带Flash的——这不同于STM32 MCU. 纵观板子以及查阅线路图又可以确定板子上没有NOR Flash、NAND Flash、eMMC之类存储芯片。这样也不需要对板子进行烧写,不存在烧错了“变砖”的风险,而且MicroSD卡接到其它系统上太灵活了。
  根据 wiki.st.com 上 Starter package 部分的介绍(https://wiki.st.com/stm32mpu/wiki/STM32MP15_Discovery_kits_-_Starter_Package),需要用 STCubeProgrammer 来制作SD卡,这样就仿佛是对板子进行“烧写”编程(对于只有这一块开发板的用户来说这也是省事)。又要注意了,和以往MCU的烧写不同,这里的烧写并不是通过 ST-Link 进行,而是用STM32MP1的USB DFU模式,也就是从板子上另外一个 USB type-C 的口连接PC操作。但是我仅有的一条 USB type-C 转 type-A 数据线还不在手边,又卡壳了。

  不过还有办法,STCubeProgrammer 还可以使用 UART 操作,就是速度慢而已,这个 UART 就是从 ST-Link 的 VCP 接出来的。

  于是我不得已用这个慢速连接进行烧写操作。

  事先需要将板子背面的 BOOT 开关都拨到 OFF 位置,也就是 BOOT0=0, BOOT2=0 (BOOT1固定为0),选择UART / USB启动。

  尝试之后我认为这样个操作是可以的:
  也就是用 -c 参数指定端口(USB或UART),用 -w 参数指定一个 layout 文件,提供给 STM32_Programmer_CLI 程序。程序会根据 layout 文件找到实际要烧写的数据文件进行操作。

  比如这个 FlashLayout_sdcard_stm32mp157a-dk1-trusted.tsv 文件的内容:

#Opt	Id	Name	Type	IP	Offset	Binary
-	0x01	fsbl1-boot	Binary	none	0x0	tf-a-stm32mp157a-dk1-trusted.stm32
-	0x03	ssbl-boot	Binary	none	0x0	u-boot-stm32mp157a-dk1-trusted.stm32
P	0x04	fsbl1	Binary	mmc0	0x00004400	tf-a-stm32mp157a-dk1-trusted.stm32
P	0x05	fsbl2	Binary	mmc0	0x00044400	tf-a-stm32mp157a-dk1-trusted.stm32
P	0x06	ssbl	Binary	mmc0	0x00084400	u-boot-stm32mp157a-dk1-trusted.stm32
P	0x21	bootfs	System	mmc0	0x00284400	st-image-bootfs-openstlinux-weston-stm32mp1.ext4
P	0x22	vendorfs	FileSystem	mmc0	0x04284400	st-image-vendorfs-openstlinux-weston-stm32mp1.ext4
P	0x23	rootfs	FileSystem	mmc0	0x05284400	st-image-weston-openstlinux-weston-stm32mp1.ext4
P	0x24	userfs	FileSystem	mmc0	0x33C84400	st-image-userfs-openstlinux-weston-stm32mp1.ext4

  也就是说,SD卡并不是整个作为一个Linux文件系统来用的,不能直接格式化了把文件复制进去。这样是要麻烦点,启动linux必需的 u-boot 也是存放在 SD 卡里面。根据资料,SD卡的空间分配是这样的:

  正因如此,要利用CubeProgrammer来完成存储空间的索引,按地址写入文件。

  但是,115200 baud 的UART速度实在太慢,写到后面几十MB的ext4文件系统内容时,效率不能忍受了。遂放弃……

 

  我放弃通过 UART 用 CubeProgrammer 烧写,并非要转用 USB DFU, 而是因为发现FLASH文件压缩包中有 scripts/create_sdcard_from_flashlayout.sh 这个 bash 脚本文件,它应当是可以直接写SD卡的。于是,使用 Linux 机器执行这个脚本(注意需要 sgdisk 程序,我本来没有,结果第一次生成的结果不能用)。

[root(4) stm32mp1]# scripts/create_sdcard_from_flashlayout.sh flashlayout_st-image-weston/FlashLayout_sdcard_stm32mp157a-dk1-basic.tsv

这个脚本程序将创建一个镜像文件,完成后用 dd 命令写入 SD 卡应该就可以了。

Create Raw empty image: flashlayout_st-image-weston/../flashlayout_st-image-weston_FlashLayout_sdcard_stm32mp157a-dk1-basic.raw of 1536MB
具体的分区划分:

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34             545   256.0 KiB   8301  fsbl1
   2             546            1057   256.0 KiB   8301  fsbl2
   3            1058            5153   2.0 MiB     8301  ssbl
   4            5154          136225   64.0 MiB    8300  bootfs
   5          136226          168993   16.0 MiB    8300  vendorfs
   6          168994         1705857   750.4 MiB   8300  rootfs
   7         1705858         3145694   703.0 MiB   8300  userfs

对应的文件:

part 1:    fsbl1, image: u-boot-spl.stm32-stm32mp157a-dk1-basic            
part 2:    fsbl2, image: u-boot-spl.stm32-stm32mp157a-dk1-basic            
part 3:     ssbl, image: u-boot-stm32mp157a-dk1-basic.img                  
part 4:   bootfs, image: st-image-bootfs-openstlinux-weston-stm32mp1.ext4  
part 5: vendorfs, image: st-image-vendorfs-openstlinux-weston-stm32mp1.ext4
part 6:   rootfs, image: st-image-weston-openstlinux-weston-stm32mp1.ext4  
part 7:   userfs, image: st-image-userfs-openstlinux-weston-stm32mp1.ext4  


  这样用脚本文件处理就摆脱了 CubeProgrammer 的步骤,直接制作 SD 卡,效率很高。SD卡用2GB以上就满足要求了。准备好以后将板子背面 BOOT 开关都拨到 ON 位置,插好 MicroSD 卡然后通电。一会儿蓝色LED闪烁,就说明系统启动成功了。从 ST-Link 的 VCP 可以看到启动时的很多信息。


此内容由EEWORLD论坛网友cruelfox原创,如需转载或用于商业用途需征得作者同意并注明出处

最新回复

gck
楼主,我烧写sd卡启动时,出现了Exception mode=0x00000016 at: 0x2ffda000,请问时什么原因?         详情 回复 发表于 2020-8-1 11:44
点赞 关注
 
 

回复
举报

661

帖子

18

TA的资源

纯净的硅(初级)

沙发
 

楼主写的太好了,给楼主加个鸡腿!

板子很漂亮,楼主的帖子也排版很漂亮

 
 
 

回复

2942

帖子

4

TA的资源

五彩晶圆(中级)

板凳
 

兄弟好象m4的核心里是有flash的,我使用st-link看见了。在keil里操作的。因为没有仔细的了解过,就没敢往里写程序。

点评

没有。datasheet和reference manual都没有提到片内FLASH.  有片上SRAM专给跑M4的程序。  详情 回复 发表于 2020-3-30 16:03
 
 
 

回复

1382

帖子

2

TA的资源

五彩晶圆(初级)

4
 
bigbat 发表于 2020-3-30 15:28 兄弟好象m4的核心里是有flash的,我使用st-link看见了。在keil里操作的。因为没有仔细的了解过,就没敢往里 ...

没有。datasheet和reference manual都没有提到片内FLASH. 

有片上SRAM专给跑M4的程序。

 
 
 

回复

2942

帖子

4

TA的资源

五彩晶圆(中级)

5
 

找到的资料说:开发板有2种启动模式:Production 启动模式 和 Engineering模式,默认为Production 模式,

M4的固件依靠A7进行加载,系统资源由OpenSTLinux直接管理(时钟,调节器等),预构建的固件在OpenSTLinux映像或文件系统中提供和下载,通过Linux Remote Proc组件在协处理器M4上启动了预构建的固件,Cortex-A固件(Linux OS)负责加载Cortex-M固件。
Engineering 专门用于直接在协处理器M4上进行固件测试,所有资源都直接在工程源代码中进行管理(时钟,调节器等)

而且好象这个由BOOT0,BOOT1,BOOT2选择的启动过程就是ROM程序来控制的。目前还不敢确定,这种烧写会不会破坏开发板的ROM。如果变砖就惨了。

 
 
 

回复

9798

帖子

24

TA的资源

版主

6
 

够坎坷的,你的办还还挺多。

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

7
 

FLASH文件压缩包中有 scripts/create_sdcard_from_flashlayout.sh 

请问你这个是哪下载的,我得sd卡邮寄到也废了不知道怎么弄了?

 
 
 

回复

1382

帖子

2

TA的资源

五彩晶圆(初级)

8
 
人生如梦呀 发表于 2020-4-20 22:42 FLASH文件压缩包中有 scripts/create_sdcard_from_flashlayout.sh  请问你这个是哪下载的,我 ...

STMCU中文网(stmcu.com.cn)资料下载,找stm32mp的软件和固件。

比从ST国外网下快。

 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

9
 

你好我用以下命令操作了不知道哪里不对?希望帮指点下

./create_sdcard_from_flashlayout.sh ../flashlayout_st-image-weston/F
lashLayout_sdcard_stm32mp157a-dk1-trusted.tsv 

 

sudo dd if=../flashlayout_st-image-weston/../flashlayout_st-image-we
ston_FlashLayout_sdcard_stm32mp157a-dk1-trusted.raw of=/dev/mmcblk0 bs=8M conv=fdatasync status=progress
 

 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

10
 

你好我的stm32mp1 sd 还是没有好用 ,生成。raw 成功

1.umount /dev/sdb1

2.sudo mkfs.ntfs -f /dev/sdb1

sudo dd if=./flashlayout_st-image-weston_FlashLayout_sdcard_stm32mp157a-dk1-
trusted.raw of=/dev/sdb1 conv=fdatasync status=progress

我这样有什么问题吗,希望有时间帮指点下

点评

不需要 mkfs.ntfs 这一步。 dd of=/dev/sdb   不要用 /dev/sdb1 否则很可能是把 raw 文件的内容写到 sd 卡的第一个分区里面了。  详情 回复 发表于 2020-4-24 23:59
 
 
 

回复

1382

帖子

2

TA的资源

五彩晶圆(初级)

11
 
人生如梦呀 发表于 2020-4-24 23:13 你好我的stm32mp1 sd 还是没有好用 ,生成。raw 成功 1.umount /dev/sdb1 2.sudo mkfs.ntfs -f /dev/s ...

不需要 mkfs.ntfs 这一步。

dd of=/dev/sdb   不要用 /dev/sdb1 否则很可能是把 raw 文件的内容写到 sd 卡的第一个分区里面了。

 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

12
 
cruelfox 发表于 2020-4-24 23:59 不需要 mkfs.ntfs 这一步。 dd of=/dev/sdb   不要用 /dev/sdb1 否则很可能是把 raw 文件的内容 ...

多谢,我的不好用就是这个问题,多谢楼主

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

13
 

写的很详细啊 。

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

14
 
Response received from device: NACK GETPHASE command not acknowledged!  Reemission of GetPhase command GETPHASE command not acknowledged!  Reemission of GetPhase command GETPHASE command not acknowledged! Error: GetPhase command not acknowledged after 3 retries!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

15
 

楼主,我烧写sd卡启动时,出现了Exception mode=0x00000016 at: 0x2ffda000,请问时什么原因?

 

 

 

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表