本文主要是介绍MP157 记录合集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
移植u-boot
移植part1
烧录part1
移植part2
修改bootcmd
修改bootargs
移植u-boot
移植part1
参考正点原子 《STM32MP1嵌入式Linux驱动开发指南V2.0》P408-P419 。
烧录part1
在烧录时需要注意的是,由于当前uboot还存在问题,所以我们需要先将正点原子出厂uboot先烧录到DDR中,再向EMMC中烧写我们刚编译的uboot。
烧录完后重启。 看到未找到网卡。
使用printenv 打印环境变量信息,可以在最后看到编译信息。
ver=U-Boot 2020.01-stm32mp-r1 (Nov 14 2022 - 21:12:11 +0800)
移植part2
将uboot源码下的/drivers/net/phy/phy.c 替换为正点原子修改过的phy.c
还需要添加相应的环境变量,通过修改源码来实现修改。
setenv ipaddr 192.168.1.250 //开发板 IP 地址setenv ethaddr 00:04:9f:04:d2:35 // 开发板网卡 MAC 地址setenv gatewayip 192.168.1.1 //开发板默认网关setenv netmask 255.255.255.0 //开发板子网掩码setenv serverip 192.168.1.249 // 服务器地址,也就是 Ubuntu 地址saveenv
在stm32mp1.h中添加IP Setting中的内容。
修改bootcmd
在使用网络启动前需要搭建tfp服务器。
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
和 NFS 一样,TFTP 也需要一个文件夹来存放文件,在用户目录下新建一个目录。
mkdir /home/用户名/linux/tftpboot
chmod 777 /home/用户名/linux/tftpboot
最后配置 tftp,新建文件/etc/xinetd.d/tftp,如果没有/etc/xinetd.d 目录的话自行创建,然后在 里面输入如下内容:
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/huerli/linux/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
输入以下命令启动 tftp服务。
sudo service tftpd-hpa start
打开/etc/default/tftpd-hpa 文件,将其修改为如下所示内容:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/huerli/linux/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
重启命令,如果存在报错,请检查自己输入的内容。
sudo service tftpd-hpa restart
在 include/configs/stm32mp1.h 。定义bootd的宏。
#endif /* ifdef CONFIG_DISTRO_DEFAULTS*/#define CONFIG_CMD_BOOTD#endif /* __CONFIG_H */
如果 EMMC 或者 NAND 中没有保存 bootcmd 的值,那么 uboot 就会使用默认的值,板子第一次运行 uboot 的时候都会使用默认值来设置 bootcmd 环境变量。在之后都会直接读取emmc中的环境变量值(重新擦除 uboot 好像不会改变)。
在板子的uboot环境下使用 setenv 命令来设置 bootcmd 的值。
setenv bootcmd 'tftp c2000000 uImage;tftp c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000'
修改bootargs
setenv bootargs'console=ttySTM0,115200root=/dev/nfs
nfsroot=192.168.1.249:/home/huerli/linux/nfs/rootfs,proto=tcp rw
ip=192.168.1.150:192.168.1.124:192.168.1.1:255.255.255.0::eth0:off
这个代码是有回车的,需要自己手敲。然后保存一下。
saveenv
复位后重新启动。 时间可能会比较长,需要等待Please那行出现。
出现以下内容为正常现象,需要完善 参考P550- 557
can't run '/etc/init.d/rcS': No such file or directory
这篇关于MP157 记录合集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!