嵌入式开发:当用微控制器构建嵌入式GUI时,有哪些注意事项

news2025/7/9 11:31:09

  在嵌入式开发中,借助基于MCU的设计,你可以消除额外的RAM和闪存芯片,并使用板载外设而不是板外逻辑,所有这些都将随着当今功能强大的芯片而变得更加简单。当然,与成熟的微处理器相比,MCU本身也提供了额外的成本下降。所有这些降低意味着制造成本更低的产品,为大众市场容量和更高的利润率打开大门。

  最大的问题是:你如何知道你的应用是否可以缩小到微控制器的比例?换句话说,当考虑在MCU上构建嵌入式UI app时,哪些因素是最重要的?

  5个最重要的MCU考虑因素:

  1.硬件材料清单

  微控制器的神奇之处在于,它们取代了电子板上的其他逻辑。但是,你需要有消除的东西。如果你已经有了许多其他分立元件,特别是RAM和Flash,那么你需要考虑微控制器的转换。

  2.RAM大小

  微控制器有内置的RAM,但不是一吨,所以如果你的应用程序的RAM使用率很高,它可能不是挤压到微控制器上的理想选择。在嵌入式开发中,高端MCU的板载RAM通常约为1MB,但你需要仔细查看micro的数据表以确定。你还希望通过有选择地节省内存中的数据结构所能节省的资源来缩小默认堆栈,并检查结构,以确保它们不会因编译器和处理器对齐要求而超过所需的大小。像数据库这样需要RAM的库通常有配置设置和模式来专门减少RAM的使用。即使你的程序的RAM高水位线比板载RAM大小高出10%到15%,你也可以在不移除功能的情况下缩小足够的尺寸。

  3.Flash尺寸

  与RAM类似,利用MCU的板载闪存对于消除额外闪存芯片的成本至关重要。MCU上的闪存大小差异很大,但通常在512K到4MB之间。由于有编译器的帮助,压缩代码有时比压缩数据容易一些;打开所有编译器大小优化,包括那些消除死代码和折叠冗余子例程的优化。如果你有许多静态数据结构,即使需要添加解压缩逻辑,也可能需要压缩它们。如果你的代码使用了大量基于文本的文件,如XML或JSON,那么使用构建时的“minify”工具来删除所有注释和空白也可以帮助你获得一些空间。

  

 

  4.语音识别(VR)

  在嵌入式开发中,语音识别引擎可以使用大量的RAM和Flash,使得很难将它们安装到MCU上。如果你的应用程序依赖于VR,那么在执行MCU端口时,你需要仔细考虑如何最好地管理这一点。有一些占地面积较小的VR引擎可以安装在微控制器的板载RAM和闪存中,但是选择这些引擎可能需要牺牲识别精度或自然语言能力。对于具有连续互联网连接的物联网设备,另一种策略是使用非车载VR引擎。音频处理前端可以很容易地放在微控制器上,而使用后端的资源则驻留在云中。

  5.嵌入式UI复杂性

  应用程序中单个嵌入式UI屏幕的数量可以让你大致了解其存储需求,但是,你需要考虑以下所有因素:

  l 唯一GUI屏幕和屏幕模板的数量

  l PNG、JPG和GIF图像的数量

  l 国际化语言的数量

  l 使用的字体数以及它们是TrueType还是位图

  l 是否需要亚洲语言支持

  l 需要图形的动画或过渡的数量

  l 显示器尺寸:宽度和高度(像素),颜色深度(位)

  如果你正在设计一个新的应用程序,那么你将没有很多具体的细节可以开始。然而,使用此检查表,你应该能够大致确定你的应用程序是否适合移植到MCU。如果你的猜测总和低于16MB,尽管你可能需要大幅精简你的应用程序,但你可能可以做到。

  在内存和资源紧张的情况下突破边界。

  Storyboard Lite具有嵌入式开发人员和设计师熟悉的协作工作流和易用性,可以帮助团队构建为其硬件平台量身定制的应用程序,特别是针对每千字节都很重要的资源受限目标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/6804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【校内篇】如何安装一台虚拟机

咱们的微机老师要求上微机课用的电脑必须要用 Windows7Windows\ 7Windows 7,但是很多同学的电脑也许并不匹配,造成了诸多不便。 作为班长,我觉得有必要把自己的一些技术共享给大家,方便大家使用。 文章目录一、准备材料&#x1f6…

如何扩大电脑c盘分区,c盘空间不足怎么扩容

当电脑使用一段时间后,C盘会存储一定的数据,包括操作系统以及其他的文件。在实际的运用中,许多应用程序的默认下载路径就是C盘,如果用户没有更改为其他磁盘,会导致C盘的空间越来越小,电脑越来越卡顿。从根源…

【C版本】静态通讯录与动态通讯录的实现,以及各自所存在的缺陷对比。(含所有原码)

目录静态版本通讯录前期思路具体实现1、框架2、初始化通讯录3、增加联系人4、显示已有联系人5、查找联系人6、删除指定联系人7、排序联系人8、修改联系人信息9、清空联系人静态版本通讯录存在的缺陷动态版本通讯录(静态版本的部分功能发生改动)初始化增加…

优雅的使用Webstack打造个人网址导航

原文链接:优雅的使用Webstack打造个人网址导航 前言 一款基于 WebStackPage 的 Hexo 主题。本人选择的是 hexo-theme-webstack。 效果预览 具体效果请移步 个人网址导航。 步骤 在目标路径(我这里选的路径为【D:/studytype/My_Blog】)打开…

