实验二:通过 UART0 驱动小车
补充知识:树莓派如何与小车(STM32)相连
参考:https://github.com/orgs/chenlongos/discussions/14
实验内容
驱动小车的代码位置:arceos/apps/boards/raspi4/src/main.rs
-
在ArceOS目录下,输入:
make A=apps/boards/raspi4 ARCH=aarch64 PLATFORM=aarch64-raspi4 LOG=debug SMP=4
编译出ArceOS在raspi4 上的一个镜像raspi4_aarch64-raspi4.bin。
-
在rust-raspberrypi-OS-tutorials/06_uart_chainloader中输入:
BSP=rpi4 make
编译生成一个kernel8.img文件。
-
把 kernel8.img 和 raspi4_aarch64-raspi4.bin 通过 cat 命令拼接到一个 bin 文件中,仍然取名为 kernel8.img:
cat ../rust-raspberrypi-OS-tutorials/06_uart_chainloader/kernel8.img apps/boards/raspi4/raspi4_aarch64-raspi4.bin > kernel8.img
-
把新生成的 kernel8.img 拷贝到 sd 卡上,并且将树莓派串口连线与小车相连。
-
打开树莓派电源,可以看到小车会走出一个方形的轨迹。
-
修改代码,改变小车的运动轨迹。(尝试使小车跑出不同的轨迹形状,如三角形等)
可以参考以下资料:
https://github.com/orgs/chenlongos/discussions/13#discussion-5604815
若没有小车,可以在qemu模拟器上运行,
./qemu-system-aarch64 -m 2G -smp 4 -cpu cortex-a72 -machine raspi4b2g -nographic -kernel arceos/kernel8.img
尝试看到代码的逻辑是可以跑通的。
至此,实验二结束,最终提交实验过程记录(包含出现的各类问题及解决办法)以及相关代码。