为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

uC/GUI 在单片机系统上的移植

2010-05-26 3页 pdf 145KB 37阅读

用户头像

is_559753

暂无简介

举报
uC/GUI 在单片机系统上的移植 —275— uC/GUI在单片机系统上的移植 陈文辉,蔡启仲 (广西工学院电子信息与控制工程系,柳州 545006) 摘 要:在传统 8051 单片机系统中,受到单片机内部资源的限制,人机接口的软件设计繁琐、不易移植。该文在介绍嵌入式用户图形接 口 uC/GUI的特点及移植要求的基础上,分析了 uC/GUI在单片机系统上移植的可行性,以 C8051F120单片机系统为实例,描述了 uC/GUI...
uC/GUI 在单片机系统上的移植
—275— uC/GUI在单片机系统上的移植 陈文辉,蔡启仲 (广西工学院电子信息与控制系,柳州 545006) 摘 要:在传统 8051 单片机系统中,受到单片机内部资源的限制,人机接口的软件设计繁琐、不易移植。该文在介绍嵌入式用户图形接 口 uC/GUI的特点及移植要求的基础上,分析了 uC/GUI在单片机系统上移植的可行性,以 C8051F120单片机系统为实例,描述了 uC/GUI 在单片机系统上的移植应用过程,给出了实验程序。 关键词:嵌入式图形用户接口;C8051F120单片机;移植 Transplantation of uC/GUI in SCM System CHEN Wenhui, CAI Qizhong (Department of Electronic Information and Control Engineering, Guangxi University of Technology, Liuzhou 545006) 【Abstract】In traditional 8051 SCM system, due to the restriction of resource in SCM system, the software design about user interface is burdensome, and not easy to transplant. Aiming to these shortcomings, on the base of introduction of uC/GUI’s(embedded graphical user interface) characteristics and requests of transplantation, feasibility of transplantation of uC/GUI in SCM system is analyzed. With the example of C8051F120 SCM system, the transplantation application process of uC/GUI in SCM system is described, and the experimental procedure is given. 【Key words】Embedded graphical user interface; C8051F120 SCM; Transplantation 计 算 机 工 程 Computer Engineering 第 33卷 第 12期 Vol.33 No.12 2007年 6月 June 2007 ·开发研究与设计技术· 文章编号:1000—3428(2007)12—0275—02 文献标识码:A 中图分类号:TP311.54 在以传统的 8051 单片机为核心、图形液晶显示器(LCD) 为人机接口的单片机应用系统中,受到单片机执行速度和存 储器容量的限制,设计的图形界面过于简单、不够美观。设 计的用户图形应用程序需要和 LCD 的底层驱动程序存放在 一起,这种使得系统在更换不同控制器的 LCD时,需重 新编写大量的驱动和应用程序,软件可移植性很差。 一种独立于微处理器和 LCD 的嵌入式用户图形接口程 序 uC/GUI,为需要图形显示的系统提供类 Windows 的窗口 控件和完善的画图程序,并且支持各种字体,包括中文字体 等功能。使用 uC/GUI 可以设计出复杂的人机界面,软件设 计简单,且 uC/GUI 的移植对硬件系统的存储器容量要求比 较低,使移植容易实现。 随着单片机技术的发展,无论是单片机的运行速度,还 是单片机内部的存储器容量都有大幅度的提高,使得单片机 系统在不做任何存储器扩展的条件下,可以移植嵌入式用户 图形接口程序 uC/GUI。本文以 C8051F120单片机系统为例, 给出了 uC/GUI在单片机系统中的移植过程。 1 uC/GUI uC/GUI是美国Micrium公司开发的通用的嵌入式用户图 形界面软件。它给任何使用图形 LCD的应用程序提供独立于 处理器和 LCD控制器之外的有效图形用户接口,并以源代码 的形式提供。uC/GUI具有显著的特点: (1)适用于任何 8/16/32 位的 CPU,可允许支持 ANSI C 的任何编 译器,同样也支持 Keil C51 编译器;适用于任何液晶控制器来驱动 液晶显示器 LCD。 (2)具有完善的图形库应用程序,支持不同颜色深度的位图,并 提供位图转换程序。 (3)支持多种字体,可以方便地加入自定义字体。 (4)具有完整的窗口管理功能,可以完成类似 Windows 操作系统 的窗体设计。 (5)支持触摸屏输入等。 在 uC/GUI 的组织结构中,色彩转换模块、内核模块、 字体模块、LCD驱动模块为基本应用模块;视窗管理、触摸 屏、抗锯齿、存储器支持功能模块为可选 [1]。对于 uC/GUI 的移植应用,系统的存储器有以下要求:数据存储器 2KB~ 6KB;堆栈 2KB左右;程序存储器 30KB~60KB;这些数据 只是粗略的估算,具体的存储器要求依情况而定。 2 C8051F120处理器和 LCD C8051F120是美国 Silicon Labs 公司推出的以传统 8051 为内核的高性能微处理器,作为 C8051F 系列单片机中的高 端产品,它具有高为 100MISP的峰值指令执行速度,并且在 内部集成了大量的片上资源,有较大的数据存储器和程序存 储器,其 8KB的数据存储器和 128KB的 Flash程序存储器能 满足大部分应用系统的要求。C8051F120 单片机存储器结构 如图 1所示。 BANK0 1 2 3 0 8 KB 外部数据存储器结构 程序存储器结构 0x2000~0xffff 片内数据存储器 0x8000~0xffff 0x0000~0x7fff 图 1 存储器结构 基金项目:广西省自然科学基金资助项目(0448011) 作者简介:陈文辉(1975-),男,实验师,主研方向:单片机技术, 嵌入式系统;蔡启仲,教授 收稿日期:2006-06-23 E-mail:cwhui1@126.com —276— 由 4个 32KB存储器块组成 128KB的程序存储器,其中 地址在 0x0000~0x7fff 之间的 32KB 的程序存储器作为公共 存储器块 (BANK0),其它 3 个高地址存储器块 (BANK1、 BANK2、BANK3)被映射到相同的地址 0x8000~0xffff;由寄 存器 PSBANK(SFR地址:0B1H)中的块选择位选择不同的存 储器块,向 PSBANK中写入 00H,11H,22H,33H,来分别 选择存储器 BANK0~BANK3[2]。C8051F120 单片机内部有 标准的 256B 的数据存储器外,还有位于片外部数据存储器 地址空间 8KB 的数据存储器和一个可用于访问外部数据存 储器的外部存储器接口,这个 8KB的存储器地址空间与外部 数据存储器空间重叠,当与外部存储器接口时,接口起始地 址应超过 0x2000(8KB),否则将与单片机内部的 8KB数据存 储器产生冲突,图 2中的液晶控制器 TFT3224的端口地址取 0x2000、0x2100、0x2200、0x2300。 C8051F120 单片机内部的数据存储器和程序存储器数量 能满足 uC/GUI移植的基本要求,且无须在片外扩展存储器。 单片机系统采用 25MHz 的晶振,使用内部 PLL 倍频为 100MHz的时钟,使系统具有较好实时性。 如图 2所示,硬件系统中采用 TFT3224的 LCD控制器, LCD 选用点阵为 320×240 的 TFT 液晶,256 色,像素 RGB 值为 332。列地址的范围为 0~319,即 X轴坐标;行地址的 范围 0~239,即 Y轴坐标;列地址和行地址的最高位由控制 寄存器来设置。液晶控制器 TFT3224提供一个高速的 8位总 线接口,可以与 8051及衍生的系列单片机直接接口。在控制 显示时,只需直接输入 X轴和 Y轴的坐标,不必计算显示存 储区地址。 图 2 单片机与液晶控制器的连接 3 uC/GUI的移植 uC/GUI的各功能模块均采用条件编译结构,便于裁剪, 只需在配置文件中配置好相应的宏,就可完成各功能模块的 启用或屏蔽。由于 uC/GUI独立于处理器和 LCD控制器之外, 因此在移植之前应将处理器和 LCD 的控制器进行相应的初 始化设置。uC/GUI的具体移植过程如下: (1)Keil uVision2环境下工程选项的设置 软件系统采用标准 C语言编程,Keil C51作为编译器, 开发环境为 Keil uVision2;在选择好处理器 C8051F120后, 根据 C8051F120的存储器结构特点,软件设计前,应进行系 统工程项目选项设置:将编译器的编译模式设为 large variables in XDATA存储器大模式;由于编译器 Keil C51支 持处理器的程序存储器分页结构,因此需设置好存储器分页 选项 Code Banking,其中 Banks存储器块数量设为 4,Bank Area每块的地址范围为 0x8000~0xffff。 (2)单片机系统的初始化设置 由于 C8051F120单片机的存储器结构和独特的硬件交叉 开关结构,因此需将单片机的启动代码、存储器分页管理、 I/O端口等模块进行相应的初始化设置。 启动代码(STARTUP.A51)的设置包括外部数据存储器的 设置,堆栈空间的设置: … XDATASTART EQU 0H; XDATALEN EQU 2000H; //外部数据存储器的设置 XBPSTACK EQU 1; XBPSTACKTOP EQU 1FFFH+1; //设置堆栈空间 传统的 8051 单片机的代码空间地址范围是 64KB。Keil C51支持代码分体(code banking),可以管理 1个公共区和 32 个存储块,总共 2MB的可分体存储器。C8051F120单片机内 部有 128KB的存储器,分成 4个存储器块,每块存储器空间 地址范围为 32KB。Keil C51的库文件中,包含一个存储器分 页管理的文件:L51_BANK.A51。为使 C8051F120 单片机实 现存储器块间的分页转移,需根据单片机的存储器结构要求 将存储器分页管理文件做相应的修改,并将该文件和其他源 文件放在一个文件组中。该文件涉及到 4个 SWITCHn,分别 是 SWITCH0、SWITCH1、SWITCH2 和 SWITCH3,用来切 换 4个不同的存储器块[3]。L51_BANK.A51文件设置如下: … ?B_NBANKS EQU 4; //分页数为 4 ?B_MODE EQU 4; //自定义分页模式 … SWITCH0 MACRO; //切换到 BANK0 MOV 0B1H,#00H; ENDM 在 SWITCH 宏中,用 11H、22H、33H 代替 00H,作为 其它 3个宏的宏体,用来切换到其它 3个存储器块。 C8051F120 单片机的外部存储器接口可以配置在 P0~P3 或 P4~P7;在与位于外部数据存储器地址空间的存储器或 I/O 口连接时,有数据/地址总线复用方式和非复用方式两种,如 图 2所示,单片机与 LCD连接的接口配置在 P0~P3;单片机 与 LCD 的接口选择地址/数据总线复用方式。单片机的初始 化设置如下: void MCUinit (void) {…//初始化端口 EMI0CF=0x05; //工作在地址/数据复用方式,并选择 P0~P3 //为总线接口 EMI0TC=0x45; … P0MDOUT=0x0F; //P0 口高 4 位的输出方式为漏极开路,做 //控制总线 P2MDOUT=0x00; //P2口输出方式为漏极开路,做地址总线 P3MDOUT=0x00; …} //P3 口输出方式为漏极开路,做数据 //总线 (3)GUI的配置 本文只应用了 uC/GUI 的基本模块,如颜色转换、位图 显示、汉字显示。uC/GUI在移植之前,根据实际要求,应配 置好相应的宏,包括 LCD的配置和图形接口的配置。在 LCD 的配置中,包括总线连接方式、总线的宽度、LCD控制器型 号等。LCD的配置文件 LCDConf.h的设置如下: #define LCD_XSIZE(320) /* LCD的列地址范围*/ #define LCD_YSIZE(240) /* LCD的行地址范围*/ #define LCD_BITSPERPIXEL(8) /*每像素的位数*/ #define LCD_BUSWIDTH(8) /*处理器的总线宽度*/ #define LCD_CONTROLLER TFT3224 /*控制器型号*/ #define LCD_FIXEDPALETTE(332) /*像素 RGB值*/ … (下转第 279页) TFTLCD 8P30-P37 P07 /CS P06 P22 P21 P20 A1 A0 WR RD D0-D7 TFT3224C8051F120 18 —279— 2.4 BinFS文件系统操作实现 在 Windows CE.net中,文件系统实现了逻辑存储空间与 物理存储空间的映射关系,负责了文件 DOC物理存储空间的 组织、分配与管理,并提供了按文件名存取的功能。 BinFS(binary ROM image file system)是一种用来读写二进制 格式映像文件的文件系统,它支持将.bin 的文件按照一定格 式存储到指定的扇区,支持分段的内核映像文件的存储。在 Windows CE.net的 Eboot中,通常使用 BinFS文件系统建立 系统 ROM 化的内核映像与 RAM中运行内核的读写映射。因 此,这就需要实现 BinFS 文件系统提供的一套标准函数接口 [4]: BP_Init——分区初始化 BP_OpenPartition——打开分区 BP_ReadData——从分区中读取数据 BP_WriteData——向分区中写入数据 BP_GetPartitionInfo——获取分区信息 BP_LowLevelFormat——低级格式化分区 同时,还需要添加相应的注册项,以实现操作系统对 BinFS的支持。 [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\M SFlash] "DefaultFileSystem"="BINFS" "PartitionDriver"="mspart.dll" "MountFlags"=dword:11 "Folder"="NAND Flash" "Name"= "FLASH Disk Block Device" [HKEY_LOCAL_MACHINE\System\StorageManager\BinFS] "FriendlyName"="BIN Filesystem" "Dll"="binfs.dll" "Paging"=dword:1 如果需要确保系统安全,还可以设置 BinFS 内容隐藏, 此时系统所在分区将不能被用户看见和修改,这大大提高了 系统使用的安全性。 通过对 BinFS 的操作,使得从远端开发机下载到 RAM 中的内核映像可以作为一个二进制文件存储在 NAND Flash(DOC)中,这就实现了 OS Image的固态存储。同样,在 需要从固态存储设备启动的时候,可以通过操作 BinFS 文件 系统将 OS Image读取到 RAM中执行。如此就实现了 NAND Flash作为 DOC设备来 ROM化存储和启动 Windows CE.net 的方法。 3 结束语 本文通过介绍 Eboot启动过程、NAND Flash地址映射、 NAND Flash 驱动和 BinFS 文件系统实现方法,实现了一种 基于 NAND Flash 的 Eboot 启动方法,完成了在 PXA270 处 理器上使用 NAND Flash 作为 DOC 设备来引导 Windows CE.net,并通过系统实际的运行验证了该方法的可行性。 在半导体技术不断发展的今天,随着 NAND Flash 数据 存储密度的提高,在设计中使用 NAND Flash,可以使得线路 板的体积变得更小,性能和适应性更强,应用设计变得更加 简洁,成本也更低廉,从而极大地推动嵌入式技术应用的发展。 参考文献 1 白 浪, 张思东. WinCE系统下 Bootloader的开发[J]. 单片机与嵌 入式系统应用, 2004, (2): 24. 2 王景存, 刘 奕. 基于嵌入式开发板远峰 2410 的 Bootloader程序 的研究与实现[J]. 电子工程师, 2005, 31(6): 59. 3 周毓林, 宁 杨, 陆贵强, 等. Windows CE.net内核定制及应用开 发[M]. 北京: 电子工业出版社, 2005. 4 Microsoftware. 微软 MSDN 联机帮助[Z]. http://msdn.microsoft. com/embedded/. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (上接第 276页) 在图形接口的配置文件 GUIconf.h 的默认设置中,窗口 管理、存储器支持、触摸屏等功能被屏蔽。默认字体设置为 GUI_Font6x8。uC/GUI 同样支持汉字的显示,使用生成汉字 字库的软件,可以将 Windows操作系统内的任何字体字库转 换汉字字库文件,也可以根据实际显示的需要,将所需显示 的汉字建立一个自定义字库,添加到 uC/GUI 中。文中选用 的汉字字库文件为 hzk16s.c(16×16 点阵的宋体汉字字库), uC/GUI便支持 16×16点阵宋体汉字的显示。 (4)LCD驱动 uC/GUI的图形库应用程序、汉字显示、窗口等功能的实 现,都建立在底层的 LCD驱动和画点功能的基础上,uC/GUI 的移植,必须先完成 LCD 的驱动,以及画点、线等基本功 能。控制器 TFT3224在驱动液晶显示时,只需设置好显示的 行列坐标,向显示寄存器写入显示数据,便实现显示功能, 而无需计算显示存储器和显示区域的地址。画点程序如下: static void _SetPixel(int x, int y, LCD_PIXELINDEX c) { Y_ADDR = y; X_ADDR = x; CMD = ((x/256)<<2) | (y/256); //控制寄存器 CMD存放行列 //坐标的高位数据 DAT = c; } //数据寄存器 DAT (5)移植验证 将 uC/GUI的内核文件、配置文件 LCDconf.h,GUIconf.h 添加到 Keil C51的工程文件组中,便完成 uC/GUI的移植过 程。uC/GUI的验证程序如下: … GUI_SetColor(GUI_WHITE); //设置前景色为白色 LCD_L0_DrawHLine(0,100,100); //绘制水平直线 GUI_InitLUT(); //初始化调色板 GUI_DrawBitmap(&bm2,0,0); //绘制位图,位图文件为 2.c GUI_SetFont(&GUI_FontHZ_Song_16); //设置当前字体 16×16宋体 GUI_DispStringAt("uC/GUI移植实现",10,40); //显示汉字 … 4 结束语 本文在分析嵌入式用户图形接口程序 uC/GUI 在单片机 系统移植的可行性的基础上,描述了 uC/GUI 在 C8051F120 单片机系统中的移植过程,通过了实验验证。uC/GUI在单片 机系统上的成功移植,使得单片机系统人机接口的软件设计 更加简单、界面更加友好、易于移植。对于 UC/GUI 在其它 8/16/32位处理器系统中的应用具有实际参考意义。 参考文献 1 Micrium. uC/GUI User’s Guide[Z]. 2003. 2 Silicon Labs. C8051F12X Datasheet[Z]. 2004. 3 冉 全, 曾令美, 刘 珊, 等. C8051F12X 中多 Bank 的分区跳转 处理[J]. 单片机与嵌入式系统应用, 2006, (1): 73-76. 4 马忠梅, 刘 滨, 戚 军, 等. 单片机C语言Windows环境编程宝 典[M]. 北京: 北京航空航天大学出版社, 2003.
/
本文档为【uC/GUI 在单片机系统上的移植】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索