没有Linux的嵌入式系统的图形库?

abo*_*out 10 embedded graphics microcontroller user-interface

似乎任何类型的图形库如DirectFBMiniGui都需要某种底层操作系统,如Linux或uClinux.

我面临的挑战是为微控制器编写一个只有512kb闪存的软件,一个LCD显示器和一个触摸屏来显示和处理一些图片和GUI部件.

你知道哪个库只需要一个指针可以处理行,图像和字体的视频内存吗?

Mat*_*man 6

我们使用Swellsoftware的"PEG"(C++版本)多年.它是商业软件,不是免费的,但底层屏幕驱动程序只能使用指向图形内存的指针,它们为不同类型的图形硬件提供了许多示例驱动程序.我们使用示例驱动程序作为参考,为我们的专有硬件编写了自己的自定义驱动程序.我们总是有某种RTOS,但我相信PEG +也可以在没有操作系统的情况下运行.

在这里查看:http: //www.swellsoftware.com/

祝好运,


old*_*mer 3

当您合并一些第三方解决方案时,您可能已经自己编写了它。

对于大多数(如果不是全部)环境,屏幕只是二维像素阵列。有时托盘化有时不托盘化,但这并不重要,你可以随心所欲地写你的。

有大量用于绘制直线和圆弧等的免费代码。

杀手可能是字体,但我认为你会发现第三方应用程序仅仅做字体就会耗尽你所有的内存,你的资源有限,所以你会想要预先计算字体并复制这些位。

制作一个二维数据数组,首先在您最喜欢的主机上完成所有工作,如果您想查看正在绘制的内容,保存 .bmp 文件很简单,将一系列 .bmp 文件转换为一个如果您想观看一些动作,请观看视频。

如果您使用通用 C,并且没有 libc 调用(编写您自己的 memcpy、memset 等),则此代码将在任何地方运行:在开发主机上和目标上。

字体将成为你的杀手,你必须预先计算它们,但设法将这些信息压缩到尽可能小,并在运行时提取数据并将每个字母的位尽快复制到虚拟屏幕中。

或者只需购买为您完成所有这些操作的众多液晶解决方案之一,您只需向其发送诸如绘制“Hello World!”之类的命令即可。在某些 (x,y) 处使用蓝色作为前景,白色作为背景。

基本上,我认为非操作系统解决方案仍然会使用太多的库,并且对于您的特定应用程序来说太大。字节或像素的二维数组很容易管理。即使您正在为桌面平台编写应用程序,我也会这样做,并在最后一刻将完全重新渲染的屏幕更新复制到某些操作系统相关库(允许从一个操作系统或不允许到另一个操作系统的最大可移植性)。