IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 在 STM32 MCU 上运行 Linux 应用程序 -> 正文阅读

[嵌入式]在 STM32 MCU 上运行 Linux 应用程序

智能产品的嵌入式系统有望提供越来越多的功能。这可以通过 Linux 轻松实现,它为您希望的每种情况提供软件。但是 Linux 需要相当大的硬件资源,最显着的是内存,因此目标平台通常会相当昂贵并且具有高功耗。另一方面,现代微控制器 (MCU) 拥有大量资源,足以完成许多智能任务。使用实时操作系统 (RTOS),例如 Embox RTOS,允许在包括 MCU 在内的任何地方使用 Linux 软件,开发人员可以更轻松地开发成本更低、功耗更低的智能设备。

在本文中,我们将讨论在运行 Embox RTOS 的嵌入式 MCU 上启动基本 Qt 应用程序。我们使用两个基于单核 Cortex-M7 的板 (216MHz):STM32F746g-Discovery 和 STM32F769i-Discovery,它们分别具有 480×272 和 800×480 屏幕分辨率的触摸屏。

前一段时间,我们设法在 STM32F746-Discovery [注 1 ]上启动了一个标准的 Qt 示例“moveblocks” 。然而,我们想更进一步,启动一个带有触摸屏的示例。我们选择另一个标准示例,“animatedtiles”。这是一个相当不错的例子,即使在桌面上看起来也很酷。它是交互式的,因此我们可以使用触摸屏,而且它看起来像 3D 动画。

我们想了解 STM32 MCU 是否可以提供足够的性能。我们不确定 CPU 的速度是否足以使渲染场景流畅,因为正如我们发现的那样,即使是 800×480 显示器的屏幕刷新也是一项昂贵的操作 [注 2 ]。

建筑

首先,让我们将应用程序构建为 Embox 的一部分。最简单的方法是为QEMU构建应用程序,这是一个开源模拟器。使用 QEMU 意味着在这种情况下我们不需要处理内存消耗。这将帮助我们确保所有必要的组件都可用。当 QEMU 上的“animatedtiles”启动时,我们很容易将必要的组件添加到 STM32 的配置文件中。

在目标板上首次启动

我们在目标板 STM32F746G-Discovery 上成功启动了 ‘animatedtiles’,但我们注意到只绘制了屏幕的上半部分。当然,我们可以尝试通过立即在板上调试来解决问题,但有一个更简单的方法:我们可以先在 Linux 环境中启动和调试示例。

在主机上调试

要运行此示例并调试您的应用程序,您需要Qt 库本身以及 QVFB,这是一个提供虚拟屏幕的 Qt 应用程序。您可以按照官方文档中的说明构建 QVFB 。

然后您可以启动具有所需屏幕分辨率的 QVFB(STM32F746G-Discovery 为 480×272):

./qvfb -width 480 -height 272 -nocursor
您还应该使用嵌入式配置文件构建 Qt 库,即使用“-embedded”选项。此选项旨在在没有 X11 或现有图形环境的情况下运行 Qt,将改用 QWS(Qt 窗口系统)。我们还禁用了一些其他不必要的选项和模块。生成的配置行如下:

./configure -opensource -confirm-license -debug \
-embedded -qt-gfx-qvfb -qvfb \
-no-javascript-jit -no-script -no-scripttools \
-no-qt3support -no-webkit -nomake 演示 - nomake 例子
最后,让我们构建并启动 ‘animatedtiles’。构建阶段与 Qt 一样(qmake; make;)。您应该在启动应用程序时指定 QVFB 作为显示:

./examples/animation/animatedtiles/animatedtiles -qws -display QVFb:0
我们在屏幕的上半部分看到了相同的图片。我们在源代码(examples/animation/animatedtiles/main.cpp)中发现应用程序以“view->show()”开头,这意味着不是全屏模式。在那之后,我们完全相信屏幕的唯一上半部分用于显示应用程序。我们稍微修改了 ‘animatedtiles’ 的代码,添加了 ‘-fullscreen’ 选项。

在 STM32F746-discovery 上启动

我们在 Embox 中构建了修改后的应用程序,并检查它是否成功地在 QEMU 上运行。但是当我们在目标板上启动应用程序时,我们收到了“内存不足”错误。这意味着我们配置中的堆大小对于应用程序来说是不够的。我们决定在 Linux 中使用丰富的开发工具来解决问题,即估计所需的堆大小。

我们已经用 valgrind 开始了我们的应用程序。Valgrind是一个用于内存调试和分析的工具,Massif是一个堆分析器(它是 Valgrind 的一部分)。

$ valgrind --tool=massif --massif-out-file=animatedtiles.massif./examples/animation/animatedtiles/animatedtiles -qws -fullscreen
$ ms_print animationtiles.massif >animatedtiles.out
并发现应用程序需要大约 2.7 MB 的堆大小。

我们在 Embox 配置中将堆大小设置为 3 MB,然后再次开始我们的演示。它在全屏模式下成功运行。

在 STM32F769I-Discovery 上启动。

我们还想在类似的板上尝试这个例子,但显示器更大。本示例使用了 STM32F769I-Discovery,显示分辨率为 800×480。在这种情况下,仅 16 位颜色模式(800x480x2=768000)的帧缓冲区就需要将近 1MB 的空间,但该板上有足够的 (16MB) 外部 SDRAM。所以我们只需要估计堆的大小。

我们以新的分辨率 (800×480) 启动 QVFb:

$./qvfb -width 800 -height 480 -nocursor &
和上次一样使用valgrind:

$ valgrind --tool=massif --massif-out-file=animatedtiles.massif./examples/animation/animatedtiles/animatedtiles -qws -fullscreen
$ ms_print animationtiles.massif >animatedtiles.out
我们发现它需要大约 6 MB。我们已经在 STM32F769I 板上成功设置了 6 MB 堆大小和“动画时间”。
相关实战:https://www.99qibang.cn/information/4b207d9a06614e7185094f87a90a2f7b.html
https://www.99qibang.cn/information/62c6e06675014915b494bf4986658bd3.html

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:36:26  更:2021-08-31 15:36:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:25:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码