注:本篇开始切入小型系统的驱动子系统的学习分析。
小型系统的驱动开发示例程序位于 //vendor/huawei/hdf/sample/ 目录下,有三类设备驱动示例程序:SPI/I2C/UART。
以UART为例,可将示驱动程序分为三部分:
- 设备树的描述文件及驱动的配置描述文件(.hcs)【下表浅红色标记部分】
- 驱动程序的内核空间部分的实现和编译脚本【下表浅蓝色标记部分】
- 驱动程序的用户空间部分的实现和编译脚本【下表浅绿色标记部分】
下面我们先简单介绍一下如何把上面三个部分编译出来并运行和查看效果:
【3-1】打开 B_LTS/vendor/hisilicon/hispark_taurus/config/hdf.hcs 文件,在#include部分添加两句
#include "../../../.. /vendor/huawei/hdf/sample/ config/uart/uart_config.hcs"
#include "../../../.. /vendor/huawei/hdf/sample/ config/device_info/device_info.hcs"
让示例程序的hcs文件参与编译。
【3-2】打开 B_LTS/device/hisilicon/drivers/lite.mk 文件,在该文件的最末尾添加两句
LITEOS_BASELIB += -lhdf_uart_sample
LIB_SUBDIRS += $(LITEOSTOPDIR)/../../vendor/huawei/hdf/sample/platform/uart
让uart驱动示例程序的内核空间实现部分代码参与编译。
【3-3】打开 B_LTS/build/lite/components/drivers.json 文件,找到"component": "adapter_uhdf",部分,在"targets":字段添加
"//vendor/huawei/hdf/sample/platform/uart:hello_uart_sample"
注意格式!让uart驱动示例程序的用户空间实现部分代码参与编译。
在烧录上面编译出来的bin到开发板之前,可以先看看平台的当前状况:
OHOS #ls dev
查看uartdev部分,只有uartdev_0/1/2/3 四个设备节点。
OHOS #ls bin
查看,是没有hello_uart_dispatch和hello_uart的。
将上面编译出来的bin烧录到开发板上,再通过上面两个指令,可以看到有uartdev-5设备节点以及hello_uart_dispatch和hello_uart两个应用程序。
OHOS #./bin/hello_uart
可见打印出“ HELLO UART! ”
OHOS #./bin/hello_uart_dispatch
可见打印出“ dispatch||HELLO UART! ”
以上可以确认uart的驱动示例程序已经正常工作了。
接下来,我们将以上面的驱动示例程序为例,详细分析上面三个部分的工作细节。
本文转自:liangkz_梁开祝