Skip to content

Commit df24f07

Browse files
committed
添加 测试代码,并完善文档
1 parent 9728055 commit df24f07

10 files changed

Lines changed: 828 additions & 1 deletion

File tree

bsp/rdk/s100/README.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,135 @@ echo start > state
152152
```bash
153153
reboot
154154
```
155+
156+
## 6. 系统支持外设说明
157+
158+
- 支持 UART 4、5、6(暂不支持DMA),默认使用串口4作为msh控制台
159+
- 支持GPIO输入、输出、外部中断响应功能,但以下引脚不允许被配置
160+
161+
```shell
162+
static const s100_pin_t s100_gpio_blacklist[] =
163+
{
164+
0, /* S100 Power related pins */
165+
5, /* S100 debug uart tx */
166+
38, /* S100 Power related pins */
167+
15, /* S100 Power related pins */
168+
68, /* S100 Power related pins */
169+
69, /* S100 Power related pins */
170+
71, /* S100 Power related pins */
171+
80, /* S100 Power related pins */
172+
81, /* S100 Power related pins */
173+
82, /* S100 Power related pins */
174+
83, /* S100 Power related pins */
175+
AON_PIN_NUM(0), /* S100 debug uart rx */
176+
AON_PIN_NUM(12), /* S100 Power related pins */
177+
};
178+
```
179+
180+
- 支持 CAN5、CAN6、CAN7、CAN8、CAN9(只支持基础CAN通信)
181+
182+
## 7.测试方法
183+
184+
### 硬件连接
185+
186+
RDK S100 需要先连接 MCU 接口扩展版
187+
188+
### 软件配置
189+
190+
为了运行当前 `s100` BSP 下的 GPIO、UART、CAN 设备测试,建议至少打开以下配置。
191+
192+
#### 通用测试开关
193+
194+
使用 ` scons --menuconfig `打开配置界面
195+
196+
- 打开内核测试配置:
197+
![kernel_test](./figure/kernel_test.png)
198+
199+
- 打开外设测试配置:
200+
![device_test](./figure/device_test.png)
201+
202+
当前默认配置里,上述 `utest` 基础开关已经打开;如果你重新裁剪过配置,需确认这些选项仍然存在。
203+
204+
#### GPIO 测试相关配置
205+
206+
- 使能 `BSP_USING_GPIO`(默认已经打开)
207+
208+
GPIO 测试文件为:
209+
210+
- [test_gpio.c](./drivers/utest/test_gpio.c)
211+
212+
当前测试内容包括:
213+
214+
- 非法脚/保留脚拒绝逻辑
215+
- GPIO 输入输出回环
216+
- GPIO 中断上升沿、下降沿、双边沿回环
217+
218+
运行前要求:
219+
220+
- 用跳线连接测试输出脚和测试输入脚
221+
- 默认测试脚为 `GPIO36 -> GPIO37`
222+
- 若板级接线不同,可修改 `test_gpio.c` 中的 `S100_GPIO_TEST_OUT_PIN``S100_GPIO_TEST_IN_PIN`
223+
224+
#### UART 测试相关配置
225+
226+
- 使能 `BSP_USING_UART`
227+
- 保持 `BSP_USING_UART4=y`
228+
- 额外使能至少一个非控制台串口:
229+
- `BSP_USING_UART5`
230+
- 或 `BSP_USING_UART6`
231+
232+
UART 测试文件为:
233+
234+
- [test_uart.c](./drivers/utest/test_uart.c)
235+
236+
当前测试约束如下:
237+
238+
- `uart4` 默认为 `msh` 控制台,不参与设备测试
239+
- 测试对象为已启用的 `uart5``uart6`
240+
- `txrx` 用例发送固定二进制数据帧,并逐字节校验接收内容
241+
242+
运行前要求:
243+
244+
- 被测串口需要具备回环条件
245+
- 常见做法是将 `UART5_TX``UART5_RX` 短接,或将 `UART6_TX``UART6_RX` 短接
246+
- 若未打开 `uart5/uart6``rdk.s100.drivers.uart` 不会覆盖非控制台串口
247+
248+
#### CAN 测试相关配置
249+
250+
- 使能 `BSP_USING_CAN`
251+
- 使能至少一个 CAN 控制器:
252+
- `BSP_USING_CAN5`
253+
- `BSP_USING_CAN6`
254+
- `BSP_USING_CAN7`
255+
- `BSP_USING_CAN8`
256+
- `BSP_USING_CAN9`
257+
258+
CAN 测试文件为:
259+
260+
- [test_can.c](./drivers/utest/test_can.c)
261+
262+
当前测试特点如下:
263+
264+
- 使用 `RT_CAN_MODE_LOOPBACK` 内部回环模式
265+
- 不依赖外部 CAN 对端
266+
- 覆盖 `find/open/config/set_mode/set_baud/write/read/get_status/close`
267+
- 发送一帧标准 CAN 数据帧,并逐字节校验接收 payload
268+
269+
#### 构建与运行
270+
271+
完成配置后重新编译:
272+
273+
```bash
274+
scons -j$(nproc)
275+
```
276+
277+
板端启动后,可在 `msh` 中分别执行:
278+
279+
```bash
280+
utest_run rdk.s100.drivers.gpio
281+
utest_run rdk.s100.drivers.uart
282+
utest_run rdk.s100.drivers.can
283+
```
284+
285+
如果只想执行单项测试,保留对应驱动开关即可;未启用的设备不会进入对应测试覆盖范围。
286+

