Linux中怎么用cat命令创建文件并写入数据
277
2022-11-26
嵌入式MultiBus-CPU模块设计可满足工业现场的测控需要
引 言
2 MultiBus-CPU模块硬件设计方案
主处理器AT91RM9200具备5个串口:1个DEBUG串口,设计为RS232接口,可以直接连接PC的串口进行调试;1个RS485接口,可以与其他功能模块的RS485接口组成网络;其余3个串口均设计为RS232接口。
GL850A芯片是一个低功耗的USB 2.0 HUB控制器,AT91RM9200本身的USB HOST接口通过GL850A芯片扩展为4个USB HOST接口。
DM9161为10/100M快速以太网物理层单芯片收发器,H1102为网络隔离变压器,用于实现10/100M自适应的可靠网络传输功能。
3 显示模块硬件设计方案
3.2 接口硬件设计
4 显示模块软件设计方案
4.1 Linux下LCD驱动程序开发
LCD控制器的功能是显示驱动信号,进而驱动LCD。用户只需要通过读写一系列的寄存器,就可以配置和显示驱动。配置LCD控制器时,最重要的一步是帧缓冲区(FrameBuffer)的指定。帧缓冲区为图像硬件设备提供了一种抽象化处理,它代表了一些视频硬件设备,允许应用软件通过定义明确的界面来访问图像硬件设备。用户程序只需与帧缓冲驱动程序抽象出来的接口打交道,就可以把要显示的内容从缓冲区中读出,从而显示到屏幕上。
在FrameBuffer驱动程序中,最核心的结构体是帧缓冲区驱动程序接口,即struct fb_info。它记录了当前FrameBuffer硬件设备的状态,通常在Linux的include/Linux/fb.h中定义。最主要的结构体有:Struct fb_fiX_sereeninfo,定义显示输出设备自身的属性,如屏幕缓冲区的物理地址和长度;Struct fb_var_screeninfo,记录帧缓冲设备和指定显示模式的可修改信息,包括显示屏幕的分辨率、每个像素的比特数和一些时序变量。
若要先设定帧缓冲区的物理地址和长度,就要在S1D13506.h里指定,然后在驱动程序里通过对fb_fix_screeninfo赋值来实现:
定义当前显示输出状态,通过对fb_var_screeninfo结构赋值来实现:
Linux下驱动程序总是先调用module_init(),因此LCD初始化通过调用module_init(sldl3xxxfb_init)来实现。sldl3xxxfb_init初始化函数部分代码如下:
首先对LCD的背光灯进行点亮。LCD显示是一种被动的显示模式,不能发光,只能依靠控制透射或反射周围环境的光来达到显示的目的。因此,必须通过写寄存器用高电平指示对LCD加3.2 V电压来实现背光灯的点亮。其函数的部分代码如下:
系统采用的彩色LCD最佳分辨率是800×600,但通过前面对结构Struct fb_var_screeninfo的赋值并不能真正设定其分辨率。因为结构Struct fb_var_screeninfo的值只是作为一个显示记录来用,必须通过设定寄存器的值才能达到需要的分辨率。本系统在S1D13506.h头文件里用一个数组对寄存器的设置作了一个预定义,然后在初始化函数里利用sldReg和sldValue两个实参写入,从而设定了寄存器的值。
数组里每个元素的第1个值代表寄存器的名称,第2个值代表要设定的数值(1个十六进制的数)。32h寄存器用于设定LCD显示的水平像素数目,计算方法是把第2个值转换成十进制,加1再乘以8就得出水平像素。例如,0x63换算成十进制为99,加1乘以8就是800。38h和39h寄存器分别设置成0x57和Ox02,就可以显示600的垂直分辨率。计算方法是以39h寄存器的bitO和bitl位为高位,38h寄存器的bit0~bit7为低位,组成的一个十六进制的数,再转换成十进制。除了要修改这3个寄存器外,34h和3Ah这两个寄存器也会对显示的分辨率有影响。
这个结构中的每一个字段都必须指向驱动程序中实现特定操作的函数。对于不支持的操作,对应的字段可以被置为NULL,或留到后续开发时再添加。本模块中实现特定操作的成员函数的代码如下:
接下来把一些调用的函数写完整,编写好程序后用arm-linux-gcc编译驱动模块;然后对其动态加载,或静态将其编译到Linux内核;加载完程序后,就可以编写应用程序进行读/写等操作了。
4.2 MiniGUI的移植
在嵌入式开发环境中,独立的显示操作人机界面是非常必要的。它可以使嵌入式系统对PC系统的依赖性降到最低,可以直接操作嵌入式系统并显示运行结果。MultiBus-CPU模块采用标准的USB键盘、USB鼠标、VGA显示器作为人机交互界面,使用习惯类同于PC机,简易了开发者的开发过程,并且用户的使用过程也变得简单、快捷、易于操作。
MiniGUI在AT91RM9200上的移植包括4个步骤:
②交叉编译MiniGUI,这是最关键的一步。首先从网上下载MiniGUI源程序包(包括库文件和资源文件),以及其他支持图形界面的源程序包;然后用上一步安装好的交叉编译工具对其进行编译,编译时可指定编译后库文件及资源文件的安装位置。
③拷贝MiniCUI资源到开发板。将第2步编译好的库文件及资源文件拷贝到开发板上。拷贝之前先用arm-Linux-strip命令清除文件中的调试信息,这样就使文件体积大大缩小,可以满足嵌入式系统的需要。
④板载Linux的MiniGUI环境配置。将第2步安装好的MiniGUI配置文件MiniGUI.cfg下载到板子中,并将其中fbcon的defaultmode设置为合适的显示模式。
结 语
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~