当前位置: 首页 > news >正文

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植

  1. 和uboot设备树修改的内容同步到kernel
  2. 将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下

源码修改及编译

  1. 修改arch/arm/boot/dts/st/Makefile,新增设备树编译

    		stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb
    
  2. 修改网络驱动 - 参考正点原子

    【正点原子】STM32MP157开发板(A盘)-基础资料\01、程序源码\08、模块驱动源码\01、YT8511驱动源码\linux内核下修改方法
    
  3. 编译kernel - 参考README.HOW_TO.txt

    source ~/sdk6.6
    export OUTPUT_BUILD_DIR=$PWD/../build
    mkdir -p ${OUTPUT_BUILD_DIR}
    make O="${OUTPUT_BUILD_DIR}" defconfig fragment*.config
    for f in `ls -1 ../fragment*.config`; do scripts/kconfig/merge_config.sh -m -r -O ${OUTPUT_BUILD_DIR} ${OUTPUT_BUILD_DIR}/.config $f; done
    (yes '' || true) | make oldconfig O="${OUTPUT_BUILD_DIR}"[ "${ARCH}" = "arm" ] && imgtarget="uImage" || imgtarget="Image.gz"
    echo $imgtarget
    export IMAGE_KERNEL=${imgtarget}
    make ${IMAGE_KERNEL} vmlinux dtbs LOADADDR=0xC2000040 O="${OUTPUT_BUILD_DIR}"
    make modules O="${OUTPUT_BUILD_DIR}"
    make INSTALL_MOD_PATH="${OUTPUT_BUILD_DIR}/install_artifact" modules_install O="${OUTPUT_BUILD_DIR}"
    mkdir -p ${OUTPUT_BUILD_DIR}/install_artifact/boot/
    cp ${OUTPUT_BUILD_DIR}/arch/${ARCH}/boot/${IMAGE_KERNEL} ${OUTPUT_BUILD_DIR}/install_artifact/boot/
    find ${OUTPUT_BUILD_DIR}/arch/${ARCH}/boot/dts/ -name 'st*.dtb' -exec cp '{}' ${OUTPUT_BUILD_DIR}/install_artifact/boot/ \;make dtbs O="${OUTPUT_BUILD_DIR}"
    find ${OUTPUT_BUILD_DIR}/arch/${ARCH}/boot/dts/ -name 'st*.dtb' -exec cp '{}' ${OUTPUT_BUILD_DIR}/install_artifact/boot/ \;
    cp /home/niuke/STM32/STM32MP1/develop/linux-stm32mp-6.6.48-stm32mp-r1-r0/linux-6.6.48/../build/arch/arm/boot/dts/st/stm32mp157d-stm32mp157daa1-mx.dtb ~/tftpboot/
    

uboot网络配置

setenv ipaddr 192.168.156.11 
setenv ethaddr b8:ae:1d:01:01:00 
setenv gatewayip 192.168.156.1 
setenv netmask 255.255.255.0 
setenv serverip 192.168.156.10 
saveenv

设置tftp启动

setenv bootcmd 'tftp c2000000 uImage;tftp c4000000 stm32mp157d-stm32mp157daa1-mx.dtb;bootm c2000000 - c4000000'
saveenv
reset

制作ext4文件

dd if=/dev/zero of=bootfs.ext4 bs=1M count=16
mkfs.ext4 -L bootfs bootfs.ext4
sudo mount bootfs.ext4 /mnt/bootfs/
sudo cp uImage stm32mp157d-stm32mp157daa1-mx.dtb /mnt/bootfs/
sudo umount /mnt/bootfs

下载到板子上验证

  1. 新增flash.tsv

    #Opt	Id	Name	Type	Device	Offset	Binary
    -	0x01	fsbl-boot	Binary	none	0x0	new/tf-a-stm32mp157d-stm32mp157daa1-mx-optee-programmer-usb.stm32
    -	0x03	fip-boot	Binary	none	0x0	new/fip-stm32mp157d-stm32mp157daa1-mx-optee-programmer-usb.bin
    P	0x04	fsbl1	Binary	mmc0	boot1	new/tf-a-stm32mp157d-stm32mp157daa1-mx-optee-emmc.stm32
    P	0x05	fsbl2	Binary	mmc0	boot2	new/tf-a-stm32mp157d-stm32mp157daa1-mx-optee-emmc.stm32
    PD	0x06	metadata1	FWU_MDATA	mmc0	0x00080000	new/metadata.bin
    PD	0x07	metadata2	FWU_MDATA	mmc0	0x00100000	new/metadata.bin
    P	0x08	fip-a	FIP	mmc0	0x00180000	new/fip-stm32mp157d-stm32mp157daa1-mx-optee-emmc.bin
    PED	0x09	fip-b	FIP	mmc0	0x00580000	none
    PED	0x0A	u-boot-env	ENV	mmc0	0x00980000	none
    

在这里插入图片描述

思考

  1. 如何解决问题missing clock-frequency ?
[    0.004619] /cpus/cpu@0 missing clock-frequency property
[    0.004716] /cpus/cpu@1 missing clock-frequency property
  1. 以下问题为什么出现?
[    4.073306] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]---

相关文章:

  • SeaweedFS S3 Spring Boot Starter
  • 监控脚本源码
  • 【阿里巴巴 x 浙江大学】信息与交互设计 - 交互设计概述
  • 算数运算符
  • 基于Vue3.0的在线工具网站
  • Day16
  • C盘的“下载”修改位置时出错了,怎么还原
  • three.js 零基础到入门
  • 软件更新机制的测试要点与稳定性提升
  • python中使用LibreHardwareMonitorLib.dll获取电脑硬件信息~~【不用同步打开exe文件】
  • 【LangChain4J】LangChain4J 第三弹:多模态与文生图的实现
  • 删除有序数组中的重复项
  • CZGL.SystemInfo:跨平台的系统信息获取库
  • Deep Research实践
  • 程序代码篇---随机数与随机数种子
  • 【Java学习笔记】Arrays类
  • C++17 和 C++20 中的新容器与工具:std::optional、std::variant 和 std::span
  • 大语言模型(LLM)面试问题集
  • 实验一:数据选择器实验
  • C++核心编程_继承同名静态成员处理方式
  • 中国字体设计网站/郑州短视频代运营
  • 网站怎么做要多少钱/超级优化大师
  • 有哪些做调查问卷赚钱的网站/百度搜索大全
  • 做公司网站的费用计入什么科目/世界比分榜
  • txt怎么做网站/3d建模培训学校哪家好
  • 网站设计语言有哪些/百度竞价最低点击一次多少钱