STMCU小助手
发布时间:2022-9-28 21:53
|
关于stm32mp1,ST官方提供的系统太庞大,开机速度慢,占用空间大。基于这个问题,我们整理了Linux5.4.31最小根文件系统的镜像及对应教程,希望对stm32mp157开发板使用的用户有所帮助。 1. 根文件系统开发实验6 A) w, z8 {; V 1.1 实验目的& d: I* B9 H' b& [0 a Z% u" r 熟悉Linux 文件系统目录结构,创建自己的文件系统,通过NFS 方式测试。 1.2 实验平台 华清远见开发环境,FS-MP1A平台; 1.3 实验步骤3 O! Z' |! @7 D$ J# o% |% @ 1 . 根文件系统制作$ F5 ?, E5 @* W+ M h) z E) b$ w$ c 可以网站下载busybox-1.29.3源码用于制作Linux文件系统,为了方便,已将源码放进了光盘。9 Y$ n( P# B- g 安装交叉编译工具链。 + G- Z6 s% e) C; [/ @7 Z( j, A
验证开发工具是否安装正确,显示版本信息如下图所示。 linux@ubuntu arm-linux-gnueabihf-gcc -v" _, b, ?0 j- O6 P0 P' K( i; I8 V: V2 Z3 s7 @; n4 |' ~
, P7 L. Y d! d$ |1 m& S8 X; K 建立源码目录
将busybox-1.29.3.tar.bz2拷贝至该目录。' k7 d) H+ L! s- I+ C
配置busybox 源码:- s7 V$ e/ x# E8 y) ~4 | ( @8 O: n V9 \- W: Y ? 将顶层目录下的Makefile文件中的CROSS_COMPILE字段修改为“arm-linux-gnueabihf-”
5 v0 S8 v& D' z; Q6 v6 E% G 可以使用如下命令配置源码- l# {$ V6 p N, q, ^. ]9 ^3 R linux@ubuntu make menuconfig3 ^7 `& ]9 Z( R5 y9 k
编译源码:) h3 N/ Z8 ]& ?7 x ; @4 Q' Z+ G6 b# U# B linux@ubuntu make6 F* @5 L7 i7 ^# G+ {! x/ B9 ^安装:! a" }3 c& j5 s4 I ! q, `# V6 \/ F busybox 默认安装路径为源码目录下的_install linux@ubuntu make install3 ^+ w9 w" s$ i( _+ U 进入安装目录: 4 ~. y; O. A# ~) n6 r: c
创建其他需要的目录:5 K/ X# ]4 I/ M* S- }! ] 6 D+ d: V# Z; G. A# h- I# l
添加库:# Q6 V- V5 f! B- m 7 g7 p* q& a3 A% E 将工具链中的库拷贝到_install 目录下:- }, M/ Z- Q# E7 ^& l/ q linux@ubuntu cp /usr/arm-linux-gnueabihf/lib/ . -a/ V# ?7 u0 O& A8 c4 e. O: P% j2 Q( H' w删除静态库: 1 v9 Z& _7 y$ ` ^! I9 U1 C linux@ubuntu rm lib/*.a 5 Y+ M+ ~2 r, S% q2 V 添加系统启动文件:9 Y7 A6 K8 M7 Q- g$ \1 s+ [6 H( l- f 在etc下添加文件inittab,文件内容如下:# Q& F: \4 b; _0 \ 1 H4 r+ c( d- @2 i. \$ J 注意:修改文件均为_install目录下 ; T8 M3 Y6 w2 U8 G: d etc/inittab0 e' m7 k" d' e" G* O+ p
在etc下添加文件fstab,文件内容如下:1 c9 J, J' v. y7 q /etc/fstab
这里我们挂载的文件系统有三个proc、sysfs和tmpfs。 2 `" Q% a: y- Z7 a 回到创建的文件系统处,在etc下创建init.d目录,并在init.d下创建rcS文件,rcS 文件内容为: / ~+ ?5 Q- J7 u5 O+ K2 ? etc/init.d/rcS# h$ |+ g6 K6 b. I' K
为rcS 添加可执行权限:: O) b* X- b, b7 i+ d V linux@ubuntu chmod a+x init.d/rcS6 e) a8 C0 `1 W% z 在etc 下添加profile 文件,文件内容为:- {" q d6 {% p. E: R6 q etc/profile
2 . NFS 测试# f- [# b2 M7 G7 T4 U: V/ i* ` 删除原先的/source/rootfs:
将我们新建的根文件系统拷贝到/source/rootfs目录下 , H3 u$ l4 W2 a
修改ubuntu主机中的/tftpboot/pxelinux.cfg/01-00-80-e1-42-60-17文件添加nfs启动选项$ m# h$ V% L4 u2 i 7 S5 Y* u$ p" x w
APPEND root=/dev/nfs nfsroot=192.168.11.251:/source/rootfs ip=dhcp rootwait rw earlyprintk console=ttySTM0,115200/ H$ p* u7 r: c: v- Y; X 上述配置中共有两个启动项分别为stm32mp157a-fsmp1a-emmc、stm32mp157a-fsmp1a-nfs。其中stm32mp157a-fsmp1a-emmc选项为正常启动配置;stm32mp157a-fsmp1a-nfs为nfs挂载方式,这里需要注意的是nfsroot=192.168.11.251部分的ip需要根据ubunut主机的实际ip填写。 4 V F7 m( Q4 Z6 s* G) ]! K 重新启动开发板,选择nfs启动选项。+ ?) D( a; T- E; k s( t
; k0 \% Y; S/ n6 v 查看是否能够正常挂载,功能是否正常
4 F& G9 x4 h6 T2 v) W3 m 2. 制作根文件系统镜像 上小节已经制作好了根文件系统,并且从NFS已经成功启动。本小节将制作一个根文件系统镜像用于后续的固化和烧录。- B; ?! B% ?- O3 ~3 ^0 q 2. 制作ext4格式的文件系统6 S8 P8 Y( U7 t$ q 3 G" M/ r0 k) @- U2 z( C 在ubuntu中制作一个EXT4空文件, 此处设则为300M大小,由于安装的软件较多时,文件系统会很大,用户可以根据情况自行更改。
2. 复制文件系统 ) G x, [' ]. h6 m( a" n 将上小节我们移植完成的跟文件系统中所的文件夹都fuubuntu18_rootfs.ext4文件挂载到临时目录/mnt,并拷贝文件系统。 1 L2 A" F0 P. |$ | linux@ubuntu sudo mount -o loop fsmp1x_rootf.ext4 /mnt如果我们已经制作了前面的文件系统则直接拷贝/source/rootfs/下的文件即可 linux@ubuntu sudo cp /source/rootfs/* /mnt -a如果我们之前没有编译制作文件系统也可以将【华清远见-FS-MP1A开发资料\02-程序源码\04-Linux系统移植\02-移植好的系统镜像文件】下的rootfs.tar.xz文件导入到虚拟机中,使用我们已经移植好的跟文件系统进行制作。- ^6 c0 d- e; _( x7 D) Q linux@ubuntu sudo tar -xvf rootfs.tar.xz -C /mnt7 p( ~" p1 Y/ @+ b9 x9 m3. 卸载挂载的fsmp1x_rootf.ext4文件# b B- C& L1 C( ] linux@ubuntu:$ sudo umount /mnt 此时跟文件系统镜像就制作完成了。可以将这个文件导出到windos下烧录到开发板中运行。 4. 修改烧录文件 * o+ A6 _1 o& U& @& | 如果想要烧录到开发板那么就需要修改,烧写文件。这里以eMMC启动的trusted镜像为例来说明。其它启动的修改方法也类似。9 w' J2 h5 ^/ a; C7 u4 U' I 5 q0 b$ X8 ?; E `! s 修改flashlayout_fs-mp1a-weston\trusted下的FlashLayout_sdcard_stm32mp157a-fsmp1a-trusted.tsv文件将Id为0x23的rootfs分区镜像名由fs-mp1a-weston-openstlinux-weston-fsmp1a.ext4修改为fsmp1x_rootf.ext4。按照《STM32CubeProgrammer烧写方式》章节进行烧录即可。* ]( ~5 A0 u3 m: ^' x7 _0 g; k
2 W- q- Y. g' o8 }& F ————————————————2 X2 i& D2 ]& |4 G 版权声明:华清远见IT开放实验室! v( }, J& b# J+ p# }4 Z5 ~- m + ~, |7 {. u5 `7 b2 C |
STM32MP157双A核Linux + 自研RTOS双系统镜像免费下载
扩展STM32微处理器,实现高性价比、低功耗和灵活性能
STM32MP1 自举程序编程:USB DFU/USART 协议全解析
兔哥心中的ST中文论坛
我心中的ST中文论坛
STM32 开发者指南:ST.com 全新 MCU 产品阵容视觉布局深度解析
深度拆解 STM32MP1 Boot 链路
STM32串口自动识别波特率的原理
STM32MP135 MP157 MP257 CoreMark移植&&跑分对比&&多核心负载不均衡问题排查与解决
STM32--STM32 微控制器详解
微信公众号
手机版