在机车显示系统中,需要用到两类比较重要的设备驱动程式:帧缓冲(frame buffer)驱动程式和闪存MTD驱动程式。
帧缓冲(FrameBuffer)驱动程式这是最重要的驱动程式之一,因为通过这个驱动程式才能使系统屏幕显示内容。帧缓冲驱动程式通常有三层。最底层是基本控制台驱动程式linux/drivers/char/console.c,他提供了文本控制台常规接口的一部分。通过使用控制台驱动程式函数,我们能将文本打印到屏幕上——但图像或动画还不能(这样做需要使用视频模式功能,通常出现在中间层,也就是linux/drivers/video/fbcon.c中)。这个第二层驱动程式提供了视频模式中绘图的常规接口。
帧缓冲区是显卡上的内存,需要将他内存映射到用户空间以便能够将图像和文本写到这个内存段上,然后这个信息将反映到屏幕上。帧缓冲区支持提高了绘图的速度和整体性能。这也是顶层驱动程式引人注意之处:顶层是很特定于硬件的驱动程式,他需要支持显卡不同的硬件方面——象启用/禁用显卡控制器、深度和模式的支持连同调色板等。任何这三层都相互依赖以实现正确的视频功能。和帧缓冲区有关的设备是/dev/fb0(主设备号 29,次设备号 0)。FrameBuffer的长处在于其高度的可移植性、易使用性、稳定性。使用Linux内核的FrameBuffer驱动,能够轻松支持到1024X768X32bpp以上的分辩率。而且现在可得到的绝大多数linux版本所发行的内核中,已预编译了FrameBuffer支持,通常无需重新编译内核就能够使用。进入FrameBuffer能够简单地在系统启动时向kernel传送vga=mode-number的参数来激活FrameBuffer设备
闪存MTD驱动程式
MTD 设备是象闪存芯片、小型闪存卡、记忆棒等之类的设备,他们在嵌入式设备中的使用正在不断增长。MTD 驱动程式是在 Linux 下专门为嵌入式环境研发的新的一类驱动程式。相对于常规块设备驱动程式,使用 MTD 驱动程式的主要长处在于 MTD 驱动程式是专门为基于闪存的设备所设计的,所以他们通常有更好的支持、更好的管理和基于扇区的擦除和读写操作的更好的接口。Linux 下的 MTD 驱动程式接口被划分为两类模块:用户模块和硬件模块。
用户模块:这些模块提供从用户空间直接使用的接口:原始字符访问、原始块访问、FTL(闪存转换层,Flash Transition Layer — 用在闪存上的一种文档系统)和 JFS(即日志文档系统,Journaled File System — 在闪存上直接提供文档系统而不是模拟块设备)。用于闪存的 JFS 的当前版本是 JFFS2(稍后将在本文中描述)。
硬件模块:这些模块提供对内存设备的物理访问,但并不直接使用他们。通过上述的用户模块来访问他们。这些模块提供了在闪存上读、擦除和写操作的实际例程。
为了访问特定的闪存设备并将文档系统置于其上,需要将 MTD 子系统编译到内核中。
(4) 文档系统(filesystem)
系统需要一种以结构化格式存储和检索信息的方法,这就需要文档系统的参和。Ext2fs 是 Linux 事实上的标准文档系统,他已取代了他的前任——扩展文档系统(Extfs)。因为 Ext2 文档系统的稳定性、可靠性和健壮性,所以几乎在任何基于 Linux 的系统(包括台式机、服务器和工作站——并且甚至一些嵌入式设备)上都使用 Ext2 文档系统。然而,当在机车显示系统中使用 Ext2fs 时,他有一些缺点:
● Ext2 文档系统没有提供对基于扇区的擦除/写操作的良好管理。在 Ext2fs 中,为了在一个扇区中擦除单个字节,必须将整个扇区复制到 RAM,然后擦除,然后重写入。考虑到闪存设备具备有限的擦除寿命(大约能进行 100,000 次擦除),在此之后就不能使用他们,所以这不是个特别好的方法。
● 在出现电源故障时,Ext2fs 不是防崩溃的。 机车显示系统需要经常性的掉电保护,使用Ext2fs文档系统将造成文档数据的丢失。
● Ext2 文档系统不支持损耗平衡,因此缩短了扇区/闪存的寿命。(损耗平衡确保将地址范围的不同区域轮流用于写和/或擦除操作以延长闪存设备的寿命。)
由于这些原因,通常相对于 Ext2fs,在机车显示系统中使用 MTD/JFFS2 组合是更好的选择。
JFFS2,作为用于微型嵌入式设备的原始闪存芯片的实际文档系统而出现。JFFS2 文档系统是日志结构化的,相对于Ext2文档系统,JFFS2有以下长处:
● JFFS2 在扇区级别上执行闪存擦除/写/读操作要比 Ext2 文档系统好。
● JFFS2 提供了比 Ext2fs 更好的崩溃/掉电安全保护。当需要更改少量数据时,Ext2 文档系统将整个扇区复制到内存(DRAM)中,在内存中合并新数据,并写回整个扇区。这意味着为了更改单个字,必须对整个扇区(64 KB)执行读/擦除/写例程 — 这样做的效率很低。要是运气差,当正在 DRAM 中合并数据时,发生了电源故障或其他事故,那么将丢失整个数据集合,因为在将数据读入 DRAM 后就擦除了闪存扇区。JFFS2 附加文档而不是重写整个扇区,并且具备崩溃/掉电安全保护这一功能。
● 这可能是最重要的一点:JFFS2 是专门为象闪存芯片那样的嵌入式设备创建的,所以他的整个设计提供了更好的闪存管理。
在linux下,用mkfs.jffs2命令创建JFFS2文档系统。
2 图像用户界面(GUI) -- MiniGUI
从用户的观点来看,图像用户界面(GUI)是系统的一个最至关重要的方面:用户通过 GUI 和系统进行交互。所以 GUI 应该易于使用并且很可靠。但他还需要是有内存意识的,以便在我们的内存受限的显示系统上能够无缝执行。所以,他应该是轻量级的,并且能够快速装入。另一个要考虑的重要方面涉及许可证问题。一些 GUI 分发版具备允许免费使用的许可证,甚至在一些商业产品中也是如此。另一些许可证需要假如想将 GUI 合并入项目中则要支付版税。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




