主要参考韦东升视频:鸿蒙内核liteos-a移植_基于STM32MP157,视频链接如下:
鸿蒙教程说明与资料下载_鸿蒙内核liteos-a移植_基于STM32MP157_鸿蒙设备开发视频-51CTO学堂sshttps://edu.51cto.com/center/course/lesson/index?id=663700
添加单板涉及大量繁琐的文件修改,稍有不注意可能就会改错,导致最终文件编译不过,所以我总结了一下添加单板的整个流程。
添加单板用到的所有文件已上传至百度网盘:
链接:https://pan.baidu.com/s/1SfsTb4GHW2ImtI2zZSSSqw
提取码:4ftr
--来自百度网盘超级会员V3的分享
所有资料均来自51CTO学堂
下面出现的所有user路径名均为当前ubuntu用户名,根据实际情况修改。
出现的所有hetaoxueyuan 、wufeizhi都可自行修改。
目录
一、搭建HarmonyOS环境
二、 获取源码:
三、 添加补丁
四、 在menuconfig-platform中添加单板:
(一)准备工作
(二)修改openharmony/kernel/liteos_a/platform/Kconfig文件
(三)修改openharmony/kernel/liteos_a/platform/Makefile文件
(四)修改openharmony/kernel/liteos_a/platform/bsp.mk文件
(五)修改openharmony/kernel/liteos_a/Makefile文件
(六)修改openharmony/kernel/liteos_a/Kconfig文件
(七)修改openharmony/kernel/liteos_a/shell/full/src/base/show.c文件
(八)修改openharmony/kernel/liteos_a/shell/full/src/base/shcmd.c文件
(九)修改openharmony/kernel/liteos_a/shell/full/src/base/shmsg.c文件
(十)修改openharmony/kernel/liteos_a/shell/full/src/cmds/dmesg.c文件
(十一)修改openharmony/kernel/liteos_a/tools/build/mk/los_config.mk文件
(十二)修改openharmony/vendor/hetaoxueyuan/wufeizhi.mk文件
(十三)修改openharmony/vendor/hetaoxueyuan/wufeizhi/board/board.c文件
(十四)修改openharmony/vendor/hetaoxueyuan/wufeizhi/driver/mtd/spi_nor/src/common/spinor.c文件
(十五)修改openharmony/vendor/hetaoxueyuan/hdf/hdf_vendor.mk文件
(十六)修改openharmony/drvivers/hdf/lite/hdf_lite.mk文件
五、 编译单板
一、搭建HarmonyOS环境
在/home/user目录下执行以下命令:
wget --no-check-certificate -O Configuring_ubuntu.sh https://weidongshan.coding.net/p/DevelopmentEnvConf/d/DevelopmentEnvConf/git/raw/master/Configuring_ubuntu.sh && sudo chmod +x Configuring_ubuntu.sh && sudo ./Configuring_ubuntu.sh
注意该命令需合并成一行,仅支持Ubuntu18.04以及ubuntu16.04版本。
输入命令后中断会提供如下选项:
这里选择1,为鸿蒙配置环境。
当出现以下提示时,则说明鸿蒙环境已经配置成功:
二、 获取源码:
解压压缩包后,将openharmony_for_video_tutorial.tar.bz2文件拖入虚拟机中,执行如下命令:
tar xjf openharmony_for_video_tutorial.tar.bz2 -C /home/user/
执行完后就得到了一个在 /home/user/目录下的openharmony文件夹,这是就是存放源码的文件夹。
三、 添加补丁
这里需要添加两个补丁文件,分别时openharmony_100ask_v1.2.patch、01_openharmony_add_demo_board.patch;
将该文件拖入虚拟机中,建议放到/home/user/目录下,即和openharmony文件夹同级目录,执行以下命令添加补丁:
第一个补丁:
cd /home/user/openharmony
patch -p1 < /home/user/openharmony_100ask_v1.2.patch
第二个补丁:
patch -p1 < /home/user/01_openharmony_add_demo_board.patch
四、 在menuconfig-platform中添加单板:
(一)准备工作
1. 进入openharmony/vendor目录下,复制一份democom文件夹并改名为hetaoxueyuan
2. 进入hetaoxueyuan文件夹,并修改demochip文件夹名为wufeizhi
3. 进入wufeizhi,并修改demochip.mk文件名为wufeizhi.mk
(二)修改openharmony/kernel/liteos_a/platform/Kconfig文件
执行以下命令: cd openharmony/kernel/liteos_a/platform/
vi Kconfig 在config PLATFORM下添加一项:
default "wufeizhi" if PLATFORM_WUFEIZHI
在choice与endchoice之间添加一项: config PLATFORM_WUFEIZHI
bool "wufeizhi"
select ARCH_CORTEX_A7
(三)修改openharmony/kernel/liteos_a/platform/Makefile文件
执行以下命令: vi Makefile +43 在该行中仿照前面添加代码: $(LOSCFG_PLATFORM_WUFEIZHI)
(四)修改openharmony/kernel/liteos_a/platform/bsp.mk文件
执行以下命令: vi bsp.mk 搜索“LOSCFG_PLATFORM_STM32MP157”
第一处:
在其后添加如下代码:
else ifeq ($(LOSCFG_PLATFORM_WUFEIZHI), y)
HWI_TYPE := arm/interrupt/gic
TIMER_TYPE := arm/timer/arm_generic
HRTIMER_TYPE := demochip/hrtimer
第二处:
在其后添加代码:
else ifeq ($(LOSCFG_PLATFORM_WUFEIZHI),y)
PLATFORM_INCLUDE += -I $(LITEOSTOPDIR)/../../vendor/hetaoxueyuan/wufeizhi/board/include
(五)修改openharmony/kernel/liteos_a/Makefile文件
执行以下命令: cd ..
vi Makefile 搜索"LOSCFG_PLATFORM_STM32MP157"
第一处:
在其后添加代码:
ifeq ($(LOSCFG_PLATFORM_WUFEIZHI), y)
FSTYPE = vfat
ROOTFS_SIZE = 0xA00000
第二处:
在其后添加代码:
else ifeq ($(LOSCFG_PLATFORM_WUFEIZHI), y)
BOARD_INCLUDE_DIR := $(LITEOSTOPDIR)/../../vendor/hetaoxueyuan/wufeizhi/board
第三处:
此处内容无需修改。
(六)修改openharmony/kernel/liteos_a/Kconfig文件
执行如下代码: vi Kconfig 修改该处代码:
加入 || PLATFORM_WUFEIZHI
(七)修改openharmony/kernel/liteos_a/shell/full/src/base/show.c文件
执行如下代码: vi shell/full/src/base/show.c 添加如下代码: #elif defined LOSCFG_PLATFORM_WUFEIZHI
#include "uart.h"
(八)修改openharmony/kernel/liteos_a/shell/full/src/base/shcmd.c文件
执行如下代码: vi shell/full/src/base/shcmd.c 添加如下代码: #elif defined LOSCFG_PLATFORM_WUFEIZHI
#include "uart.h"
(九)修改openharmony/kernel/liteos_a/shell/full/src/base/shmsg.c文件
执行如下代码:
vi shell/full/src/base/shmsg.c 添加如下代码: #elif defined LOSCFG_PLATFORM_WUFEIZHI
#include "uart.h"
(十)修改openharmony/kernel/liteos_a/shell/full/src/cmds/dmesg.c文件
执行如下代码: vi shell/full/src/base/shmsg.c 添加如下代码: #elif defined LOSCFG_PLATFORM_WUFEIZHI
#include "uart.h"
(十一)修改openharmony/kernel/liteos_a/tools/build/mk/los_config.mk文件
执行如下代码: vi tools/build/mk/los_config.mk +171 在其后添加如下代码: ifeq ($(LITEOS_PLATFORM),wufeizhi)
include $(LITEOSTOPDIR)/../../vendor/hetaoxueyuan/wufeizhi/wufeizhi.mk
endif
(十二)修改openharmony/vendor/hetaoxueyuan/wufeizhi.mk文件
执行如下代码: vi ../../vendor/hetaoxueyuan/wufeizhi.mk 修改第一行路径为: /vendor/hetaoxueyuan/wufeizhi 修改所有“DEMOCHIP_BASE_DIR”为“WUFEIZHI_BASE_DIR”
(十三)修改openharmony/vendor/hetaoxueyuan/wufeizhi/board/board.c文件
执行如下代码: vi ../../vendor/hetaoxueyuan/wufeizhi/board/board.c 将第一个#if 1修改为#if 0,并将#if 与 #endif之间的else注释掉。
(十四)修改openharmony/vendor/hetaoxueyuan/wufeizhi/driver/mtd/spi_nor/src/common/spinor.c文件
执行如下代码: vi ../../vendor/hetapxueyuan/wufeizhi/driver/mtd/spi_nor/src/common/spinor.c +150 修改代码: spinor_mtd.priv = (void *)0 ;
spinor_mtd.size = 0;
(十五)修改openharmony/vendor/hetaoxueyuan/hdf/hdf_vendor.mk文件
执行如下代码: vi ../../vendor/hetaoxueyuan/hdf/hdf_vendor.mk 第二行和第三行中出现的路径
修改为:
/vendor/hetaoxueyuan/
/../../vendor/hetaoxueyuan/hdf
并修改所有的DEMOCHIP_BASE_DIR为WUFEIZHI_BASE_DIR。
(十六)修改openharmony/drvivers/hdf/lite/hdf_lite.mk文件
执行如下代码: vi ../../drvivers/hdf/lite/hdf_lite.mk 在最后两行前添加代码: ifeq ($(LOSCFG_PLATFORM_DEMOCHIP), y)
include $(LITEOSTOPDIR)/../../vendor/democom/hdf/hdf_vendor.mk
endif
在所有文件修改完后即可开始编译。
五、 编译单板
回到liteos_a目录下,执行make menuconfig打开菜单,在platform中选择配置好的单板,保存退出执行make clean指令执行make -j 8指令完成编译。