| |
|
开发:
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 ./configure -opensource -confirm-license -debug \ ./examples/animation/animatedtiles/animatedtiles -qws -display QVFb:0 在 STM32F746-discovery 上启动 我们在 Embox 中构建了修改后的应用程序,并检查它是否成功地在 QEMU 上运行。但是当我们在目标板上启动应用程序时,我们收到了“内存不足”错误。这意味着我们配置中的堆大小对于应用程序来说是不够的。我们决定在 Linux 中使用丰富的开发工具来解决问题,即估计所需的堆大小。 我们已经用 valgrind 开始了我们的应用程序。Valgrind是一个用于内存调试和分析的工具,Massif是一个堆分析器(它是 Valgrind 的一部分)。 $ valgrind --tool=massif --massif-out-file=animatedtiles.massif./examples/animation/animatedtiles/animatedtiles -qws -fullscreen 我们在 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 --tool=massif --massif-out-file=animatedtiles.massif./examples/animation/animatedtiles/animatedtiles -qws -fullscreen |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |