Buildroot 龍芯1C支持指南

本文轉載自:https://github.com/pengphei/smartloong-sphinx/blob/master/source/cn/loongson1c_buildroot_guide.rstphp

Buildroot 龍芯1C支持指南

引子:從龍芯1C預訂拿到板子已經很長一段時間了,由於各類事情,一直讓它呆在角落的冷宮裏。昨天,憤而出去騎行,有導航出錯,入的一片幽靜山林,正能量爆棚,一下午休息,晚上興致上來,看了看龍芯的說明,對rootfs部分的構建太過於麻煩,因而夜深人靜,開始折騰,經由幾個小時鼓搗,終於讓buildroot能夠支持龍芯1C-智龍開發板rootfs構建。高興之餘,以爲能夠將過程寫下來,可讓你們瞭解buildroot的構建機制,對編譯工具鏈選擇,系統包指定,以及最後的文件系統打包等都有一個細節的瞭解。html

關於智龍開發板

智龍開發板是由 openloongson 開源社區推出的基於龍芯1C處理器的精簡開發板,提供基礎的硬件接口,包括一路以太網接口,一路USB Host接口,SD卡存儲,2x40 pin io擴展,外置鈕釦電源供電RTC。具體的信息能夠參考開源龍芯社區網站和論壇。python

龍芯 1C 介紹

龍芯1C芯片是基於LS232處理器核的高性價比單芯片系統,具有豐富的外設接口及片上模塊,爲開發者提供足夠的計算能力和多應用的鏈接能力。可應用於指紋生物識別、物聯傳感等領域。linux

龍芯1C包含浮點處理單元,能夠有效加強系統浮點數據處理能力。1C的內存接口,支持多種類型的內存,容許靈活的系統設計。支持8-bit SLC NAND或MLC NAND FLASH,提供高容量的存儲擴展接口。git

龍芯1C的具體用戶手冊和數據手冊能夠查看 http://www.loongson.cn/product_info.php?id=53 。github

要點準備

  1. 龍芯處理器兼容MIPS32指令集,並且官方提供消息,在新的gcc中是對龍芯各種芯片提供主流的支持。那麼也就是說咱們能夠經過MIPS32的GCC編譯工具鏈編譯出可以支持龍芯1C的可執行文件。shell

  2. 目前在開源社區存在兩個很是普遍使用的Linux from scratch 開發平臺,即 openWRT 和 Buildroot,二者都對MIPS32提供支持。這裏咱們選擇Buildroot做爲基礎工具構建適用於龍芯1C的rootfs。bash

  3. 根據龍芯開源社區或者網上有限的參考資料,智龍開發板使用yaffs2做爲根分區文件系統,而且整個Nand Flash分爲三個分區。第一個分區爲內核分區,第二個分區爲根分區,第三個分區爲數據區。對應的分區表以下:網絡

    # cat /proc/mtd dev: size erasesize name mtd0: 00e00000 00020000 "kernel" mtd1: 06400000 00020000 "os" mtd2: 00e00000 00020000 "data"
  4. 龍芯使用網絡燒錄 rootfs 指令以下:app

    基於 cramfs 文件系統鏡像燒錄指令:

    PMON>devcp tftp://192.168.x.xxx/rootfs-cramfs.img /dev/mtd1

    基於 jffs2 文件系統鏡像燒錄指令:

    PMON>devcp tftp://192.168.x.xxx/rootfs-jffs2.img /dev/mtd1

    基於 yaffs2 文件系統鏡像燒錄指令:

    PMON>mtd_erase /dev/mtd1
    PMON>devcp tftp://192.168.x.xxx/rootfs-yaffs2.img /dev/mtd1 yaf nw
  5. 龍芯啓動參數設置指令以下:

    基於 cramfs 文件系統的啓動參數設置:

    PMON>set append 'root=/dev/mtdblock1 console=ttyS2,115200 rootfstype=cramfs video=ls1bfb:480x272-16@70'

    基於 jffs2 文件系統的啓動參數設置:

    PMON>set append 'root=/dev/mtdblock1 console=ttyS2,115200 rootfstype=jffs2 video=ls1bfb:480x272-16@70'

    基於 yaffs2 文件系統的啓動參數設置:

    set append 'root=/dev/mtdblock1 console=ttyS2,115200 rootfstype=yaffs2 video=ls1bfb:480x272-16@70'

    PMON 中的系統重啓指令:

    PMON>reboot
  6. 龍芯的根文件系統打包方法:

    基於 cramfs 文件系統打包:

    mkcramfs /root/rootfs rootfs-cramfs.img
    chmod 777 rootfs-cramfs.img
    
    # 或者自帶工具 mkfs.cramfs /root/rootfs rootfs-cramfs.img chmod 777 rootfs-cramfs.img

    Note

    使用 chmod 777 rootfs-cramfs.img 修改文件系統權限,是爲了防止出現沒法燒寫的狀況。

    基於 jffs2 文件系統打包:

    mkfs.jffs2 -r /root/rootfs -o rootfs-jffs2.img -e 0x20000 --pad=0x2000000 -n
    chmod 777 rootfs-jffs2.img

    基於 yaffs2 文件系統打包:

    mkyaffs2image /root/rootfs rootfs-yaffs2.img
    chmod 777 rootfs-yaffs2.img

    Note

    這裏須要注意的是,打包 yaffs2 文件系統鏡像所使用的命令爲 mkyaffs2image 而不是 Buildroot 中默認打包 yaffs2 的 mkyaffs2 指令。二者由不一樣的軟件包生成,命令也不相同。

