【解析新特性】300W单路输出工业电源>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » [经验]【STM32MP157A-DK1开发板试用连载】一套相对简单的操作系统

共1条 1/1 1 跳转至

[经验]【STM32MP157A-DK1开发板试用连载】一套相对简单的操作系统

助工
2020-04-08 10:48:21    评分

粗浅的研究了一下ST官方提供的利用Yocto工具建立的系统,个人感觉掌握起来有点复杂,而且编译过程真心的痛不欲生。我的机器内存2G根本编译不了,而且时间超级长,我的机器是个双核2G,内存4G,编译一次应该在10个小时以上,还不包括所需内容在网络获取的时间。我下载了第三方澎湃兔的系统,整整下载了1天,接近50G的资料。最重要的是,好不容易编译了一个出来,整个系统动不动就上G,对于一个工控产品这个也太大了。等我先哭一会。。。。。    于是,我决定不采用官方的系统,利用官方提供的uboot和linux kernel看看可不可以有个第三方的工具可以建立一个简单点的系统。功夫不负有心人,我找到了一个老外搞得,采用buildroot工具建立的系统,感觉挺好,下面把我构建系统的过程和问题总结如下。
1.  下载buildroot

采用命令


        git clone git://git.buildroot.net/buildroot

先克隆buildroot开发环境。

2.  针对STM32MP1-DK开发板建立环境

其实这个过程挺复杂,但是好在有个老外牛人已经搞好了,我就等现成的就好了。进入刚才得到buildroot目录:    cd buildroot例如如下命令获取基本环境:

git remote add tpetazzoni https://github.com/tpetazzoni/buildroot.gitgit fetch tpetazzonigit checkout -b stm32mp157-dk2 tpetazzoni/2019.02/stm32mp157-dk

当写到这里时,我遇到了git的克隆速度那叫一个慢啊,实在是无法忍受。怎么办呢。干脆,跳过克隆过程,直接到github下载下来之后在解压看看行不行。地址:https://github.com/tpetazzoni/buildroot.git然后选择 “stm32mp157-dk”,点击“Clone or download”按钮,把这个工程下载下来。

下载的文件为:buildroot-stm32mp157-dk.zip

把这个文件复制到ubunt 16下面,然后解压。

    解压缩命令:unzipbuildroot-stm32mp157-dk.zip

3.  装载缺省配置文件

进入刚才解压的目录,目录名为buildroot-stm32mp157-dk#cdbuildroot-stm32mp157-kd#makestm32mp157_dk_defcofig

4.  对当前的配置进行调整以适合我们的开发板

我们执行命令:# makemenuconfig

这时候,我们可以看到打开了这个系统的配置界面。1、Target optionsTarget Architecture:ARM(little endian)Target BinaryFormat:ELFTarget ArchitectureVariant:cortex-A7Target ABI:EABIhfFloating pointstrategy:VFPv4-D16ARM instructionset:ARM              看一下就可以,不用调整。2、Build options其中的内容我们不用调整。3、Toolchain这里我进行了几项调整:Toolchain type:ExternaltoolchainToolchain:Arm ARM2018.11选中Copygdb server to the Target。将来远程调试应用程序的时候会用到。

4、System configuration可以调整   System hostname ,这个默认为buildroot,你可以改成你喜欢的名字,将来系统中的hostname就是这个名字。提一下这个设置Root filesystem overlay direction。它指出了一个配置文件的位置,是uboot引导系统的一些命令,如果将来有需要的我们在调整。Extra argumentspassed:这个配置指向的文件将来是SD卡分区的配置文件,如果有需要将来我们在修改。.



5、Kernel这里面我们要调整一个参数:    In-tree Device Tree Source file names:stm32mp157c-dk2更改为stm32mp157a-dk1,来适合我们的开发板。


    记住Kernel verion下面的linux源码压缩文件为linux-v4.19-stm32mp-r1.2.tar.gz。这个我们后面会用到。

6、Target packages这个里面都是将来linux系统下面集成的一些命令,根据需要我们可以自己选择想用。我这里选择了如下几个,在Networkingapplications下面选中:   iproute2   如果在linux下使用CAN,贼重要   openssh    这个不用多说了吧,将来的开发全靠他了其它的就按照默认的选,不动。7、Bootloaders这个下面我们要记住U-Boot下面的Custom repositiory version:v2018.11-stm32mp-r2.1,后面会用到。修改Custommake options:DEVICE_TREE=stm32mp157a-dk1,来适应我们的开发板。


其它没提到的部分我目前都没有修改。好了保存退出menuconfig过程。

5.  执行编译

执行命令开始编译:#make2>&1 | tee build.log接下来将是痛苦的开始,如果你耐心足够,下面你不用看了,如果你挺不住了,继续往下看吧。

6.  下载必要的源码文件

其它的源码文件因为压缩包很小,基本都可以忍受,但是toolchain、uboot和linuxkernel的压缩包太大了,真心不能忍受。我们自己下载下来。前面提到的需要记住的名字起作用了:u-boot:v2018.11-stm32mp-r2.1下载地址:https://github.com/u-boot/u-boot克隆当前最新的u-boot需要修改压缩包的名字为uboot-v2018.11-stm32mp-r2.1.tar.gz目录:dl/ubootlinux kernel:linux-v4.19-stm32mp-r1.2.tar.gz下载地址:https://github.com/STmicroelectronics/linux/archive/v4.19-stm32mp-r1.2/linux-v4.19-stm32mp-r1.2.tar.gz目录:dl/linuxtoolchain:arm-2018.11下载地址:https://developer.arm.com/-/media/Files/downloads/gnu-a/8.2-2018.11/gcc-arm-8.2-2018.11-x86_64-arm-linux-gnueabihf.tar.xz


目录:dl/toolchain-external-arm-arm


7.  输出文件

如果编译过程一切顺利,在output/images下面会出现如下所示的文件。

其中sdcard.img是可以直接烧录到sd卡的镜像文件。

8.  烧录

采用如下命令烧录到sd卡中。

sudo dd IF=output/images/sdcard.img of=/dev/sdb bs=1M conv=fdatasync status=progress

需要注意,of=/dev/sdb是指sd卡在你的系统中的设备文件名称。可以使用如下命令来查看以下:


    #sudo fdisk –l

9.  从SD卡启动中遇到的问题

我遇到的问题:end Kernel panic - not syncing: VFS: Unable to mount root fs onunknown-block(179,4)       SD卡烧录完成后,系统中查看每个分区都是正常的。Uboot可以正常启动,但是linux却无法挂载rootfs分区,并提示上面错误。       经过试验发现是rootfs的分区被破坏了,目前采用的修复方式是在Ubuntu下面重新格式化这个分区:       #sudomkfs.ext4 /dev/sdb4

格式化分区后,将rootfs下面的文件重新复制到SD的这个分区内,重现上电,问题解决了。目前还不是太清楚是不是生成的sdcard.img有问题。

接下来您将会从SD卡启动了,但是为了让这个系统运行的如我们所需要的形式,还需需要一些配置,下一贴配置新系统。





关键词: STM32MP157A-DK1     开发     操作系统    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]