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文件

  1. 执行以下命令:
    cd openharmony/kernel/liteos_a/platform/
    
    vi Kconfig
  2. 在config PLATFORM下添加一项:

    default "wufeizhi"        if PLATFORM_WUFEIZHI

  3. 在choice与endchoice之间添加一项:
    config PLATFORM_WUFEIZHI
    
        bool "wufeizhi"
    
        select ARCH_CORTEX_A7

(三)修改openharmony/kernel/liteos_a/platform/Makefile文件

  1. 执行以下命令:
    vi Makefile +43
  2. 在该行中仿照前面添加代码:
    $(LOSCFG_PLATFORM_WUFEIZHI)

 (四)​​​​​​​修改openharmony/kernel/liteos_a/platform/bsp.mk文件

  1. 执行以下命令:
    vi bsp.mk
  2. 搜索“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文件 

  1. 执行以下命令:
    cd ..
    
    vi Makefile
  2. 搜索"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文件

  1. 执行如下代码:
    vi Kconfig
  2. 修改该处代码:

        加入 || PLATFORM_WUFEIZHI

(七)修改openharmony/kernel/liteos_a/shell/full/src/base/show.c文件 

  1. 执行如下代码:​​​​​​​
    vi shell/full/src/base/show.c
  2. 添加如下代码:
    #elif defined LOSCFG_PLATFORM_WUFEIZHI
    
    #include "uart.h"

(八)​​​​​​​修改openharmony/kernel/liteos_a/shell/full/src/base/shcmd.c文件 

  1. 执行如下代码:
    vi shell/full/src/base/shcmd.c
  2. 添加如下代码:
    #elif defined LOSCFG_PLATFORM_WUFEIZHI
    
    #include "uart.h"

(九)修改openharmony/kernel/liteos_a/shell/full/src/base/shmsg.c文件

  1. 执行如下代码:

    vi shell/full/src/base/shmsg.c
  2. 添加如下代码:​​​​​​​​​​​​​​​​​​​​​
    #elif defined LOSCFG_PLATFORM_WUFEIZHI
    
    #include "uart.h"

 (十)​​​​​​​修改openharmony/kernel/liteos_a/shell/full/src/cmds/dmesg.c文件

  1. 执行如下代码:
    vi shell/full/src/base/shmsg.c
  2. 添加如下代码:
    #elif defined LOSCFG_PLATFORM_WUFEIZHI
    
    #include "uart.h"

(十一)​​​​​​​修改openharmony/kernel/liteos_a/tools/build/mk/los_config.mk文件

  1. 执行如下代码:
    vi tools/build/mk/los_config.mk +171
  2. 在其后添加如下代码:
    ifeq ($(LITEOS_PLATFORM),wufeizhi)
    
    include $(LITEOSTOPDIR)/../../vendor/hetaoxueyuan/wufeizhi/wufeizhi.mk
    
    endif

(十二)​​​​​​​修改openharmony/vendor/hetaoxueyuan/wufeizhi.mk文件

  1. 执行如下代码:
    vi ../../vendor/hetaoxueyuan/wufeizhi.mk
  2. 修改第一行路径为:
    /vendor/hetaoxueyuan/wufeizhi
  3. 修改所有“DEMOCHIP_BASE_DIR”为“WUFEIZHI_BASE_DIR”

(十三)​​​​​​​修改openharmony/vendor/hetaoxueyuan/wufeizhi/board/board.c文件

  1. 执行如下代码:
    vi ../../vendor/hetaoxueyuan/wufeizhi/board/board.c
  2. 将第一个#if 1修改为#if 0,并将#if  与   #endif之间的else注释掉。

(十四)​​​​​​​修改openharmony/vendor/hetaoxueyuan/wufeizhi/driver/mtd/spi_nor/src/common/spinor.c文件

  1. 执行如下代码:
    vi ../../vendor/hetapxueyuan/wufeizhi/driver/mtd/spi_nor/src/common/spinor.c +150
  2. 修改代码:
    spinor_mtd.priv = (void *)0 ;
    
    spinor_mtd.size = 0;

(十五)​​​​​​​修改openharmony/vendor/hetaoxueyuan/hdf/hdf_vendor.mk文件

  1. 执行如下代码:
    vi ../../vendor/hetaoxueyuan/hdf/hdf_vendor.mk
  2. 第二行和第三行中出现的路径

        修改为:

/vendor/hetaoxueyuan/

/../../vendor/hetaoxueyuan/hdf

        并修改所有的DEMOCHIP_BASE_DIR为WUFEIZHI_BASE_DIR。

(十六)​​​​​​​修改openharmony/drvivers/hdf/lite/hdf_lite.mk文件

  1. 执行如下代码:
    vi ../../drvivers/hdf/lite/hdf_lite.mk
  2. 在最后两行前添加代码:
    ifeq ($(LOSCFG_PLATFORM_DEMOCHIP), y)
    
    include $(LITEOSTOPDIR)/../../vendor/democom/hdf/hdf_vendor.mk
    
    endif

在所有文件修改完后即可开始编译。

五、 编译单板

  1. 回到liteos_a目录下,执行make menuconfig打开菜单,在platform中选择配置好的单板,保存退出
  2. 执行make clean指令
  3. 执行make -j 8指令完成编译。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HarmonyOS是华为公司自主研发的操作系统,其内核是实现系统各项功能的核心部分。对于HarmonyOS内核源码的分析,可以从以下几个方面进行讨论。 首先,HarmonyOS内核源码的分析可以关注其整体架构。HarmonyOS内核采用微内核架构,将各个功能模块拆分成独立的服务,通过消息传递进行通信,实现了更高的灵活性和可靠性。通过分析内核的整体架构,可以深入了解到HarmonyOS是如何进行进程管理、内存管理、文件系统等各个方面的功能实现。 其次,可以重点关注HarmonyOS内核的调度机制。调度机制是操作系统内核决定进程、线程执行顺序和时间分配的重要部分。HarmonyOS内核采用了全局时钟中断驱动的抢占式调度机制,能够确保不同任务的公平和高效执行。通过对调度机制的分析可以了解到HarmonyOS内核是如何进行多任务切换、时间片轮转以及任务优先级管理的。 此外,HarmonyOS内核源码分析还可以关注线程同步和通信机制。线程同步和通信是多线程协作的基础,也是操作系统内核重要的功能之一。HarmonyOS内核通过互斥锁、条件变量和信号量等机制实现了线程之间的同步和通信。了解这些机制可以更好地理解HarmonyOS是如何处理多线程并发访问共享资源和协调线程之间的执行顺序的。 最后,分析HarmonyOS内核源码还可以关注其安全性。安全性是一个操作系统内核不能忽视的重要问题。HarmonyOS内核采用了多种安全机制,如安全IPC、安全网卡等,确保系统资源和用户数据的安全。通过分析内核源码中的安全措施可以了解到HarmonyOS是如何保障系统的安全性并防止恶意攻击。 综上所述,对于HarmonyOS内核源码的分析需要关注整体架构、调度机制、线程同步和通信机制以及安全性等方面。通过深入分析内核源码,可以更好地了解操作系统的具体实现细节和原理,为开发者提供更好的参考和指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值