基于EP7312的新型嵌入式系统的实现

发布者:tau29最新更新时间:2007-07-24 来源: 微计算机信息关键字:开源  缓冲  网卡  驱动 手机看文章 扫描二维码
随时随地手机看文章
1 前言

随着以计算机和软件为核心的数字化技术的迅速发展,多媒体技术与Internet 的应用迅速普及。计算机﹑通讯﹑消费电子一体化的趋势日趋明显。作为新型智能3C合一的嵌入式系统与技术进入智能化﹑网络化的发展阶段。

所谓嵌入式系统,即将应用程序和操作系统和计算机硬件集成在一起的系统。简而言之即软硬件一体化。这种系统具有小巧灵活﹑性价比高﹑自动化高﹑实时性强﹑专业性强等特点。嵌入式系统适合应用于人类工作与生活的各个领域,最为典型的应用有机顶盒﹑数字应用﹑WebTV﹑ATM/POS机﹑多媒体手机﹑袖珍电脑﹑车载导航器﹑航空电子等等。嵌入式技术已经深入人类生活和工作的方方面面,在娱乐,军事方面也有强大的应用潜力。

全球有四大操作系统:WinCE﹑Palm OS﹑EPoc和Linu。,Linux以稳定﹑高效﹑易制定﹑易裁减﹑硬件支持广泛的特点,结合其免费﹑开源的特征在嵌入式操作系统中的地位越来越重要。越来越多的嵌入式,包括PDA﹑机顶盒﹑WAP手机等系统不仅仅要求高性能高可靠性的图形显示界面支持,而且要求提供全功能的Web浏览器。包括HTML支持,JavaScripe支持,甚至包括Java虚拟机的支持。本文所介绍的系统是一个拥有图形界面,支持嵌入式浏览器的ARM Linux系统。

2嵌入式系统结构

基于EP7312的嵌入式系统分为软件和硬件两大部分。硬件是自主开发的EB7312-B嵌入式开发系统。软件由ARM Linux﹑Microwindows和ViewML三部分组成。如图1。

2.1 EB7312-B


EB7312-B所采用的CPU是Cirrus Logic公司出品的EP7312。EP7312由一个32位精简指令集微控制器及片上外围所组成,是专门用于PDA﹑Internet设备﹑移动电话和手持设备等设计成超低功耗和高性能的微处理器。EB7312-B的核心逻辑部是ARM720T处理器,由ARM7TCMI CPU核模块﹑内存管理单元﹑写缓冲器模块和8K独立的指令数据高速缓存组成。内存管理单元兼容WinCE和Linux。其他功能块有内存控制器;48KB的片上SRAM.(LCD控制器和一般应用共用); 内存32MB SDRAM,16MB Flash;两个全双工的UART(16550型);10M以太网卡CS8900A;彩色320X240 LCD,EP7312本身并不直接支持彩色LCD,它是通过微小的外部逻辑和对LCD驱动器的一个轻微的改动来实现对彩色的支持; 83键ASCII键盘。


    图1 嵌入式系统结构        图2 ViewML体系结构

2.2 ARM Linux


ARM Linux是一个将Linux内核移植到各种基于ARM处理器的目标系统的项目。由Russell Kingrmk@arm.linux.org.uk持。已经为超过100多种不同的目标系统成功完成了移植工作。这里所移植的Linux内核是Linux-2.4.24,ARM Linux补丁是2004年2月发布的Linux-2.4.24-vrs1。在移植过程中,重点工作是启动程序的实现和ARM Linux下针对具体的硬件环境桢缓冲设备驱动程序的设计。

启动程序的主要步骤为:设置入口指针,设置中断向量,设置和初始化RAM,初始化至少一个窜行端口,检测CPU类型,初始化堆栈和寄存器,初始化存储器系统,设置内核相关列表,呼叫内核镜像。需要特别注意的是在设置CPU寄存器时,r?0 为0,r2 为检测出的CPU型号号码,MMU关闭,指令Catch打开,数据Catch清空后关闭。

Framebuffer是一个提供显示内存和显示芯片寄存器从物理内存映射到进程地址空间中的设备,其驱动程序主要依靠三个数据结构:fb_info﹑fb_var_screeninfo﹑fb_fix_screeninfo。fb_info结构只能在内核空间访问,其内部定义了struct fb_ops,结构fb_ops的成员即framebuffer的一系列操作函数。帧缓冲设备的驱动主要就是编写这些接口函数。fb_var_screeninfo和fb_fix_screeninfo定义视频板卡的硬件特性。如显存大小﹑每行显示位数﹑分辨率等与特定硬件相关的特性。帧缓冲驱动程序首先调用register_framebuffer注册一个framebuffer设备,后在Linux/drivers/video/fbmem.c中登记初始化函数。所有帧缓冲驱动程序的ioctl调用由fbmem.c统一实现。

