本帖最后由 maskmoo 于 2024-7-21 21:07 编辑
异核GPIO实验是采用RPMSG的异构核间通讯来实现在A55核心下发控制命令传给M33核心进行控制执行的操作。
1 修改设备树
修改内核设备树文件 imx93-11x11-atk.dts。关闭linux对LED驱动的调用,即将LED的节点内的 status 属性赋值为 disabled。
imx93-11x11-atk.dts 文件的路径在/arch/arm64/boot/dts/freescale/imx93-11x11-atk.dts
修改完成后,需要重新编译设备树,并将生成的 imx93-11x11-atk.dtb 文件替换到Linux内核中。
cp imx93-11x11-atk.dtb /run/media/mmcblk0p1/
2 程序定制修改
LED0 是接在了GPIO_IO04上面,因此需要修改修改引脚复用(默认SDK文件已经修改好了)。
3 编译M33核固件
进入 01_rpmsg_rtos_tty_led 项目 工程文件夹,执行 build_all.sh 脚本构建 Cortex-M33 固件文件。
4 加载M33核固件
cd /lib/firmware
modprobe imx_rpmsg_tty
./load_remoteproc.sh rpmsg_rtos_led_imxcm33.elf
5 控制测试
Cortex-A55 终端执行以下指令控制板载 LED 灯。
Cortex-A55 终端执行以下指令点亮板载 LED 灯
echo "ON" > /dev/ttyRPMSG<num>
Cortex-A55 终端执行以下指令熄灭板载 LED 灯
echo "OFF" > /dev/ttyRPMSG<num>
在A55控制过程中,Cortex-M33 终端会打印相关消息,同时被控的红色LED也正常亮灭。
rpmsg-led