设备树移植
- 和uboot设备树修改的内容同步到kernel
- 将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下
源码修改及编译
-
修改arch/arm/boot/dts/st/Makefile,新增设备树编译
stm32mp157f-ev1-m4-examples.dtb \ stm32mp157d-stm32mp157daa1-mx.dtb
-
修改网络驱动 - 参考正点原子
【正点原子】STM32MP157开发板(A盘)-基础资料\01、程序源码\08、模块驱动源码\01、YT8511驱动源码\linux内核下修改方法
-
编译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
下载到板子上验证
-
新增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

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