在HI3531上移植和运行QT4.8.6

1、            前言:

近段有点时间,想把QT移植到HI3531上,在网上查找了很多资料,但都不是很全面,有些有问题也没有得到很好的体现。

2、            环境:

PC:ubuntu10.04

HI3531交叉工具链:arm-hisiv100nptl-linux-

QT版本:qt4.8.6(Qt libraries 4.8.6 for embedded Linux (230 MB)

QT-Creator版本:qt-creator-linux-x86-opensource-2.4.1.bin

3、            交叉编译:

1)      进入qt-everywhere-opensource-src-4.8.6/mkspecs/qws目录,新建linux-hisi3531nptl-g++目录,复制linux-arm-g++目录下的所有文件到linux-hisi3531nptl-g++

cp –a linux-arm-g++/* linux-hisi3531nptl-g++

2)进入linux-hisi3531nptl-g++,修改文件qmake.conf

# modifications to g++.conf

QMAKE_CC               = arm-hisiv100nptl-linux-gcc

QMAKE_CXX             = arm-hisiv100nptl-linux-g++

QMAKE_LINK            = arm-hisiv100nptl-linux-g++

QMAKE_LINK_SHLIB      = arm-hisiv100nptl-linux-g++

# modifications to linux.conf

QMAKE_AR                = arm-hisiv100nptl-linux-ar cqs

QMAKE_OBJCOPY          = arm-hisiv100nptl-linux-objcopy

QMAKE_STRIP             = arm-hisiv100nptl-linux-strip

3)打开文件qplatformdefs.h增加

#undef O_CLOEXEC

此处主要为解决:编译过程中找不到accept4函数问题

4)安装X11库

sudo apt-get install libX11-dev libXext-dev libXtst-dev

5)返回源码目录qt-everywhere-opensource-src-4.8.6进行配置

./configure --prefix=/opt/qt4.8.6 -opensource -confirm-license -qt-sql-sqlite -qt-gfx-linuxfb -plugin-sql-sqlit -no-qt3support -no-phonon -no-svg -no-webkit -no-javascript-jit -no-script -no-scripttools -no-declarative -no-declarative-debug  -qt-zlib -no-gif -qt-libtiff -qt-libpng -no-libmng -qt-libjpeg -no-rpath -no-pch -no-3dnow   -no-avx  -no-neon -no-openssl -no-nis -no-cups -no-dbus -embedded arm -platform linux-g++ -xplatform qws/linux-hisi3531nptl-g++ -little-endian -qt-freetype -no-opengl -no-glib -nomake demos -nomake examples -nomake docs -nomake tools

其中:  --prefix=/opt/qte4.8.6 为交叉编译目标安装目录

-xplatform qws/linux-hisi3531nptl-g++指定编译器及平台配置信息

5)make

6)make install

4、            PC编译:

1)      重新解压qt-everywhere-opensource-src-4.8.6.tar.gz,进行PC编译

2)      ./ configure

3)      make

4)      make install

5、            安装QT开发环境

1)sudo ./qt-creator-opensource-linux-x86-2.4.1.run

2)  下一步直到安装完成

3)  在应用程序,就可以看到QT Creator

6、            配置开发环境

1)从PC的QT安装目录中拷贝如下文件到交叉编译目录

cp /usr/local/Trolltech/Qt-4.8.6/bin/qml* /opt/qt4.8.6/bin/

2)打开QT Creator

3)打开 工具-选项-QT版本

4)打开添加按键,添加交叉编译的qmake

5)进入工具链,打开添加按键, 选择GCCE,在编译器路经选择arm-hisiv100nptl-linux-g++的路经

到些就可以编译QT下自带的例子chip了,但这时在HI3531上还是不能显示的。

7、            配置海思HI3531

1) 按照《HIFB开发指南.pdf》 说明加载hifb.ko驱动,这里需要说明的是,如果QT程序运行在fb0上,分辨率为1920*1080,颜色格式为ARGB8888,1buffer模式下,则需要vram0_size = 1920*1080*4=8100K

如果为2 buffer模式下则需要vram0_size=1920*1080*4*2=16200K

说明:为什么要使用ARGB8888而不用ARGB1555,是因为我们QT编译使用的是32位framebuffer。不然的话会做不了透明处理。

2)使能fb0,前提是VO设备已初始化完毕

static struct fb_bitfield g_r32 = {16,8, 0};

static struct fb_bitfield g_g32 = {8, 8, 0};

static struct fb_bitfield g_b32 = {0, 8, 0};

static struct fb_bitfield g_a32 = {24, 8, 0};

HI_BOOL show;

HIFB_ALPHA_S stAlpha;

struct fb_var_screeninfo stVarInfo;

fd = open("/dev/fb0", O_RDWR, 0);

show = 0x0;

ioctl(fd, FBIOPUT_SHOW_HIFB, &show);

stAlpha.bAlphaEnable = 0x1;

stAlpha.bAlphaChannel = 0x0;

stAlpha.u8Alpha0 = 0x0;

stAlpha.u8Alpha1 = 0xff;

stAlpha.u8GlobalAlpha = 0xff;

ioctl(fd, FBIOPUT_ALPHA_HIFB, &stAlpha);

ioctl(fd, FBIOGET_VSCREENINFO, &stVarInfo);

stVarInfo.xres = 1920;

stVarInfo.yres = 1080;

stVarInfo.xres_virtual = 1920;

stVarInfo.yres_virtual = 1080;

stVarInfo.transp= g_a32;

stVarInfo.red = g_r32;

stVarInfo.green = g_g32;

stVarInfo.blue = g_b32;

stVarInfo.bits_per_pixel = 32;

stVarInfo.activate = FB_ACTIVATE_NOW;

ioctl(fd, FBIOPUT_VSCREENINFO, &stVarInfo);

show = 0x1;

ioctl(fd, FBIOPUT_SHOW_HIFB, &show);

while(1)

{

Sleep(100);

}

3)配置设备linux环境变量

export QT_QWS_FONTDIR=/usr/lib/fonts              //字库的目录

export QT_QWS_DISPLAY=“linuxFB:/dev/fb0“   //QT显示在fb0层

8、            运行CHIP

OK

9、            实现背景透明

只需要调用QWSServer::setBackground(QColor(0,0,0,0));即可关于这个QColor,在设置的时候,是按照ARGB8888来设置的,前三个数值是RGB,最后一个数值是透明度,0x00是全透,0x7f是半透,0xff是不透。

10、如何显示中文

从c:\windows\fonts 目录下复制*.ttf文件到字库目录,就可以显示了,但字体需要设置大些。

在HI3531上移植和运行QT4.8.6的更多相关文章

  1. QT-Embedded-4.5.3在海思35xx上移植

    QT4.5.3在海思3520A上移植步骤-修订版 2015年3月29日星期日, 16:59:03 1.首先要保证已经安装了海思的交叉编译器: #arm-hi  + Tab key to show wh ...

  2. 在秉火STM32F429挑战者开发板上移植Huawei LiteOS指南

    昨天在B站上突然看到了一个短视频,是在正点原子的战舰V3开发板上移植华为的Huawei LiteOS操作系统,就是这个视频:看完鸿蒙OS发布会,试用华为的物联网操作系统Lite OS(B站),于是呢, ...

  3. 树莓派3b在rt-thread上移植LittlevGL

    树莓派3b在rt-thread上移植LittlevGL 目录 树莓派3b在rt-thread上移植LittlevGL 1.本文概述 2.资源准备 3.上手体验 4.rt-thread与lvgl进行无缝 ...

  4. 在STM32F401上移植uC/OS的一个小问题 [原创]

    STM32F401xx是意法半导体新推出的Cortex-M4内核的MCU,相较于已经非常流行的STM32F407xx和STM32F427xx等相同内核的MCU而言,其特点是功耗仅为128uA/MHz, ...

  5. 在 Azure 上使用 Docker运行 Mono

    Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个火热的技术,并且提供简单的方 ...

  6. 在Android上使用qemu-user运行可执行文件

    在Android上使用qemu-user运行可执行文件 作者:寻禹@阿里聚安全 前言 QEMU简要介绍: QEMU可以解释执行可执行程序.既然QEMU可以解释执行可执行程序,那么QEMU就能够知道执行 ...

  7. 在 Mac OS 上创建并运行 ASP.NET Core 1.0 网站

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  8. zedboard上移植OPENCV库

    zedboard上移植OPENCV库 之前做了很多移植OPENCV库的工作,但是需要包含的各种库,需要交叉编译,X264 ,JPGE ,FFMPGE等等 注意:在<嵌入式系统软硬件协同设计实战指 ...

  9. (转载)WindowsXP上安装和运行神器SqlMap的步骤

    在Windows XP上安装和运行SqlMap的步骤…… 1.首先下载SqlMap 点击下载. https://codeload.github.com/sqlmapproject/sqlmap/leg ...

随机推荐

  1. 2-XOR-SAT (种类并查集)

    写了那么多模拟题这题算是最难的了QAQ 好神,,,我于是补了一下并查集.. 并查集很神...... orz 种类并查集...orz 对于维护sat,我们可以这样想: 如果x和y的xor是true,那么 ...

  2. boost诊断工具BOOST_ASSERT、BOOST_VERIFY、BOOST_STATIC_ASSERT

    boost.assert提供的主要工具是BOOST_ASSERT宏,类似于C语言的assert,提供运行时的断言,但功能有所增强; 默认情况下,BOOST_ASSERT宏等同于assert宏: # d ...

  3. 使用JMX监控Kafka

    监控数据源 JMX RMI方式启动Broker,Consumer,Producer -ea -Dcom.sun.management.jmxremote.authenticate=false -Dco ...

  4. Android无线测试之—UiAutomator UiScrollable API介绍三

    获取列表子元素 一.相关API介绍 返回值 API 描述 UiObject getChildByDescription(UiSelector childPattern, String text, bo ...

  5. vmware key

    VMware vRealize Suite 2017 Enterprise   N04CL-09H9H-J89DJ-0KCH6-90N0J VMware vRealize Operations Man ...

  6. git、git bash、git shell的区别

    之前安装了github(CSDN上找的,官网的下不来,貌似要FQ - -)后,自带了git shell,如图: 输命令的时候发现网上的一些命令不管用,譬如:git ls –a 查看隐藏的 .git 文 ...

  7. mongodb3.0+ 版本内置数据压缩

    mongodb3+版本之后支持zlib和snappy. 创建压缩的集合 db.createCollection( "email", {storageEngine:{wiredTig ...

  8. Thrift初试

    Restful 基于 Http 进行通讯. 开放.标准.简单.兼容性升级容易: 性能略低.在 QPS 高或者对响应时间要求苛刻的服务上,可以用 RPC,RPC采用二进制传输.TCP 通讯,所以通常性能 ...

  9. Share and NTFS Permission

    NTFS Permissions Share Permissions Share and NTFS Permission Similarities 共享权限和NTFS权限的相似性 Modifying ...

  10. 使用Dell R710 IDRAC挂载虚拟介质

    Dell DRAC,虚拟介质分离或所选虚拟磁盘驱动器的虚拟介质重定向已由另一用户使用 DELL Idrac 一台Dell的R710服务器,远程管理器后发现虚拟介质无法映射,一直提示“虚拟介质分离或所选 ...