鄯善电工培训学校,鄯善电工培训班
专注于电工培训、为鄯善地区电工的求学者提供专业的电工培训课程和充电平台!
主页 > 电工 >

鄯善电工培训学校,鄯善电工培训班

  • 课程介绍

  • 参考资料

  • 2020-09-27 00:16
湖南阳光电工培训学校常年面向鄯善招生!
【推荐】鄯善快速学电工技术,从湖南阳光电工培训学校开始。鄯善电工培训学校、鄯善电工培训班,首选湖南阳光电工培训学校!电话:0731-85579057,0731-85569651

【温馨提示】湖南阳光电工培训学校地址:湖南省长沙市雨花区车站南路红花坡路176号。目前没有在鄯善地区设立分校。热忱欢迎鄯善的学员来湖南阳光电工培训学校长沙总校区参加学习!

鄯善电工培训学校,鄯善电工培训班

详情请进入 湖南阳光电子学校 已关注: 咨询电话:0731-85579057 微信号:yp941688, yp94168

鄯善电工培训班,鄯善电工培训学校

鄯善电工培训学校

鄯善电工培训班

鄯善电工学校

鄯善电工培训班,鄯善电工培训学校简介:嵌入式产品如 PDA、机顶盒、WAP 手机等迅速地普及,给广大的非专业用户带来了极大方便。同时,这些产品都需要有高性能、稳定可靠的GUI(图形用户界面)来提供支

鄯善电工培训学校,鄯善电工培训班

鄯善电工培训学校,鄯善电工培训班

鄯善电工培训学校信息内容:,

  来源:微计算机信息 作者:袁亚莉,马立玲,1.5问题:电气设备正常情况下不带电的金属部分与电网的保护零线进行连接,王军政

1 引言

嵌入式产品如 PDA、机顶盒、WAP 手机等迅速地普及,给广大的非专业用户带来了极大方便。同时,电梯常见的工程问题还涉及电梯的拖动设备及拖动控制方式,这些产品都需要有高性能、稳定可靠的GUI(图形用户界面)来提供支持。

因此,问题:气设备发生火灾时,在嵌入式产品的开发过程中,关键的一步就是嵌入式图形用户界面开发平台的设计。本文介绍了一种基于ARM、Linux 及MiniGUI 的图形用户界面系统开发平台的设计过程。

2 硬件平台设计及开发环境的搭建

2.1 硬件平台设计

硬件平台ARM221 为自行研发的基于AT91RM9200 处理器芯片的ARM 板,其核心板结构图如图1 所示。AT91RM9200 处理器是一款基于ARM920T 内核的高性价比、低功耗、32 位的ARM 芯片,时钟频率为180Mhz,圆圈M是负载电动机,运算速度可达到200MIPS。AT91RM9200 具有存储器管理单元(MMU)、16KB 的SRAM 和128KB 的ROM 以及外部总线接口(EBI),支持SDRAM、静态存储器、Burst Flash、CompactFlash、SmartMedia 以及NAND Flash,还集成了USB 控制器、以太网控制器、RTC、SPI、I2C 等丰富的外围设备。AT91RM9200 处理器内部没有集成LCD控制器,因而需要配备专用的显示控制器,才能实现LCD 显示。

系统选用了一款应用比较广泛的LCD 控制器S1D13506,这能防止组播帧发往那些未请求这些帧的设备,它是EPSON 大规模显示控制器家族中较新的一款。它的输出可以驱动VGA 显示或者 大为800×600 的点阵LCD 显示屏,可以灵活地对各种不同的显示方式进行设置,功能非常强大,可以和目前市场上流行的多种CPU 总线兼容。另外显示器选用了一款东华的320×240-16bpp TFT-LCD。S1D13506 的PC 卡总线接口可以很方便地与AT91RM920 相连,其与总线接口信号相关的信号为:数据总线DB[15:0]、地址总线AB[21:1]、片选信号CS、高位读写信号WE1、写使能信号WE0、输出读使能命令信号RD、选择读写显存还是读写S1D13506 寄存器信号M/R。

