• 
    

    
    

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

      ?

      Hi3559處理器Ubuntu系統(tǒng)適配

      2022-05-09 01:05:45李博劉作龍錢軍琪呂民強(qiáng)蒲駿偉
      中國新通信 2022年5期

      李博 劉作龍 錢軍琪 呂民強(qiáng) 蒲駿偉

      【摘要】? ? 本文介紹了海思Hi3559AV100處理器運(yùn)行Ubuntu Linux系統(tǒng)的適配過程,適配過程可分為內(nèi)核適配,根文件系統(tǒng)適配,系統(tǒng)固化三個(gè)步驟。在Hi3559AV100平臺(tái)中適配Ubuntu系統(tǒng),可以利用Ubuntu成熟的軟件生態(tài)提升系統(tǒng)配置的靈活性,滿足更多應(yīng)用場(chǎng)景的需求。

      【關(guān)鍵詞】? ? Ubuntu Linux? ? Linux內(nèi)核? ? 根文件系統(tǒng)

      引言:

      隨著嵌入式硬件性能的不斷提升,采用arm64架構(gòu)的處理器已逐步可以滿足Linux發(fā)行版的基本運(yùn)行需求。部分Linux發(fā)行版如Ubuntu,也提供了arm64版本的系統(tǒng),本文詳細(xì)描述了在海思的Hi3559AV100處理器運(yùn)行Ubuntu系統(tǒng)的適配過程。在嵌入式平臺(tái)中使用Ubuntu,可以利用Ubuntu成熟的軟件包管理功能及豐富的軟件包資源,提升系統(tǒng)配置的靈活性,滿足更多應(yīng)用場(chǎng)景的需求。

      一、硬件平臺(tái)

      本文使用基于Hi3559AV100的開發(fā)板作為硬件平臺(tái)進(jìn)行Ubuntu系統(tǒng)適配。Hi3559AV100是海思公司推出的專業(yè)的相機(jī)SOC,使用先進(jìn)低功耗工藝和架構(gòu)設(shè)計(jì),集成了雙核A73和雙核A53的大小核架構(gòu)[1]。A73和A53均為arm64架構(gòu)的處理器核心,可支持arm64架構(gòu)的Ubuntu系統(tǒng)運(yùn)行。

      Hi3559AV100開發(fā)板主要包括以下硬件資源:1. Hi3559AV100處理器一片;2. 4GB容量DDR4內(nèi)存;3. 8GB容量eMMC存儲(chǔ);4. 1個(gè)RS232調(diào)試串口;5. 1 個(gè)RJ45 網(wǎng)絡(luò)接口。

      二、Ubuntu系統(tǒng)

      Ubuntu Linux基于Debian Linux的unstable版本發(fā)展而來,使用了debian系列的deb格式軟件包及apt軟件包管理工具。Ubuntu的出現(xiàn)提升了Linux發(fā)行版的易用性,造就了龐大的用戶群體及活躍的社區(qū),目前在桌面領(lǐng)域及服務(wù)器領(lǐng)域份額已成為L(zhǎng)inux發(fā)行版的領(lǐng)頭羊,在云計(jì)算等領(lǐng)域也提供了相應(yīng)的解決方案并得到了廣泛應(yīng)用。隨著ARM生態(tài)的不斷發(fā)展,arm64架構(gòu)的CPU在性能上已經(jīng)可以勝任Ubuntu發(fā)行版的運(yùn)行需求,目前許多arm64架構(gòu)的處理器廠商都已經(jīng)為其開發(fā)板提供了官方的Ubuntu的適配,例如,Xilinx公司的Ultrascale+開發(fā)板以及著名的樹莓派平臺(tái)均為開發(fā)者提供了預(yù)裝的Ubuntu系統(tǒng)。Ubuntu也提供了其各主要版本的arm64系統(tǒng)下載鏈接。arm64架構(gòu)下,Ubuntu僅提供其根文件系統(tǒng),Linux內(nèi)核由用戶針對(duì)其具體處理器及板級(jí)進(jìn)行適配。本文描述針對(duì)Hi3559AV100處理器適配arm64版本的Ubuntu16.04系統(tǒng)。

      三、適配過程

      海思官方提供Hi3559AV100開發(fā)SDK,其中包含適配Hi3559AV100開發(fā)板的u-boot、Linux內(nèi)核、根文件系統(tǒng)及開發(fā)用的軟件框架和實(shí)例程序。SDK中,Linux內(nèi)核的默認(rèn)配置可支持SDK中的根文件系統(tǒng),但無法支持Ubuntu系統(tǒng)的運(yùn)行,因此需要修改內(nèi)核配置,編譯,生成支持Ubuntu的內(nèi)核鏡像。得到可支持Ubuntu系統(tǒng)啟動(dòng)的內(nèi)核鏡像后,可進(jìn)一步修改根文件系統(tǒng),滿足使用需求,并生成固化用的文件系統(tǒng)鏡像,并最終固化至開發(fā)板,完成適配過程。

      (一)環(huán)境準(zhǔn)備

      適配前需搭建如圖1所示的開發(fā)環(huán)境,開發(fā)主機(jī)環(huán)境為一臺(tái)安裝Ubuntu系統(tǒng)的PC機(jī),按照文檔[2]安裝SDK并搭建了完整的開發(fā)環(huán)境,建立了有效的tftp服務(wù)器及NFS服務(wù)器環(huán)境。從Ubuntu下載鏈接下載的Ubuntu16.04系統(tǒng)的arm64版本壓縮包解壓至開發(fā)主機(jī)環(huán)境的NFS路徑下。開發(fā)板和開發(fā)主機(jī)通過以太網(wǎng)和串口連接,在開發(fā)調(diào)試階段,開發(fā)板上運(yùn)行Linux內(nèi)核存儲(chǔ)在開發(fā)主機(jī)端的tftp目錄中,通過網(wǎng)絡(luò)文件系統(tǒng)NFS掛載存儲(chǔ)于開發(fā)主機(jī)端NFS目錄中的Ubuntu系統(tǒng)。

      (二)內(nèi)核適配

      通過實(shí)際測(cè)試,SDK安裝完成后,其內(nèi)核版本為4.9,默認(rèn)的配置不支持Ubuntu系統(tǒng)的啟動(dòng),需修改內(nèi)核配置,在Linux內(nèi)核源碼路徑下輸入如下命令打開Linux內(nèi)核配置操作界面:

      make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig

      在調(diào)試階段,Ubuntu系統(tǒng)部署在了開發(fā)機(jī)中,Hi3559開發(fā)板需通過NFS掛載根文件系統(tǒng),默認(rèn)的內(nèi)核配置不支持根文件系統(tǒng)的NFS的方式掛載,因此首先配置內(nèi)核的網(wǎng)絡(luò)部分和文件系統(tǒng)部分,開啟內(nèi)核對(duì)根文件系統(tǒng)的NFS的方式掛載的支持,如圖2、圖3所示。

      SDK中根文件系統(tǒng)中設(shè)置了基本的設(shè)備節(jié)點(diǎn),確保了啟動(dòng)時(shí)/dev路徑下具備基本的設(shè)備節(jié)點(diǎn)。Ubuntu使用udev機(jī)制,因而Ubuntu中/dev路徑默認(rèn)為空,為保證系統(tǒng)啟動(dòng)時(shí)具備基本的設(shè)備節(jié)點(diǎn),需配置內(nèi)核中的/dev/tmpfs選項(xiàng),使得內(nèi)核啟動(dòng)后自行創(chuàng)建基本的/dev下的設(shè)備節(jié)點(diǎn),如圖4所示。

      Linux系統(tǒng)中,根文件系統(tǒng)掛載后,內(nèi)核在根文件系統(tǒng)中尋找并執(zhí)行init程序,開啟系統(tǒng)的初始化,SDK提供的根文件系統(tǒng)使用的是Sysvinit,而Ubuntu使用了功能更為強(qiáng)大的systemd,systemd需要使用內(nèi)核的cgroups機(jī)制,因此需配置內(nèi)核中cgroups相關(guān)選項(xiàng),如圖5,圖6所示。

      配置完成后,保存配置并退出,使用如下命令編譯Linux內(nèi)核:

      make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- uImage

      編譯完成后就生成了內(nèi)核文件uImage,Hi3559平臺(tái)下,要獲得可從u-boot引導(dǎo)啟動(dòng)的Linux內(nèi)核文件,還需使用SDK中的arm-trusted-firmware工具生成ATF+Kernel的鏡像文件fip.bin,該鏡像文件fip.bin可被Hi3559的u-boot正確啟動(dòng)。

      編譯內(nèi)核后還需編譯內(nèi)核模塊并安裝至NFS路徑下的Ubuntu文件系統(tǒng)中:

      make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- modules

      make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux-? \

      INSTALL_MOD_PATH=/nfs/ubuntu? modules_install

      編譯內(nèi)核后還需編譯內(nèi)核模塊并安裝后,NFS路徑中的Ubuntu系統(tǒng)可正確被內(nèi)核啟動(dòng)掛載,由于內(nèi)核模塊安裝時(shí)自動(dòng)設(shè)置了依賴關(guān)系,因此啟動(dòng)后內(nèi)核模塊將你被系統(tǒng)自動(dòng)加載。

      (三)根文件系統(tǒng)適配

      目標(biāo)機(jī)通過NFS網(wǎng)絡(luò)文件系統(tǒng)掛載運(yùn)行Ubuntu系統(tǒng),由于Ubuntu系統(tǒng)功能眾多,較為龐大,因此本文采用Ubuntu提供的最小化的base[3]系統(tǒng)作為Hi3559AV100適配Ubuntu的基礎(chǔ)根文件系統(tǒng)。Ubuntu base僅提供了最小化的系統(tǒng)能力,其他功能可通過聯(lián)網(wǎng)安裝獲取,因此需在開發(fā)環(huán)境中對(duì)Ubuntu根文件系統(tǒng)進(jìn)行基礎(chǔ)設(shè)置,通過拷貝開發(fā)環(huán)境主機(jī)Ubuntu中的配置文件來更換NFS中Ubuntu系統(tǒng)的軟件源配置,用戶名密碼配置等,隨后即可啟動(dòng)系統(tǒng)。在系統(tǒng)正常啟動(dòng)后,使用軟件包管理工具apt安裝所需的軟件滿足實(shí)際使用需求,如net-tools,kmod等,如需編譯器可安裝gcc,g++等。

      在開發(fā)板上啟動(dòng)配置好的內(nèi)核,通過NFS掛載Ubuntu系統(tǒng),步驟如下:

      1.啟動(dòng)開發(fā)板,在u-boot出現(xiàn)shell提示符時(shí)在串口終端輸入任意按鍵,打斷默認(rèn)啟動(dòng),修改啟動(dòng)參數(shù)如下:

      setenv bootargs “mem=2048M console=ttyAMA0,115200 noinitrd root=/dev/nfs rw \

      nfsroot=192.168.0.100:/nfs/ubuntu,proto=tcp,nfsvers=3,nolock \

      ip=192.168.0.120:192.168.0.100:192.168.0.1:255.255.255.0 \

      blkdevparts=mmcblk0:1M(u-boot.bin),15M(kernel),7000M(rootfs)”

      setenv bootcmd ”tftp 41000000 fip.bin;bootm 41000000”

      按照上述命令設(shè)置bootargs參數(shù),可配置內(nèi)核啟動(dòng)時(shí)以NFS的方式掛載根文件系統(tǒng),根文件系統(tǒng)位于ip地址為192.168.0.100的主機(jī)的/nfs/ubuntu路徑下,并指定了開發(fā)板的ip地址為192.168.0.120。設(shè)置blkdevparts的目的在于告訴內(nèi)核開發(fā)板的emmc芯片分區(qū)按照1M,15M,7000M劃分為3個(gè)分區(qū)。

      2.在u-boot的shell中輸入boot命令,u-boot將根據(jù)配置先從tftp加載fip.bin文件至內(nèi)存的0x4100000地址,隨后從0x41000000地址啟動(dòng)Linux內(nèi)核。

      3. Linux內(nèi)核啟動(dòng)后將按照bootargs的設(shè)置,掛載NFS中的Ubuntu根文件系統(tǒng),掛載成功后,Ubuntu中的systemd啟動(dòng),初始化系統(tǒng),當(dāng)出現(xiàn)登陸提示符時(shí),代表Ubuntu啟動(dòng)完成。

      Ubuntu系統(tǒng)啟動(dòng)完成后,可以使用先前配置的用戶名及密碼登錄系統(tǒng),并使用apt工具安裝需要的軟件包,并進(jìn)行相應(yīng)的系統(tǒng)功能測(cè)試,系統(tǒng)功能可滿足需求則根文件系統(tǒng)適配完成。

      (四)系統(tǒng)固化

      系統(tǒng)固化指將內(nèi)核鏡像及Ubuntu根文件系統(tǒng)部署至開發(fā)板的emmc芯片內(nèi),可以脫離開發(fā)環(huán)境的tftp+NFS啟動(dòng)系統(tǒng)的過程。

      存放在開發(fā)環(huán)境主機(jī)中NFS路徑下的Ubuntu根文件系統(tǒng),可在主機(jī)端使用Linux中的tar工具進(jìn)行打包,隨后燒寫至eMMC 分區(qū)中。燒寫固化流程如下:

      1.啟動(dòng)開發(fā)板,在u-boot出現(xiàn)提示符時(shí)在串口終端輸入,打斷默認(rèn)啟動(dòng),隨后在u-boot的shell中執(zhí)行如下命令:

      mw.b 0x42000000 0xff 0xf00000

      tftp 0x42000000 fip.bin

      mmc write 0 0x42000000 0x800 0x7800

      將Linux內(nèi)核鏡像文件下載至0x42000000,并燒寫如emmc中。

      2.固化文件系統(tǒng),在燒寫內(nèi)核完成后,通過燒入的內(nèi)核鏡像文件啟動(dòng),此時(shí)仍需掛載NFS,設(shè)置參數(shù)如下:

      setenv bootargs “mem=2048M console=ttyAMA0,115200 noinitrd root=/dev/nfs rw \

      nfsroot=192.168.0.100:/nfs/ubuntu,proto=tcp,nfsvers=3,nolock \

      ip=192.168.0.120:192.168.0.100:192.168.0.1:255.255.255.0 \

      blkdevparts=mmcblk0:1M(u-boot.bin),15M(kernel),7000M(rootfs)”

      setenv bootcmd ”mmc read 0 41000000; bootm 41000000”

      隨后輸入boot啟動(dòng)系統(tǒng)。系統(tǒng)啟動(dòng)后先格式化emmc的第三分區(qū):

      mkfs.ext4? /dev/mmcblk01p3

      格式化后掛載該分區(qū)至/mnt路徑:

      mount /dev/mmcblk01p3 /mnt

      隨后將使用tar命令打包的Ubuntu系統(tǒng)解壓至/mnt路徑

      tar xvf ubuntu.tar -C /mnt

      解壓完成后,使用sync命令,確保文件寫入emmc中,至此根文件系統(tǒng)燒寫部署完成,可重啟開發(fā)板,設(shè)置啟動(dòng)參數(shù)。

      3.設(shè)置啟動(dòng)參數(shù)。重啟開發(fā)板,在u-boot出現(xiàn)shell提示符時(shí)在串口終端輸入任意按鍵,打斷默認(rèn)啟動(dòng),修改啟動(dòng)參數(shù)如下:

      setenv bootargs “mem=2048M console=ttyAMA0, 115200 noinitrd root=/dev/mmcblk01p3 \

      rootfstype=ext4 rw ip=192.168.0.120 blkdevparts=mmcblk0:1M(u-boot.bin),15M(kernel), \

      7000M(rootfs)”

      setenv bootcmd ”mmc read 0 41000000; bootm 41000000”

      隨后輸入saveenv保存設(shè)置,至此系統(tǒng)固化完成,重新啟動(dòng)開發(fā)板后,將自動(dòng)從emmc中加載Linux內(nèi)核鏡像,并啟動(dòng)emmc中的Ubuntu系統(tǒng)。與傳統(tǒng)嵌入式Linux難以靈活擴(kuò)展功能不同,Linux發(fā)行版系統(tǒng)以軟件源的方式提供了豐富的軟件生態(tài),系統(tǒng)啟動(dòng)并登陸后,可以使用apt工具依據(jù)實(shí)際需求,安裝需要的軟件組件,支持豐富的應(yīng)用場(chǎng)景。

      四、結(jié)束語

      本文指出了Linux發(fā)行版Ubuntu應(yīng)用于嵌入式環(huán)境的方法,并在Hi3559開發(fā)板進(jìn)行了驗(yàn)證。隨著嵌入式硬件平臺(tái)性能的不斷提升,Linux發(fā)行版作為使用廣泛,便于擴(kuò)展定制的基礎(chǔ)系統(tǒng)平臺(tái)必將更加廣泛的應(yīng)用與嵌入式場(chǎng)景,為嵌入式開發(fā)者提供更好的系統(tǒng)通用性、靈活性,更適用于未來物聯(lián)網(wǎng)行業(yè)的開發(fā)及部署,提升應(yīng)用的開發(fā)效率,縮短研發(fā)周期,使嵌入式產(chǎn)品更具競(jìng)爭(zhēng)力。

      參? 考? 文? 獻(xiàn)

      [1] Hi3559A/C V100用戶指南

      [2] Hi3559A/C V100開發(fā)環(huán)境用戶指南

      [3] https://wiki.ubuntu.com/Base

      李博(1988.06-),男,漢族,陜西銅川,碩士研究生,工程師,研究方向:Linux操作系統(tǒng)。

      浦东新区| 龙江县| 五指山市| 诏安县| 万载县| 闽侯县| 容城县| 孝感市| 原平市| 洛南县| 永嘉县| 屏东市| 舒城县| 洛南县| 博兴县| 敖汉旗| 辛集市| 铜陵市| 南京市| 萝北县| 高雄市| 上杭县| 高安市| 桐柏县| 韶关市| 密山市| 乌兰察布市| 即墨市| 普宁市| 胶州市| 靖远县| 咸阳市| 阿坝县| 云浮市| 长武县| 丹巴县| 沁水县| 廉江市| 黔东| 万安县| 隆德县|