完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 l_xy 于 2020-10-19 19:29 编辑
作者:tjCFeng 手欠在搭环境的时候烧录了一次官方3516的uboot,本来挺好看的灯一下子全都不亮了,AI Camera 开发板资料中又没有提供对应的uboot,只好黑灯瞎火的折腾。幸好网络灯还能亮,至少能提示有电没电。不过这些灯早晚要点亮的,既然没提供那就自己弄。 我知道和Linux一样,应用层的程序是不能直接操作硬件的,需要通过驱动层来中转一下。但是鸿蒙目前没有insmod功能,而且2.0的代码有bug,不能在系统中通过网络把程序传过来,只能编写好代码重新编译再烧写进去的方式运行(应用程序可以通过TF卡拷贝,驱动程序就别想了)。整个过程太痛苦,所以写代码的时候尽量减少出错的可能,把所有问题想全面了再去编译和烧写。 这篇帖子虽然标题是点灯,但是实际上点灯的代码反而是最简单的,大部分的工作量都是在配置各种编译的文件上。基于此本文不给出具体的代码,只总结操作过程,把这些折腾明白了代码根本不算个事。 点灯的过程分为两部分,驱动程序和应用程序。为了能够清晰描述操作,每个部分都分为创建新文件和修改现有文件增加内容,简称“新建”和“修改”;路径中不存在的目录说明是要手动建立的,不再重复说明。 一、驱动程序(必须在vendor目录下): 新建: 1. ”/vendor/huawei/hdf/LED/LED.c “,驱动程序代码文件; 2. ”/vendor/huawei/hdf/LED/Kconfig“,内核配置文件; 3. ”/vendor/huawei/hdf/LED/Makefile“,编译配置文件; 4. ”/vendor/hisi/hi35xx/hi3516dv300/config/LED/LED_config.hcs“,HDF的配置文件; Kconfig文件内容: config LOSCFG_DRIVERS_HDF_PLATFORM_LED bool "Enable HDF LED driver" default n depends on LOSCFG_DRIVERS_HDF_PLATFORM help Answer Y to enable HDF LED platform driver. Makefile文件内容: include $(LITEOSTOPDIR)/config.mk include $(LITEOSTOPDIR)/../../drivers/hdf/lite/lite.mk MODULE_NAME := LED LOCAL_CFLAGS += $(HDF_INCLUDE) LOCAL_SRCS += LED.c LOCAL_INCLUDE := ./ LOCAL_CFLAGS += -fstack-protector-strong -Wextra -Wall -Werror include $(HDF_DRIVER) LED_config.hcs文件内容: root { module = "LED"; author = "tjCFeng"; serviceName = "ServiceLED"; } 修改: 1. ”/vendor/huawei/hdf/Kconfig“ source "../../vendor/huawei/hdf/LED/Kconfig" 2.”/vendor/huawei/hdf/hdf_vendor.mk“ LITEOS_BASELIB += -lLED LIB_SUBDIRS += $(VENDOR_HDF_DRIVERS_ROOT)/LED 3.”/vendor/hisi/hi35xx/hi3516dv300/config/hdf.hcs“ #include "LED/LED_config.hcs" 4.”/vendor/hisi/hi35xx/hi3516dv300/config/device_info/device_info.hcs“ DriverHDF :: device { device0 :: deviceNode { policy = 2; preload = 0; permission = 0644; moduleName = "LED"; deviceMatchAttr = "LED"; serviceName = "ServiceLED"; } } 二、应用程序(可以在任何目录下): 新建: 1.”/applications/CallLED/CallLED.c“,应用程序代码文件; 修改: 1.”/drivers/hdf/lite/manager/BUILD.gn“ executable("CallLED") { sources = [ "//applications/CallLED/CallLED.c" ] include_dirs = [ "../adapter/syscall/include", "../adapter/vnode/include","$HDF_FRAMEWORKS/ability/***uf/include", "$HDF_FRAMEWORKS/core/shared/include", "$HDF_FRAMEWORKS/core/host/include", "$HDF_FRAMEWORKS/core/master/include", "$HDF_FRAMEWORKS/include/core", "$HDF_FRAMEWORKS/include/utils", "$HDF_FRAMEWORKS/utils/include", "$HDF_FRAMEWORKS/include/osal", "//third_party/bounds_checking_function/include", ] deps = [ "//drivers/hdf/lite/manager:hdf_core", "//drivers/hdf/lite/adapter/osal/posix:hdf_posix_osal", ] public_deps = [ "//third_party/bounds_checking_function:libsec_shared", ] defines = [ "__USER__", ] cflags = [ "-Wall", "-Wextra", "-Werror", ] } lite_component("hdf_manager") { features = [ ":hdf_core", ":CallLED", ] } 配置工作就是这些,可能在Windows下的DevEco工具会自动完成,我没有用过不了解,因为我全部的操作都是在Linux下手动完成。至于灯的控制,AI Camera开发板的两个灯分别是GPIO2_3和GPIO3_4,高电平亮低电平灭。参考上一篇帖子https://bbs.elecfans.com/jishu_1996035_1_1.html,重新编译、烧写,进入系统后运行 ./bin/CallLED 灯亮了。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
2207个成员聚集在这个小组
加入小组HiSpark IPC AI摄像头(Hi3518E)串口能输入输出吗?
743 浏览 1 评论
【星闪派物联网开发套件体验连载】使用Dockerfile搭建润和WS63E的开发环境
863 浏览 1 评论
【星闪派物联网开发套件体验连载】用HiHope星闪server端BearPi星闪client端互相发代码控制对方板载灯
1232 浏览 0 评论
【星闪派物联网开发套件体验连载】用HiHope星闪server端发代码控制BearPi
769 浏览 0 评论
【星闪派物联网开发套件体验连载】智能交通灯--云端查看,远程控制视频
1237 浏览 0 评论
12107浏览 10评论
1886浏览 3评论
1241浏览 2评论
1063浏览 2评论
1021浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 21:22 , Processed in 0.571651 second(s), Total 68, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号