基于C#制作一个桌面宠物

此文主要基于C#制作一个桌面宠物,可自定义宠物素材图片及打开外部exe的快捷菜单。 实现流程1.1、创建项目1.2、准备素材1.3、控件设置(1)PictureBox控件(2)timer控件(3)contextMenuStrip控件1.4…

学习MySQL必须掌握的13个关键字,你get了吗?

1、三范式 第一范式:每个表的每一列都要保持它的原子性,也就是表的每一列是不可分割的;第二范式:在满足第一范式的基础上,每个表都要保持唯一性,也就是表的非主键字段完全依赖于主键字段;第三范…

【微服务】Nacos2.x服务发现?RPC调用?重试机制?

💖Spring家族及微服务系列文章 ✨【微服务】Nacos通知客户端服务变更以及重试机制 【微服务】SpringBoot监听器机制以及在Nacos中的应用 ✨【微服务】Nacos服务端完成微服务注册以及健康检查流程 ✨【微服务】Nacos客户端微服务注册原理流程 ✨【微服务】SpringClou…

Vue 和 React 比,React 好在哪里?

​ 这两个设计理念上就有所区别,类比过来就是:Vue 是自动挡汽车,React 是手动挡汽车。 在 Vue 中,不需要去注意视图和数据的一致性,因为有双向绑定看帮你处理,响应式的。还有一些很方便的 v-if、v-model 之…

软考 - 面向对象开发

⭐设计模式UML详解:https://blog.csdn.net/qq_40274514/article/details/124047443 面向对象基础 面向对象的程序设计 和 面向对象设计区别 面向对象的程序设计涉及到具体的编程语言 面向对象设计只从系统逻辑结构设计解决方案 常见的机制 动态绑定:过…

ESXi5.5远程升级到ESXi6.7 (VMware Hypervisor)

1、ESXi的介质分为两类,以6.7为例: VMware vSphere Hypervisor (ESXi ISO) image (Includes VMware Tools)(ISO包) VMware vSphere Hypervisor (ESXi) Offline Bundle (ZIP包) 如果要升级,需要Z…

【畅购商城】详情页详情之商品详情

1.构建详情页 步骤0:确定访问路径 http://localhost:3000/Goods?id1 步骤二:复制 ~/static/goods.html 内容,导入第三方资源(css、js) head: {title: 列表页面,link: [{rel:stylesheet,href: /style/goods.css},{re…

Sysweld笔记:利用稳态算法加速算法模拟焊接过程的残余应力

作者:贾亚波博士,仿真秀专栏作者 在进行热力耦合的仿真过程中,如果模型足够的长并且热源速度恒定,通常其热学,相变以及热力耦合都会达到稳态的过程,因此如何直接计算稳态问题成为了大家研究的热点问题。 …

【C++笔试强训】第二十四天

🎇C笔试强训 博客主页:一起去看日落吗分享博主的C刷题日常,大家一起学习博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。 💦&a…

【数据结构】栈基本操作的实现(C语言)

🚀 作者简介:一名在后端领域学习,并渴望能够学有所成的追梦人。 🐌 个人主页:蜗牛牛啊 🔥 系列专栏:🛹初出茅庐C语言、🛴数据结构 📕 学习格言:博…

SpringBoot项目打包时配置文件区分日常、测试、预发、正式环境

前言🍊 在我们开发项目的时候,一般有四套环境:日常、测试、预发、正式。日常环境作为我们开发环境;测试环境给测试同学测试功能;预发环境给正式环境发布时提供准备;正式环境则是稳定的生产环境。 这四套环…

面试官问我new Vue阶段做了什么?

前言 本篇录入吊打面试官专栏,希望能祝君拿下Offer一臂之力,各位看官感兴趣可移步🚶。这段时间面了很多家公司,被问到的题我感觉不重复不止100道,将会挑选觉得常见且有意义的题目进行分析及回答。有人说面试造火箭&am…

Redis字符串、hash、列表方法使用以及Redis管道与Django集成Redis

目录标题一、Redis字符串操作二、Redis-hash操作三、Redis列表操作四、Redis管道五、Redis其他操作六、Django中集成Redis七、Celery介绍一、Redis字符串操作 名称属性setex:过期时间(秒)px:过期时间(毫秒) nx:如果设置为True,则只有name不存…

毕业设计:SpringBoot+Vue+Element的校内跑腿平台

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 文末获取源码 项目编号:BS-XX-…

MySQL基础总结

一.sql数据及语言基本类型: 1.语言的分类 DDL:数据定义语言,用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等 DML:数据操作语言,用来对数据库中表的记录进行操作。关键字:insert,delete,update等 DQL:数据库查询语言,用来查询数据库中表的记录。关键字:select,…

PIX2SEQ: A LANGUAGE MODELING FRAMEWORK FOR OBJECT DETECTION

文章目录ABSTRACT1 INTRODUCTION2 pix2seq框架2.1SEQUENCE CONSTRUCTION FROM OBJECT DESCRIPTIONS2.2 ARCHITECTURE, OBJECTIVE AND INFERENCE2.3 SEQUENCE AUGMENTATION TO INTEGRATE TASK PRIORS3 EXPERIMENTS3.1 EXPERIMENTAL SETUP3.2 MAIN COMPARISONS3.3 ABLATION ON SE…