开发Hi3516第一个驱动程序示例本节指导开发者在单板上运行第一个驱动程序,其中包括驱动程序介绍、编译、烧写、运行等步骤。
获取源码参考“开发Hi3516第一个应用程序示例”获取源码。
驱动程序介绍下面基于HDF框架,提供一个简单的UART(Universal Asynchronous Receiver/Transmitter)平台驱动开发样例,包含配置文件的添加,驱动代码的实现以及用户态程序和驱动交互的流程。驱动程序源码位于vendor/huawei/hdf/sample目录。
- 添加配置。
在HDF框架的驱动配置文件(例如vendor/hisi/hi35xx/hi3516dv300/config/uart/uart_config.hcs)中添加该驱动的配置信息,如下所示:
在HDF框架的设备配置文件(例如vendor/hisi/hi35xx/hi3516dv300/config/device_info/device_info.hcs)中添加该驱动的设备节点信息,如下所示:
说明: 配置文件与UART驱动示例的源码在同一个路径,需要手动添加到Hi3516DV300单板路径下。
- 注册UART驱动入口。
基于HDF框架注册UART驱动的入口HdfDriverEntry,代码如下:
3.注册UART驱动接口。
HDF框架提供了UART驱动接口的模板方法UartHostMethod,实现UART驱动接口的代码如下:
在vendor/huawei/hdf/hdf_vendor.mk编译脚本中增加示例UART驱动模块,代码如下:
LITEOS_BASELIB += -lhdf_uart_sample
LIB_SUBDIRS += $(VENDOR_HDF_DRIVERS_ROOT)/sample/platform/uart4.用户程序和驱动交互代码。
UART驱动成功初始化后,会创建/dev/uartdev-5设备节点,通过设备节点与UART驱动交互的代码如下:
在build/lite/product/ipcamera_hi3516dv300.json产品配置的hdf子系统下增加hello_uart_sample组件,代码如下:
说明: 如上代码均为示例代码,完整代码可以在vendor/huawei/hdf/sample查看。 示例代码默认不参与编译,需要手动添加到编译脚本中。
编译和烧写参考示例1进行编译和烧写:编译、烧写。
镜像运行- 连接串口。
须知: 若无法连接串口,请参考常见问题5进行排查。
图 1 连接串口图
- 单击Serial port打开串口。
- 输入"com11"串口编号并连续输入回车直到串口显示"hisillicon"。
- 单板初次启动或修改启动参数,请进入步骤2,否则进入步骤3。
- (单板初次启动必选)修改U-boot的bootcmd及bootargs内容:该步骤为固化操作,若不修改参数只需执行一次。每次复位单板均会自动进入系统。
须知: U-boot引导程序默认会有2秒的等待时间,用户可使用回车打断等待并显示"hisillicon",通过reset命令可再次启动系统。
表 1 U-boot启动参数
执行命令
| setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x4800; go 0x80000000";
setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=15M rw";
saveenv
reset
|
命令解释
| setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x4800;go 0x80000000";
表示选择FLASH器件0,读取FLASH起始地址为0x800(单位为512B,即1MB),大小为0x4800(单位为512B,即9MB)的内容到0x80000000的内存地址。
setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=15M rw";
表示设置启动参数,输出模式为串口输出,波特率为115200,数据位8,rootfs挂载于emmc器件,文件系统类型为vfat,
“rootaddr=10M rootsize=15M rw”处对应填入rootfs.img的烧写起始位置与长度,此处与IDE中新增rootfs.img文件时所填大小必须相同。
saveenv;表示保存当前配置。
reset;表示复位单板
[可选]“go 0x80000000”默认配置已将指令固化在启动参数中,单板复位后可自动启动。若想切换为手动启动,可在U-boot启动倒数阶段使用"回车"打断自动启动。
|
- 输入**“reset”**指令并回车,重启单板,启动成功如下图,输入回车串口显示OHOS字样。
图 2 系统启动图
- 根目录下,在命令行输入指令“./bin/hello_uart”执行写入的demo程序,显示成功结果如下图所示。
OHOS # ./bin/hello_uart
OHOS # HELLO UART!