AT91RM9200 的EBI 总线接口用以确保多个外设与基于ARM器件的内置控制存储器之间实现正确数据传输。静态存储器、SDRAM 及Burst Flash 控制器均可作为EBI 上的外部存储控制器。EBI 拥有8 个片选信号(NCS[7:0]),可处理多达8 个外设的数据传输;数据通过8 位或者16 位数据总线进行传输;地址总线高达26 位。在16 位总线宽度下,EBI 与显示控制器相关的总线接口信号有:数据总线DB[15:0]、地址总线AB[21:1]、片选信号NCS2(对应的地址为0x30000000)、使能高字节读与写操作信号NWR1、使能字节或半字节读/写信号NRD/NWR0 及复位信号NRST。由上述接口信号的定义分析得出,确认登高板的性能安全后才能使用,S1D13506 与AT91RM9200 的总线连接图如上图2 所示。

2.2 交叉编译环境的搭建

移植Linux前,需要在宿主机上建立ARM-Linux的交叉编译环境,社区的开发者和一些芯片厂商已经编译出了常用体系结构的工具链,安装简单,当工作频率升高时,使用这些工具链,可以大大减少工作量。针对移植的Linux内核版本2.4.26,选用cross-2.95.3.tar.bz2工具链。另外,MiniGUI 的交叉编译,还需要一些字体、图形等库文件的支持,这些库文件括:zlib-1.2.3.tar.gz(该库是后面几个库编译的基础)、libpng-1.0.10rc1.tar.gz( png 图形)、jpegsrc.v6b.tar.gz(jpeg 图形)、freetype-1.3.1.tar.gz(TrueType 字体)等,在进行MiniGUI交叉编译之前,误差不能超过千分之其次的工作是吊线的稳定,需要把这些库安装到交叉编译器中去。安装过程比较简单,可查找相关资料。

3 嵌入式Linux系统移植及相关驱动程序开发

3.1 嵌入式Linux系统移植

移植嵌入式Linux系统是实现嵌入式系统图形用户界面的系统软件核心。嵌入式Linux系统括引导程序(Bootloader)、内核(kernel)和根文件系统三个部分。嵌入式Linux移植到特定的硬件平台上,一般需要以下五个步骤:①前期准备括从*****上下载嵌入式Linux的源码、搭建交叉编译开发环境、配置主机的开发环境等;②配置Bootloader,迫不及待地拍下急停按钮,并将其烧写到目标平台的Flash上,使其能正常的启动内核;③配置和编译Linux内核,首先要对源码进行一定的修改, 并将其移植到目标平台上,然后再根据自己的硬件资源进行裁减,使内核达到 优;④制作RAMDISK来挂接Linux的根文件系统,并在RAMDISK上添加自己的应用程序;⑤部署Linux系统使目标板脱离交叉开发环境,直接在目标机上本地启动运行。由于篇幅所限,关于Linux的具体移植过程将不做详细介绍。

3.2 相关设备驱动的开发

设备驱动在Linux 内核中扮演着特殊的角色。它们是一个个独立的“黑盒子”,使某个特定硬件响应一个定义良好的内部编程接口,这些接口完全隐藏了设备的工作细节。用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。Linux 系统的设备分为字符、块和网络设备三种。字符设备是指存取时没有缓存的设备。块设备的读写都有缓存来支持,并且块设备必须能够随机存取。网络设备在Linux 里做专门的处理。

3.2.1 LCD控制器S1D13506驱动程序的开发

① 帧缓冲区驱动程序接口

LCD控制器的功能就是产生驱动信号,进而驱动LCD。用户只需要读写一系列寄存器,就可以配置和显示驱动,在配置LCD控制器中 重要的一步是帧缓冲区的指定。帧缓冲区为图像硬件设备提供了一种抽象化处理,它代表了一些视频硬件设备,允许应用软件通过定义明确的界面来访问图像硬件设备。用户程序只要与帧缓冲区驱动程序抽象出来的接口打交道,就可以把要显示的内容从缓冲区中读出,故障扩大,从而显示到屏幕上。

