更多内容请访问:鸿蒙技术社区最新更新https://harmonyos.51cto.com/#zz与华为官方共建的项目,你可以查看代码仓库https://gitee.com/liangzili/harmony-raspberry1,添加新板子1.1,修改menuconfig和Kconfig将树莓派开发板添加到Harmony的源码中,首先要分析Harmony的编译构建系统.menuconfig可以通过Kconfig配置文件生成一个.config(kernel\liteos_a.config)文件,内核编译配置项都包含在这个文件中。1.1.1.添加板子进入源码/kernel/liteos_a/目录,执行makemenuconfig进入下图所示界面。这个接口是根据文件\kernel\liteos_a\Kconfig生成的,这个文件也可以包含其他目录下的Kconfig。其他目录下包含Kconfig,如:source"../../kernel/liteos_a/platform/Kconfig"#这个文件是Kconfigsource"../../kernel/liteos_a/arch/Kconfig"用于添加一个新的开发板...1.1.2。修改kernel\liteos_a\platform\Kconfig打开“../../kernel/liteos_a/platform/Kconfig”,和其他板子一样添加树莓派配置项。在configPLATFORM下添加:default"Raspberry_Pi_2"ifPLATFORM_RASPBERRYPI2choiceAdd:configPLATFORM_RASPBERRYPI2bool"Raspberry_Pi_2"selectARCH_CORTEX_A7添加这两项后,重新运行makemenuconfig并选择platform,会出现一个新的单板选项。1.1.3.修改kernel\liteos_a\Kconfig以设置开发板的默认编译器,大约在第45和49行。configCOMPILER_HIMIX_32bool"arm-linux-ohoseabi"dependsonPLATFORM_HI3518EV300||PLATFORM_HI3516DV300||PLATFORM_RASPBERRYPI2?configCOMPILER_CLANG_LLVMbool"clang-llvm"dependsonPLATFORM_HI3518EV300||PLATFORM_HI3516DV300||PLATFORM_RASPBERRYPI2添加了这两项Compiler下才会出现编译器的选择,如下图:选择这个新Aftersavingandexitingtheboard,check\kernel\liteos_a.config,andyouwillfindthefollowingtwoitems.##Platform#LOSCFG_PLATFORM="Raspberry_Pi_2"#LOSCFG_PLATFORM_HI3516DV300isnotset#LOSCFG_PLATFORM_HI3518EV300isnotsetLOSCFG_PLATFORM_RASPBERRYPI2=y1.2、修改make和Makefile文件Makefileplatform/Makefileplatform/bsp.mk1.2.1、修改kernel\liteos_a\Makefile设置根文件系统类型和大小,在62行about.ifeq($(LOSCFG_PLATFORM_RASPBERRYPI2),y)FSTYPE=jffs2ROOTFS_SIZE=0xA00000Addthesingleboardfolderunderendifmakelib,aroundline107.Atthesametime,addthecorrespondingfolderunderthesourcecodedirectory/vendor/.SomecodesofHongmengarenotopensource.HereIwouldliketothankTeacherWeiDongshanforprovidingthepatchfile.#####makelib#####$(__LIBS):$(OUT)$(CXX_INCLUDE)ifeq($(LOSCFG_PLATFORM_RASPBERRYPI2),y)BOARD_INCLUDE_DIR:=$(LITEOSTOPDIR)/../../供应商/博通/BCM2836/boardelseBOARD_INCLUDE_DIR:=$(LITEOSTOPDIR)/../../vendor/hisi/hi35xx/$(LITEOS_PLATFORM)/config/boardendif$(OUT):$(LITEOS_MENUCONFIG_H)$(HIDE)mkdir-p$(OUT)/lib$(HIDE)$(CC)-I$(LITEOS_PLATFORM_BASE)/include-I$(BOARD_INCLUDE_DIR)\-E$(LITEOS_PLATFORM_BASE)/board.ld.S\-o$(LITEOS_PLATFORM_BASE)/板。ld-P1.2.2,添加板子文件夹并新建板子文件夹,复制魏东山老师补丁中的vendor文件夹,在vendor目录下新建broadcom板子文件目录结构,可按如下格式修改:kernel/Architecture/chipcompany/chip/boardcompany/hardwareversionCortex-A7/Armv7-A/broadcom/BCM2836/Raspberry_Pi/..vendor\broadcom\BCM2836\board\include\asm\platform.h1.2.3,然后修改vendor\broadcom\BCM2836\BCM2836.mk设置基本目录地址BCM2836_BASE_DIR:=$(LITEOSTOPDIR)/../../vendor/broadcom/BCM28361.2.4,kernel\liteos_a\platform\Makefile跟其他板子一样添加,大约43行_PLATFORM_RASPBERRYPI2)),y)1.2.5,kernel\liteos_a\platform\bsp.mk设置板子的设备类型,比如中断,定时器,串口,USB等,大概58行##########################LOSCFG_PLATFORM_RASPBERRYPI2选项################################elseifeq($(LOSCFG_PLATFORM_RASPBERRYPI2),y)HWI_TYPE:=arm/interrupt/gicTIMER_TYPE:=arm/timer/arm_genericHRTIMER_TYPE:=BCM2836/hrtimer#UART_TYPE:=amba_pl011设置头文件包含的目录,大约在90行ifeq($(findstringy,$(LOSCFG_PLATFORM_HI3518EV300)$(LOSCFG_PLATFORM_HI3516DV300)),y)PLATFORM_INCLUDE+=-I$(LITEOSTOPDIR)/../../vendor/hisi/hi35xx/$(LITEOS_PLATFORM)/config/board/include/hisocelseifeq($(LOSCF_CFG2),y)PLATFORM_INCLUDE+=-I$(LITEOSTOPDIR)/../../vendor/broadcom/BCM2836/board/includeendif1.2.6,drivers\hdf\lite\hdf_lite.mk置顶HDF的-level目录,大约在第39行,我不明白为什么不使用默认路径include$(LITEOSTOPDIR)/../../vendor/huawei/hdf/hdf_vendor.mk并替换它与:ifeq($(findstringy,$(LOSCFG_PLATFORM_HI3518EV300)$(LOSCFG_PLATFORM_HI3516DV300)),y)include$(LITEOSTOPDIR)/../../vendor/huawei/hdf/hdf_vendor.mkendififeq($(LOSCFG_PLATFORM_RASPBERRYPI2),y)包含$(LITEOSTOPDIR)/../../vendor/broadcom/hdf/hdf_vendor.mkendif1.2.7,vendor\huawei\hdf\hdf_vendor.mk(TODO)设置下载板HDF相关文件路径,约18行elseifeq($(LOSCFG_PLATFORM_RASPBERRYPI2),y)LIB_SUBDIRS+=$(LITEOS_SOURCE_ROOT)/vendor/broadcom/BCM2836/configVENDOR_HDF_DRIVERS_PLATFORM_ROOT:=$(LITEOSTOPDIR)/../../vendor/broadcom/BCM2836/platform#这个文件夹还没有1.3。编译:编译测试时,可以修改kernel\liteos_a\tools\build\mk\los_config.mk的值。HIDE的值为空,可以显示make的执行命令。HIDE:=#删除@表示显示make1.3.1的执行命令,修改以下四个头文件kernel/liteos_a/shell/full/src/base/show.kernel/liteos_a/shell/full/src/base/shcmd.kernel/liteos_a/shell/full/src/base/shmsg.kernel/liteos_a/shell/full/src/cmds/dmesg.c#elifdefinedLOSCFG_PLATFORM_RASPBERRYPI2#include"uart.h"1.3.2、tools\build\mk\los_config.mkifeq($(LITEOS_PLATFORM),BCM2836)include$(LITEOSTOPDIR)/../../vendor/broadcom/BCM2836/BCM2836.mkendif1.3.3,kernel\liteos_a\kernel\common\los_config.h43行左右,评论这一行//#include"hisoc/clock.h"#include"clock.h"=======全部内容======#2020征文-开发板#鸿蒙移植树莓派(上)搭建环境下载源码#2020征文-开发板#鸿蒙移植树莓派(中)添加单板#2020征文-开发板#鸿蒙移植树莓派(下)修改源码?版权归作者所有以及HarmonyOS技术社区,如需转载请注明出处,否则追究法律责任。更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com/#ZZ
