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 接出来的。

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

connect.jpg (241.86 KB, 下载次数: 0)

2020-3-30 11:07 上传

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

bootmode.PNG (105.09 KB, 下载次数: 0)

2020-3-30 11:20 上传

尝试之后我认为这样个操作是可以的:

cubeprog.PNG (22.55 KB, 下载次数: 0)

2020-3-30 11:23 上传

也就是用 -c 参数指定端口(USB或UART),用 -w 参数指定一个 layout 文件,提供给 STM32_Programmer_CLI 程序。程序会根据 layout 文件找到实际要烧写的数据文件进行操作。

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

#OptIdNameTypeIPOffsetBinary

-0x01fsbl1-bootBinarynone0x0tf-a-stm32mp157a-dk1-trusted.stm32

-0x03ssbl-bootBinarynone0x0u-boot-stm32mp157a-dk1-trusted.stm32

P0x04fsbl1Binarymmc00x00004400tf-a-stm32mp157a-dk1-trusted.stm32

P0x05fsbl2Binarymmc00x00044400tf-a-stm32mp157a-dk1-trusted.stm32

P0x06ssblBinarymmc00x00084400u-boot-stm32mp157a-dk1-trusted.stm32

P0x21bootfsSystemmmc00x00284400st-image-bootfs-openstlinux-weston-stm32mp1.ext4

P0x22vendorfsFileSystemmmc00x04284400st-image-vendorfs-openstlinux-weston-stm32mp1.ext4

P0x23rootfsFileSystemmmc00x05284400st-image-weston-openstlinux-weston-stm32mp1.ext4

P0x24userfsFileSystemmmc00x33C84400st-image-userfs-openstlinux-weston-stm32mp1.ext4

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

sd_card_mapping.png (37.54 KB, 下载次数: 0)

2020-3-30 11:37 上传

正因如此,要利用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原创,如需转载或用于商业用途需征得作者同意并注明出处

stm32的157系列linux,STM32MP157A-DK1测评 (1)官方OpenSTLinux烧写相关推荐

  1. 嵌入式Linux之旅——环境搭建篇之烧写整个系统

    上一小结我们已经烧写完u-boot,我烧写的u-boot是板子厂家定制的,本小节将利用这个u-boot烧写整个系统.当然,在系统移植篇的时候也会涉及到如何定制一个u-boot. 烧写整个系统我们一个叫 ...

  2. 01-旭日X3派测评——开箱测试系统烧写性能初测

    目录 1. 开箱测试 2. 预备工作 3.烧写系统 3.1 烧写软件 3.2 镜像文件下载 4.3 制作系统启动盘 4.4 测试系统 4.4.1串口登录测试 4.4.2 SSH登录测试 5. Hell ...

  3. tiny4412安装Linux系统,FriendlyARM Tiny 4412开发板烧写Linux系统步骤

    一.制做用于安装系统的SD卡 通常Tiny4412出厂时已经安装好Android4.2.2系统,之后要从新烧写系统,则须要SD卡来烧写系统,不管是经过USB烧写,仍是SD卡脱机烧写,都须要使用SD卡启 ...

  4. 烧写linux系统到开发板中,Mini2440烧写Linux系统

    按照国嵌课程在Linux系统下使用dnw软件烧写系统失败,开机白屏. 烧写步骤: 1.保持S2开关拨至nor flash开关处,连接串口线打开串口工具以便观察运行情况,打开电源开关. 2.使用jlin ...

  5. 裸板烧写linux内核,嵌入式 hi3518c裸板uboot烧写、kernel烧写、fs烧写小结

    1.在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以 2.记住在使用printf进行调试的时候,在遇到指针或者字符串的时候 ...

  6. 嵌入式Linux开发: 龙芯2K1000使用EJTAG烧写POPM

    一.环境介绍 宿主机环境:  ubuntu18.04 64位 目标开发板:  龙芯二代(2K1000) 需求说明:  在开发板使用过程中,如果不小心烧写错了POPM,导致开发板没法正常启动,这时候就可 ...

  7. 正点原子Linux阿尔法开发板4.3 寸多点电容触摸屏测试问题和gt9xx系列linux驱动移植

    正点原子Linux阿尔法开发板4.3 寸多点电容触摸屏测试问题和gt9xx系列linux驱动移植 正点原子官方CSDN 4.3 寸多点电容触摸屏测试问题 正点原子gt9xx系列linux驱动移植 1. ...

  8. Linux学习笔记---使用MfgTool工具烧写官方系统(一)

    目录 MfgTool工具简单介绍 软件烧写原理分析 1 .firmeare 文件夹 2 .files 文件夹 3 .ucl2.xml 文件 烧写步骤 1.连接USB线 2.开发板设置为USB模式 3. ...

  9. uboot通过u盘烧写linux内核,向Flash中烧写uboot和linux操作系统

    向Flash中烧写uboot和linux操作系统 2011年03月28日 向Flash中烧写uboot和linux操作系统 ====================================== ...

最新文章

  1. 阿里巴巴开源限流降级神器Sentinel大规模生产级应用实践
  2. 按照左右半区的方式重新组合单链表
  3. 64位jdk连接32位的mysql_在64位客户端使用32位的ODBC配置
  4. python打包exe文件
  5. Java中的记录类型
  6. network3D 交互式网络生成
  7. 如何使用python多线程_Python:怎样用线程将任务并行化?
  8. python openpyxl创建excel文件-python之openpyxl生成excel文件
  9. 【转载】cocos2d-x类型转换(CCstring int string char UTF-8互转)以及字符串详解
  10. ASP.NET MVC Html.BeginForm用法1
  11. c语言编程怎么记,新手如何学习c语言
  12. 用html5写个炫酷的3d电子相册
  13. java common-lang_commons-lang.jar下载
  14. 全渠道精准营销其实不难?从这几个方面入手进行了!
  15. 软考中项第三章 信息系统集成专业知识
  16. 创业者周鸿祎前传(西安交大时期)-看点-@虎嗅网
  17. android开发关机代码,android代码实现关机
  18. Intrinsic Relationship Reasoning for Small Object Detection
  19. C语言如何读取一行数据,直到按空格结束
  20. 一打开360局域网防范就出现arp攻击,不打开能正常上网

热门文章

  1. Linux下pl与ps端的通信,zedboard通过BRAM实现PS和PL的简单通信
  2. 计算机端口伪装,服务器伪装信息修改法Windows系统 -电脑资料
  3. 汽车功能安全理论基础
  4. mysql与oracle链接超时_oracle数据库链接超时时间
  5. js数组合并(整理)
  6. 6年测试,面试大放厥词,最后竟.....
  7. dct变换和量化matlab,matlab实验,图像变换域分析(dct变换和小波变换)
  8. 计算机桌面内存,计算机内存不足怎么办
  9. 7-1 Overlay与Underlay通信总结
  10. Android的布局管理