zoukankan      html  css  js  c++  java
  • 参考论坛:Mali kernel driver TX011-SW-99002-r5p1-00rel0 for firefly

    最近手头有一块firefly_rk3288_reload的开发板,想实现在linux 下用openGL ES来做视频显示。

    找到opengGL相关移植,参考论坛(http://bbs.t-firefly.com/forum.php?mod=viewthread&tid=321&extra=page%253D2)的方法,进行移植。

    方法:

    Test OpenGL ES Linux support on Firefly-RK3288 Development Board
    ════════════════════════════════════════════════════════════════

    Introduction
    ────────────

    Firefly-RK3288 development board is equipped with the powerful Mali
    T764 GPU. Lately, ARM has released the binary user-space fbdev
    driver. We, the Firefly team, have taken a first stab at it.

    Environment:
    - Firefly-RK3288 development board with latest dual boot firmware
    installed.
    - 64 bit Ubuntu Linux (12.04 or later) host pc.


    Kernel
    ──────

    First, we need to update the mali kernel driver.

    Download Linux kernel driver TX041-SW-99002-r5p1-00rel0.tgz in
    [http://malideveloper.arm.com/develop-for-mali/drivers/open-source-mali-t6xx-gpu-kernel-device-drivers/]
    (note:这个是arm官方针对这款gpu驱动发布的官方驱动)


    The porting process involves: replace the old driver files with new
    ones, apply the kds patch, fix the compiling errors and update the
    config file.

    To make life easier, we've packaged all the files into
    firefly-mali-driver-TX011-SW-99002-r5p1-00rel0.tar.gz .
    (note:实际上我们只需要下载firefly-mali-driver-TX011-SW-99002-r5p1-00rel0.tar.gz 这个驱动文件就可以了。)


    ╭────
    │ cd /path/to/your/firefly/sdk
    │ ls kernel  # kernel directory should be here
    │ tar xzf /path/to/firefly-mali-driver-TX011-SW-99002-r5p1-00rel0.tar.gz
    ╰────

    Then compile it:
    ╭────
    │ cd kernel
    │ make firefly-rk3288-linux_defconfig
    │ make -j8 firefly-rk3288.img
    │ make modules
    ╰────

    (note:上面这步的时候,需要自己重新配置一下kernel,不能使用默认的驱动配置,否则会出现两种情况:

      1)  undefined reference to `kds_waitall'

        添加CONFIG_DMA_SHARED_BUFFER关联选项就OK

      2) 在openGL sdk demo运行的时候出现:

         Error: eglGetError(): 12289 (0x3001)

        Error: Failed to initialize EGL at ../../../../samples/opengles_30/skybox/EGLRuntime.cpp:243

      同时内核会打印:

        :Platform data not specified

      查看kernel源码,找到相应配置,添加:MALI_PLATFORM_FAKE 配置。

    )


    The compiled mali module is located at drivers/gpu/arm/midgard/. Copy
    mali_kbase.ko to your board:
    ╭────
    │ scp drivers/gpu/arm/midgard/mali_kbase.ko root@BOARD_IP:/system/lib/modules/
    ╰────

    (Why `/system/lib/modules/' ? Just because /etc/rc.local willl insmod
    it automatically.)

    Then follow the steps described in
    [http://wiki.t-firefly.com/index.php/Firefly-RK3288/Build_kernel/en] ,
    to pack zImage and initrd to linux-boot.img .

    Flash linux-boot.img to recovery partition of the board.


    User-space drivers
    ──────────────────

    Download mali-t76x_r5p0-06rel0_linux_1+fbdev.tar.gz in:
    [http://malideveloper.arm.com/develop-for-mali/features/mali-t6xx-gpu-user-space-drivers/]

    Then install it to the board:
    ╭────
    │ cat /path/to/mali-t76x_r5p0-06rel0_linux_1+fbdev.tar.gz
    │    | ssh root@BOARD_IP tar --strip-components=1 -xzf - -C /usr/lib
    ╰────


    Compile Mali OpenGL ES SDK demos
    ────────────────────────────────

    Download Mali_OpenGL_ES_SDK_v2.4.4.71fdbd_Linux_x64.tar.gz in
    [http://malideveloper.arm.com/develop-for-mali/sdks/opengl-es-sdk-for-linux/]

    Please choose Linux X64 archive.

    To build the SDK demos, you need a cross compile toolchain. If you
    have not installed yet, try this linaro toolchain:
    [http://releases.linaro.org/14.09/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz]
    (Extract it to /opt)

    You also need to install cmake (sudo apt-get install cmake).

    ╭────
    │ tar xzf /path/to/Mali_OpenGL_ES_SDK_v2.4.4.71fdbd_Linux_x64.tar.gz
    │ cd Mali_OpenGL_ES_SDK_v2.4.4
    │ mkdir build-arm
    │ cd build-arm
    │ export TOOLCHAIN_ROOT=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-
    │ cmake -DTARGET=arm .. 
    │ make install
    │ cd ..
    │ # bin_arm contains all the result files
    │ scp -r bin_arm root@BOARD_IP:/root
    ╰────


    Set 32bit framebuffer
    ─────────────────────

    Before running demos, the fbdev should be in 32 bit mode.

    Run following commands on the board:
    ╭────
    │ sudo -s
    │ cat << EOF >/etc/init/fbset.conf
    │ # fbset - run fbset to set truecolor fbmo
    │ description "run fbset before lightdm"
    │ start on startup and started udev or starting lightdm
    │ task
    │ script
    │     [ -x /bin/fbset ] && /bin/fbset -a -nonstd 1 -depth 32 -rgba "8/0,8/8,8/16,8/24"
    │ end script
    │ EOF
    │ cat << EOF >/etc/X11/xorg.conf
    │ Section "Screen"
    │     Identifier "Default Screen"
    │     DefaultDepth 24
    │ EndSection
    │ EOF
    ╰────

    Then reboot the device.


    Run demos
    ─────────

    Before running demos, make sure you have:
    1. Flashed the new Linux kernel.
    2. Updated mali_kbase.ko
    3. Installed Mali user drivers
    4. Uploaded Mali demos
    5. Configured 32bit framebuffer

    Then open a terminal, run one of the demo:
    ╭────
    │ sudo -i
    │ cd bin_arm/opengles_30/skybox
    │ ./skybox
    ╰────

    Enjoy!


    Video
    ──────

    在设置32bit位深以后,输出的显示效果不好,花屏的问题,等我接下来解决了跟大家分享。

  • 相关阅读:
    性能碾压 POI !利用模板语法快速生成 Excel 报表
    大庆金桥:基于 SpreadJS 开发实现计量器具检定证书的在线生成与打印
    厦门科云:构建基于 SpreadJS 的管理会计综合实训平台
    为什么 Vue 更符合这个时代的大势所趋
    嵌入SpreadJS,赋能计量器具检定信息化
    GcExcel:比 Apache POI 速度更快、性能更高
    使用SpreadJS 开发在线问卷系统,构筑CCP(云数据采集)平台
    首厚智能:嵌入 SpreadJS 表格组件,搭建实验室信息管理系统(LIMS)
    企业数字化转型:用 SpreadJS 打造互通互链的电力系统物联网
    悲观锁和乐观锁
  • 原文地址:https://www.cnblogs.com/lihaiping/p/5566317.html
Copyright © 2011-2022 走看看