|
|
12 часов назад | |
|---|---|---|
| .. | ||
| applications | 12 часов назад | |
| board | 12 часов назад | |
| drivers | 12 часов назад | |
| figure | 12 часов назад | |
| startup | 12 часов назад | |
| .config | 12 часов назад | |
| Kconfig | 12 часов назад | |
| README.md | 12 часов назад | |
| SConscript | 12 часов назад | |
| SConstruct | 12 часов назад | |
| link.lds | 12 часов назад | |
| rtconfig.h | 12 часов назад | |
| rtconfig.py | 12 часов назад | |
本文说明 bsp/s100 这个 RT-Thread BSP 如何在主机侧编译,以及如何在 RDK S100 板端加载并运行。
说明分两部分:
SConstruct、rtconfig.py、link.lds 为准官方文档说明了 S100 的 MCU 启动链路:
remoteproc 框架间接控制sysfs 下给 remoteproc_mcu0 写入固件名并触发 start参考:
remoteproc_mcu0、firmware、state.resource_table 段,说明这个镜像是按 remoteproc 风格组织的 MCU1 ELF官方文档建议主机使用 Ubuntu 22.04。
官方文档给出的依赖如下:
sudo apt-get install -y build-essential make cmake libpcre3 libpcre3-dev bc bison \
flex python3-numpy mtd-utils zlib1g-dev debootstrap \
libdata-hexdumper-perl libncurses5-dev zip qemu-user-static \
curl repo git liblz4-tool apt-cacher-ng libssl-dev checkpolicy autoconf \
android-sdk-libsparse-utils mtools parted dosfstools udev rsync python3-pip scons
pip install "scons>=4.0.0"
pip install ecdsa
pip install tqdm
当前 BSP 的工具链配置在 rtconfig.py:
cortex-r52arm-none-eabi-/opt/toolchain/gcc-arm-none-eabi-10.3-2021.10/bin如果你的工具链不在这个目录,可以通过环境变量覆盖:
export RTT_EXEC_PATH=/your/toolchain/bin
cd <repo>/bsp/s100
直接运行:
scons -j$(nproc)
如果你想先清理后重编:
scons -c
scons -j$(nproc)
本 BSP 的构建入口是:
构建特征:
rtthread.elfrtthread.bin根据官方 remoteproc 启动流程,MCU1 固件需要放到板端 /lib/firmware/。
根据官方 RDK S100 硬件说明,板上有两个有线网口:
U43 / eth0:通用以太网口,IP 需要通过外部 DHCP 获取,或由用户手动配置静态地址U45 / eth1:固定静态 IP 网口,默认地址为 192.168.127.10如果开发主机直接接在 U45 / eth1,可以优先使用固定 IP 方式传文件,这样不需要先查询板端地址。由于当前 BSP 输出文件名是 rtthread.elf,可以直接推送这个文件:
scp rtthread.elf root@192.168.127.10:/lib/firmware/
如果你接的是 U43 / eth0,则需要先确认板端实际 IP,然后再执行:
scp rtthread.elf root@<board_ip>:/lib/firmware/
参考官方文档中的 remoteproc_mcu0 启动步骤,板端执行:
如果固件名是 rtthread.elf:
cd /sys/class/remoteproc/remoteproc_mcu0
echo rtthread.elf > firmware
echo start > state
由于该功能还不完善,此处需要重启设备来完成
主机侧:
cd <repo>/bsp/s100
scons -j$(nproc)
scp rtthread.elf root@192.168.127.10:/lib/firmware/
板端:
cd /sys/class/remoteproc/remoteproc_mcu0
echo rtthread.elf > firmware
echo start > state
停止:
reboot
支持GPIO输入、输出、外部中断响应功能,但以下引脚不允许被配置
static const s100_pin_t s100_gpio_blacklist[] =
{
0, /* S100 Power related pins */
5, /* S100 debug uart tx */
38, /* S100 Power related pins */
15, /* S100 Power related pins */
68, /* S100 Power related pins */
69, /* S100 Power related pins */
71, /* S100 Power related pins */
80, /* S100 Power related pins */
81, /* S100 Power related pins */
82, /* S100 Power related pins */
83, /* S100 Power related pins */
AON_PIN_NUM(0), /* S100 debug uart rx */
AON_PIN_NUM(12), /* S100 Power related pins */
};
支持 CAN5、CAN6、CAN7、CAN8、CAN9(只支持基础CAN通信)
RDK S100 需要先连接 MCU 接口扩展版
为了运行当前 s100 BSP 下的 GPIO、UART、CAN 设备测试,建议至少打开以下配置。
使用 scons --menuconfig打开配置界面
当前默认配置里,上述 utest 基础开关已经打开;如果你重新裁剪过配置,需确认这些选项仍然存在。
BSP_USING_GPIO(默认已经打开)GPIO 测试文件为:
当前测试内容包括:
运行前要求:
GPIO36 -> GPIO37test_gpio.c 中的 S100_GPIO_TEST_OUT_PIN 与 S100_GPIO_TEST_IN_PINBSP_USING_UARTBSP_USING_UART4=yBSP_USING_UART5BSP_USING_UART6UART 测试文件为:
当前测试约束如下:
uart4 默认为 msh 控制台,不参与设备测试uart5、uart6txrx 用例发送固定二进制数据帧,并逐字节校验接收内容运行前要求:
UART5_TX 与 UART5_RX 短接,或将 UART6_TX 与 UART6_RX 短接uart5/uart6,rdk.s100.drivers.uart 不会覆盖非控制台串口BSP_USING_CANBSP_USING_CAN5BSP_USING_CAN6BSP_USING_CAN7BSP_USING_CAN8BSP_USING_CAN9CAN 测试文件为:
当前测试特点如下:
RT_CAN_MODE_LOOPBACK 内部回环模式find/open/config/set_mode/set_baud/write/read/get_status/close完成配置后重新编译:
scons -j$(nproc)
板端启动后,可在 msh 中分别执行:
utest_run rdk.s100.drivers.gpio
utest_run rdk.s100.drivers.uart
utest_run rdk.s100.drivers.can
如果只想执行单项测试,保留对应驱动开关即可;未启用的设备不会进入对应测试覆盖范围。