本文说明如何在不污染Zephyer driver目录的情况下为特定的Board添加driver。
概述
在Zephyr添加nrf52_moderate一文中说明nrf52_moderate Board脱离出zephyr主目录,达到不污染Zephyr Boards目录的目的。如果nrf52_moderate Board有特定的外围需要驱动,增加的驱动也可以不进入zephyr的driver目录。本文通过增加nrf52_moderate led驱动说明如何增加driver而不污染zephyr driver目录。
修改
新增代码目录和代码
新增的led驱动源代码将其放入nrf52_moderate的board目录中,由于该board不在zephyr的主目录内,自然driver也就分离出来了1
2
3mkdir -p ~/work/project/nrf52_moderate/boards/arm/nrf52_moderate/src/driver
cd mkdir -p ~/work/project/nrf52_moderate/boards/arm/nrf52_moderate/src/driver
vim led.c
之后再led.c中添加驱动代码即可
增加cmake
1 | mkdir -p ~/work/project/nrf52_moderate/boards/arm/nrf52_moderate/ |
修改CMakeLists.txt,添加的驱动能够放入驱动库1
2
3
4
5FILE(GLOB drv_sources src/driver/*.c)
zephyr_library()
zephyr_library_sources(${drv_sources})
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers)
增加驱动配置项
修改~/work/project/nrf52_moderate/boards/arm/nrf52_moderate/Kconfig,增加下面内容1
2
3
4
5
6config MOTHER_BOARD_LED
bool
prompt "nrf52 moderate mother board led"
default n
help
If disabled, the mother board no support led drv
修改source code,~/work/project/nrf52_moderate/boards/arm/nrf52_moderate/src/driver/led.c 让其接受配置项控制编译1
2
3
4
5
6
7
8/*
led.c
*/
#ifdef CONFIG_MOTHER_BOARD_LED
//led driver all source code
#endif
配置和使用
按照前面的配置nrf52_moderate board默认是不开启led驱动的,配置开启有两种方法:
1. app的prj.conf
在~/work/project/nrf52_moderate/apps/basetest/prj.conf中增加1
CONFIG_MOTHER_BOARD_LED=y
2. menuconfig
在~/work/project/nrf52_moderate/apps/basetest/build/下执行make/ninja前执行1
make menuconfig
在Board Options内配置即可,如下图: