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.mzph.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、重…