Qt5 Micro内置8MB Mb嵌入式

时间:2016-02-23 04:48:17

标签: qt embedded-linux openwrt

是否可以在非常受限制的系统上使用Qt进行嵌入式项目,该系统运行一个8MB Falsh和32MB ram OpenWRT(典型的路由器配置)。

目标不是使用GUI,而是使用所有非gui类和信号/插槽概念以实现生产力目的。

到目前为止,有两个解决方案需要探索,最小化构建,但这似乎仍需要几MB。

静态构建,但很难评估最终大小。

任何经验丰富的反馈都会受到欢迎,要知道是否值得花时间尝试这一点,或者它是否是一个失败的原因,在哪种情况下哪种选择会有好处?

干杯

2 个答案:

答案 0 :(得分:1)

从自定义Qt构建开始,并禁用您不会使用的所有功能。请参阅this configure doc pageqfeatures.txt - the list of configurable features

用于Windows的静态构建的32位Qt 5可执行文件,除了系统dll之外没有依赖项,包括核心,gui,小部件和网络模块,没有禁用任何功能,而小型应用程序大约需要6MB。因此,如果压缩可执行文件并删除不需要的功能,则应占用<4MB。

似乎可以在你的系统上,只要你也可以在那里挤压内核。最有可能的是,您将把必要的内核模块,启动脚本,busybox和静态可执行文件放在作为根文件系统挂载的squashfs上。 squashfs需要编译到内核中,而不是作为单独的模块。

闪存将包含引导加载程序,内核,一个squashfs,可能还有一个兆字节的备用。

答案 1 :(得分:1)

以下是Embedded Linux Projects Using Yocto Project Cookbook优化内核和rootfs的示例。

  

默认情况下,压缩的Linux内核映像(zImage)为   wandboard-quad就在附近   5.2 MB。这个方法将展示我们如何减少它。

     

Wandboard的最小内核配置示例   能够从microSD卡启动根文件系统是   arch / arm / configs / wandboard-quad_minimal_ defconfig文件如下:

CONFIG_KERNEL_XZ=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_EMBEDDED=y
CONFIG_SLOB=y
CONFIG_ARCH_MXC=y
CONFIG_SOC_IMX6Q=y
CONFIG_SOC_IMX6SL=y
CONFIG_SMP=y
CONFIG_VMSPLIT_2G=y
CONFIG_AEABI=y
CONFIG_CPU_FREQ=y
CONFIG_ARM_IMX6_CPUFREQ=y
CONFIG_CPU_IDLE=y
CONFIG_VFP=y
CONFIG_NEON=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_PROC_DEVICETREE=y
CONFIG_SERIAL_IMX=y
CONFIG_SERIAL_IMX_CONSOLE=y
CONFIG_REGULATOR=y
CONFIG_REGULATOR_ANATOP=y
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_ESDHC_IMX=y
CONFIG_DMADEVICES=y
CONFIG_IMX_SDMA=y
CONFIG_EXT3_FS=y
     

此配置构建了一个886 K压缩的Linux内核映像   (zImage的)。

     

小图像的示例,核心图像小,不包括   packagegroup- core-boot配方,可以作为a的基础   根文件系统映像缩小,   recipes-core / images / core-image-small.bb,如下所示:

DESCRIPTION = "Minimal console image."
IMAGE_INSTALL= "\
base-files \
base-passwd \
busybox \
sysvinit \
initscripts \
${ROOTFS_PKGMANAGE_BOOTSTRAP} \
${CORE_IMAGE_EXTRA_INSTALL} \
"
IMAGE_LINGUAS = " "
LICENSE = "MIT"
inherit core-image
IMAGE_ROOTFS_SIZE ?= "8192"
DISTRO = "poky-tiny"
INSANE_SKIP_glibc-locale = "installed-vs-shipped"
     

随着poky-tiny,图像的大小进一步减小到4左右   MB。

剩下的就是如何配置Qt以满足要求。