HarmonyOS内核移植——添加单板

HarmonyOS内核移植——添加单板

主要参考韦东升视频:鸿蒙内核liteos-a移植_基于STM32MP157,视频链接如下:

鸿蒙教程说明与资料下载_鸿蒙内核liteos-a移植_基于STM32MP157_鸿蒙设备开发视频-51CTO学堂s​​​​​​​shttps://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指令完成编译。

💎 相关推荐

《耻辱2/羞辱2》主角介绍及选择路线
365bet真人网投

《耻辱2/羞辱2》主角介绍及选择路线

📅 07-24 👁️ 3440
铃声制作器:在线创建完美自定义iPhone铃声
365bet真人网投

铃声制作器:在线创建完美自定义iPhone铃声

📅 06-29 👁️ 8739
寒霜引擎
365bet真人网投

寒霜引擎

📅 08-08 👁️ 6690