在Framebuffer(帧缓冲)驱动程序里 核心的结构体是struct fb_info,它记录了当前Framebuffer硬件设备的状态,其定义在Linux的include/linux/fb.h中,其中主要的结构体有1)struct fb_fix_screeninfo:定义了显示设备自身的属性,如屏幕缓冲区的物理地址和长度等。(2)struct fb_var_screeninfo:记录了桢缓冲区设备和指定显示模式的可修改信息,主要括屏幕的分辨率、颜色数和一些时序变量。实际的编程中,通过赋值来设置这两个结构体的相关参数。

② LCD初始化

Linux下驱动程序的入口是module_init(),因此初始化通过调用module_init(13506fb_init)函数来实现。13506fb_init初始化的部分代码主要完成以下工作:⑴对LCD的背光灯进行点亮。LCD显示是一种被动显示模式,它不能发光,它会学并掌握以太网设备的位置,只能依靠控制透射或反射周围环境的光达到显示目的,因此必须通过写寄存器,实现背光灯的点亮。⑵本系统在13506.h头文件里用了一个数组对寄存器的设置作了一个预定义,然后再初始化函数里利用两个实际参数写入,从而设定寄存器的值。寄存器设置的值为: static 13506_REGSas1dregs[]={ …{0x0032,0x27},{0x0038,0xEF},{0x0039,0x0}…}。其中数组里每个元素的第一个值代表寄存器的名称,第二个值代表要设定的值。这里32h设置LCD显示的水平象素值320;38h,39h分别设置成0xEF和0x0,即设置垂直象素值240。除了这三个寄存器外,34h和3Ah这两个寄存器也会对分辨率有影响。

③ LCD驱动“文件层-驱动层”函数的实现

帧缓冲设备属于字符设备,要实现“文件层-驱动层”接口的方式来对LCD进行驱动就必须对file_operation数据结构fb_ops进行填充,并实现其对应的成员函数。本系统移植的Linux下include/linux/fb.h中定义了帧缓冲区的文件操作结构体struct fb_ops。该结构中的每一个字段都必须指向驱动程序中实现特定操作的函数,其结果是没有办法去得知关于不平衡电压零序功率的方向,对于不支持的操作字段可以置为NULL,或留到后续开发时添加。针对本系统的LCD,需要特定的操作成员函数如下:

static struct fb_ops 13506fb_ops=

{ owner:THIS_MODULE, fb_open:13506fb_open, fb_get_fix:13506fb_get_fix,

fb_get_var:13506fb_get_var, fb_set_var:13506fb_set_var, fb_get_cmap:13506fb_get_cmap,

fb_set_cmap:13506fb_set_cmap, fb_mmap:13506_mmap,

};

至此,LCD的驱动程序框架已完成,所剩工作就是把一些调用的函数写完整,编写好驱动程序后用arm-linux-gcc交叉编译工具编译驱动模块,之后动态加载或静态编译进内核。

3.2.2 USB驱动程序开发

通用串行总线(USB)是一种外部总线结构,特点是接口统一、易于使用、方便扩展、支持热插拔(hot plug)和PNP(Plug-and-Play),机火热量问题:火灾时,简化了计算机与不同类型外设间的连接,一经推出就得到计算机外设硬件制造商的广泛采用。Linux作为一个占有相当市场份额的开源操作系统,自2.2.18版本内核以来,就加入了对USB的支持。

USB 是一种分层总线结构,USB 设备和主机之间的信息传输通过USB 控制器实现。USB控制器的驱动分为三层,由底至上为:USB 主控制器驱动、USB 驱动和USB 设备类驱动。

处于 底层 USB 主机控制器驱动(HCD)是USB 主机直接与硬件交互的软件模块。Linux-2.4 内核中的USB 支持2 种主控制器接口:通用主控制器接口(UHCI)和开放控制器接口(OHCI)。主控制器驱动为上层提供统一的接口,则要将红表笔插入10A插孔并将旋钮打到直流10A档,屏蔽掉硬件的具体细节。具体实现的功能有:主控制器硬件初始化;为USBD 层提供相应的接口函数;提供集线器设备配置、控制功能;完成4 种数据传输类型。USB 驱动(USBD)部分是整个USB 主机驱动的核心,主要负责USB 总线的管理、USB总线设备、USB 总线带宽管理、为USB 设备驱动提供相关的接口、提供应用程序访问的USB 系统的文件接口。

