Buildroot 龙芯1C支持指南
本文轉(zhuǎn)載自:https://github.com/pengphei/smartloong-sphinx/blob/master/source/cn/loongson1c_buildroot_guide.rst
Buildroot 龍芯1C支持指南
引子:從龍芯1C預(yù)訂拿到板子已經(jīng)很長(zhǎng)一段時(shí)間了,因?yàn)楦鞣N事情,一直讓它呆在角落的冷宮里。昨天,憤而出去騎行,有導(dǎo)航出錯(cuò),入的一片幽靜山林,正能量爆棚,一下午休息,晚上興致上來(lái),看了看龍芯的說(shuō)明,對(duì)rootfs部分的構(gòu)建太過(guò)于麻煩,于是夜深人靜,開(kāi)始折騰,經(jīng)由幾個(gè)小時(shí)鼓搗,終于讓buildroot可以支持龍芯1C-智龍開(kāi)發(fā)板rootfs構(gòu)建。高興之余,覺(jué)得可以將過(guò)程寫(xiě)下來(lái),可以讓大家了解buildroot的構(gòu)建機(jī)制,對(duì)編譯工具鏈選擇,系統(tǒng)包指定,以及最后的文件系統(tǒng)打包等都有一個(gè)細(xì)節(jié)的了解。
關(guān)于智龍開(kāi)發(fā)板
智龍開(kāi)發(fā)板是由 openloongson 開(kāi)源社區(qū)推出的基于龍芯1C處理器的精簡(jiǎn)開(kāi)發(fā)板,提供基礎(chǔ)的硬件接口,包括一路以太網(wǎng)接口,一路USB Host接口,SD卡存儲(chǔ),2x40 pin io擴(kuò)展,外置紐扣電源供電RTC。具體的信息可以參考開(kāi)源龍芯社區(qū)網(wǎng)站和論壇。
龍芯 1C 介紹
龍芯1C芯片是基于LS232處理器核的高性?xún)r(jià)比單芯片系統(tǒng),具備豐富的外設(shè)接口及片上模塊,為開(kāi)發(fā)者提供足夠的計(jì)算能力和多應(yīng)用的連接能力。可應(yīng)用于指紋生物識(shí)別、物聯(lián)傳感等領(lǐng)域。
龍芯1C包含浮點(diǎn)處理單元,可以有效增強(qiáng)系統(tǒng)浮點(diǎn)數(shù)據(jù)處理能力。1C的內(nèi)存接口,支持多種類(lèi)型的內(nèi)存,允許靈活的系統(tǒng)設(shè)計(jì)。支持8-bit SLC NAND或MLC NAND FLASH,提供高容量的存儲(chǔ)擴(kuò)展接口。
龍芯1C的具體用戶(hù)手冊(cè)和數(shù)據(jù)手冊(cè)可以查看?http://www.loongson.cn/product_info.php?id=53?。
要點(diǎn)準(zhǔn)備
龍芯處理器兼容MIPS32指令集,而且官方提供消息,在新的gcc中是對(duì)龍芯各類(lèi)芯片提供主流的支持。那么也就是說(shuō)我們可以通過(guò)MIPS32的GCC編譯工具鏈編譯出能夠支持龍芯1C的可執(zhí)行文件。
目前在開(kāi)源社區(qū)存在兩個(gè)非常廣泛使用的Linux from scratch 開(kāi)發(fā)平臺(tái),即 openWRT 和 Buildroot,兩者都對(duì)MIPS32提供支持。這里我們選擇Buildroot作為基礎(chǔ)工具構(gòu)建適用于龍芯1C的rootfs。
根據(jù)龍芯開(kāi)源社區(qū)或者網(wǎng)上有限的參考資料,智龍開(kāi)發(fā)板使用yaffs2作為根分區(qū)文件系統(tǒng),并且整個(gè)Nand Flash分為三個(gè)分區(qū)。第一個(gè)分區(qū)為內(nèi)核分區(qū),第二個(gè)分區(qū)為根分區(qū),第三個(gè)分區(qū)為數(shù)據(jù)區(qū)。對(duì)應(yīng)的分區(qū)表如下:
# cat /proc/mtd dev: size erasesize name mtd0: 00e00000 00020000 "kernel" mtd1: 06400000 00020000 "os" mtd2: 00e00000 00020000 "data"龍芯使用網(wǎng)絡(luò)燒錄 rootfs 指令如下:
基于?cramfs?文件系統(tǒng)鏡像燒錄指令:
PMON>devcp tftp://192.168.x.xxx/rootfs-cramfs.img /dev/mtd1基于?jffs2?文件系統(tǒng)鏡像燒錄指令:
PMON>devcp tftp://192.168.x.xxx/rootfs-jffs2.img /dev/mtd1基于?yaffs2?文件系統(tǒng)鏡像燒錄指令:
PMON>mtd_erase /dev/mtd1 PMON>devcp tftp://192.168.x.xxx/rootfs-yaffs2.img /dev/mtd1 yaf nw龍芯啟動(dòng)參數(shù)設(shè)置指令如下:
基于?cramfs?文件系統(tǒng)的啟動(dòng)參數(shù)設(shè)置:
PMON>set append 'root=/dev/mtdblock1 console=ttyS2,115200 rootfstype=cramfs video=ls1bfb:480x272-16@70'基于?jffs2?文件系統(tǒng)的啟動(dòng)參數(shù)設(shè)置:
PMON>set append 'root=/dev/mtdblock1 console=ttyS2,115200 rootfstype=jffs2 video=ls1bfb:480x272-16@70'基于?yaffs2?文件系統(tǒng)的啟動(dòng)參數(shù)設(shè)置:
set append 'root=/dev/mtdblock1 console=ttyS2,115200 rootfstype=yaffs2 video=ls1bfb:480x272-16@70'PMON 中的系統(tǒng)重啟指令:
PMON>reboot龍芯的根文件系統(tǒng)打包方法:
基于?cramfs?文件系統(tǒng)打包:
mkcramfs /root/rootfs rootfs-cramfs.img chmod 777 rootfs-cramfs.img# 或者自帶工具 mkfs.cramfs /root/rootfs rootfs-cramfs.img chmod 777 rootfs-cramfs.imgNote
使用 chmod 777 rootfs-cramfs.img 修改文件系統(tǒng)權(quán)限,是為了防止出現(xiàn)無(wú)法燒寫(xiě)的情況。
基于?jffs2?文件系統(tǒng)打包:
mkfs.jffs2 -r /root/rootfs -o rootfs-jffs2.img -e 0x20000 --pad=0x2000000 -n chmod 777 rootfs-jffs2.img基于?yaffs2?文件系統(tǒng)打包:
mkyaffs2image /root/rootfs rootfs-yaffs2.img chmod 777 rootfs-yaffs2.imgNote
這里需要注意的是,打包 yaffs2 文件系統(tǒng)鏡像所使用的命令為?mkyaffs2image?而不是 Buildroot 中默認(rèn)打包 yaffs2 的?mkyaffs2?指令。兩者由不同的軟件包生成,命令也不相同。
Buildroot MIPS 構(gòu)建
在拿到智龍開(kāi)發(fā)板,并了解了上面的準(zhǔn)備工作,就可以開(kāi)始 MIPS 版本的 Buildroot 構(gòu)建。目前使用的 Buildroot 來(lái)自于 buildroot 的?github 開(kāi)發(fā)版本。構(gòu)建更多詳細(xì)信息可以參考它的?操作手冊(cè)。
獲取 Buildroot 源碼
git clone https://github.com/pengphei/buildroot.git安裝準(zhǔn)備軟件
buildroot 的構(gòu)建需要依賴(lài)以下軟件或者庫(kù):
- which
- sed
- make (3.81及以上版本)
- binutils
- build-essential (僅用于Debian衍生版本)
- gcc (2.95及以上版本)
- g++ (2.95及以上版本)
- bash
- patch
- gzip
- bzip2
- perl (5.8.7及以上版本)
- tar
- cpio
- python (2.6及以上版本)
- unzip
- rsync
- wget
- ncurses5 (用于 menuconfig 命令行配置界面)
- qt4 (用于 xconfig 配置界面)
- glib2, gtk2, glade2 (用于 gconfig 配置界面)
- 其他的配置,需要根據(jù)構(gòu)建過(guò)程中的問(wèn)題,相應(yīng)進(jìn)行添加。
系統(tǒng)構(gòu)建
為了構(gòu)建出支持智龍開(kāi)發(fā)板可用的鏡像格式。在原本的 Buildroot 環(huán)境中添加了 yaffs2img 文件系統(tǒng)支持。該包與 Buildroot 中原有的 yaffs2 文件系統(tǒng)構(gòu)建并不相同,需要特別注意。
智龍開(kāi)發(fā)板的構(gòu)建命令如下:
cd buildroot cp configs/loongson1c_smartloong_defconfig .config make如果希望根據(jù)自己的需要,添加自己需要的軟件包,可以執(zhí)行如下命令進(jìn)行根文件系統(tǒng)軟件包的定制:
make menuconfigNote
上述命令與 linux 內(nèi)核的配置工具和使用方法完全相同。只是 buildroot 將會(huì)從網(wǎng)絡(luò)上下載自己所需要的基礎(chǔ)軟件包以及構(gòu)建工具鏈,在首次構(gòu)建時(shí),代碼的下載和構(gòu)建將會(huì)需要比較長(zhǎng)的時(shí)間。
在?make?命令執(zhí)行完成之后,會(huì)生成?output/images/rootfs.yaffs2img?文件,該文件即為可以燒錄到智龍開(kāi)發(fā)板中的根文件系統(tǒng)鏡像。
鏡像燒錄
在完成上述的鏡像構(gòu)建后,可以通過(guò)?tftp?將最終的根文件系統(tǒng)鏡像燒錄到智龍開(kāi)發(fā)板,相應(yīng)的指令如下:
-
在開(kāi)機(jī)后,馬上按下空格鍵,進(jìn)入 PMON 環(huán)境。
-
在進(jìn)入?PMON?環(huán)境后,執(zhí)行如下指令序列完成鏡像燒錄,和重新啟動(dòng)系統(tǒng)。
擦出 rootfs 分區(qū)以及燒錄 rootfs 鏡像:
PMON> mtd_erase /dev/mtd1 PMON> devcp tftp://192.168.x.xxx/rootfs-yaffs2.img /dev/mtd1 yaf nw設(shè)置內(nèi)核啟動(dòng)參數(shù):
PMON> set append 'root=/dev/mtdblock1 console=ttyS2,115200 rootfstype=yaffs2'重啟系統(tǒng):
reboot
系統(tǒng)使用
在完成 Buildroot 根文件系統(tǒng)燒錄之后,可以開(kāi)始使用自己選擇的構(gòu)建工具,對(duì)系統(tǒng)進(jìn)行測(cè)試,或者根據(jù)自己的需要對(duì)編譯的程序進(jìn)行測(cè)試。
連接以太網(wǎng)絡(luò)
在默認(rèn)的 buildroot 系統(tǒng)中,開(kāi)機(jī)并沒(méi)有默認(rèn)連接網(wǎng)絡(luò)。可以通過(guò)下述命令連接以太網(wǎng),以及啟用 DHCP 獲取 IP 地址。
ifconfig eth0 up dhcpcd eth0通過(guò)上述兩條命令,可以連接以太網(wǎng)絡(luò),并啟用 DHCP 服務(wù),獲取 IP 地址。
總結(jié)
以上是生活随笔為你收集整理的Buildroot 龙芯1C支持指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Windows在当前目录(文件)打开cm
- 下一篇: 打印服务器自动关闭,win7打印机服务p