移植DirectFB于SOC3210(龙芯)【转】
本文转载自:http://blog.chinaunix.net/uid-25298908-id-120188.html
编译平台:龙芯、中标普华Linux桌面5
目标平台:SOC3210
一、获取源码包
1、zlib-1.2.5.tar.bz2
http://sourceforge.net/projects/libpng/files/zlib/1.2.5/zlib-1.2.5.tar.bz2/download
2、freetype‐2.3.5.tar.bz2
http://download.savannah.gnu.org/releases/freetype/
3、libpng-1.2.40.tar.bz2
4、jpegsrc.v6b.tar.gz
http://dir.filewatcher.com/d/GNU/Other/jpegsrc.v6b.tar.gz.613261.html
5、DirectFB-1.3.0.tar.gz
http://directfb.org/index.php?path=Main%2FDownloads&page=0
6、DirectFB-examples-1.2.0.tar.gz
http://directfb.org/index.php?path=Main%2FDownloads&page=1
二、交叉编译与安装步骤
1、设置编译安装所需环境变量
$mkdir /usr/directfb ——创建安装目录
$export PREFIX=/usr/directfb ——设置安装路径
$export LDFLAGS=-L$PREFIX/lib ——设置库文件路径
$export CFLAGS="-g -I$PREFIX/include" ——设置头文件路径
$export CPPFLAGS="-g -I$PREFIX/include" ——设置头文件路径
$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig ——设置配置信息文件路径
$mkdir /usr/directfb/include /usr/directfb/lib /usr/directfb/bin /usr/directfb/man /usr/directfb/man/man1 ——创建下列编译安装所需目录
2、编译安装zlib-1.2.5
$tar jxvf zlib-1.2.5.tar.bz2
$cd zlib-1.2.5
$./configure --prefix=$PREFIX
$make
$make install
3、编译安装freetype‐2.3.5
$tar jxvf freetype‐2.3.5.tar.bz2
$cd freetype‐2.3.5
$./configure --prefix=$PREFIX
$make
$make install
4、编译安装libpng-1.2.40
$tar jxvf libpng-1.2.40.tar.bz2
$cd libpng-1.2.40
$./configure --prefix=$PREFIX
$make
$make install
5、编译安装jpegsrc.v6b
$tar zxvf jpegsrc.v6b.tar.gz
$cd jpeg-6b
$./configure --prefix=$PREFIX --enable-shared
$make
$make install
6、编译安装DirectFB-1.3.0
$tar zxvf DirectFB-1.3.0.tar.gz
$cd DirectFB-1.3.0
$./configure --prefix=$PREFIX
$make
$make install
7、编译安装DirectFB样例DirectFB-examples-1.2.0
$tar zxvf DirectFB-examples-1.2.0.tar.gz
$cd DirectFB-examples-1.2.0
$./configure --prefix=$PREFIX
$make
$make install
DirectFB与样例交叉编译完成。
三、本机运行测试
本机的硬件与软件平台与SOC3210是相同的,可以于本机先行运行测试。
$cd DirectFB-examples-1.2.0/src 或 cd /usr/directfb/bin
$ls
$./df_andi
全屏显示许多移动的企鹅。
类似运行测试其他例子,稳定通过。
四、制作文件系统
参考SOC3210的《制作ramdisk文件系统》的制作
1、busybox-1.1.0 ——制作根文件系统的工具
$tar jxvf busybox-1.1.0.tar.bz2
$cd busybox-1.1.0
$make menuconfig
出错提示:
>> Unable to find the Ncurses libraries.
>>
>> You must have Ncurses installed in order
>> to use 'make menuconfig'
2、安装ncurses-5.7
$tar zxvf ncurses-5.7.tar.gz
$cd ncurses-5.7
$./configure --with-shared --with-normal --with-libtool --enable-overwrite
$make
$make install
3、可以进入busybox-1.1.0
$make menuconfig
——进行配置
4、根据SOC3210的《制作ramdisk文件系统》步骤制作。
最后把"_install"目录改名为"ramdisk"。
$mv _install ramdisk$cd ramdisk ——进入根文件系统ramdisk中。ramdisk的制作参考SOC3210文档
5、修改根文件系统
$cd ramdisk ——进入根文件系统ramdisk中。
$cp /usr/directfb usr ——必须把交叉编译后的directfb放于此目录,因为DirectFB编译时 已经把这个目录编译到程序中,无法后期设置。
$vi etc/profile
把export LD_LIBRARY_PATH=/lib:/usr/lib改为:
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/directfb/lib
——设置directfb程序所需库文件路径
否则在SOC3210运行时会报错,如“error while loading shared libraries: libdirectfb-1.3.so.0”
保存退出。
$mknod dev/fb0 c 29 0
——创建frame buffer的设备文件
否则在SOC3210运行时会报错:
(!) DirectFB/FBDev: Error opening '/dev/fb0'!
--> No such file or directory
(!) DirectFB/Core: Could not initialize 'system_core' core!
--> File not found!
$cd dev
$ln -s console tty0
——链接终端
否则在SOC3210运行时会报错:
(!) DirectFB/core/vt: Couldn't open neither `/dev/tty0' nor `/dev/vc/0'!
--> No such file or directory
(!) DirectFB/Core: Could not initialize 'system_core' core!
--> Initialization error!
$cd .. ——退到上一层
$vi usr/directfb/etc/directfbrc
directfbrc是directfb程序运行时的配置文件。其具体参数可以参考:
http://www.directfb.org/docs/directfbrc.5.html
或http://blog.chinaunix.net/u3/104335/showart_2061486.html
或者在终端上查看$man directfbrc
改为:
system = fbdev ——设定使用的图形系统为linux frame buffer
fbdev = /dev/fb0 ——打开设定的frame buffer (/dev/fb0)
wm = default ——设定窗口管理层,默认default(0)
mode = 320x240 ——设定默认的屏幕显示320x240
depth = 16 ——使用二进制位数设置每像素默认的像素深度为16位
pixelformat = RGB16 ——设置默认的像素格式
mouse-protocol = IMPS/2 ——为一个串口鼠标指定使用的协议
bg-color = 00FFFF ——控制背景的颜色
no-vt ——取消虚拟终端
保存退出。
6、cramfs-1.1 ——制作cramfs格式文件系统的工具
$tar zxvf cramfs-1.1.tar.gz
$cd cramfs-1.1
$make
$cp mkcramfs cramfsck /bin ——把可执行文件mkcramfs和cramfsck拷贝到/bin
7、制作cramfs格式文件系统
$cd .. ——退到上一层
$mkcramfs ramdisk ramdisk-cramfs.img
文件系统制作完成,得到文件系统的镜像文件ramdisk-cramfs.img。
五、烧写文件系统到SOC3210
SOC3210上电。
在SecureCRT终端中
PMON> set append 'g root=/dev/mtdblock1 rootfstype=cramfs noinitrd init=/linuxrc console=ttyS0,115200 display=truly320'
——设置启动参数
PMON> devcp tftp://192.168.3.113/ramdisk-cramfs.img /dev/mtd1
——通过tftp把文件系统镜像文件ramdisk-cramfs.img烧写到SOC3210的mtd1分区上。
关于TFTP的使用参考《Ubuntu-10.04下安装与使用TFTP》
完成后重启,输入命令reboot。
六、在SOC3210上运行测试DirectFB样例
进到SOC3210的文件系统
#cd /usr/directfb/bin
#ls
#./df_andi
显示许多移动的企鹅。
类似运行测试其他例子,稳定通过。
重启SOC3210,再运行测试,稳定通过。
至此移植完成。
移植DirectFB于SOC3210(龙芯)【转】的更多相关文章
- .NET Core 对龙芯的支持情况和对 .NET Core 开发嵌入式的思考
目录 .NET Core 对龙芯的支持情况和对 .NET Core 开发嵌入式的思考 一,遗憾的尝试 二,.NET Core在嵌入式下的几点不足 三,.NET Core 龙芯移植的进展和资料 .NET ...
- 龙芯团队完成CoreCLR MIPS64移植,在github开源
国产龙芯的软件生态之中.NET不会缺席,毕竟 C# 与 .NetCore/Mono 也是全球几大主流的编程语言和运行平台之一,最近一段时间听到太多的鼓吹政务领域不支持.NET, 大家都明白这是某些人为 ...
- 龙芯GO!龙芯平台上构建Go语言环境指南
龙芯软件生态系列——龙芯GO!龙芯平台上构建Go语言环境指南2016-07-05 龙芯中科1初识Go语言Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Gries ...
- [转帖]龙芯服务器部署WEB服务的体验和详细步骤
龙芯服务器部署WEB服务的体验和详细步骤 2019年01月02日 18:40:34 weixin_40065369 阅读数 1733 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权 ...
- 【转贴】龙芯内核发展策略 已经支持k8s
龙芯内核发展策略 时间:2019-06-27 15:48 来源:未知 作者:龙芯中科 点击:1002次 http://www.loongson.cn/m/view.php?aid=1118 ...
- 龙芯软硬件培训个人总结-day2
今天最后一天,主要培训了BSP,QT,KVM云计算相关的内容.大致总结了一些自己关注的点.培训的资料已上传至服务器,如果需要可关注下方二维码,后台直接回复“资料”获取.关于实战的资料还未导出,等导出 ...
- 龙芯开源社区上线.NET主页
龙芯团队从2019年7 月份开始着手.NET Core的MIPS64支持研发,经过将近一年的研发,在2020年6月18日完成了里程碑性的工作,在github CoreCLR 仓库:https://gi ...
- 龙芯 loongnix20 rc2 初体验
2021-07-24 v0.0.1 版权声明:原创文章,未经博主允许不得转载 3A5000 昨天发布啦,历史上的昨天是中共一大的第一天. 3A5000 的团购还没开始(大概还是3999左右整机的样子) ...
- 龙芯发布.NET 6.0.100开发者试用版
龙芯在龙芯开源社区发布了LoongArch64-.NET-SDK-6.0.100开发者试用版 新闻 ,龙芯.NET基于上游社区 版本 适配支持龙芯平台架构. 目前支持LoongArch64架构和MIP ...
随机推荐
- P1418 选点问题
题目描述 给出n个点,m条边,每个点能控制与其相连的所有的边,要求选出一些点,使得这些点能控制所有的边,并且点数最少.同时,任意一条边不能被两个点控制 输入输出格式 输入格式: 第一行给出两个正整数n ...
- Android 微信分享不出去?四步搞定!
现在做的项目中集成了友盟分享,产品要求集成微信.朋友圈.QQ.QQ空间.短信这几个分享平台.按照友盟的文档集成一切都很顺利,集成成功以后测试QQ.QQ空间.短信都没有问题,唯独微信和朋友圈一直分享不出 ...
- Android 解决ScrollView嵌套RecyclerView导致滑动不流畅的问题
最近做的项目中遇到了ScrollView嵌套RecyclerView,刚写完功能测试,直接卡出翔了,后来通过网上查找资料和 自己的实践,找出了两种方法解决这个问题. 首先来个最简单的方法: recyc ...
- JS高级——apply与call
上下文调用模式 可以修改this的值,也就是可以修改函数的调用方式,apply.call可以修改函数调用上下文,也就是this的值 <script> var name = "莱昂 ...
- #2028 Lowest Common Multiple Plus
http://acm.hdu.edu.cn/showproblem.php?pid=2028 应该是比较简单的一道题啊...求输入的数的最小公倍数. 先用百度来的(老师教的已经不知道跑哪去了)辗转相除 ...
- ICMP,ARP协议
ICMP ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制 ...
- 如何知道自己的CPU支持SLAT
因为WP8 SDK发布,很多WP8的开发者们也开始陆续安装WP8的SDK的,然而安装WP8的SDK有很多软件和硬件的要求,其中有一个就是——要求CPU支持二级地址转换(SLAT),如果CPU不支持二级 ...
- 让System.Drawing.Bitmap可以在linux运行
.net core的bitmap使用的是以下类库,但无法在linux运行 https://github.com/CoreCompat/CoreCompat 在linux运行需要安装runtime.li ...
- CAD把一个DWG文件中的多个图框一次性全部插入到打开的DWG文件中
主要用到函数说明: _DMxDrawX::InsertBlock 向控件数据库中插入一个图块,不用它插入匿名块,详细说明如下: 参数 说明 BSTR pszDwgFileName 图块定义的dwg 文 ...
- Python os模块和time模块 day4
一.os模块 print(os.listdir(r'/Users/smh/Desktop/整理'))#os.listdir() 列出某个目录下面的文件夹/文件 print(os.path.isfile ...