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 。
要点准备
龙芯处理器兼容MIPS32指令集,而且官方提供消息,在新的gcc中是对龙芯各类芯片提供主流的支持。那么也就是说我们可以通过MIPS32的GCC编译工具链编译出能够支持龙芯1C的可执行文件。
目前在开源社区存在两个非常广泛使用的Linux from scratch 开发平台,即 openWRT 和 Buildroot,两者都对MIPS32提供支持。这里我们选择Buildroot作为基础工具构建适用于龙芯1C的rootfs。
根据龙芯开源社区或者网上有限的参考资料,智龙开发板使用yaffs2作为根分区文件系统,并且整个Nand Flash分为三个分区。第一个分区为内核分区,第二个分区为根分区,第三个分区为数据区。对应的分区表如下:
# cat /proc/mtd
dev: size erasesize name
mtd0: 00e00000 00020000 "kernel"
mtd1: 06400000 00020000 "os"
mtd2: 00e00000 00020000 "data"龙芯使用网络烧录 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龙芯启动参数设置指令如下:
基于 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
龙芯的根文件系统打包方法:
基于 cramfs 文件系统打包:
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 修改文件系统权限,是为了防止出现无法烧写的情况。
基于 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.imgNote
这里需要注意的是,打包 yaffs2 文件系统镜像所使用的命令为 mkyaffs2image 而不是 Buildroot 中默认打包 yaffs2 的 mkyaffs2 指令。两者由不同的软件包生成,命令也不相同。
Buildroot MIPS 构建
在拿到智龙开发板,并了解了上面的准备工作,就可以开始 MIPS 版本的 Buildroot 构建。目前使用的 Buildroot 来自于 buildroot 的 github 开发版本。构建更多详细信息可以参考它的 操作手册。
获取 Buildroot 源码
git clone https://github.com/pengphei/buildroot.git
安装准备软件
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 配置界面)
- 其他的配置,需要根据构建过程中的问题,相应进行添加。
系统构建
为了构建出支持智龙开发板可用的镜像格式。在原本的 Buildroot 环境中添加了 yaffs2img 文件系统支持。该包与 Buildroot 中原有的 yaffs2 文件系统构建并不相同,需要特别注意。
智龙开发板的构建命令如下:
cd buildroot
cp configs/loongson1c_smartloong_defconfig .config
make如果希望根据自己的需要,添加自己需要的软件包,可以执行如下命令进行根文件系统软件包的定制:
make menuconfig
Note
上述命令与 linux 内核的配置工具和使用方法完全相同。只是 buildroot 将会从网络上下载自己所需要的基础软件包以及构建工具链,在首次构建时,代码的下载和构建将会需要比较长的时间。
在 make 命令执行完成之后,会生成 output/images/rootfs.yaffs2img 文件,该文件即为可以烧录到智龙开发板中的根文件系统镜像。
镜像烧录
在完成上述的镜像构建后,可以通过 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 地址。
Buildroot 龙芯1C支持指南的更多相关文章
- .NET Core 对龙芯的支持情况和对 .NET Core 开发嵌入式的思考
目录 .NET Core 对龙芯的支持情况和对 .NET Core 开发嵌入式的思考 一,遗憾的尝试 二,.NET Core在嵌入式下的几点不足 三,.NET Core 龙芯移植的进展和资料 .NET ...
- 【转贴】龙芯内核发展策略 已经支持k8s
龙芯内核发展策略 时间:2019-06-27 15:48 来源:未知 作者:龙芯中科 点击:1002次 http://www.loongson.cn/m/view.php?aid=1118 ...
- 龙芯 3A4000 安装 Debian10 (via debootstrap)
由于一些原因,Debian 的内核不能直接在龙芯的 cpu 上使用.据悉 Linux 5.7 kernel 改进了对龙芯的支持,不久的将来我们应该就能更愉快地在龙芯上运行 Debian 了. 感谢龙芯 ...
- 龙芯GO!龙芯平台上构建Go语言环境指南
龙芯软件生态系列——龙芯GO!龙芯平台上构建Go语言环境指南2016-07-05 龙芯中科1初识Go语言Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Gries ...
- 龙芯fedora28日常生存指南
2021-01-30 v0.0.5 从0.0.1开始改了非常多,一月余时间的花费渴望为其他人提供一点帮助,能够快速上手. 这主要是这一年来我从3B1500到3A4000再到福珑2的日常使用记录,是之前 ...
- 【PC桌面软件的末日,手机移动端App称王】写在windows11支持安卓,macOS支持ios,龙芯支持x86和arm指令翻译
面对这场突如其来的变革,作为软件开发者,应该如何选择自己今后的发展方向?桌面软件开发领域还有前景吗? 起源 自从苹果发布m1处理器,让自家Mac支持IOS移动端app运行之后,彻底打破了移动端app和 ...
- X86上搭建交叉工具链,来给龙芯笔记本编译本地工具链(未完待续)
故事的背景是,我买了一台龙芯2F的笔记本来装B. 为什么说是装B呢?因为不但操作系统是Linux,而且CPU还是龙芯的. 一般人有这么酷的装备吗?简直是装B大圣啊. 这里一定要申明一点,本人不是IT技 ...
- 龙芯将两款 CPU 核开源,这意味着什么?
10月21日,教育部计算机类教学指导委员会.中国计算机学会教育专委会将2016 CNCC期间在山西太原举办“面向计算机系统能力培养的龙芯CPU高校开源计划”活动,在活动中,龙芯中科宣布将GS132和G ...
- X86给龙芯笔记本编译本地工具链(未完待续)
我买了一台龙芯2F的笔记本来当玩具. 买回来发现,这台笔记本上没法安装软件,因为既没有软件仓库,也没有GCC. 因此需要构建交叉工具链和构建本地工具链. 下面是我研究如何搞定着一切的笔记. 工具链组件 ...
随机推荐
- ajax 为 select 赋值
html 页面<tr> <td class="dc-form-left">权限组:</td> <td class="dc-for ...
- 让你系统的了解shell
当你在进行登录时,系统会检查的文档:1. /etc/profile:首先,系统会检查这个文件,以定义如下这些变量:PATH.USER.LOGNAME.MAIL.HOSTNAME.HISTSIZE.IN ...
- FTS5与DIY
此文已由作者王荣涛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. FTS5简介 前文已经介绍了FTS3/FTS4,本文着重介绍它们的继任者FTS5. FTS5是在SQLite ...
- 简单的发红包的PHP算法
假设有有10元钱 ,发给10个人.保证每个人都有钱拿,最少分得0.01.我们最先想到的肯定就是随机.0.01-10随机.但是会出现第一个人就分得9.99的情况.下面就没人可分了.然后就是我的错误思路 ...
- 在C#代码中应用Log4Net系列教程(附源代码)地址
在博客园看到一篇关于Log4Net使用教程,比较详细,感谢这位热心的博主 博客园地址:http://www.cnblogs.com/kissazi2/archive/2013/10/29/339359 ...
- HTTP API 自动化测试从手工测试到平台的演变
不管是 Web 系统,还是移动 APP,前后端逻辑的分离设计已经是常态化,相互之间通过 API 调用进行数据交互.在基于 API 约定的开发模式下,如何加速请求 / 响应的 API 测试,让研发人员及 ...
- HDU 5245
题目大意: 每次随机选择两个点,便把这两个点之间形成的子矩阵上的每一个方块涂色,问随机选择k次,整个m*n的矩阵中有多少个小方块被涂上了颜色 这道题不难,但自己智商实在捉急,一直想不出来... 因为这 ...
- POJ 3667 线段树的区间合并简单问题
题目大意:有一排标号1-N的房间.操作一:询问是不是有连续长度为a的空房间,有的话住进最左边(占用a个房间)操作二:将[a,a+b-1]的房间清空(腾出b个房间)思路:记录每个区间中“靠左”“靠右”“ ...
- Enchantress(hdu 3922)
首先考虑覆盖三个点的情况,有两种情况: ①:三个点都在圆上,则该圆是三角形的外接圆 ②:两个点在圆上,第三个点在圆内,且在圆上的两个点之间的线段一定是直径 如果是多个圆,就不停地迭代. 有一点重要的是 ...
- 最小生成树求法 Prim + Kruskal
prim算法的思路 和dijkstra是一样的 每次选取一个最近的点 然后去向新的节点扩张 注意这里的扩张 不再是 以前求最短路时候的到新的节点的最短距离 而是因为要生成一棵树 所以是要连一根最短的连 ...