本篇文章給大家分享的是有關(guān)如何在鴻蒙移植樹(shù)莓派中添加單板,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比隨州網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式隨州網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋隨州地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
1、添加新單板
1.1、修改menuconfig和Kconfig
要在鴻蒙的源碼中添加樹(shù)莓派的開(kāi)發(fā)板,得先分析鴻蒙的編譯構(gòu)建系統(tǒng)。menuconfig通過(guò)Kconfig配置文件,可以生成.config(kernel\liteos_a.config)文件,內(nèi)核的編譯配置項(xiàng)包含在這個(gè)文件中。
1.1.1、添加單板
進(jìn)入源碼/kernel/liteos_a/目錄下執(zhí)行
make menuconfig
會(huì)進(jìn)入下圖的界面,這個(gè)界面基于\kernel\liteos_a\Kconfig這個(gè)文件生成,而且這個(gè)文件還可以包含其它目錄下的Kconfig。
包含其他目錄下的Kconfig,比如: source "../../kernel/liteos_a/platform/Kconfig" #這個(gè)文件就是添加新開(kāi)發(fā)板的Kconfig source "../../kernel/liteos_a/arch/Kconfig" ...
1.1.2、修改kernel\liteos_a\platform\Kconfig
打開(kāi)"../../kernel/liteos_a/platform/Kconfig",仿照其他單板,添加樹(shù)莓派配置項(xiàng)。
config PLATFORM 下添加:
default "Raspberry_Pi_2" if PLATFORM_RASPBERRYPI2
choice 下添加:
config PLATFORM_RASPBERRYPI2 bool "Raspberry_Pi_2" select ARCH_CORTEX_A7
添加完這兩項(xiàng),重新運(yùn)行make menuconfig選擇platform就會(huì)多出一個(gè)新的單板選項(xiàng)。
1.1.3、修改kernel\liteos_a\Kconfig
設(shè)置單板的默認(rèn)編譯器,在45、49行左右。
config COMPILER_HIMIX_32 bool "arm-linux-ohoseabi" depends on PLATFORM_HI3518EV300 || PLATFORM_HI3516DV300 || PLATFORM_RASPBERRYPI2 config COMPILER_CLANG_LLVM bool "clang-llvm" depends on PLATFORM_HI3518EV300 || PLATFORM_HI3516DV300 || PLATFORM_RASPBERRYPI2
添加了這兩項(xiàng)Compiler下才會(huì)出現(xiàn)編譯器的選擇,如下圖:
選擇這個(gè)新單板保存退出后,查看\kernel\liteos_a.config,會(huì)發(fā)現(xiàn)多出下面兩項(xiàng)。
# # Platform # LOSCFG_PLATFORM="Raspberry_Pi_2" # LOSCFG_PLATFORM_HI3516DV300 is not set # LOSCFG_PLATFORM_HI3518EV300 is not set LOSCFG_PLATFORM_RASPBERRYPI2=y
1.2、修改make和Makefile文件
Makefile platform/Makefile platform/bsp.mk
1.2.1、修改kernel\liteos_a\Makefile
設(shè)置根文件系統(tǒng)類型和大小,在62行左右。
ifeq ($(LOSCFG_PLATFORM_RASPBERRYPI2), y) FSTYPE = jffs2 ROOTFS_SIZE = 0xA00000 endif
make lib下添加單板文件夾,在107行左右。同時(shí)在源碼目錄/vendor/下添加對(duì)應(yīng)文件夾,鴻蒙的部分代碼未開(kāi)源,這里要感謝韋東山老師提供的補(bǔ)丁文件。
##### make lib ##### $(__LIBS): $(OUT) $(CXX_INCLUDE) ifeq ($(LOSCFG_PLATFORM_RASPBERRYPI2),y) BOARD_INCLUDE_DIR := $(LITEOSTOPDIR)/../../vendor/broadcom/BCM2836/board else BOARD_INCLUDE_DIR := $(LITEOSTOPDIR)/../../vendor/hisi/hi35xx/$(LITEOS_PLATFORM)/config/board endif $(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)/board.ld -P
1.2.2、增加單板文件夾
新建單板文件夾,將韋東山的老師補(bǔ)丁中vendor文件夾復(fù)制過(guò)來(lái),在vendor目錄下新建broadcom
單板文件目錄結(jié)構(gòu)可以按照下面的格式修改:
內(nèi)核/架構(gòu)/芯片公司/芯片/板卡公司/硬件版本
Cortex-A7/Armv7-A/broadcom/BCM2836/Raspberry_Pi/.. vendor\broadcom\BCM2836\board\include\asm\platform.h
1.2.3、然后修改vendor\broadcom\BCM2836\BCM2836.mk
設(shè)置基目錄地址
BCM2836_BASE_DIR := $(LITEOSTOPDIR)/../../vendor/broadcom/BCM2836
1.2.4、kernel\liteos_a\platform\Makefile
仿照其他單板添加,43行左右
$(LOSCFG_PLATFORM_RASPBERRYPI2) \ ifeq ($(findstring y, $(LOSCFG_PLATFORM_HI3518EV300)$(LOSCFG_PLATFORM_HI3516DV300)$(LOSCFG_PLATFORM_RASPBERRYPI2)), y)
1.2.5、kernel\liteos_a\platform\bsp.mk
設(shè)置單板的設(shè)備類型,比如中斷、timer、串口、USB之類的,58行左右
########################## LOSCFG_PLATFORM_RASPBERRYPI2 Options############################## else ifeq ($(LOSCFG_PLATFORM_RASPBERRYPI2), y) HWI_TYPE := arm/interrupt/gic TIMER_TYPE := arm/timer/arm_generic HRTIMER_TYPE := BCM2836/hrtimer #UART_TYPE := amba_pl011
設(shè)置頭文件要包含的目錄,在90行左右
ifeq ($(findstring y, $(LOSCFG_PLATFORM_HI3518EV300)$(LOSCFG_PLATFORM_HI3516DV300)), y) PLATFORM_INCLUDE += -I $(LITEOSTOPDIR)/../../vendor/hisi/hi35xx/$(LITEOS_PLATFORM)/config/board/include/hisoc else ifeq ($(LOSCFG_PLATFORM_RASPBERRYPI2),y) PLATFORM_INCLUDE += -I $(LITEOSTOPDIR)/../../vendor/broadcom/BCM2836/board/include endif
1.2.6、drivers\hdf\lite\hdf_lite.mk
設(shè)置HDF的頂層目錄,在39行左右,有點(diǎn)沒(méi)搞懂,為啥不直接使用一個(gè)默認(rèn)的路徑
include $(LITEOSTOPDIR)/../../vendor/huawei/hdf/hdf_vendor.mk 替換為: ifeq ($(findstring y, $(LOSCFG_PLATFORM_HI3518EV300)$(LOSCFG_PLATFORM_HI3516DV300)), y) include $(LITEOSTOPDIR)/../../vendor/huawei/hdf/hdf_vendor.mk endif ifeq ($(LOSCFG_PLATFORM_RASPBERRYPI2), y) include $(LITEOSTOPDIR)/../../vendor/broadcom/hdf/hdf_vendor.mk endif
1.2.7、vendor\huawei\hdf\hdf_vendor.mk(TODO)
設(shè)置下單板的HDF相關(guān)文件路徑,18行左右
else ifeq ($(LOSCFG_PLATFORM_RASPBERRYPI2), y) LIB_SUBDIRS += $(LITEOS_SOURCE_ROOT)/vendor/broadcom/BCM2836/config VENDOR_HDF_DRIVERS_PLATFORM_ROOT := $(LITEOSTOPDIR)/../../vendor/broadcom/BCM2836/platform #這個(gè)文件夾還沒(méi)有
1.3、編譯:
編譯測(cè)試的時(shí)候可以修改kernel\liteos_a\tools\build\mk\los_config.mk HIDE的值為空,可以顯示make的執(zhí)行命令
HIDE := #刪除@表示顯示make的執(zhí)行命令
1.3.1、修改下面這4個(gè)頭文件
kernel/liteos_a/shell/full/src/base/show.c
kernel/liteos_a/shell/full/src/base/shcmd.c
kernel/liteos_a/shell/full/src/base/shmsg.c
kernel/liteos_a/shell/full/src/cmds/dmesg.c
#elif defined LOSCFG_PLATFORM_RASPBERRYPI2 #include "uart.h"
1.3.2、tools\build\mk\los_config.mk
ifeq ($(LITEOS_PLATFORM),BCM2836) include $(LITEOSTOPDIR)/../../vendor/broadcom/BCM2836/BCM2836.mk endif
1.3.3、kernel\liteos_a\kernel\common\los_config.h
43行左右,注釋此行
//#include "hisoc/clock.h" #include "clock.h"
以上就是如何在鴻蒙移植樹(shù)莓派中添加單板,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章標(biāo)題:如何在鴻蒙移植樹(shù)莓派中添加單板
文章URL:http://aaarwkj.com/article20/pdehjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、手機(jī)網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站改版、網(wǎng)站維護(hù)、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)