正点原子STM32MP57学习记录
配置buildroot
1 将 buildroot 源码 buildroot-2020.02.6.tar.bz2 拷贝到 ubuntu 中,拷贝完成以后对其进行解压,命令如下:
tar -vxjf buildroot-2020.02.6.tar.bz2
解压完成以后就会得到一个名为“buildroot-2020.02.6”的目录,此目录就是我们解压得到
的 buildroot 源码,进入到此目录中,此目录下的文件如图 19.2.1.1 所示:
2 解压后,可输入make menuconfig
命令打开持图形化配置界面跟着教程自行配置,也可直接将本人准备好的配置文件“stm32mp1_atk_defconfig”拷贝到buildroot 的 configs 目录下
3 在buildroot源码目录下使用以下命令配置buildroot
make stm32mp1_atk_defconfig
4 在buildroot源码目录下使用以下命令编译buildroot
make -j8 //多线程编译
配置buildroot 下的 busybox
1 在buildroo源码下找到/output/build/busybox-1.31.1 这个文件夹,此文件夹就是解压后的 busybox 源码
2 修改busybox 中的一些代码文件
(跟着教程修改版)
2.1 修改 Makefile,添加编译器
同Uboot和Linux移植一样,打开busybox的顶层Makefile,添加ARCH和CROSS_COMPILE的值,如下所示:
164 CROSS_COMPILE ?= /usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-
......
190 ARCH ?= arm
2.2 修改busybox-1.31.1/libbb/printable_string.c文件
2.3 修改busybox-1.31.1/libbb/unicode.c文件
(直接替换文件版)
用本人准备的已修改后的代码直接替换原代码文件。
2.1 将提供的busybox的配置文件目录下的Makefile文件放到buybox源码目录,替换原同名文件:
2.2 将提供的printable_string2和unicode.c直接拷贝到busybox源码的libbb目录下:
3 可使用make busybox-menuconfig打开 busybox 的配置界面跟着教程自行配置,也可直接使用本人准备好的配置文件“busybox的配置文件/stm32mp1_atk_defconfig”拷贝到buildroot 下的 busybox的 configs 目录下
在busybox源码目录执行以下命令配置busybox
make stm32mp1_atk_defconfig
4 进入到 buildroot 源码目录下输入如下命令查看当前 buildroot 所有配置了的目标软件包,也就是 packages:
make show-targets
5 执行下面命令重新编译 buildroot 下的 busybox
make busybox
6 编译完成以后重新编译 buildroot,主要是对其进行打包,输入如下命令:
make -j8
测试新的根文件系统
1 将 ouput/images/rootfs.tar 拷贝到 nfs目录下的 rootfs 目录中,然后重新解压
tar -vxf rootfs.tar
解压完成以后就可以使用 FTP 和 SSH 等相关的软件了,由于 FTP 和 SSH 都是通过网络进行数据传输的,因此需要先配置网络,如果是通过 nfs 挂载的根文件系统,那么网络已经初始化完成了,因此可以直接使用。如果是烧写到 EMMC 里面的,那么就需要先配置网络相关功能。
2 nfs挂载启动开发板后,进入开发板命令行输入检查depmod命令,若提示错误
就手动创建lib/modules/5.4.31 目录,命令如下:
mkdir /lib/modules/5.4.31 -p
创建好以后再执行 depmod 命名就不会报错了
3 配置vsftpd搭建FTP服务器置,打开/etc/vsftpd.conf 文件,将下面两行前面的“#”去掉:
local_enable=YES //取消掉前面的‘#’
write_enable=YES //取消掉前面的‘#’
4 要修改/etc/vsftpd.conf 文件的所属用户,默认为 sshd 用户,将其改为 root用户,输入如下命令:
chown root:root /etc/vsftpd.conf //修改 vsftpd.conf 文件所属用户
5 新建一个用户来完成 FTP 登录,设置完成以后重启开发板,vsftpd 服务默认会使能!如图
6 启动SSH服务,提示“sshd: /var/empty must be owned by root and not group or world-writable.”,此时我们需要修改/var/empty目录所属用户以及用户组,输入如下命令:
chown root:root /var/empty
7 创建自启动文件Sautorun
cd /etc/init.d/ //进入/etc/init.d 目录
touch Sautorun //使用 touch 命令创建 Sautorun 脚本
chmod 777 Sautorun //给予 Aautorun 脚本可执行权限
在Sautorun 文件中添加如下代码使能 sysfs debug 目录,便于后续调试驱动:
mount -t debugfs none /sys/kernel/debug
ifconfig eth0 up //打开 eth0
ifconfig eth0 192.168.1.250 netmask 255.255.255.0 //设置 IP 地址
后两行用于开机自动设置静态 IP 地址(因为本人的开发板没有连接路由器,而是直接连接的交换机或者电脑),如果开发板连接路由器的话就更简单了,不需要我们手动设置静态 IP 地址,直接使用“udhcpc”命令从路由器获取动态 IP 地址即可,如图 19.6.3.7 所示:
打包根文件系统
1 创建一个名为 rootfs 文件夹,注意不要和/home/zuozhongkai/linux/nfs/rootfs 这个目录重复了!这里是在/home/zuozhongkai/linux/目录下创建一个名为“rootfs”目录,进入后再创建 ext4 磁盘
cd rootfs
dd if=/dev/zero of=rootfs.ext4 bs=1M count=1024
mkfs.ext4 -L rootfs rootfs.ext4
2 使用 mount 命令将 rootfs.ext4 挂载到/mnt/rootfs 目录下
sudo mkdir /mnt/rootfs
sudo mount rootfs.ext4 /mnt/rootfs/
3 进入nfs下的rootfs目录,将所有根文件系统文件拷贝到/mnt/bootfs 目录下,命令如下:
sudo cp * /mnt/rootfs/ -drf
sudo umount /mnt/rootfs
至此,根文件系统就已经打包到了/home/zuozhongkai/linux/目录下的 rootfs.ext4 中 , 稍 后可 使 用STM32CubeProgrammer 软件将其烧写到 EMMC 里面。
最后的打包文件
提取链接(点击打开)
https://pan.baidu.com/s/1DKLguuIPatymwGA1OZzq1g?pwd=zpul