实验描述
以九联科技Unionpi Tiger开发板为平台,移植仓库中的GPIO代码到开发板中,源代码仓库如下:
https://gitee.com/openharmony/vendor_unionman/tree/master/unionpi_tiger/sample/hardware/gpio
因为编译问题前后断断续续搞了一个礼拜没有成功,最后再FAE的支持下搞定。本文中主要记录编译过程中遇到的问题。解决这个问题之后后面的I2C/UART的代码编译也就类似的修改。文中以GPIO为例子,根据代码可知本次实验主要实现配置GPIO 输出,并获取GPIO模式并打印。
修改代码
首先把GPIO的整个文件夹拷贝到某个目录下,我这里复制都openhamony/vendor/uniopi/unionpi_tiger/sample/hardware/下面,并在/openharmony/device/unionpi/a311d/BUILD.gn文件中增加该文件的路径。如下:
在GIPO 目录下打开Build.gn问价增加如下内容:
import("//drivers/adapter/uhdf2/uhdf.gni")
...
ohos_executable("gpio_hdf") {
sources = [ "hdf/gpio_hdf.cpp" ]
output_name = "gpio"
include_dirs = [
"//drivers/framework/include/platform",
"//third_party/bounds_checking_function/include",
]
deps = [
"//drivers/adapter/uhdf2/platform:libhdf_platform",
]
...
install_enable = true
install_images = [ "vendor" ]
module_install_dir = "bin"
part_name = "unionpi_products"
源码编译
进入源码目录,执行如下命令进行版本编译,编译完成后,效果如下:
获取固件
编译完成后对进行镜像进行打包然后烧写。如下是固件打包:
打包好之后会指出固件的生成目录,根据目录提示拷贝到Widows 环境下,试用烧录工具,根据用户手册把Image烧录到开发板
固件测试
进入到openharmony 环境里可以看到编译出来的可执行文件在/verdor/bin 目录下
输入./gpio_test 或者./gpio_test +参数查看返回值
遇到的问题
编译过程中一直碰到以下编译ERROR网上也搜了不少材料,之前一直也怀疑是头文件哪里引用的问题。多次更换编译文件位置未果。在FAE的指导下修改了BUILD.gn文件里面的头文件位置(前面有提到具体的修改)。
不清楚的地方
修改的头文件引用的HDF相关,目前还不清楚源码和HDF驱动之间的关系。下一步的计划会深入的学习一下和HDF相关的知识。再次感谢FAE的指导。
|