zoukankan      html  css  js  c++  java
  • 移植DirectFB于SOC3210(龙芯)【转】

    本文转载自:http://blog.chinaunix.net/uid-25298908-id-120188.html

    编译平台:龙芯、中标普华Linux桌面5

    目标平台:SOC3210

     

    一、获取源码包

    1zlib-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/

    3libpng-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

    6DirectFB-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      ——进入根文件系统ramdiskramdisk的制作参考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        ——把可执行文件mkcramfscramfsck拷贝到/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,再运行测试,稳定通过。

     

    至此移植完成。

  • 相关阅读:
    数学图形之心形
    Nginx中文文档-安装 Nginx
    Mysql的row_format
    layui问题之模拟select点击事件
    深入理解HTTP协议、HTTP协议原理分析
    file_get_contents("php://input")的用法
    如何创建自己的composer包
    解决git pull/push每次都需要输入密码问题 和 HttpRequestException encountered
    微信网页授权 通过code获取openid 报错40163 code been used
    Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/7614181.html
Copyright © 2011-2022 走看看