Buildroot 龍芯1C支持指南

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

Buildroot 龍芯1C支持指南

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

關于智龍開發板

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

龍芯 1C 介紹

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

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

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

要點準備

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

  2. 目前在開源社區存在兩個非常廣泛使用的Linux from scratch 開發平臺,即 openWRT 和 Buildroot,兩者都對MIPS32提供支持。這里我們選擇Buildroot作為基礎工具構建適用于龍芯1C的rootfs。

  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 指令如下:

    基于?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 地址。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281520.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281520.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281520.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STOLUCK:經濟下行的當下 ,STO或將幫助中小企業度過寒冬

2018年被稱為創業陣亡率特別高的一年,相關報道稱有近20%的創業團隊面臨“后續融資跟不上,可能死在春天來臨之前”的窘境。經濟不景氣的當下,上下游資金不足,信貸機構沒錢,風投業捉襟見肘。實際今年3月份開始&#xff0…

[ 轉載 ] Java面試精選【Java基礎第一部分】

http://www.cnblogs.com/hnlshzx/p/3491587.html 轉載于:https://www.cnblogs.com/ILoke-Yang/p/8137326.html

html如何自動調整邊框大小,html – Chrome與大小調整:顯示中的邊框:表格

我正在使用display:table做一個小的2窗格布局.對于間距(也來自背景圖像),我使用填充.因為我需要孩子們有一個確切的寬度:50%來自可用空間(考慮到父div的填充),我使用Box-sizing:border-Box.這在Opera中運行良好,但在Chrome中,框大…

淺析C# Dictionary實現原理

一、前言二、理論知識1、Hash 算法2、Hash 桶算法3、解決沖突算法三、Dictionary 實現1. Entry 結構體2. 其它關鍵私有變量3. Dictionary - Add 操作4. Dictionary - Find 操作5. Dictionary - Remove 操作6. Dictionary - Resize 操作(擴容)7. Dictionary - 再談 Add 操作8. C…

對特朗普獲勝感到意外? 那你是被社交媒體迷惑了

北京時間11月10日消息,據外媒報道,昨天曠日持久的美國總統選戰終于告一段落,特朗普的獲勝讓民調徹底成了一張廢紙,而早就在Facebook上提前歡慶希拉里勝利的人則徹底蒙圈了,就連萬里之外的中國吃瓜群眾們也開始追著許多…

貓晚流量再創記錄,阿里云直播方案護航優酷2500萬用戶體驗

2019獨角獸企業重金招聘Python工程師標準>>> 對“剁手黨而言,天貓雙11早已經超越了簡單的“買買買”,更是一場邊看邊玩的狂歡盛宴。今年的天貓雙11狂歡夜晚會(簡稱“貓晚”)在上海舉辦,這臺兼具年輕潮流與國…

python實現二叉樹和它的七種遍歷

介紹: 樹是數據結構中非常重要的一種,主要的用途是用來提高查找效率,對于要重復查找的情況效果更佳,如二叉排序樹、FP-樹。另外可以用來提高編碼效率,如哈弗曼樹。 代碼: 用python實現樹的構造和幾種遍歷算…

.NET性能系列文章二:Newtonsoft.Json vs System.Text.Json

微軟終于追上了?圖片來自 Glenn Carstens-Peters[1]Unsplash[2]歡迎來到.NET 性能系列的另一章。這個系列的特點是對.NET 世界中許多不同的主題進行研究、基準和比較。正如標題所說的那樣,重點在于使用最新的.NET7 的性能。你將看到哪種方法是實現特定主…

android gpu平板 推薦,性能強的不像話,最強安卓平板華為平板M6上手

原標題:性能強的不像話,最強安卓平板華為平板M6上手你為什么買平板電腦?當這一問題問出以后,許多朋友的表情都很微妙,隨后大概率的回答則相當統一:"我買平板干嘛?"。其實得到這樣一個…

【Python】HackBack(獲取暴力破解服務器密碼的IP來源)

