RISC-V 子系统 GPIO 测试
本章节介绍如何使用 RISC-V 核心 运行 FreeRTOS 或 Baremetal 系统来控制 GPIO 输出。关于如何编译生成和运行 FreeRTOS 或 Baremetal 固件请参考《RISC-V 子系统开发与使用》章节。
1. 准备工作
Luckfox 的 Luckfox Lume 系列开发板配备了一个双色 LED,其中红色为电源指示灯,绿色为系统状态灯。烧录官方默认系统后,开发板开机时会在红灯常亮的基础上闪烁绿色灯。 在 GPIO 测试中,我们只使用绿色灯作为验证输出的指示。开始之前,需要在对应的设备树中注释掉系统默认指示灯,注释掉后参考 SDK 章节编译镜像。
根据原理图,USER_LED 默认连接到 PB8 引脚,这一点在设备树定义中也可确认。

设备树路径
{SDK根目录}/device/config/chips/t153/configs/luckfox_lume/linux-5.10-origin/board.dts
2. GPIO 输出测试
| 功能 | 示例程序目录 | 说明 |
|---|---|---|
| GPIO 高低电平输出 | {SDK根目录}/rtos/lichee/hal_v2/hal/examples/gpio/gpio_output_test/gpio_output_test.c | 该 GPIO 示例程序可同时用于 FreeRTOS 和 Baremetal 环境 |
修改示例程序代码,将其中的引脚替换为 LED 引脚(PB8)。
void gpio_output_test(void)
{
unsigned int data = 0;
/* eg: PB8 set output mode and output high level */
gpio_init_t gpio_initstruct;
gpio_initstruct.port = SUNXI_GPIO_B;
gpio_initstruct.port_num = PIN_8;
gpio_initstruct.mul_sel = PIN_MULTI_SEL_OUTPUT;
gpio_initstruct.data = GPIO_HIGH;
hal_gpio_init(&gpio_initstruct);
printf("set PB8 output data: %d\n", GPIO_HIGH);
/* set PB8 output low level */
hal_gpio_set_data(SUNXI_GPB(8), GPIO_HIGH);
data = hal_gpio_get_data(SUNXI_GPB(8));
/* get PB8 data */
printf("get PB8 output data is: %d\n", data);
if (data == GPIO_HIGH)
printf("gpio output test pass!\n");
else
printf("gpio output test fail!\n");
}编译并运行 E907(RISC-V) 的 Baremetal 或 FreeRTOS 固件。
将生成的固件上传至开发板,并执行命令启动 E907(RISC-V)从核系统。
echo start > /sys/class/remoteproc/remoteproc0/state连接子系统 UART(RX:PD14,TX:PD15,串口波特率 115200)。子系统 UART 引脚示意如下:
通过串口登录子系统。在 Baremetal 或 FreeRTOS 环境下都可执行 help 命令查看所有可用命令。以 Baremetal 为例,执行 help 后的输出如下::

执行 gpio_output_test,即可看到绿色 LED 常亮。
