quaver23

quaver23

0个粉丝

39

问答

0

专栏

0

资料

quaver23  发布于  2016-09-06 15:30:10
采纳率 0%
39个问答
16409

Hi3536 和 Qt GUI 开发

 
各位前辈,我目前利用 Qt Creator 来做 GUI 开发。 请教大家,具体上是怎么将QT GUI 界面设计和 HI3536 MPP 软件模块连上呢?
我来回答
回答14个
时间排序
认可量排序

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-09-06 23:44:17
认可0
本帖最后由 ngswfx 于 2016-9-6 23:46 编辑

我是把所有"需要和芯片以及具体应用的"设计为一个动态库LibQTAppCtrl.so,QT界面调用这个动态库。


然后海思3536再根据需求在封装一个LibHIMPI.so

//第一个库作用是,避免QT界面中大量繁杂代码。
//第二个库作用是,不同芯片LibHIMPI.so不同,接口一致,但应用程序只需要一个,无需变化。


//当然还有其他一些辅助库,例如和linux系统交互的某些常用模块代码。例如修改IP,获取时间等等。也就是系统通用libComInf.so

quaver23

0个粉丝

39

问答

0

专栏

0

资料

quaver23 2016-09-07 12:17:35
认可0
那我在qt IDE 写代码的时候, 是在 qt GUI 里的代码,加入mpp的源码,然后再编译。还是说 qtGUI 代码是一个单独的source,mpp源码有事另一个source; 那在qt ide 里头,我应该有至少2 个sources。这思路对不啦?

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-09-07 14:25:26
认可0
本帖最后由 ngswfx 于 2016-9-7 14:28 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=37317&ptid=12555]quaver23 发表于 2016-9-7 12:17[/url]
那我在qt IDE 写代码的时候, 是在 qt GUI 里的代码,加入mpp的源码,然后再编译。还是说 qtGUI 代码是一 ...[/quote]

你就算弄再多source,也是在一个app执行程序内部,这样做也不长久,通用性太差。而且写着写着你就会发现,各个.c文件,全都会交织到一起,你想剥离出来都难。

也就是说你写一个程序,里面的部分代码,其他程序无法共享使用。这样处理的话,你从海思底层开始写,写出来一个程序,如果弄到另外一个海思芯片,或者根本不是海思芯片,整个程序必须重写。工作量极其庞大(尤其当整个系统功能比较完善后)。

你如果把各个流程很好的分开,中间层提炼为自己理解的接口,通过.so动态库或者.a静态库的方式对各个中间模块进行连接。这样你写的QTj界面程序可重用,中间库可以重用,对于不通的底层芯片,例如3536或者3535,你只需要更换不通的底层库,然后上层的库,根据uclibc或者glibc以及海思编译器版本差异,重新编译即可。整个代码无需修改。

///////////当然,上说说的方法是做庞大系统时候才需要这么考虑,如果你仅仅写一个demo类的小程序,实现很基本的功能,那就无所谓了,全部都放到一个c或者多个不同功能的.c源文件里面都可以。

艾编程的鲁小班

18个粉丝

25

问答

17

专栏

32

资料

艾编程的鲁小班 2016-09-16 04:11:51
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37325&ptid=12555]ngswfx 发表于 2016-9-7 14:25[/url]
你就算弄再多source,也是在一个app执行程序内部,这样做也不长久,通用性太差。而且写着写着你就会发 ...[/quote]

我在移植了qt5.6.0的版本,但是CPU的占用率太高,不知道里面的环境变量应该怎么配置。。。

export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:/mnt/Hi3519_Stream_V1.0.2.0/libs
export QTDIR=/qt_hi3519_5.6.0            
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=1920x1080:tty=/dev/tty0      
#export QT_QPA_GENERIC_PLUGINS=evdevmouse:/dev/input/mouse0                  
export QT_QPA_FONTDIR=$QTDIR/lib/fonts

艾编程的鲁小班

18个粉丝

25

问答

17

专栏

32

资料