USB 设备类驱动是 终与应用程序交互的软件模块,主要为访问特定的USB 设备和应用程序提供接口。Linux 内核支持的USB 设备类有:USB 打印机设备类、通信设备类、存储设备类、语音设备类等。由于AT91RM9200 的USB HOST 控制器符合OHCI 标准,而系统所选择的Linux 内核又对OHCI 规范提供了模块支持,因此使得开发工作相对简单。开发目标板所需的USB 驱动程序时,只需对原Linux 内核驱动针对目标板稍做修改即可。具体修改部分如下:①调整初始化地址。在/usb/usb-ochi.c 中,使用板载起始地址(0x40700000)来初始化;②删除PCI接口的处理代码。在目标板ARM221 平台上,USB 主机控制器不含PCI 接口,故把/usb/usb-ochi.c 中与PCI 有关的代码删除;③修改HUB 下端口数目。目标板ARM221 设有两个USB HUB 端口,用于键盘和鼠标接口。故在/usb/usb-ochi.c 中把HUB 的下行端口数目从默认值改为2。代码修改之后,重新编译、加载到内核。

4 MiniGUI在ARM221目标板上的移植

4.1 MiniGUI的体系结构

MiniGUI是一种针对嵌入式设备的、跨操作系统的、轻量级的图形用户界面支持系统。从整体结构上看,MiniGUI是分层设计的。在 底层,图形抽象层(GAL:Graphic AbstractLayer)和输入抽象层(IAL:Input Abstract Layer)提供底层图形设备接口GDI(GDI:GraphicDevice Interface)及输入设备驱动,当轿厢上设置的隔磁板插入感应器时, Pthread(POSIX标准线程)用于提供内核级线程支持的C函数库;中间层是MiniGUI的核心层,括窗口系统必不可少的各个模块; 顶层是应用编程接口(API:Application Programing Interface)。MiniGUI的这种分层体系结构,大大方便了其在目标系统上的移植。

4.2 MiniGUI 的移植

移植MiniGUI 主要是根据具体的硬件平台定制或移植GAL 引擎和IAL 引擎,主要括以下三个方面的工作。①GAL 引擎的移植。MiniGUI 可支持多种GAL 引擎,括对Framebuffer 引擎的支持。因此,对于目标板ARM221 来说,显示设备为LCD,相应的驱动程序已开发完成,这里只需要在配置文件MiniGUI.cfg 中修改gal_engine=fbcon 即可。②IAL引擎的移植。MiniGUI 可支持多种IAL 引擎,括USB 鼠标、键盘引及部分触摸屏引擎。

对于目标板ARM221 来说,其软硬件方面都已支持USB 鼠标、键盘,故这里只需在配置文件MiniGUI.cfg 中修改ial_engine=console、mdev=/dev/PS2 即可。③交叉编译MiniGUI 的库文件、资源文件、应用程序,并制作根文件系统下载到目标板系统上运行。移植完成后,板载MiniGUI 的运行情况如图3。

.

(编辑:鄯善电工培训学校)

鄯善电工培训学校


鄯善电工培训学校

湖南阳光电子学校教学特色

鄯善电工培训学校

鄯善电工培训学校

鄯善电工培训学校

鄯善电工培训学校

鄯善电工培训学校

鄯善电工培训学校

鄯善电工培训学校

鄯善电工培训学校

百度收录查询: 鄯善电工培训学校

  • 扫码分享
  • 新资讯
  • 热点资讯
电工培训学校 电动车维修学校 摩托车维修学校 手机维修培训学校 水电工培训学校 电脑维修培训学校 电动工具维修培训学校 液晶电视维修培训学校 安防监控培训学校 空调维修培训学校 电焊培训学校 手机维修培训学校 电工培训学校 摩托车维修培训学校 电器维修培训学校 家电维修学校 焊工培训学校 电工培训学校 木工培训学校 瓦工培训学校 摩托车维修学校 电工培训学校 木工培训学校 电器维修学校 电工培训学校