bsp/rdk/s100/SConstruct

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def _replace_cortex_r52_with_startup(objects):
3434
name for name in os.listdir(startup_dir)
3535
if os.path.isfile(os.path.join(startup_dir, name))
3636
)
37-
cpu_dir = os.path.abspath(os.path.join(RTT_ROOT, 'libcpu', 'arm', 'cortex-r52'))
37+
cpu_dir = os.path.abspath(os.path.join(RTT_ROOT, 'libcpu', rtconfig.ARCH, rtconfig.CPU))
3838

3939
def _source_path(node):
4040
for attr in ('srcnode', 'rfile'):

bsp/rdk/s100/drivers/SConscript

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from building import *
22

33
cwd = GetCurrentDir()
4+
list = os.listdir(cwd)
45
src = []
56

67
src += ['drv_timer.c']
@@ -19,4 +20,9 @@ if GetDepend('BSP_USING_CAN'):
1920

2021
objs = DefineGroup('drivers', src, depend=[''], CPPPATH=[cwd])
2122

23+
for d in list:
24+
path = os.path.join(cwd, d)
25+
if os.path.isfile(os.path.join(path, 'SConscript')):
26+
objs = objs + SConscript(os.path.join(d, 'SConscript'))
27+
2228
Return('objs')

bsp/rdk/s100/drivers/drv_uart_v2.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,10 +439,12 @@ static rt_err_t s100_uart_configure(struct rt_serial_device *serial,
439439
{
440440
ret = s100_uart_set_baud(uart, cfg->baud_rate);
441441
}
442+
442443
if (ret == RT_EOK)
443444
{
444445
ret = s100_uart_set_lcr(uart, cfg);
445446
}
447+
446448
if (ret == RT_EOK)
447449
{
448450
s100_uart_set_fifo(uart);
@@ -592,3 +594,4 @@ int rt_hw_uart_init(void)
592594
INIT_BOARD_EXPORT(rt_hw_uart_init);
593595

594596
#endif /* RT_USING_SERIAL_V2 */
597+
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from building import *
2+
3+
src = []
4+
5+
if GetDepend('BSP_USING_GPIO'):
6+
src += ['test_gpio.c']
7+
8+
if GetDepend('BSP_USING_CAN5') or GetDepend('BSP_USING_CAN6') or GetDepend('BSP_USING_CAN7') or GetDepend('BSP_USING_CAN8') or GetDepend('BSP_USING_CAN9'):
9+
src += ['test_can.c']
10+
11+
if GetDepend('BSP_USING_UART'):
12+
src += ['test_uart.c']
13+
14+
group = DefineGroup('utestcases', src, depend = ['RT_UTEST_DRIVERS_CORE'])
15+
16+
Return('group')

0 commit comments

Comments
 (0)