2.3 Microwindows


Microwindows 是专门设计用于在小型设备上开发具有高品质图形功能的开放式源码桌面系统,使用较少的RAM和文件存储空间(100K-600K),在运行的过程中仅需要50~250KB的内存空间。Microwindows不需要任何操作系统 和图形系统的支持,可以运行32位的内核支持Framebuffer机制的Linux系统上。Microwindows的主要目标之一就是把把图形视窗环境引入到运行Linux的小型设备和平台上,提供与X Window相似的功能。

Microwindows采用分层结构设计方法,在底层提供对屏幕,鼠标或触摸屏,键盘的驱动,是程序能够访问实际的硬件和其他用户订制设备;中间层实现了一个可以移植的图形引擎,这个图形引擎实现画线,填充,多边行,剪辑和多种颜色模式;最上层实现了多种API以适应不同的应用环境。每一层都可以根据不同的应用需求修改代码或重新编码。

系统中最底层针对显示屏,鼠标,触摸屏,键盘等各定义了一个数据结构供图形引擎使用,分别为struct _mwscreendevice ﹑struct _mousedevice 和struct _kbddevice , 包含了针对指定设备的硬件驱动代码接口。

在Microwindows中的图形引擎支持framebuffer ,因此只要修改src/中针对基于ARM平台的Linux的配置文件config.ads,指定使用framebuffer作为底层图形支持引擎即可。Microwindows下支持Linux的鼠标驱动为mou-gpm.c,键盘驱动为kbd_tty.c。在本系统中并没有从头开始编写鼠标键盘各数据结构的成员函数,只对原驱动中针对特定硬件部分作了相应改动。

2.4 ViewML


ViewML是第一个开放源代码的,专门面对嵌入式Linux系统的快速发展而开发的小型浏览器。其代码文件只有800KB,运行所需的内存空间约2MB,使用FLTK作为GUI平台开发,采用C++面向对象的设计。ViewML浏览器可以运行于X Windows 和Microwindows系统之上,所以可在Linux平台上进行调试和改进。这极大的方便了对浏览器的进一步完善。本系统中对ViewML 的改进是在基于X Windows 平台的Microwindows系统上完成的。

ViewML浏览器的体系结构如图2。其应用层很小,完全用C++ FLTK(Fast Light Tool Kit)应用框架编写,提供基本的图形用户界面布局,同时该层还处理网络和本地文件存取要求。其语法分析器和显示引擎选用了源码开放的KDE桌面的kfm文件管理器中的KDE 1.0 HTML窗口部件(即图1中的KHTML View和窗口部件模块)。该窗口管理部件工作稳定,支持全部的HTML 3.2功能及部分JavaScript 1.1。KDE的窗口部件采用的是QT窗口部件集合,为适应嵌入式系统的要求,ViewML采用了轻量级图形库FLTK。QT兼容层提供了HTML窗口部件和FLTK应用框架之间的接口。底层的网络协议采用万维网协会的WWWLib库执行所有的异步网络输入输出和HTTP获得功能。

ViewML是直接针对嵌入式Linux环境的一种高品质的网络浏览器。通过包含源代
码开放的核心部件,能够在占用很少的RAM和ROM资源的条件下使用高质量的图形引擎。但在实际是移植使用中发现了一些该浏览器的欠缺之处,下面重点讨论本系统针对ViewML窗口界面的改进。

3 ViewML窗口界面的改进
Viewml的应用层很小,只提供了基本的图形用户界面布局。作为与用户交互的窗口,要求有美观性,实用性和可操作性。为了使用户界面更为完善,本系统主要的工作增加对HTML文件的打开﹑保存和关闭;Web页的刷新﹑前进﹑返回等。

编写界面部分主要应用FLTK窗口部件,FLTK提供了比较丰富的控件,如:按钮﹑滚动条﹑文本框﹑对话框﹑列表框等等。所有这些窗口部件的框架类都在FLNK(FLTK移植到Microwindows的Nano-X API上的版本)的文件夹FL中包含的100个头文件中定义。ViewML中窗口的实现是通过创建类VMLAppWindow来构建基本的图形用户界面? ,其中只包括三个函数:VMLAppWindow(int x, int y, int w, int h) : PARENT_WINDOW(x,y,w,h,"ViewML Browser") { },virtual void resize_notify(int x, int y, int w, int h), virtual int handle(int event);}在图形界面上添加按钮save,open,reload,forword,backward等,需在类VMLAppWindow中定义的相应函数。

extern Fl_Button *Save
extern Fl_Button *Open
extern Fl_Button *Forward;
extern Fl_Button *Backward;
extern Fl_Button *Reload;

