[文章]

开发Hi3516第一个驱动程序示例

2020-9-21 17:35:51  357 HarmonyOS Hi3516 开发板 鸿蒙系统 鸿蒙OS
分享
0
开发Hi3516第一个驱动程序示例本节指导开发者在单板上运行第一个驱动程序,其中包括驱动程序介绍、编译、烧写、运行等步骤。
获取源码参考“开发Hi3516第一个应用程序示例”获取源码。
驱动程序介绍下面基于HDF框架,提供一个简单的UART(Universal Asynchronous Receiver/Transmitter)平台驱动开发样例,包含配置文件的添加,驱动代码的实现以及用户态程序和驱动交互的流程。驱动程序源码位于vendor/huawei/hdf/sample目录。
  • 添加配置。
    在HDF框架的驱动配置文件(例如vendor/hisi/hi35xx/hi3516dv300/config/uart/uart_config.hcs)中添加该驱动的配置信息,如下所示:
1.png
在HDF框架的设备配置文件(例如vendor/hisi/hi35xx/hi3516dv300/config/device_info/device_info.hcs)中添加该驱动的设备节点信息,如下所示:
2.png
  • 说明: 配置文件与UART驱动示例的源码在同一个路径,需要手动添加到Hi3516DV300单板路径下。
  • 注册UART驱动入口。
    基于HDF框架注册UART驱动的入口HdfDriverEntry,代码如下:
3.png 4.png 5.png 6.png 7.png
3.注册UART驱动接口
HDF框架提供了UART驱动接口的模板方法UartHostMethod,实现UART驱动接口的代码如下:
11.png 12.png 13.png 14.png
在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驱动交互的代码如下:
66.png
在build/lite/product/ipcamera_hi3516dv300.json产品配置的hdf子系统下增加hello_uart_sample组件,代码如下:
123.png
说明: 如上代码均为示例代码,完整代码可以在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!


评论

您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发文章