1、前言 又在0x00sec上翻到好東東。 https://0x00sec.org/t/python-hackback-updated/882 帖子里的腳本會得到那些暴力服務器密碼失敗的IP和用戶名,并且使用shodan api做一個溯源定位。 #!/usr/bin/python3.4 import re import urllib.request import json log_path…

企業應用“數據優先”革命的下一個主戰場:安全與運營

根據IDC發布的2015年全球CIO日程預測,80%的CIO將提供一個實現創新和改善業務決策的新體系架構。 大數據時代,企業軟件市場正在經歷一次大遷移,數以十億計的企業IT支出預算將投向“數據優先”應用,而不是長久以來以業務流程和工作流…

給Web開發人員的以太坊入坑指南

以太坊現在各種學習資料數不勝數,但由于以太坊正處于飛速發展階段,有些學習資料很快就過時了。所以想找到有價值的資料無異于大海撈針。我費了很大功夫,才建立起對以太坊的整體認識,搞清楚它的工作機制。我相信很多躍躍欲試的開發…

和碩看重物聯網大勢 程建中:從擅長領域出發

物聯網(IoT)前景可期已是全球科技產業的共識,但是如何真正找出到位的商機,卻考驗產業鏈業者的智能。蘋果iPhone代工廠和碩聯合科技執行長程建中表示,物聯網與大數據相關應用商機看俏,物聯網筑的夢比網際網路還大,當年網…

html選擇文本框后提示消失,兩種方法實現文本框輸入內容提示消失

第一種方法:基于HTML5 input標簽的新特性 - placeholder 。另外,x-webkit-speech 屬性可以實現語音輸入功能。第二種方法:用span模擬,定位span,借助JS鍵盤事件判斷輸入,確定span里的內容顯示隱藏。無標題文…

TensorFlow基本計算單元——變量

# -*- coding: utf-8 -*- import tensorflow as tf a 3 # 創建變量 w tf.Variable([[0.5, 1.0]]) #行向量 x tf.Variable([[2.0], [1.0]]) y tf.matmul(w, x) #矩陣相乘 print(y) # Tensor("MatMul:0", shape(1, 1), dtypefloat32)init_op tf.global_variables…

程序人生:織夢dedecms后臺/會員驗證碼關閉

dedecms默認是所有的功能幾乎只要用到驗證碼的地方我們都需要驗證的,如果要關閉一些驗證功能我們可以參考下面的教程,這里介紹了關閉后臺,留言板,會員系統等驗證碼功能關閉了。提示:支持DedeCMS V5.6 以上的所有版本取…

html中圖片的屬性優化,Html標簽元素在SEO中的優化方式(二)

接上html標簽元素在SEO中的優化方式(一)中對HTML界面的介紹,我們今天繼續補充HTML標簽的SEO優化方式在內容中有幾個值得去研究一下的優化元素--導航和內部鏈接:很明顯的一點,建立導航會使搜索引擎可以容易的確定網站結構,但是很多…

Gartner認為安全性將取代成本和敏捷性成為政府部門采用云服務的首要原因

全球領先的信息技術研究和顧問公司Gartner表示,公有云如今具備可擴展性、計算威力、海量存儲和安全性,可打造更好的政府數字化平臺并滿足對業績和價值不斷增長的期望值。 Gartner預計到2018年,提升的安全性將取代成本節約和敏捷性成為政府部門…

一款簡單的縮放拖拽圖片控件

本文介紹一個針對 .NET 桌面應用程序的獨立圖片縮放拖拽顯示控件 SQPhoto[1]。SQPhoto 是一個 Windows 桌面應用的組件,支持 .NET6 和 .NET Framework 4.6 。基于 PictureBox 的圖片展示工具,增加了拖動和縮放功能,便于在某些場景下的圖片展…

安卓虛擬機與Hyper-V沖突

經過各種經驗,哪個安卓虛擬機跟Hyper-V都存在著沖突。 解決方案一 程序中卸載Hyper-V,之后還要再配置太麻煩。 解決方案二 1、關掉Hyper-V的啟動項,命令如下。 bcdedit /set hypervisorlaunchtype off 重啟在開安卓模擬器藍屏就沒有了。 2、重…