NanoPi NEO Plus2開發環境搭建


1、前言

NanoPi NEO Plus2是友善電子推出的一款非常小巧精致的開源硬件,該開源硬件的CPU是基於Allwinner公司的64位四核ARM Cortex-A53處理器H5,並且內置了六核Mail450 GPU,該開源硬件集成了1GB DDR3內存,標配8GB eMMC高速閃存,板載了WiFi藍牙模塊和以太網接口等,支持從Mico SD卡啟動運行系統。

對於該開源硬件的更多詳細信息可參考下面鏈接:

http://www.arm9.net/nanopi-neo-plus2.asp

接下來欣賞一下板子的布局圖和接口示意圖:

 

接下來是引腳接口圖:

 

更多關於NanoPi NEO Plus2開源硬件的資料,可去官方Wiki頁面查看。

 

2、Linux系統燒寫

先准備好一張高速的TF卡以及一個讀卡器,還有給開發板供電的電源適配器,電源需要5V/2A輸出,接下來介紹如何將官方提供的固件燒寫到TF卡里面,有兩種方法如下:

(1)Windows下使用燒寫工具

在Windows下可以使用燒寫工具Win32 Disk Imager軟件進行燒寫,先准備好友善官方提供好的固件,對其解壓,例如固件:

nanopi-neo-plus2_sd_friendlycore-xenial_4.14_arm64_20190918.img.zip

上面給出的文件是基於Ubuntu Core構建的系統固件,固件是基於Linux-4.14內核,對其固件解壓后,打開軟件進行燒寫:

在軟件上面選擇好TF卡的盤符,然后選擇要燒寫的固件,點擊Write按鈕進行燒寫:

 

燒寫成功后如下所示:

 

 (2)Linux系統下使用dd命令

首先在Linux終端下解壓鏡像:

$ unzip nanopi-neo-plus2_sd_friendlycore-xenial_4.14_arm64_20190918.img.zip

將TF卡插入到Linux系統上,使用df命令查看哪些設備已經掛載:

$ df -h

 

由此可見插入的TF卡設備名稱為/dev/sdc1,只有一個分區,為了防止在寫入鏡像時,有其它讀取或寫入,需要將掛載的設備進行卸載:

$ umount /dev/sdc1

然后使用dd命令將鏡像進行寫入:

$ sudo dd bs=4M if=nanopi-neo-plus2_sd_friendlycore-xenial_4.14_arm64_20190918.img \
of=/dev/sdc

在上面的命令中bs代表一次寫入多大的塊,bs是blocksize的縮寫,if參數后面是鏡像的路徑,of參數后面為寫入的設備。

燒寫完成后,將產生boot分區和根文件系統分區,分區內容如下:

 

最后,將TF卡插入到NanoPi NEO Plus2的Mico SD卡接口,使用USB轉串口工具將開發板的Debug串口和PC的USB接口進行連接,打開串口終端軟件,將開發板進行上電登入到系統。

登入界面如下所示:

 

成功登入系統后,便可以進行這個小玩具的開發了。

 

3、開發環境搭建

(1)安裝交叉編譯工具鏈

先在官方提供的地址內下載交叉編譯工具鏈,然后解壓編譯器:

$ mkdir ~/FriendlyARM/toolchain -p
$ mv gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz ~/FriendlyARM/toolchain/
$ cd ~/FriendlyARM/toolchain
$ tar -xf gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz

將交叉編譯工具鏈的路徑添加到用戶的環境變量中:

$ vim ~/.bashrc

在文件最后添加如下:

 

使用下面的命令讓其環境變量馬上生效:

$ source ~/.bashrc

最后,查看交叉編譯工具鏈版本,檢查是否安裝成功:

$ aarch64-linux-gnu-gcc -v

輸出結果如下,說明安裝成功:

 

(2)編譯u-boot

在上面中,已經安裝好了交叉編譯工具鏈,接下來簡單介紹如何進行u-boot編譯:

先安裝一些軟件依賴:

$ sudo apt-get install swig python-dev python3-dev device-tree-compiler

使用git對u-boot源碼下載,並切換到對應的分支:

$ git clone git@github.com:Cqlismy/u-boot.git -b sunxi-v2017.x --depth 1

開始編譯u-boot源碼:

$ cd u-boot/
$ make nanopi_h5_defconfig CROSS_COMPILE=aarch64-linux-gnu-
$ make CROSS_COMPILE=aarch64-linux-gnu-

編譯完成后輸出結果如下:

 

在u-boot源碼的spl目錄將生成需要的文件sunxi-spl.bin,在源碼根目錄生成u-boot.itb文件,使用dd命令可更新TF卡上的u-boot,如下:

將TF卡插入到Linux系統后,執行下面命令:

$ cd u-boot
$ dd if=spl/sunxi-spl.bin of=/dev/sdX bs=1024 seek=8
$ dd if=u-boot.itb of=/dev/sdX bs=1024 seek=40

對於/dev/sdX為TF卡上的啟動分區。

(3)編譯kernel:

首先下載Linux內核源碼,並切換到對應的分支:

$ git clone git@github.com:Cqlismy/linux.git -b sunxi-4.14.y --depth 1

接下來開始編譯內核源碼:

$ cd linux/
$ touch .scmversion
$ make sunxi_arm64_defconfig ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

編譯成功后如下所示:

 

將會在源碼的arch/arm64/boot目錄下生成需要的Image鏡像文件,在arch/arm64/boot/dts/allwinner目錄下生成dtb文件。

假設TF卡的boot分區掛載在/media/SD/boot,可以使用下面命令更新鏡像文件和設備樹:

$ cd linux
$ cp arch/arm64/boot/Image /media/SD/boot
$ cp arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi*.dtb /media/SD/boot

另外,假設NanoPi NEO Plus2已經通過WiFi或者以太網接口接入網絡,可以在Linux宿主機中通過scp命令進行設備樹二進制文件和內核鏡像更新:

$ cd linux
$ scp arch/arm64/boot/Image root@192.168.137.162:/boot
$ scp arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi*.dtb root@192.168.137.162:/boot

 需要注意的是,在使用scp命令進行文件傳輸時,將會提示要求輸入NanoPi開發板root用戶的密碼,輸入fa,然后回車即可。 

如果想編譯和更新驅動模塊的話,可以使用下面命令:

$ cd linux
$ make modules ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

當TF卡的rootfs分區掛載在/media/SD/rootfs時,使用下面命令更新rootfs的驅動模塊:

$ make modules_install INSTALL_MOD_PATH=/media/SD/rootfs ARCH=arm64 \
CROSS_COMPILE=aarch64-linux-gnu-

 

4、小節

本文主要簡單地介紹了NanoPi NEO Plus2這款開源硬件,以及簡單介紹了開發這個小玩具之前所要搭建的一些開發環境。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM