本文转载自: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

http://sourceforge.net/projects/libpng/files/libpng12/older-releases/1.2.4 0/libpng-1.2.40.tar.bz2/download

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(龙芯)【转】的更多相关文章

  1. .NET Core 对龙芯的支持情况和对 .NET Core 开发嵌入式的思考

    目录 .NET Core 对龙芯的支持情况和对 .NET Core 开发嵌入式的思考 一,遗憾的尝试 二,.NET Core在嵌入式下的几点不足 三,.NET Core 龙芯移植的进展和资料 .NET ...

  2. 龙芯团队完成CoreCLR MIPS64移植,在github开源

    国产龙芯的软件生态之中.NET不会缺席,毕竟 C# 与 .NetCore/Mono 也是全球几大主流的编程语言和运行平台之一,最近一段时间听到太多的鼓吹政务领域不支持.NET, 大家都明白这是某些人为 ...

  3. 龙芯GO!龙芯平台上构建Go语言环境指南

    龙芯软件生态系列——龙芯GO!龙芯平台上构建Go语言环境指南2016-07-05 龙芯中科1初识Go语言Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Gries ...

  4. [转帖]龙芯服务器部署WEB服务的体验和详细步骤

    龙芯服务器部署WEB服务的体验和详细步骤 2019年01月02日 18:40:34 weixin_40065369 阅读数 1733   版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权 ...

  5. 【转贴】龙芯内核发展策略 已经支持k8s

    龙芯内核发展策略 时间:2019-06-27 15:48  来源:未知   作者:龙芯中科   点击:1002次 http://www.loongson.cn/m/view.php?aid=1118 ...

  6. 龙芯软硬件培训个人总结-day2

     今天最后一天,主要培训了BSP,QT,KVM云计算相关的内容.大致总结了一些自己关注的点.培训的资料已上传至服务器,如果需要可关注下方二维码,后台直接回复“资料”获取.关于实战的资料还未导出,等导出 ...

  7. 龙芯开源社区上线.NET主页

    龙芯团队从2019年7 月份开始着手.NET Core的MIPS64支持研发,经过将近一年的研发,在2020年6月18日完成了里程碑性的工作,在github CoreCLR 仓库:https://gi ...

  8. 龙芯 loongnix20 rc2 初体验

    2021-07-24 v0.0.1 版权声明:原创文章,未经博主允许不得转载 3A5000 昨天发布啦,历史上的昨天是中共一大的第一天. 3A5000 的团购还没开始(大概还是3999左右整机的样子) ...

  9. 龙芯发布.NET 6.0.100开发者试用版

    龙芯在龙芯开源社区发布了LoongArch64-.NET-SDK-6.0.100开发者试用版 新闻 ,龙芯.NET基于上游社区 版本 适配支持龙芯平台架构. 目前支持LoongArch64架构和MIP ...

随机推荐

  1. mac中显示隐藏文件和.开头的文件

    在控制台中执行一下命令,即可在finder中看到此类文件: defaults write com.apple.Finder AppleShowAllFiles YES killall Finder

  2. JS高级——apply与call

    上下文调用模式 可以修改this的值,也就是可以修改函数的调用方式,apply.call可以修改函数调用上下文,也就是this的值 <script> var name = "莱昂 ...

  3. SQL基本操作——JOIN多表联查

    基本概念 join :用于根据两个或多个表中的列之间的关系,从这些表中查询数据. join和key:有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join.数据库中的表可 ...

  4. 重绘DataGridView标头

    最近突然想在DataGridView标头放置一个CheckBox,我就想着重写下DataGridViewColumnHeaderCell抱着试试的心态结果真的是可以的下面是源码:(如果有看不懂的可以加 ...

  5. PHP操作Redis相关函数

    String数据类型 $redis->set('key','TK'); $redis->set('number','1'); //设置值 $redis->setex('key',5, ...

  6. ionic错误

    1. 问题:Error: read ECONNRESET 启动使用ionic serve启动服务器之后只要一刷新界面就会导致服务器关闭,报的错误如下: events.js:136 throw er; ...

  7. chrony配置介绍

    rhel7 文档https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Adminis ...

  8. cmake更新版本简记

    问题描述: 由于需求,要在服务器上安装ANTs(Advanced Normalization Tools).然而最新版的ANTs需要下载源码并用cmake编译, 于是根据https://github. ...

  9. array_map 等php回调函数使用问题(关联数组下标获取)

    前言:我自己用此类回调函数,来替代 foreach 纯粹是用为代码的简洁性,让代码更好看.(我有点代码小洁癖~) 1.array_reduce 当迭代处理一个一维索引数组时,在回调函数内是无法获取到当 ...

  10. Linux - 用户管理与文件权限

    目录 Linux - 用户管理与文件权限 创建普通用户 切换用户 userdel删除用户 sudo 命令 文件与目录权限 Linux权限的解读 目录权限 查看用户权限的命令 文件权限 修改权限的命令 ...