艾编程的鲁小班 2016-09-16 04:15:12
认可0
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
  543   477 root     R    50016 85.4   1 53.0 ./my-qt-app
  436   327 root     S    11768 20.1   0  3.1 ./sample_vio 0 1
  265     2 root     SW       0  0.0   0  0.9 [ksdioirqd/mmc2]
  544   494 root     R     1832  3.1   0  0.1 top
  284     2 root     SW       0  0.0   0  0.1 [RTW_CMD_THREAD]
  327    90 root     S     1864  3.1   0  0.0 -sh
这个是我动动鼠标的结果。。。。
这个CPU还是3519,可是双核的啊A17+A7----这个太吃CPU了,,,,

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-09-16 06:42:11
认可0
本帖最后由 ngswfx 于 2016-9-16 07:05 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=37829&ptid=12555]wfjdemmye 发表于 2016-9-16 04:15[/url]
PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
  543   477 root     R    50016 85.4   1 53.0 ...[/quote]

A7@ 800MHz,32KB I-Cache,32KB D-Cache /128KB
L2 cache
A17@ 1.2GHz,32KB I-Cache,32KB D-Cache /256KB
L2 cache

频率也还可以,估计2个层面导致你这个占cpu高,一个是检查自己的界面到底用了多少点。也就是说你的界面上某个窗体的大小,越大约占用cpu,因为这个东西就是一个个点在计算,拷贝,而且就是cpu在软拷贝,根据我的经验,最费资源就是一个全屏窗体,上面再有一个小窗体,然后你拖动小窗体在大窗体上漫游,这个最费资源了。而且这个QT的大部分操作就是看cpu频率,和内核是A7 A17 A9,区别不大,就是看频率,内部的计算,应该没设计太多高级的指令,就是内存拷贝了,加减乘除了。

另外一个层面,也要考虑5.6本身的问题了,版本越高,新功能越多,对资源消耗大一些,这是可以理解的。我这边现在用的是3520D QT4.86版本。当其他程序不怎么耗用cpu时,界面部分优化后,效果还可以。也有不少对话框,但没搞全屏类的对话框,只有一个是全屏的,还被隐藏了,禁止刷新了,仅仅用来捕获鼠标位置信息,用来计算哪个视频被选中。

//看你的log,cpu1用了53%资源,如果啥界面都没有,只有一个鼠标,感觉不应该。

建议你可以研究一下,怎么样让某些界面部分暂停更新,避免qt计算些没用的东西,当然,前提是,千万别用半透明等等效果,这个更费cpu资源。这个不仅仅每个点拷贝,而且每个点还要计算一下。

//另外,还有一个需要注意,做界面时,cpu和内存占用是个矛盾的东西,如果想节约内存,cpu就会高,如果想节约cpu,内存就会高,我这边目前选择的是先保证cpu,也就是把常用的ICON,PNG图标等等,都常驻内存,用的时候直接调用,不用每次都现用,现计算,现装载,对于频繁调用的列表类icon,这节约的cpu资源非常可观。

艾编程的鲁小班

18个粉丝

25

问答

17

专栏

32

资料

艾编程的鲁小班 2016-09-29 00:04:13
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37831&ptid=12555]ngswfx 发表于 2016-9-16 06:42[/url]
A7@ 800MHz,32KB I-Cache,32KB D-Cache /128KB
L2 cache
A17@ 1.2GHz,32KB I-Cache,32KB D-Cache /25 ...[/quote]

感谢楼主给的建议,非常有用,只是现在一直在封装海思359的SDK,和实现QT-GUI的一些功能,所以这个5.6.0的版本优先级放在后面了。

default

0个粉丝

40

问答

0

专栏

0

资料

default 2016-09-29 08:36:18
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=38664&ptid=12555]wfjdemmye 发表于 2016-9-29 00:04[/url]
感谢楼主给的建议,非常有用,只是现在一直在封装海思359的SDK,和实现QT-GUI的一些功能,所以这个5.6. ...[/quote]

你使用的是3519V100还是V101的版本?

艾编程的鲁小班

18个粉丝

25

问答

17

专栏

32

资料

艾编程的鲁小班 2016-09-29 10:25:37
认可0
Hi3519 V100R001C01SPC020

