Zephyr下为特定Board添加驱动
本文说明如何在不污染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也就分离出来了
mkdir -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 链接到标题
mkdir -p ~/work/project/nrf52_moderate/boards/arm/nrf52_moderate/
vim CMakeLists.txt
修改CMakeLists.txt,添加的驱动能够放入驱动库
FILE(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,增加下面内容
config 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 让其接受配置项控制编译
/*
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中增加
CONFIG_MOTHER_BOARD_LED=y
2. menuconfig 链接到标题
在~/work/project/nrf52_moderate/apps/basetest/build/下执行make/ninja前执行
make menuconfig
在Board Options内配置即可,如下图:
