• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于G9-X芯片的U-Boot移植

      2022-10-27 06:50:50安昱昕
      汽車電器 2022年10期
      關(guān)鍵詞:內(nèi)核架構(gòu)啟動(dòng)

      安昱昕,杜 彬,田 彬

      (陜西重型汽車有限公司汽車工程研究院,陜西 西安 710200)

      隨著域、集中式車載電子電器架構(gòu)的發(fā)展,基于SoC芯片的車載控制器及車用操作系統(tǒng)研發(fā)成為構(gòu)建域、集中式電子電器架構(gòu)軟硬件平臺(tái)的落地方向,而引導(dǎo)加載程序是車用操作系統(tǒng)加載運(yùn)行的必要組成,U-Boot作為主流的嵌入式操作系統(tǒng)內(nèi)核引導(dǎo)加載程序,其穩(wěn)定性、易移植性已被廣泛驗(yàn)證。本文介紹了基于G9-X芯片,移植U-Boot引導(dǎo)加載程序的方法,為車用操作系統(tǒng)移植以及后續(xù)軟件開發(fā)工作提供參考。

      1 U-Boot介紹

      1.1 U-Boot作用及原理

      U-Boot負(fù)責(zé)啟動(dòng)操作系統(tǒng)內(nèi)核,并向內(nèi)核傳遞根文件系統(tǒng)路徑、網(wǎng)絡(luò)配置信息、內(nèi)存地址等重要參數(shù)。U-Boot設(shè)計(jì)目的在于滿足多平臺(tái)通用性,通過抽取不同硬件平臺(tái)系統(tǒng)啟動(dòng)的共性特征,形成一套平臺(tái)通用引導(dǎo)系統(tǒng)架構(gòu)。各個(gè)芯片廠商根據(jù)自己芯片特性進(jìn)一步完成引導(dǎo)系統(tǒng)的定制化開發(fā)或移植,提高開發(fā)效率同時(shí)減少開發(fā)成本。

      1.2 U-Boot啟動(dòng)流程

      U-Boot啟動(dòng)流程主要分為兩個(gè)階段:CPU初始化和目標(biāo)板初始化。CPU初始化階段中通過匯編語言初始化SoC芯片相關(guān)硬件,如設(shè)置CPU模式、關(guān)閉MMU、初始化DDR和時(shí)鐘等,以及準(zhǔn)備C語言運(yùn)行環(huán)境。在準(zhǔn)備好C語言運(yùn)行環(huán)境后,CPU便可以處理C程序了,這時(shí)如初始化目標(biāo)板外設(shè),檢測(cè)系統(tǒng)內(nèi)存映射,啟動(dòng)內(nèi)核等C程序?qū)⒈贿\(yùn)行,如圖1所示。

      圖1 U-Boot啟動(dòng)流程

      2 U-Boot移植流程

      2.1 編譯環(huán)境搭建

      由于SoC芯片平臺(tái)與PC平臺(tái)芯片架構(gòu)不同,需要在PC平臺(tái)搭建SoC平臺(tái)的編譯環(huán)境完成系統(tǒng)編譯,編譯后的鏡像燒錄到目標(biāo)板中運(yùn)行。本文采用基于ARM內(nèi)核SoC芯片,交叉編譯工具使用ARM官方提供的arm-linux-gcc編譯工具,并在Linux系統(tǒng)下完成交叉編譯環(huán)境的構(gòu)建。

      2.2 移植文件介紹

      本文基于DENX官方U-Boot2016-3完成SoC芯片適配和目標(biāo)板適配。參考第1.2節(jié)U-Boot啟動(dòng)流程,U-Boot主要分為兩類文件:芯片啟動(dòng)文件和目標(biāo)板描述文件,主要包含UBoot官方提供的已適配芯片平臺(tái)和目標(biāo)板文件,如圖2所示。

      圖2 U-Boot文件目錄

      arch/、board/、drivers/這3個(gè)文件目錄包括芯片、目標(biāo)板相關(guān)信息,U-Boot移植主要工作是在這3個(gè)目錄下添加芯片及目標(biāo)板適配程序和配置文件等,見表1。

      表1 芯片及目標(biāo)板相關(guān)文件目錄

      2.3 移植步驟介紹

      芯片適配主要完成SoC芯片內(nèi)核架構(gòu)適配以確保內(nèi)核完成初始化、程序自拷貝、啟動(dòng)運(yùn)行等一系列的工作。本文所適配的控制器芯片為ARM架構(gòu),U-Boot提供了完整的適配程序,我們可將相應(yīng)內(nèi)核目錄下Kconfig文件中內(nèi)核名應(yīng)用到目標(biāo)板適配的配置文件中即可。

      對(duì)于目標(biāo)板適配,是將目標(biāo)板所用的SoC芯片外設(shè)信息數(shù)據(jù)配置到U-Boot程序中,主要有以下步驟。

      1)在board/目標(biāo)板目錄下創(chuàng)建目標(biāo)板目錄,包括Kconfig、Maintainers、Makefile以及${boardname}.c程序4種文件,如圖3所示。

      圖3 board/目錄下文件

      其中,Makefile文件中加入指定編譯對(duì)象文件:

      MAINTAINERS中添加指定配置相關(guān)文件目錄:

      Kconfig中添加配置編譯信息:

      myboard.c程序中主要負(fù)責(zé)分配外設(shè)GPIO接口,以及完成驅(qū)動(dòng)初始化工作,如I2C、EMMC、USB等,在其中加入初始化程序以及GPIO配置宏定義。

      2)在include/configs目錄下新建目標(biāo)板配置頭文件${boardname}.h,通過宏定義存放配置信息,這里創(chuàng)建myboard.h文件:

      通過宏定義配置啟動(dòng)boot地址、串口波特率、Fuses、GPIO、文件系統(tǒng)支持等,添加以下配置選項(xiàng)。

      此外,根據(jù)需要使用的外設(shè)完成配置項(xiàng),表示使用該外設(shè),如以太網(wǎng)、MMC、I2C、USB等,也包括U-Boot默認(rèn)環(huán)境變量的定義,添加如以下配置選項(xiàng):

      3)根據(jù)CPU架構(gòu),在arch/各級(jí)目錄下(表1)Kconfig文件中添加目標(biāo)板配置信息,arch/下Kconfig中添加CPU和目標(biāo)板配置信息、設(shè)備信息和編譯頭文件名稱,并將第一級(jí)配置信息名稱添加到defconfig文件中,常用配置關(guān)鍵字如表2所示。

      表2 Kconfig關(guān)鍵字

      根據(jù)本文芯片架構(gòu),調(diào)用ARMv8目錄的所有程序,以及設(shè)備驅(qū)動(dòng)模型程序,添加配置信息如下:config TARGET_MYBOARD

      4)在configs/目錄下新建defconfig配置文件,存放各級(jí)Kconfig的具體配置:

      myboard_defconfig文件中配置項(xiàng)用于確定Kconfig中哪些配置項(xiàng)被激活,即最終編譯哪些文件,本文采用芯片基于ARM架構(gòu),并已構(gòu)建目標(biāo)板配置文件myboard.h,以及在arch/Kconfig中完成配置信息聲明,如使用新添加的

      3 實(shí)驗(yàn)驗(yàn)證

      完成移植后,根目錄下執(zhí)行命令配置編譯目標(biāo)設(shè)備并開始編譯:

      通過交叉編譯環(huán)境完成U-Boot鏡像編譯后,使用燒錄工具將鏡像燒錄到SD卡中。如圖4所示,編譯生成的u-boot.bin為燒錄所需的鏡像文件,一般芯片啟動(dòng)會(huì)需要如校驗(yàn)等具有固定格式數(shù)據(jù)信息,所以只燒錄u-boot.bin通常無法成功啟動(dòng)U-Boot。根據(jù)芯片手冊(cè)定義的芯片啟動(dòng)數(shù)據(jù)格式,將數(shù)據(jù)按格式要求添加到SD卡中,保證SD卡燒錄的所有數(shù)據(jù)能夠正確啟動(dòng)芯片。

      圖4 U-Boot編譯結(jié)果

      燒錄鏡像前通過fdisk命令對(duì)SD卡分區(qū),并通過mkfs.vfat命令格式化分區(qū)。本文通過dd命令將鏡像拷貝到SD卡中,根據(jù)芯片啟動(dòng)流程及數(shù)據(jù)格式,設(shè)置參數(shù)以確定數(shù)據(jù)寫入位置。

      通過SD卡啟動(dòng)目標(biāo)板中,根據(jù)CPU啟動(dòng)流程,內(nèi)部ROM執(zhí)行初始化后會(huì)完成自拷貝,通過將SD卡指定位置的數(shù)據(jù)拷貝到RAM中執(zhí)行,后續(xù)程序開始執(zhí)行,測(cè)試U-Boot系統(tǒng)開始運(yùn)行,如圖5所示。

      圖5 U-Boot啟動(dòng)運(yùn)行界面

      本文通過U-Boot能否加載系統(tǒng)內(nèi)核并掛載文件系統(tǒng)測(cè)試移植是否成功,采用內(nèi)核版本為L(zhǎng)inux Kernel4.1.15。如圖6所示,通過設(shè)置U-Boot環(huán)境變量參數(shù),通過nfs服務(wù)遠(yuǎn)程加載PC服務(wù)端內(nèi)核鏡像及根文件系統(tǒng)文件,能夠成功啟動(dòng)操作系統(tǒng)。

      圖6 U-Boot引導(dǎo)啟動(dòng)操作系統(tǒng)

      圖6中所示,通過U-Boot命令設(shè)置環(huán)境變量可指定系統(tǒng)內(nèi)核啟動(dòng)位置,由于本文通過nfs服務(wù)從上位機(jī)加載內(nèi)核及文件系統(tǒng),所以需要設(shè)置網(wǎng)絡(luò)IP地址等信息,如本文設(shè)置IP采用以下命令。

      4 結(jié)論

      綜上,U-Boot減少了芯片及目標(biāo)板適配的難度及周期,達(dá)到了快速移植操作系統(tǒng)的目的,其靈活性和易用性提高了開發(fā)效率。此外,移植U-Boot需要對(duì)SoC芯片的啟動(dòng)流程及U-Boot軟件架構(gòu)有清晰的理解和掌握,這對(duì)理解操作系統(tǒng)原理也具有參考意義和價(jià)值。

      猜你喜歡
      內(nèi)核架構(gòu)啟動(dòng)
      基于FPGA的RNN硬件加速架構(gòu)
      萬物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      群眾路線是百年大黨成功之內(nèi)核性制度因素的外在表達(dá)
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實(shí)踐
      汽車工程(2021年12期)2021-03-08 02:34:30
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      霧霾來襲 限產(chǎn)再次啟動(dòng)
      LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
      安發(fā)生物啟動(dòng)2017
      一種基于FPGA+ARM架構(gòu)的μPMU實(shí)現(xiàn)
      泾阳县| 南投县| 洛隆县| 册亨县| 府谷县| 合江县| 唐山市| 靖边县| 普安县| 东乡县| 济南市| 黄平县| 中方县| 汕头市| 镇原县| 大同市| 来安县| 济源市| 余姚市| 兖州市| 南丹县| 裕民县| 扬州市| 兴山县| 崇阳县| 花垣县| 井研县| 雅安市| 灵川县| 原阳县| 丽江市| 荣昌县| 祁东县| 灵山县| 五河县| 闻喜县| 长白| 砚山县| 奉节县| 漠河县| 合作市|