详情参阅头文件Fl_Window.H,f Fl_Widget.H。编写好图形界面后,通过响应鼠标事件将图形和相应的事件关联起来。

在ViewML应用层中原有两个函数static int send(Fl_Widget* o, int event) :向HTTP发送请求并将请求事例放入队列;int VMLAppWindow::handle(int event):调用线程对事例队列进行处理。除了实例化上面定义的函数,在这里还加入处理网页的保存,后退,前进的函数都要用到的函数int VMLAppWindow::temp(int event),其功能是临时保存网页。其处理流程为:

(1)在处理事例队列为非空时,从队列中取出一处理过的HTTP请求
(2)将HTTP请求结果用HTML三步:Tokenizer , HTNL-Parser , HTML-Layout进行处理 
(3)把HTTP处理的结果加入临时保存队列中
(4)从处理事例队列中删除此请求结果

队列采用链表实现,当需要从当前页面后退时,其处理流程为:
(1)捕获鼠标事件
(2)从队首搜索至工作指针的下一个元素为当前指针时,当前指针后退
(3)将当前指针所指向的元素调用HTML引擎处理

前进和刷新功能实现流程与后退类似,这里就不赘叙了。保存当前HTM法略微复杂些,因为在保存页面时还要同时保存页面中的图像文件,算法如下:
(1)输入存盘路径和文件名
(2)对文件名进行自动处理如加上后缀htm,创建一个目录,以files为后缀存放图形文件
(3)从临时保存队列中取当前指针,指针为非头指针时取其所指向HTML文件,处理文件。
(4)将文件存入磁盘

基于嵌入式系统的硬件条件有限,无存储量大的磁盘等设备.,且FLASH或ROM等存储介质的价格相对于台式机上使用的硬盘﹑光盘等是比较昂贵的 。所以嵌入式系统只能以小巧且高效来赢得市场。完善了窗口功能的系统完全能满足大部分用户的应用需求了。

4 结束语

当前通讯正在快速地成为嵌入式系统的一般需求。 本文主要阐述了一种新的嵌入式系统,支持图形界面,支持浏览器。该系统已在自主开发的硬件平台上成功运行了。在以后的工作中将致力于在该系统中增加更全面的功能,如对Java虚拟机的支持,增加邮件收发等。

参考文献
[1] http//www.mirowindows.org
[2]http//www.pixil,org
[3]http//www.armlinux.com
[4]Cirrus Logic.EP73xx User’s Guide[M].2001
[5].http://www.fltk.org
[6]陈莉君“Linux操作系统内核分析”2000

关键字:开源  缓冲  网卡  驱动 引用地址:基于EP7312的新型嵌入式系统的实现

上一篇:Wind River商用级Linux飞向太空
下一篇:在下一代嵌入式系统设计中采用平行测试测略

推荐阅读最新更新时间:2024-05-02 20:37

MD新显卡驱动:明里支持锐龙APU 暗中支持独显
    AMD今天发布了全新显卡驱动“Radeon Software Adrenalin Edition Q2 2018”,也就是2018年第二季度的肾上腺素版,当然属于WHQL正式版本。   有趣的是,新驱动产品支持列表中只给出了桌面版Ryzen APU,也就是Ryzen 5 2400G、Ryzen 3 2200G,但在驱动INF文件中其实也列有AMD R200系列以来的所有独立显卡、APU集成显卡、嵌入显卡、专业显卡,实测安装使用也都正常,但不知道AMD为何没有提及。   ,但不知道AMD为何没有提及。   同时,新驱动正式支持Windows 10 2018年4月更新版,也就是Windows 10的第五次重大更新,不过注意它仅