Buildroot MIPS 構建

在拿到智龍開發板,並瞭解了上面的準備工做,就能夠開始 MIPS 版本的 Buildroot 構建。目前使用的 Buildroot 來自於 buildroot 的 github 開發版本。構建更多詳細信息能夠參考它的 操做手冊

  1. 獲取 Buildroot 源碼

    git clone https://github.com/pengphei/buildroot.git
  2. 安裝準備軟件

    buildroot 的構建須要依賴如下軟件或者庫:

    • 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 配置界面)
    • 其餘的配置,須要根據構建過程當中的問題,相應進行添加。
  3. 系統構建

    爲了構建出支持智龍開發板可用的鏡像格式。在本來的 Buildroot 環境中添加了 yaffs2img 文件系統支持。該包與 Buildroot 中原有的 yaffs2 文件系統構建並不相同,須要特別注意。

    智龍開發板的構建命令以下:

    cd buildroot
    cp configs/loongson1c_smartloong_defconfig .config
    make

    若是但願根據本身的須要,添加本身須要的軟件包,能夠執行以下命令進行根文件系統軟件包的定製:

    make menuconfig

    Note

    上述命令與 linux 內核的配置工具和使用方法徹底相同。只是 buildroot 將會從網絡上下載本身所須要的基礎軟件包以及構建工具鏈,在首次構建時,代碼的下載和構建將會須要比較長的時間。

    在 make 命令執行完成以後,會生成 output/images/rootfs.yaffs2img 文件,該文件即爲能夠燒錄到智龍開發板中的根文件系統鏡像。

  4. 鏡像燒錄

    在完成上述的鏡像構建後,能夠經過 tftp 將最終的根文件系統鏡像燒錄到智龍開發板,相應的指令以下:

    • 在開機後,立刻按下空格鍵,進入 PMON 環境。

    • 在進入 PMON 環境後,執行以下指令序列完成鏡像燒錄,和從新啓動系統。

      擦出 rootfs 分區以及燒錄 rootfs 鏡像:

      PMON> mtd_erase /dev/mtd1
      PMON> devcp tftp://192.168.x.xxx/rootfs-yaffs2.img /dev/mtd1 yaf nw

      設置內核啓動參數:

      PMON> set append 'root=/dev/mtdblock1 console=ttyS2,115200 rootfstype=yaffs2'

      重啓系統:

      reboot

系統使用

在完成 Buildroot 根文件系統燒錄以後,能夠開始使用本身選擇的構建工具,對系統進行測試,或者根據本身的須要對編譯的程序進行測試。

鏈接以太網絡

在默認的 buildroot 系統中,開機並無默認鏈接網絡。能夠經過下述命令鏈接以太網,以及啓用 DHCP 獲取 IP 地址。

ifconfig eth0 up
dhcpcd eth0

經過上述兩條命令,能夠鏈接以太網絡,並啓用 DHCP 服務,獲取 IP 地址。

相關文章
相關標籤/搜索