你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Stm32mp157A-DK1开发包评估4-Linux内核编译

[复制链接]
寒门过河卒 发布时间:2021-6-21 11:40
  1、解压
进入/home/helloxhy/linux/en.SOURCES-stm32mp1-openstlinux-5-4-dunfell-mp1-20-11-12/stm32mp1-openstlinux-5-4-dunfell-mp1-20-11-12/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.4.56-r0文件夹,对linux-5.4.56.tar.xz进行解压。
tar -vxf linux-5.4.56.tar.xz
QQ图片20210616162749.png
2、 打补丁
进入解压的文件夹打补丁:
cd linux-5.4.31/               //进入Linux 源码目录
for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
     //打补丁
make ARCH=arm multi_v7_defconfig "fragment*.config"      //生成fragment config配置文件
for f in `ls -1 ../fragment*.config`; do scripts/kconfig/merge_config.sh -m -r .config $f; done
//将 fragment config补丁打到.config 文件里面
yes '' | make ARCH=arm oldconfig
// oldconfig 的所有选项都选择 yes

QQ图片20210616162920.png
Linux 源码根目录下的.config文件就已经保存了所有的配置项,所以只需要复制一
份.config 作为我们的默认配置文件即可:
cp .config ./arch/arm/configs/stm32mp1_xhy_defconfig
QQ图片20210616170029.png
然后复制到mylinux文件中:
cd
//退回到主页面
mkdir mylinux
//新建mylinux
cp linux/stm32mp1-openstlinux-5-4-dunfell-mp1-20-11-12/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.4.56-r0/linux-5.4.56 mylinux/ -rf
//复制linux-5.4.56到mylinux
3、 编译
进入文件夹mylinux/linux-5.4.56
cd mylinux/linux-5.4.56
新建一个sh脚本,名字随便取,比如xhy.sh,输入如下命令:
#清除工程
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- distclean
#配 置 工 程,配置文件:stm32mp1_xhy_defconfig
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- stm32mp1_xhy_defconfig
# 编译 Linux 内核
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- uImage dtbs LOADADDR=0XC2000040 -j16
QQ图片20210616170110.png
然后赋予权限并执行:
chmod 777 xhy.sh
./xhy.sh
QQ图片20210617092701.png
4、 测试
这里需要两个文件:
/home/helloxhy/linux/en.SOURCES-stm32mp1-openstlinux-5-4-dunfell-mp1-20-11-12/stm32mp1-openstlinux-5-4-dunfell-mp1-20-11-12/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.4.56-r0/linux-5.4.56/arch/arm/boot中的uImage
和/home/helloxhy/linux/en.SOURCES-stm32mp1-openstlinux-5-4-dunfell-mp1-20-11-12/stm32mp1-openstlinux-5-4-dunfell-mp1-20-11-12/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.4.56-r0/linux-5.4.56/arch/arm/boot/dts中的stm32mp157a-dk1.dtb(根据板子型号选择)。
cp arch/arm/boot/uImage/home/helloxhy/tftp/
cp arch/arm/boot/dts/stm32mp157a-dk1.dtb/home/helloxhy/tftp/

Linux内核的烧写有两种方式:(1)、通过tftp下载到板子里。(2)、使用STM32CubeProgrammer通过USB烧录到SD卡里。
(1)、通过tftp下载到板子里。
把uImage和stm32mp157a-dk1.dtb复制到home里的tftp文件夹中。
接下来启动板子的boot,如图:
QQ图片20210621091653.png
需要这设置的由两个:
网络信息设置:
dhcp          //dhcp自动获取IP、网关、子网掩码
或者
setenv ipaddr 192.168.16.71                //设置本地IP
setenv ethaddr 00:04:9f:04:d2:35      //设置mac地址
setenv gatewayip 192.168.16.1                  //设置网关
setenv netmask 255.255.255.0               //设置子网掩码
之后
setenv serverip 192.168.16.70                 //设置目标ip即为Ubuntu地址
saveenv                                                   //保存设置
QQ图片20210621092920.png
然后测试下网络状况,ping下Ubuntu的IP地址:
bootcmd环境变量设置,bootcmd保存着 uboot 默认命令,uboot 倒计时结束以
后就会执行 bootcmd 中的命令。
setenv bootcmd 'tftp c2000000 uImage;tftp c4000000 stm32mp157a-dk1.dtb;bootm c2000000 - c4000000'
//设置从为tftp获取uImage以及stm32mp157a-dk1.dtb
saveenv                                                   //保存设置
print bootcmd                    //读取bootcmd信息
QQ图片20210621094835.png
然后重启:
QQ图片20210621095215.png
注意:启动成功后会报错,如图:
QQ图片20210621095600.png
这是没有找到根文件,下篇来编译根文件,暂时不管他。
(2)、使用STM32CubeProgrammer通过USB烧录到SD卡里。
由入门包中的tsv可以看到linux源码为ext4格式,所以需要把.dtb和uImage打包为ext4格式,在tftp文件夹下新建.sh文件,这里命名为ext4.sh。
chmod 777 ext4.sh
./ ext4.sh
QQ图片20210621113306.png
QQ图片20210621100850.png
此时tftp文件夹下面生成一个文件:bootfs.ext4,把他复制到windows文件夹下。
然后修改tsv文件。
QQ图片20210621101017.png
最后使用STM32CubeProgrammer下载
QQ图片20210617095447.png
启动后会有如下报错:
QQ图片20210621101333.png
发现linux内核并未启动起来,原因是没有找到uImage和dtb,这个问题困扰了一个星期,最终找到原因和解决方法。分享如下:
由报警信息可知,mmc 0:4,首先查询下mmc 0:4中的ext4文件:
ext4ls mmc 0:4
QQ图片20210621101733.png
可以找到uImage和dtb,查看bootcmd信息发现为自动查找,既然自动查找失败,那么设置为从mmc 0:4读取:
setenv bootcmd 'ext4load mmc 0:4 c2000000 uImage;ext4load mmc 0:4 c4000000 stm32mp157a-dk1.dtb;bootm c2000000 - c4000000'
保存下重启即可。
QQ图片20210621102023.png
QQ图片20210621102052.png
在此有另外一个问题,入门包所有的板子用的同一个ext4,其为自动搜索为什么可以找到,所以特地重新下载入门包,看下ext4ls和bootcmd信息:
QQ图片20210621113605.png
由此可见ext4ls包含了所有板子的树文件,所以大小为64M,bootcmd为run bootcmd_stm32mp,为什么能从sd卡启动,这个问题尚未解决,知道的大神留言。


xhy_image.rar

下载

8 MB, 下载次数: 3

1

收藏 评论0 发布时间:2021-6-21 11:40

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版