1 固件烧写
- 准备连线
- 烧写过程,进行中
- 如果不想更新文件系统就不烧写,我们可以编辑 atk_emmc-stm32mp157d-atk-qt.tsv,将烧写文件系统的配置信息即最后一行,将“p”修改为“PE”,我们在 ATK-STM32MP157 的Linux驱动开发指南上有详细的解释。修改为“PE”即代表跳过,不烧写,如下
2 固件启动
- 烧写完成如下图,拨码到 010,eMMC 启动即可,
注意:OTG是烧写线,烧写完毕后,拔出即可。另外整个固件烧写过程,无需启动虚拟机,在Windows上完成所有下载过程
3 网络调试(在1.3节基础上)
3.1 在1.3节基础上,设置网络启动环境
在1.3节基础上,可以基于TFTP调试设备树及内核,基于NFS可以调试根文件系统- NFS调试根文件系统
- TFTP调试设备树及内核
- mp157drivers开发设备驱动
- 进入uboot
3.2 设置uboot IP/bootargs/bootcmd
1:IP设置
setenv ipaddr 192.168.0.105
setenv ethaddr b8:ae:1d:01:01:01
setenv gatewayip 192.168.0.1
setenv netmask 255.255.255.0
setenv serverip 192.168.0.111
saveenv
2:nfs调试
nfs C2000000 192.168.0.111:/home/qinkaixin/linux/nfs/rootfs/test
3:设置nfs根文件系统
setenv bootargs 'console=ttySTM0,115200 root=/dev/nfs nfsroot=192.168.0.111:/home/qinkaixin/linux/nfs/rootfs,proto=tcp rw ip=192.168.0.105:192.168.0.111:192.168.0.1:255.255.255.0::eth0:off'
saveenv
4:tftp网络调试
setenv bootcmd 'tftp c2000000 uImage;tftp c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000'
saveenv
boot
4 驱动开发
4.1 进入驱动开发目录,修改Makefile,KERNELDIR是linux源码5.4.31目录
pwd
/home/qinkaixin/linux/mp157drivers
ls
01_chrdevbase 02_led 03_newchrled 06_beep 11_key 13_irq 20_input
cd /home/qinkaixin/linux/mp157drivers/13_irq
- vim Makefile
KERNELDIR := /home/qinkaixin/tools/atk_install/alientek_linux
CURRENT_PATH := $(shell pwd)
obj-m := key.o
build: kernel_modules
kernel_modules:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
4.2 拷贝驱动到NFS根文件系统
- sudo cp beep.ko beepApp /home/qinkaixin/linux/nfs/rootfs/lib/modules/5.4.31/ -f
4.3 拷贝编译后的设备树stm32mp157d-atk.dtb到tftpboot
qinkaixin@qinkaixin-virtual-machine:~/tools/atk_install/alientek_linux$ vim /home/qinkaixin/tools/atk_install/alientek_linux/arch/arm/boot/dts/stm32mp157d-atk.dtsi
qinkaixin@qinkaixin-virtual-machine:~/tools/atk_install/alientek_linux$ make dtbs
DTC arch/arm/boot/dts/stm32mp157d-atk.dtb
DTC arch/arm/boot/dts/stm32mp157d-atk-mipi.dtb
DTC arch/arm/boot/dts/stm32mp157d-atk-hdmi.dtb
- cp /home/qinkaixin/tools/atk_install/alientek_linux/arch/arm/boot/dts/stm32mp157d-atk.dtb /home/qinkaixin/linux/tftpboot/
4.4 拷贝编译后的内核uImage到tftpboot
- cp /home/qinkaixin/tools/atk_install/alientek_linux/arch/arm/boot/uImage /home/qinkaixin/linux/tftpboot/
4.5 基于上面设置的bootargs/bootcmd,网络启动
4.6 进入开发板/lib/modules/5.4.31目录,执行驱动挂载
4.7 驱动测试
cd /lib/modules/5.4.31
depmod
modprobe keyirq.ko
cat /proc/interrupts
./keyirqApp /dev/key
rmmod keyirq.ko