一、開發(fā)環(huán)境搭建
0.準(zhǔn)備工作
安裝vim:
sudo apt-get install vim
安裝git工具
sudo apt-get install git
1.交叉編譯工具鏈安裝
對(duì)于F1C200S,使用的交叉工具鏈必須高于,使用的交叉工具鏈必須高于6.0。
本文選擇7.2.1進(jìn)行u-boot和kernel的編譯。
官網(wǎng)下載鏈接:https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz
下載后解壓
tar -vxjf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz
或右鍵提取
在/usr/local目錄下新建arm-linux-gcc目錄
sudo mkdir /usr/local/arm-linux-gcc
進(jìn)入解壓目錄下:
cd gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/
將該目錄下 的所有文件復(fù)制到新建的目錄下:
sudo cp -rd * /usr/local/arm-linux-gcc/
最后需要添加該工具鏈的環(huán)境變量使其可以在任何目錄下執(zhí)行,打開/etc/profile文件
sudo vim /etc/profile
在文件末尾 添加以下內(nèi)容
PATH=$PATH:/usr/local/arm-linux-gcc/bin
添加完畢,使路徑生效
source /etc/profile
驗(yàn)證:
arm-linux-gnueabi-gcc -v
安裝32位動(dòng)態(tài)鏈接庫(kù)
為了后續(xù)移植Linux系統(tǒng)中出現(xiàn)庫(kù)缺失問題,這里可以一次系統(tǒng)中出現(xiàn)庫(kù)缺失問題,這里可以一次性將可能需要的庫(kù)全部安裝,執(zhí)行如下命令即。
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev gcc-multilib x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev g++-multilib tofrodos python-markdown libxml2-utils libssl-dev swig python-dev
2. u-boot移植
這里采用licheePI nano的u-boot來進(jìn)行移植。在終端輸入如下命令克隆u-boot:
git clone https://github.com/Lichee-Pi/u-boot.git -b nano-v2018.01
克隆完畢文件會(huì)保存在當(dāng)前目錄 下,進(jìn)入該目錄
cd u-boot
在該文件夾下有很多分支,我們可以查看所使用如命令:
git branch -a
現(xiàn)在我們使用的是nano開發(fā)板,所以將當(dāng)前分支切換到nano分支,命令如下:
git checkout nano-v2018.01
或者直接下載切換到分支下載zip
u-boot默認(rèn)的沒有指定交叉工具鏈和架構(gòu),因此在編譯之前需要芯片默認(rèn)的沒有指定交叉工具鏈和架構(gòu),因此在編譯之前需要芯片u-boot的交叉編譯器在u-boot的根目錄下中Makefile文件中定義了。打開文件中定義了。打開Makefile文件。
將# set default to nothing for native builds下面改為
ARCH=arm
CROSS_COMPILE=arm-linux-gnueabi-
config文件夾中有
licheepi_nano_defconfig和licheepi_nano_spiflash_defconfig配置文件
前者表示為,前者表示為TF卡啟動(dòng),后者表卡啟動(dòng),后者表示從SPI設(shè)備啟動(dòng),這里使用前者。
下一步:
cd ..
make licheepi_nano_defconfig
配置完成后就可以進(jìn)入圖形界面行了,執(zhí)make menuconfig命令:
make menuconfig
更改bootcmd
load mmc 0:1 0x80008000 zImage;
load mmc 0:1 0x80c08000 suniv-f1c100s-licheepi-nano.dtb;
bootz 0x80008000 - 0x80c08000;
傳參bootarg
Y 選中 Enable boot arguments
下面一行Enter輸入?yún)?shù)
console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw
編譯u-boot
make -j2
編譯生成
u-boot-sunxi-with-spl.bin
3. kernel 移植
下載kernel
https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.7.1.tar.gz
修改主目錄Makefile
ARCH ?=arm
CROSS_COMPILE ?=arm-linux-gnueabi-
下載licheepi_nano的配置文件
linux-licheepi_nano_defconfig文件;鏈接:
http://dl.sipeed.com/LICHEE/Nano/SDK/config
然后將其放到arch/arm/configs/目錄下
回到主目錄,
make linux-licheepi_nano_defconfig
編譯
make -j2
編譯完畢后在就會(huì)生成zImage文件和dtb文件,zImage在arch/arm/boot目錄下,dtb在arch/arm/boot/dts目錄下目錄下。
4 rootfs移植
安裝buildroot2018.2.11版本 https://buildroot.org/downloads/
make clean
make menuconfig
進(jìn)入Target options
圖框中指定了編譯時(shí)使用的庫(kù)類型,我們這里選擇(both static and shared)選項(xiàng),即同時(shí)使用靜態(tài)庫(kù)和動(dòng)庫(kù)。剩下的我們使用默認(rèn)即可,將光標(biāo)移動(dòng)到上,然后按Enter保存。
保存后,回到上一級(jí)配置界面然進(jìn)入第三個(gè)Toolchain選項(xiàng),配置如圖選項(xiàng),配置如圖:
黃色框中的選項(xiàng)盡可能勾,因?yàn)楹竺嬉浦睶T5的時(shí)候需要用到C++相關(guān)庫(kù),如果這里沒有勾選QT5選型將無法勾選。
第四個(gè) System configuration配置如圖:
更改啟動(dòng)密碼。
編譯完畢后可以在output/images目錄下找到rootfs.tar。
一、 格式化TF卡
1. linux命令行格式化
1.1 找到U盤位置(已掛載)
sudo fdisk -l
如圖,我的在/dev/sdb
1.2 格式化U盤
sudo mkfs -t vfat /dev/sdb
-t 后面是格式化為哪種文件系統(tǒng)格式,vfat就是fat32格式,最后加U盤位置
有時(shí)候被占用了無法格式化,需要先卸載u盤,掛載u盤后會(huì)在/media/user 下找到
使用umount 卸載
2 gparted格式化 刪除分區(qū)
安裝 gparted
sudo apt-get install gparted
右鍵 卸載 刪除 再確認(rèn)
二、 將uboot寫入到sd卡到8k偏移處
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
三、 新建分區(qū)
1 新建BOOT分區(qū),存放linux kernel
2 新建rootfs分區(qū) 存放根文件系統(tǒng)
3 將下列三個(gè)文件拷貝到BOOT分區(qū)
1 boot.scr //看了幾個(gè)教程都沒有提及到這個(gè)問題 要搞清楚 荔枝派自帶
2 zimage 目錄 arch/arm/boot
3 suniv-f1c100s-licheepi-nano.dtb 目錄 arch/arm/boot/dts
//命令
sudo cp boot.scr suniv-f1c100s-licheepi-nano.dtb zImage /media/wd/BOOT -rf
4 將rootfs.tar解壓到rootfs
sudo tar -xvf rootfs.tar -C /media/wd/rootfs
買了一張512M的卡,一鍵下載鏡像后提示card did not respond to voltage select ,unsupported boot device
感覺是卡不行 不知道為啥
有人重新插拔一下就行我的不可以
三、應(yīng)用編譯
驅(qū)動(dòng)開發(fā)過程中有時(shí)候需要編寫簡(jiǎn)單的應(yīng)用測(cè)試程序,由于編譯根文件用的buildroot,所以在編譯應(yīng)用程序也用同樣的交叉工具鏈。
進(jìn)入buildroot主目錄,進(jìn)入output/host/,
在 usr/local 目錄下新建一個(gè) arm-gcc-app 目錄:
sudo mkdir /usr/local/arm-gcc-app
然后將 output/host/目錄下的文件全部拷貝到/usr/local/arm-gcc-app/目錄下:
sudo cp -a ./* /usr/local/arm-gcc-app/
接下來我們添加環(huán)境變量,打開/etc/profile 文件,在末尾添加路徑:
注意: 加export是環(huán)境變量,在/etc/profile加載后別處可以引用。不加就是普通變量了,只能文件內(nèi)用。
驗(yàn)證:在終端中輸入 arm-linux-,然后雙擊 Tab 按鍵,此時(shí)會(huì)出
現(xiàn)如下內(nèi)容:
測(cè)試:
四、工具安裝
1.串口傳輸工具Lrzsz
感謝萬(wàn)能的坑友,我搜索了一下,buildroot中確實(shí)有這個(gè)功能,不需要下載;,找到了它位于這個(gè)目錄中:
Target packages —>
Networking applications —>
[v] lrzsz
勾選之后,編譯,根文件系統(tǒng)中就有這個(gè)工具了。
五、問題記錄
2.第一次進(jìn)入linux,命令號(hào)只顯示#號(hào)
解決 修改/etc/profile
在末尾處 輸入
export PS1='[\u\@\h: \w\a]$'
重啟板子即可
3.慎用空格、TAB
在編寫一個(gè)Makefile工具時(shí),出現(xiàn)Makefile:7: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.這個(gè)問題,
將空格用TAB鍵代替
用vim編輯makefile 錯(cuò)誤的會(huì)現(xiàn)紅色
5. VIM非正常退出
參考鏈接:https://blog.csdn.net/sunsi_10/article/details/78232207
交換文件 “~/.add.py.swp” 已存在! 以只讀方式打開([O]), 直接編輯((E)), 恢復(fù)(?), 刪除交換文件((D)), 退出((Q)),中止((A)):
產(chǎn)生原因:文件的非正常關(guān)閉。
解決辦法:刪除add.py.swp文件,該文件是隱藏文件所以使用la查看,使用語(yǔ)句rm -r add.py.swp刪除該文件,再次打開文件不會(huì)產(chǎn)生該問題。
6 快捷方式目錄
進(jìn)入 /usr/share/applicatoions,找到所需的軟件的快捷方式,拷貝到桌面就可以了。文章來源:http://www.zghlxwxcb.cn/news/detail-644808.html
參考:https://blog.csdn.net/weixin_45881223/article/details/126145992文章來源地址http://www.zghlxwxcb.cn/news/detail-644808.html
到了這里,關(guān)于linux(全志)初始環(huán)境到移植lvgl的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!