艾编程的鲁小班

18个粉丝

25

问答

17

专栏

32

资料

艾编程的鲁小班 2016-09-29 10:26:17
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=38670&ptid=12555]default 发表于 2016-9-29 08:36[/url]
你使用的是3519V100还是V101的版本?[/quote]

Hi3519 V100R001C01SPC020

quaver23

0个粉丝

39

问答

0

专栏

0

资料

quaver23 2016-11-01 09:56:57
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=37325&ptid=12555]ngswfx 发表于 2016-9-7 14:25[/url]
你就算弄再多source,也是在一个app执行程序内部,这样做也不长久,通用性太差。而且写着写着你就会发 ...[/quote]

我目前在使用QT5.7 (QT creator 4.1.0) 来做开发工作,但我设置的qmake好像有问题, 在QT库没有multimedia / multimediawidget 的 module

请教一下,你可否分享 Qt5.7【./configure】 以及 【qmake.conf】 的参数吗?

以下是我的参数:

[Configure parameters:]
./configure -commercial -confirm-license -release -static -eglfs -linuxfb -opengl es2 -no-qml-debug -no-directfb -no-kms -no-xcb -no-alsa -no-audio-backend -qt-zlib -qt-libjpeg -qt-libpng -platform linux-g++-64 -device linux-arm-hi3536-g++ -no-icu -no-nis -no-pch -extprefix /home/aa/Hi3536_SDK_V2.0.4.0/v1_qt5.7_arm -prefix /mnt/sda1/ -device-option CROSS_COMPILE=/opt/hisi-linux/x86-arm/arm-hisiv400-linux/target/bin/arm-hisiv400-linux- -skip doc -v -qreal float -fontconfig

[qmake.conf]

include(../common/linux_device_pre.conf)

QMAKE_INCDIR += /opt/hisi-linux/x86-arm/arm-hisiv400-linux/target/usr/include
QMAKE_LIBDIR += /opt/hisi-linux/x86-arm/arm-hisiv400-linux/target/lib/a7_softfp_vfpv4

QMAKE_INCDIR_EGL += /home/aa/Hi3536_SDK_V2.0.4.0/mpp_single/component/gpu/release/include
QMAKE_LIBDIR_EGL += /home/aa/Hi3536_SDK_V2.0.4.0/mpp_single/component/gpu/release/lib
QMAKE_INCDIR_OPENGL_ES2 += /home/aa/Hi3536_SDK_V2.0.4.0/mpp_single/component/gpu/release/include
QMAKE_LIBDIR_OPENGL_ES2 += /home/aa/Hi3536_SDK_V2.0.4.0/mpp_single/component/gpu/release/lib

DEFINES += EGL_FBDEV

QMAKE_LIBS_EGL += -lmali
QMAKE_LIBS_OPENGL_ES2 += $$QMAKE_LIBS_EGL
#QMAKE_LIBS_OPENVG     += $$QMAKE_LIBS_EGL // not found

#QMAKE_CFLAGS   +=-mcpu=cortex-a7 -mfloat-abi=soft -mfpu=neon-vfpv4 -marm -mthumb-interwork

QMAKE_CXXFLAGS += $$QMAKE_CFLAGS

# Preferred eglfs backend
EGLFS_DEVICE_INTEGRATION = eglfs_mali

include(../common/linux_arm_device_post.conf)

load(qt_config)

justchen

1个粉丝

11

问答

0

专栏

1

资料

justchen 2016-11-16 16:48:23
认可0
qt5.7强制要求编译器支持 C++11
你哪个编译器?

quaver23

0个粉丝

39

问答

0

专栏

0

资料

quaver23 2016-11-22 14:35:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=41343&ptid=12555]justchen 发表于 2016-11-16 16:48[/url]
qt5.7强制要求编译器支持 C++11
你哪个编译器?[/quote]

我在用 海思提供的 arm-hisiv400-linux 交叉编译器

qn1511595199

0个粉丝

0

问答

0

专栏

0

资料

qn1511595199 2018-01-19 11:29:54
认可0
记录,感谢ngswfx,每次都得到他的帮助。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区