5121|1

7815

帖子

56

TA的资源

裸片初长成(中级)

楼主
 

【转发自己写的】谈谈MCUGUI需求 [复制链接]

本帖最后由 辛昕 于 2017-12-6 09:55 编辑

转自创易栈:谈谈MCUGUI(需求篇)
       事实上,MCUGUI并不是一个专有名词,百度谷歌都搜不到,它指的是在MCU(为主控的)平台上实现GUI。我们之所以会有这个称呼,是因为它很特殊:
       从业者都知道,图形图像是一个对时间对空间开销都很巨大的应用领域而MCU,却是一种资源紧缺型系统:相比于个人PC,内存在几个G,主频也同样高达G而言,MCU的FLASH,RAM通常都不超过1M,主频也不过几十上百M。
       因此通常而言,MCU被认为并不适合做GUI,即便做,通常也只是一些简单的菜单图形而已。
       以往,MCU设备,对GUI有较大需求的主要出现在工控系统中,例如专用仪表盘,工控自动化,而它们通常有专用的图形子系统,或者是采用组态王等组态软件界面(这一类属于工控PC,通常跑的是wince等裁剪型windows,已经不能算MCU了)。
       但是随着智能穿戴等智能硬件的兴起,对GUI的要求越来越高。而安卓等系统,通常在功耗和成本方面,不如MCU有优势,这就对MCU做出高质量酷炫GUI提出了要求。
       最后有一点必须说的是:GUI涉及的范围非常多(图形变换,渲染,2D/3D),要求的效果不同,支持的分辨率不同,则对其资源的需求也大不相同,因此,讨论MCUGUI不首先定义一个需求,可以说是耍流氓。
       以下,我将以我日前在做的一个智能手表项目为案例,定义一个需求,并以此为例子,试图找出一套合适的GUI软硬件方案。
      1.支持分辨率240x240
      2.颜色空间:最少支持RGB565,满足RGB888,应可支持 RGBA32位格式;
      3.刷屏帧数
      4.支持的特效:
      平移、抖动、旋转、矢量缩放、淡入淡出
      5.其他要求:
      低功耗 和 处理速度(尤其是完成上述特效的速度);
      面对支持的分辨率和颜色空间要求,通常最大瓶颈会出现在对RAM的需求上(通常FLASH要比RAM大好几倍,因此,只要RAM能满足要求,FLASH通常不在话下。)
      图形系统通常都要求能支持到三个图层。
      一方面,这是参考大多数图形处理方面的软硬件方案的基本要求,而我们前期在自己预研摸索中也发现,要完成平移和图形裁剪拼接,的确需要三个图层。
     按三个图层,240×240 最小rgb565,一个像素点2字节,115.2 k字节,三个图层就是 337.5kB
     在实际应用中阿尔法通道对于制作透明和图片套色,非常重要,一旦没有,很多效果的实现会非常麻烦。
     如果要完整支持rgba,一个像素点4个字节,要求翻倍。则三个图层共计需要 675kB。
     综合考虑其他,以及存储器常见的规格,圆整为1MB。考虑到大多数MCU不太可能达到这个要求,因此这里需要外接 SRAM或者DRAM。
     对于刷新帧数,为了显示流畅,实测发现,需要到达18fps以上。
     在特效方面,具体来说,上面提到的效果里:
     平移
     基本要求:特定方向,如上下左右;后期延伸:沿特定路径移动;
     我们的做法,是需要平移的图片在原来显示的图片基础上做一些裁剪,比如左移就是左边是新图片,右边还保留着原图。
     这个算法的要求是,最少需要两个图层,但这种情况下,刷图片只能当即刷,如果要配合其他效果或者提高速度,则需要第三个图层做 显存;
     抖动
     在我们的观察和认知里,抖动就是平移的一种变形,就是在短时间内实现 来回变向、移动幅度突变的 平移,因此,只要能实现平移,这个不在话下;
     旋转
     旋转需要大量的计算三角函数(sin cos)的运算,由于每个点都要做计算,因此这个操作对时间的消耗极大。至今尝试,用MCU(带浮点算法的 M4F)强行软解仍然很慢很慢。
     事实上,旋转除了上述点的映射之外,还有一个麻烦的线性插补,否则就会出现难看的锯齿。
     事实上,这个算法,目前,采用MCU软解,我们仍然没有找到合适的图形算法移植。(当前,我在考虑的两个2D算法库,一个是AGG,一个是SKIA(google开源的))。但仍未完成。
    矢量缩放
    这个算法与旋转类似,差别在于可以在sin cos前面加一个线性系数,但我们把它和旋转区分开来,原因在于我们在缩放的同时不需要做旋转,最多只有直线移动,因此,比起旋转算法,它免除了密集运算的三角函数,但同样需要线性插补。
    淡入淡出
    这个相对简单,只要在硬件上对背光LED施加PWM控制,改变亮度即可。
    如果遇到不需要背光的OLED,则会更加简单,直接改写背光值即可。
    总的来说,上述的图形变换算法,它们的主要要求是 涉及大量浮点,数学运算,所以需要找一个比较好的性能指标,来衡量这颗MCU的计算能力。
    最后,是功耗。
    对于大多数用到了复杂图形应用的设备来说,大多数时候,功耗是不要求的,比如前面提到的工控机,他们基本都是220V供电,但是到了智能穿戴,就不一样。
    功耗往往是最最最重要的性能参数。
    而功耗,实际上是两方面的考量:
    一方面选择动态功耗尽可能低(在保证其性能计算力的情况下,比如带浮点的m4f内核)
    另一方面是,与大多数低功耗MCU的策略是一样的,尽可能让图形部分快速完成处理运算工作,然后进入休眠低功耗状态。这又和前面的运算速度,主频的选择有密切关系。
文章版权归创易栈所有,转载需注明出处
点赞 关注
个人签名

强者为尊,弱者,死无葬身之地


回复
举报

7815

帖子

56

TA的资源

裸片初长成(中级)

沙发
 
基本几何图形绘制:
1.圆/椭圆;
2.更快速的,带抗锯齿的旋转;
这是我目前最关心的。

另外,特别的,一定要可支持rgb16,这对于MCU,是一个显存上的巨大节省。或者,如果本身不支持,应可比较方便的修改为 支持。
 
个人签名

强者为尊,弱者,死无葬身之地

 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表