[手机便携]
MSP430F149程序移植——0.96OLED(ssd1306驱动
一、引脚说明 1.1 接口定义 1.2 硬件连接 1.3 总线协议 IO口软件模拟SPI 1.4 软件控制流程 ①IO初始化。 ②根据时序初始化LCD。 ③显示。 二、移植文件 将 oled.c 、 oled.h 、bmp.h文件加入到工程文件夹下 2.1 oled.c #include oled.h #include oledfont.h //向SSD1306写入一个字节。 //dat:要写入的数据/命令 //cmd:数据/命令标志 0,表示命令;1,表示数据; void OLED_WR_Byte(u8 dat, u8 cmd) { u8 i; if (cmd) OLED_DC_S
[单片机]
MSP430F149程序移植——0.96OLED(ssd1306<font color='red'>驱动</font>)
基于μC/OS-II的CAN总线驱动程序设计
  引言   应用实时多任务操作系统(RTOS)作为嵌入式设计的基础和开发平台将成为嵌入式应用设计的主流。μC/OS-II是一种源码公开、可移植性、可固化、可裁剪、占先式的实时多任务操作系统,目前已经得到广泛的应用。   在为电力系统接地选线装置开发的数据采集监测系统的设计中,笔者设计了集散式的数据采集结构,灵活的组态适应了目前国内多数中低压输配电网的数据采集需求。在此硬件平台上,笔者将实时操作系统μC/OS-II移植到TMS320LF2407A型号的DSP上,实现了多任务的并行执行,系统的可靠性和实时性得到大幅提升;设计了CAN总线驱动程序,使得下位采集处理模块与上位的主控制器具备了可靠快速的通信功能和协调功能。  
[嵌入式]
51单片机总线驱动
全部源代码下载: http://www.51hei.com/f/128yhj.rar #include reg51.h sbit cd = P2^0; unsigned char pdata *addr; #define uchar unsigned char #define uint unsigned short void lcd_writecom_two(uchar onedat,uchar twodat,uchar com); void lcd_writedat_onebyte(uchar onedat,uchar com); uchar lcd_readdat_onebyte(uchar com); voi
[单片机]
51单片机总线<font color='red'>驱动</font>
美国国家半导体推出有温度管理控制功能的LED驱动
美国国家半导体公司 (National Semiconductor Corporation)宣布推出一款具有温度管理控制功能的全新LED驱动器,并推出相应的在线设计支持工具。这款型号为LM3424的LED驱动器是美国国家半导体PowerWise® 系列高能效系列芯片中一款新品,其特点是可以驱动高亮度的LED,适用于多种不同的室内/户外照明系统以及汽车照明应用。LM3424芯片除了可获得美国国家半导体WEBENCH® LED Designer 的设计工具支持之外,还具有称为热能回折的温度管理控制功能。系统设计工程师只要采用这款芯片,便可轻易快速地设计一组稳定可靠的热能监控系统。 受实际操作环境的影响,LED的内部温
[电源管理]
英特尔发布开源通信系统:为霍金量身打造
英特尔周二发布了一种新的开源通信系统,该系统是专门为史蒂芬·霍金(Stephen Hawking)量身打造的,同时也可适用于全球300万罹患四肢瘫痪和运动神经元病的患者。   英特尔开发的这个系统名为“ACAT”,即“辅助情境感知工具包”(Assistive Context Aware Toolkit),是该公司与霍金多年合作的成果。尤其是在过去三年中,该系统的开发工作取得了重大进展。英特尔认为,这种系统有可能成为一种现代定制化系统的支柱,可被其他研究和技术人员用来帮助残障人士。   霍金在周二召开的伦敦新闻发布会上表示:“我们正在推进技术的或有极限;如果没有这样做,那么我今天就无法跟你们交谈。”霍金还补充道,他认为“这种
[医疗电子]
无所不驱动,日本电产向10万亿日元目标迈进
过去二十年,被日本媒体称为“失去的二十年”。不过有一家日本低调的科技巨头却没停过,经过数十年布局,其无刷电机全球销量已跃居首位,小型精密马达、自动化器械等电子零部件领域的市场占有率均列世界前列。日本电产(Nidec尼得科)作为全日本的骄傲,作为世界一流的电机制造企业,它靠卖一颗小小的马达,一年可赚走超过千亿人民币。旗下产品以小型精密马达为主打,主打品牌覆盖IT、家电、工业、汽车、商务等领域。在科技浪潮的冲刷以及商业前景预期不明的情况下,为了进一步扩宽市场,日本电产将重新审视其供给战略。 近日,日本电产在中国的首次新闻发布会上为我们介绍了今后电产的战略规划和目标,日本电产株式会社总裁(首席运营官)吉本浩之先生、日本电产集团
[物联网]
无所不<font color='red'>驱动</font>,日本电产向10万亿日元目标迈进
步进电机闭环系统的组成和优缺点 闭环步进电机驱动的9大优势
步进电机基本上以开环电路驱动,用于位置控制 。换句话说,步进电机以外的电机尤其是高精度的步进电机之外并没有做开环控制定位的,而用开环电路驱动的电机只有步进电机。 例如无刷电机,首先为切换相,需要测出转子位置,需要含位置传感器的位置闭环电路。而且如果按一定速度驱动,需测出转子的速度,此为速度闭环电路;如果想定位控制,需要含有转子位置信号的编码器等传感器的闭环电路,此为位置闭环电路。与开环驱动的步进电机相比较,含传感器的闭环电路成本较高。因此, 步进电机被称为速度控制或位置控制的低成本驱动系统 。 开环/闭环系统的优缺点: 步进电机的开环电路驱动在高速转动时,有失步、振动(噪声)以及高速运行困难等问题。为了弥补这些缺点,步
[嵌入式]
步进电机闭环系统的组成和优缺点 闭环步进电机<font color='red'>驱动</font>的9大优势
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

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