WinCE下的GPIO驱动程序开发


点。为了总结出简洁、实用和具有参考意义的在 ARM+WinCE 架构下的 GPIO 驱动程序开发过程,深入研究了 WinCE 下流驱动的基本原理、梳理
出了 WinCE 下 GPIO 驱动程序的开发方法和完整流程。最后编写了一个驱动 LED 灯的示例性驱动程序,以供开发者参考。
Abstract: The development of embedded system based on the ARM +WinCE framework has been widely used in many fields, but device driver
技术学习效果。随着 3G 时代的到来这一现状问题得到了良好的改
4 结语
善,因此广大教师应充分利用这一高速率信息传输的技术优势,打
行业得到了广泛的应用。嵌入式系统是由嵌入式硬件和嵌入式软件 API 函 数 (如 CreateFile ()、
两部分组成,嵌入式软件包括嵌入式操作系统和嵌入式应用程序。 WriteFile()等)来调用驱动程
WinCE 是一款由微软公司推出的面向嵌入式领域的操作系统,被广 序达到访问设备的目的。流
泛应用于手机、PDA、平板电脑以及各种工控领域中。由于嵌入式设 接口驱动程序架构如图 2 所
Value Engineering
· 131 ·
WinCE 下的 GPIO 驱动程序开发
The Development of GPIO Driver Based on Embedded WinCE
周富相 Zhou Fuxiang;王庆辉 Wang Qinghui;郑晓晶 Zheng Xiaojing;宋刚 Song Gang
作系统与硬件交互的途径,是连接硬
其中,表中所列标准流驱动接口函数名称中的“XXX”表示设备名
件与操作系统之间的桥梁。
的前缀,由三个字符组成,设备管理器在注册表中通过前缀来识别
1.1 流接口驱动程序架构 WinCE 的驱动程序按照加载的时间 设备[1]。
可分为内置驱动和流驱动[2],能够导出流接口函数的驱动程序,不管
(总参通信训练基地,宣化 075100) (Communication Education Institute General Staff,PLA,Xuanhua 075100,China)
摘要: 基于 ARM+WinCE 架构下的嵌入式开发在很多领域已得到广泛应用,而在此架构下的设备驱动程序开发对一般用户来说是一个难
关键词: WinCE;GPIO;驱动;开发
Key words: WinCE;GPIO;driver;development
中 图 分 类 号 :TP311
文 献 标 识 码 :A
文 章 编 号 :1006-4311(2012)06-0131-02
0 引言
此应用程序可以像操作文件
随着以计算机、通信和软件技术的迅速发展,嵌入式系统在各 一 样 , 通 过 使 用 文 件 系 统
基本的输入输出通道[1],对 GPIO 口的操作主要针对两类寄存器(方
作者简介:周富相(1978-),男,甘肃靖远人,硕士研究生,讲师,专业为通信 向控制寄存器和数据寄存器)的读写[7],工作流程图如图 3 所示,该
与信息系统,研究方向为卫星通信,卫星导航。
流程图是 GPIO 驱动开发的依据。WinCE 下 GPIO 驱动程序设计实
1 WinCE 下流驱动介绍
“特殊的文件”来实现对设备
设备驱动程序是从操作系统中提 取物理或逻辑设备的软件[1],介于操作
的操作,驱动程序内部具体 的执行过程全部被封装起来,对用户来讲是透明的。
系统和设备之间,主要作用是为操作
1.2 流接口函数 流接口驱动程序在实现形式上表现为一个动
系统提供一个接口,以实现对物理和
备硬件平台的多样性,针对不同的硬件需要编写不同的驱动程序来 示,流驱动管理的设备对应
屏蔽底层硬件的多样性,使上层应用程序的开发不需要理解底层设 用程序而言,它表现为一个
备的实现细节。但是,设备驱动程序的开发正是 WinCE 嵌入式系统 文件系统,应用程序通过使
应用开发的一个技术难点。
用操作普通文件的方法处理
技术的固有限制,令有限的数据流量无法充分满足学习者交互式广 习访问资源、提供畅通化无线通道教学服务,令师生之间构建为一
泛学习需求,体现了传统多媒体交互教学模式的局限性,其固有的 种实时、轻松、面对面的学习交流模式,进而切实提升网络技术教育
慢速传输信息特征常常会令学生产生不耐烦情绪,进而影响了网络 水平、完善教育效果。
development is a difficulty. On the basis of research on the driver principle, a concise and practical method of GPIO driver development is summarized,
2 WinCE 下 GPIO 驱动程序设计方法
它控制的设备是什么类型的,这样的驱动程序都叫做流驱动程序[3]。
GPIO(General Purpose Input and Output ports)是 AR动程序当成一个特殊文件,因 — —— —— —— —— —— —— —— —— —— —— ——
态链接库[4],由设备管理器在系统启动时加载,该动态链接库实现
逻辑设备的操作。图 1 显示了 WinCE
了一套统一的流接口函数,表 1 列出了一些主要的标准流驱动接
系统架构下驱动程序在整个系统中的
口函数[5],这些函数提供给 WinCE 操作系统内核使用,应用程序通
位置和作用,可以看出驱动程序是操
过 WinCE 的文件系统提供的统一 API 接口函数来访问外部设备。
which has the reference significance for some developers. Finally, an example of WinCE driver for driving LED display is written, which provides
reference for developers.
合集下载

基于ARM的嵌入式多路远程视频监控系统的设计

基于ARM的嵌入式多路远程视频监控系统的设计

Байду номын сангаас监控计算机 监控计算机
集线器
摄像头云台
视频服务器 摄像头云台
视频服务器
摄像头云台
视频服务器
摄像头
图 1 视频监控系统结构图
3 系统硬件设计
监控系统不仅要实现视频图像的采集和压缩, 同时还需要实现这些数据的网络传输,系统以 ARM
第 36 卷第 5 期
赵书朵等:基于 ARM 的嵌入式多路远程视频监控系统的设计
作为软件开发平台,以 Intel 公司生产的 ARM 芯片 PXA270 为硬件核心,采用罗技摄像头进行实时图像采集,经
JPEG 压缩算法进行编码压缩后,通过以太网发送到远程 PC 监控端,在 PC 监控端通过监控端软件可以实时观看远
程服务器的视频图像,并实现了对摄像头云台的远程控制。
关键词:视频监控;ARM 芯片;Windows CE 5.0 系统;JPEG 算法;云台控制
系统的摄像头云台由两个舵机组成,由飞思卡 尔单片机进行控制,单片机系统要实现对舵机输出 转角的控制,需完成两个任务:(1)产生基本的 PWM 周期信号,即周期为 20 ms 的脉冲信号;(2)脉宽的 调整,即单片机模拟 PWM 信号的输出,并且调整占 空比,控制舵机的转动。
系统中网络传输部分的软件实现运用了 BSD Socket 编程技术,采用的是基于 TCP 协议的流式套 接字[8]。
JPEG 压缩编码
应用层
图像保存显示


本地云台控制


网络传输


嵌入式 WINCE 操作系统
件 嵌入式操作系统
体 Windows CE 5.0 系
设备驱动程序
云台控制的核心模块,此款单片机片内资源及 I/O接口

基于S3C2440和Windows CE5.0的嵌入式设备休眠唤醒技术研究

基于S3C2440和Windows CE5.0的嵌入式设备休眠唤醒技术研究

基于S3C2440和Windows CE5.0的嵌入式设备休眠唤醒技术研究王延慧;江志农【摘要】就休眠唤醒技术实现过程中的难点进行了深入研究,并针对S3C2440开发板提出了两种可行的低功耗休眠模式唤醒实现方法:外部中断唤醒和RTC中断唤醒.将这两种方法应用于一款基于S3C2440和WindowsCE 5.0的嵌入式智能巡检分析诊断仪,仪器运行稳定、效果理想.【期刊名称】《微型机与应用》【年(卷),期】2010(029)016【总页数】3页(P24-26)【关键词】嵌入式;休眠唤醒;S3C2440;Windows CE【作者】王延慧;江志农【作者单位】北京化工大学,诊断与自愈工程研究中心,北京,100029;北京化工大学,诊断与自愈工程研究中心,北京,100029【正文语种】中文【中图分类】TP316.7嵌入式系统应用中降低设备功耗以提高续航能力是其设计的热点[1]。

在休眠状态,系统处于最低电流消耗状态,同时仍维持存储区中的内容,为了减少能量消耗和延长电池寿命,需要让处理器定期进入或退出休眠模式[2]。

Windows CE作为一个广泛应用于嵌入式设备上的操作系统,提供了完善的电源管理功能。

其中,休眠唤醒便是一个重要的功能。

本文在结合S3C2440硬件基础上分析休眠唤醒过程,分别采用外部中断唤醒和RTC中断唤醒两种方法实现了休眠唤醒,并给出了具体实现代码。

根据相应唤醒需求,将这两种方法应用于北京化工大学诊断与自愈工程研究中心的一款基于S3C2440和WindowsCE 5.0的嵌入式智能巡检分析诊断仪,结果表明能准确达到实际的设置要求,效果良好。

1休眠唤醒过程分析对于电源控制逻辑模块,S3C2440有多种电源管理方案以针对须执行的任务保持最优的电源消耗。

S3C2440中的电源管理模块对应 4种模式:NORMAL模式、SLOW 模式、IDLE模式和SLEEP模式。

在SLEEP模式下,电源管理模块关闭内部电源,因此,CPU和内部逻辑模块都没有电源消耗,但除了此模式下的唤醒模块。

windows下虚拟串口驱动开发

windows下虚拟串口驱动开发

现在介绍在windows XP下开发虚拟串口的方法。

可以开发一个虚拟串口,将读写请求传递给USB驱动,这样就可以利用现成的串口调试工具向USB设备读取了。

1、DDK串口开发框架DDK对串口驱动提供了专门接口。

只要编写的驱动满足这些接口,并按照串口标准的命名方法,不管是真实的串口设备,还是虚拟设备,Windows操作系统都会认为这个设备是一个标准的串口设备。

用标准的串口调试工具都可以与这个设备进行通信。

1、1 串口驱动的入口函数本章的实例程序是在HelloWDM驱动的基础上修改而来,入口函数依然是DriverEntry,在DriverEntry函数中指定各种IRP的派遣函数,以及AddDevice 例程、卸载例程等。

[cpp]view plaincopy1./************************************************************************2.* 函数名称:DriverEntry3.* 功能描述:初始化驱动程序,定位和申请硬件资源,创建内核对象4.* 参数列表:5. pDriverObject:从I/O管理器中传进来的驱动对象6. pRegistryPath:驱动程序在注册表的中的路径7.* 返回值:返回初始化驱动状态8.*************************************************************************/9.#pragma INITCODE10.extern"C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject,11. IN PUNICODE_STRING pRegistryPath)12.{13. KdPrint(("Enter DriverEntry\n"));14.15. pDriverObject->DriverExtension->AddDevice = HelloWDMAddDevice;16. pDriverObject->MajorFunction[IRP_MJ_PNP] = HelloWDMPnp;17. pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = HelloWDMDispatchControlp;18. pDriverObject->MajorFunction[IRP_MJ_CREATE] = HelloWDMCreate;19. pDriverObject->MajorFunction[IRP_MJ_CLOSE] = HelloWDMClose;20. pDriverObject->MajorFunction[IRP_MJ_READ] = HelloWDMRead;21. pDriverObject->MajorFunction[IRP_MJ_WRITE] = HelloWDMWrite;22. pDriverObject->DriverUnload = HelloWDMUnload;23.24. KdPrint(("Leave DriverEntry\n"));25.return STATUS_SUCCESS;26.}其中在AddDevice例程中,需要创建设备对象,这些都是和以前的HelloWDM驱动程序类似。

Zynq入门之GPIO操作与示例

Zynq入门之GPIO操作与示例

Zynq⼊门之GPIO操作与⽰例ZYNQ中的PS部分与PL部分是独⽴的,可以独⽴运⾏,那么我们对于ZYNQ的学习研究就可以结合嵌⼊式学习的⽅法来进⾏。

⾸先是GPIO的使⽤,基于ZYNQ的特殊性,其GPIO分为MIO(multiuse I/O)和EMIO(extendable multiuse I/O)两种,GPIO的相关信号被分为了4个bank,bank0与bank1为MIO信号,bank2与bank3为EMIO信号,MIO具有54根三态GPIO引脚,EMIO可以达到192根信号,64根输⼊,128根输出。

由XILINX的官⽅⽂件还可以看出,EMIO是与PL部分直接相连的。

MIO与EMIO的控制寄存器主要有以下部分控制寄存器的位宽及每个寄存器的作⽤均给出了详细的解释。

以最基本的使⽤GPIO点灯为例,直接使⽤XPS+SDK进⾏设计。

⾸先打开XPS,进⾏PS部分的设计,这部分设计主要是针对PS中IO,uart,interrupt(均为IP核的形式)等进⾏定义,相当于在⼀个平台上搭积⽊,需要哪⼀部分的功能就将那部分的功能加⼊平台中。

我们使⽤BSB(Base System Builder) Wizard板级开发向导新建⼀个项⽬,输⼊⽂件名地址。

选择ZC702这块板卡,选项均为默认。

删除SW与LED外设。

在system assembly view中可以看到外设,XILINX公司为我们提供了ZEDboard的初始化⽂件zedboard_Revc_v1或v2,可以使⽤这个⽂件对zedboard 的外设进⾏初始化。

单击import,导⼊zedboard_Revc_v1即完成了ZEDboard的外设初始化。

添加GPIO的IP核AXI_General Purpose I/O,使⽤channel1,位宽为1,使⽤process_system7.0连接。

在Bus Interface中可以看到添加的GPIO挂载到了processing_system7下。

WinCE系统上大容量NAND Flash驱动设计与优化

WinCE系统上大容量NAND Flash驱动设计与优化

第30卷 第2期2007年4月电子器件Ch inese Jou r nal Of Elect ro n DevicesVol.30 No.2Ap r.2007D esig n and Optimi zatio n o f Lar g e 2C ap acity N AN D Flash Dr iver B ased on WinCE SystemZ H A N G Ch ao ,Z H A N G Z he ,H U Chen(N ati onal AS IC S ystem Engi neeri ng Center ,S out heas t Uni versi t y ,Nanj i n g 210096,Chi na)Abstract :A s NAND Flash has t he advant ages of f ast access ti me ,small size a nd low cost ,i t ’s t he appro 2pria te storage de vice for mass dat a.Thi s paper designs a sol ution for large 2capacit y NAND Fl ash applica 2t ion on WinCE.Thi s paper use s t he met hods of dynamic sector al locat io n ,bad block mana gement a nd buff er cache to improve t he dri ver ’s st abilit y and performance.The driver ’s t hroughput can reach 2Mbyte/s for reading and 3Mbyte/s for wri ting.It has passe d t he t est of CET K.K ey w or ds :mass stora ge ;dynamic sect or allocation ;bad block ma nagement ;buffer cache EEACC :2570WinCE 系统上大容量NAN D Fla sh 驱动设计与优化张 超,张 哲,胡 晨(东南大学国家专用集成电路系统工程中心,南京210096)收稿日期622作者简介张 超(82),男,硕士研究生研究方向为微电子与固体电子学、嵌入式系统设计,z @;张 哲(62),男,东南大学电子工程系博士研究生、讲师;胡 晨(62),男,东南大学电子工程系教授摘 要:NAND Fla sh 具有存取速度快、体积小、成本低的特点,适宜作为海量数据的存储设备.本文设计了一种大容量NAND FLAS H 在WinC E 系统上的实现方案.通过动态扇区分配、坏块管理和数据缓存等技术,提高了Flash 驱动的安全性、稳定性和读写性能.经过优化后,平均读取速度2M byte/s ,写入速度3Mbyte1/s.整个驱动通过了微软测试工具CET K(WinC E Test kit)的测试.关键词:大容量存储设备;嵌入式WinCE;动态扇区分配;坏块管理;数据缓存中图分类号:TP333 文献标识码:A 文章编号:100529490(2007)022******* 随着嵌入式系统的发展,对大容量低功耗存储器需求日益增强.特别是在手持和车载导航领域,由于导航地图往往体积庞大(大于1G B),因此急需一种与之相应的大容量存储设备.NAND Flash 以其低廉的价格,快速的擦写速度和相对较小的体积,在该领域显示了极强的竞争力.同时大容量芯片与小容量在结构上不尽相同,这也造成了两者驱动的差别.本文在XScal e 硬件平台和WinCE 操作系统上实现了一种高效、安全、稳定的大容量(2G B )Nand Flash 驱动.1 硬件方案设计本文使用PXA255处理器(400M Hz )、2MBNOR Fla sh (E28F128)和64Mbyt e SDRAM(W981216),NAND Fla sh 由两片三星公司K9W8G 08U1M (1G B )芯片级联而成.每块K9W8G 08U1M 芯片其实由两块K 9K4G 08U0M (512Mbyte )芯片封装而来,它们通过两根片选(/CE1和/C E2)分别选通[1].本文采用采用GP IO 方式控制读写和擦除时序,具体的操作由FMD 层实现.AL E (地址锁存)、CL E (命令锁存)、R/B (空闲/忙)和CE 分别通过PXA255的GPIO 口控制,同一时刻最多只能选中一片.经过软件控制,将四片分立的512MB 存储区域组成一块地址连续的2G B 存储块.NAND Fla sh 的读写控制信号/R E 和/WE 由PXA255内存控制器的片选(CS1)和读写信号(/OE:2000410:la rk ho tmail.co m 197197和/WE)通过或门给出[2],图1.图1 硬件连接图2 驱动方案设计在Wi nC E系统中,NAND Fla sh驱动由FAL (fla sh abst raction l ayer)和FMD(fla sh media dri v2 er)两层构成[3].FMD层实现与芯片相关的操作如读、写和擦除等,FAL层实现扇区的动态分配和坏块管理.这两部分链接构成块设备驱动,提供标准的流接口给上层文件系统调用.FAL和FMD之间通过一个Buff er2Cache进行数据缓存和格式转换.图2 系统框架扇区(Sect or)是访问块设备驱动的最小数据单位.WinCE系统中,1Sector=512byt e.每个扇区相对于卷的引导扇区都有惟一的逻辑扇区号.从文件系统看,块设备就是一个逻辑扇区号连续的字节数组.同时,每个扇区还拥有惟一的物理扇区号.通过它,块设备驱动读写底层设备(如硬盘)数据.然而NA ND Flash并没有扇区的概念,它通过块(Block)和页(Page)两级组织.块是擦除操作的基本单位,页是数据读写的基本单位.对于三星大容量(大于128 Mbyte)NAND芯片,1Block=64Page,1Pa ge= (2k+64)byte.Buffer Cache实现了物理扇区号到Flash页号的转换,解决了以页为单位的Flash物理特性和以扇区为单位的块设备接口之间的矛盾.3 驱动实现3 F L层F L层的主要功能是实现扇区的动态分配、逻辑扇区到物理扇区的地址转换和坏块管理(1)扇区动态分配NAND Flash在读方面与普通的SRAM存储器类似,可以实现完全的随机读取.它的最大不同在于写方面.当block中的某一位被写为0后,要再改为1,必须擦除整个block[3].因此对于FAL层来说,如果要修改某个逻辑扇区的内容,必须首先读出该扇区所在块的全部数据,在RAM中修改其内容,擦除整块,最后再将数据写回.显然,这种操作方法会带来多次的I/O操作,写入速度慢.而动态扇区分配则将要更新的数据直接写入新的空白物理扇区,修改扇区映射表,将逻辑扇区映射到新的物理扇区[4].这样,节省了读取、修改和擦除步骤,减少硬件读写次数,加快读写速度,使各单元的擦写次数得到平衡,延长使用寿命.(2)逻辑扇区到物理扇区的映射由于使用了动态扇区分配,所以连续的逻辑扇区在实际FL AS H中存放可能并不连续(对应的物理扇区号不连续).逻辑扇区到物理扇区的映射通过查找扇区映射表完成.与逻辑扇区相比,物理扇区除了512byt e的扇区数据外还包含16byte的扇区信息.这十六个字节分为五个部分:坏块标志(1byt e)、FAL标志位(1byte)、OEM标志位(2byt e)、逻辑扇区号(4byt e)和ECC(8byte).FAL标志有三个: Writ e(正在写入数据)、Valid(写入完毕,数据有效)和Invalid(无效).标志位未设置(0XFF)时,表示该扇区为空扇区(数据全为0XFF).在开机时,FAL层顺序扫描物理扇区,根据保存的逻辑扇区号建立有效扇区映射表.同时分别建立空白扇区链表和垃圾扇区链表,管理空扇区和被标志为Invali d的无效扇区.当存储器中的空扇区全部用完后,FAL会从这些无效扇区中回收空间,满足读写要求.(3)坏块管理通常,Fla sh芯片出厂时便会含有一些随机分布的坏块,并且随着读写次数的增加而增加[5].因此驱动需要对坏块进行管理.①初始坏块处理在烧入系统镜像前,EBOO T 会对Na nd Fla sh进行读写检查.当发现坏块时,将该块的第一个扇区的坏块标志置为有效.系统启动时,FAL根据该标志顺序扫描各块,建立坏块表.②操作过程中坏块处理在擦除或者编程过程中发生错误时,FAL将该块中其它扇区的数据重新拷贝到一个新的空块中,然后再将该块标记为坏块,加入到坏块表由于对F的擦除或者编程操作都会使存储单元的内容发生改变,所以F L一旦发现某块成为坏块后便不再对该块进行擦除或编程操936第2期张 超,张 哲等:Wi nC E系统上大容量NAND Fla sh驱动设计与优化.1AAshA作,以免误擦除坏块标志.3.2 Buffer2Cache的原理Buffe r2Cache的主要作用是完成逻辑扇区到实际Flash页的转换,缓存数据,优化读写性能.B uffer -Cache采用分立的读写缓存,读缓存为一页,写缓存为多页写回方式.(1)地址转换物理扇区分为两部分:512byt e的扇区数据区(Data)和16byte的扇区信息区(Info).Flash页也相应的分为两部分:2048byt e的页数据区和64 byt e的页信息区.平均划分页的数据区和信息区,使其与连续的四个物理扇区相对应(图3),完成Flash页和物理扇区间的转换.页地址=物理扇区号/4.Buffer2Cache以页为单位通过FMD接口读写数据,并将其转换成相应的物理扇区返回给上层FAL读写.图3 读写时序(2)缓存数据,减少重复读写从时空局部性上看.由于数据访问在空间和时间上的局部性,使用B U FF ER缓存数据可以显著减少数据的重复读写次数[6].本系统中使用的是FA T 文件系统,它本身包含一个文件读写缓存[7].该缓存对读有很好的缓存效果,不过写采用的是直写(writ e2t hrough)法.到目前为止,WinCE上的FA T 文件系统还没有提供对写回(writ e2back)方法的支持.B uffer2Cache采用分立的读写缓存.由于文件缓存对读操作缓存良好,所以读缓存只开一页大小,满足格式转换的要求即可.写缓存使用写回法,尽量开的大些,以充分利用写的空间局部性[8].(3)减少时序时间如果没有Buffer2Cache转换,直接以扇区为单位读写数据,那么T writesector=T ca+T d+T p r og+T test, T readsector=T ca+T r+T d+T test.T ca:输入命令和地址、T d:I/O口读写数据、T prog:向存储单元烧写数据、T r:从存储单元读出数据、T test:检查操作是否成功.DR(dat a2regi ster)是芯片内部集成的数据寄存器,大小为一页,作为I/O口和内部存储单元间的数据缓存这样读写一页数据就需要T=×T,T=×T而通过B ff2转换后以页为单位进行读写,T’=T+T+4T pr o g+T tes t,T read pag e’=T ca+4T r+4T d+T test,节省了大量输入命令、地址和等待状态检查的时间,见图4.图4 读写时序3.3 Buffer2C a che操作方法B uffer2Cache使用分立的读写缓存.我们先讨论单页读写缓存的使用方法,再将写缓存扩展到多页,通过Cac he Progra m进行优化.3.3.1 单页读写缓存我们先说明只有读(写)缓存时的情况,再分析读缓存和写缓存同时存在时的情况.为了方便说明,现做以下规定:Sr:请求读取的扇区地址;Sw:请求写入的扇区地址;RB:读缓存;WB:写缓存.对扇区的操作用单箭头表示,读为虚线、写为实线.对页的操作用宽箭头表示,读为虚线、写为实线.(1)只有读缓存时当执行读操作时,如果所读扇区就在读缓存内时,缓存命中(Cache2hit)[5],直接从缓存读出数据;如果不在(Cache2miss),调用FMD接口读出扇区所在页填充缓存,并返回所要求扇区的数据给FAL.同时,当执行写操作时,如果读缓存恰好包含所写扇区,则需要在数据写入设备后更新读缓存,见图5.图5 读缓存操作(2)只有写缓存时当执行写操作时,如果扇区所属页已经在写缓存内,则直接更新写缓存;如果不在,首先调用FMD 接口将缓存区中的数据全部写回设备,再将该扇区写入清空后的写缓存.同时,当执行读操作时,如果写缓存恰好包含所读扇区,则首先将写缓存内的数据全部写回,再读取数据(因为NAND FL AS H通过与逻辑更新设备数据,所以写缓存内的数据和最后写入设备后的数据常常不同,所以需要先写回再读出),见图6.(3)读缓存和写缓存同时存在时当S⁄RB或S⁄WB时,操作方法与只有读(写)缓存时相同当S<RB时,首先调用FMD接046电 子 器 件第30卷.w r itepage4w r ite s e ctor r e a d pa g e4re adse ctor.u er Cachewritepage c a4d w r.w图6 写缓存操作口将写缓存中的数据全部写回设备,再将扇区写入清空后的写缓存,并更新读缓存.当Sr<WB时,首先将写缓存中的数据全部写回设备,再读出Sr所在页,更新读缓存,并将数据返回给FAL,见图7.图7 读写缓存共存时的操作3.3.2 CAC H E PRO GRAM和多页写缓存其实,除了上面提到的数据寄存器(DR)外,三星K9W8G08U1M芯片还提供了一个缓存寄存器(CR,cache2ri gi st er),作为I/O口和芯片内部存储单元间的二级数据缓存[2].缓存寄存器保存IO口输入的数据,数据寄存器保存烧写存储单元的数据.缓存寄存器在恰当的时机更新数据寄存器.这样,在向内部存储单元烧入数据的同时(T prog),驱动仍然可以操作I/O口输入新的地址、命令和数据.在烧写前一页的同时,写入下一页的数据,使原先必须串行执行的操作,获得一定并行执行的能力,缩短写操作的时间.这种机制称为Cache Program.图8 Cache P rogram时序Cache Progra m的操作步骤如图8.Tcache指将数据从CAC H E寄存器写入数据寄存器所需的时间.写周期T wc=87ns,读周期T rc=394ns(读写周期由PXA255内存控制器控制[3]).T ca=7×T wc=609ns,T d=(2048+64)×T w c=183.744μs,T p rog=μ,T=μ,T=T+T=8使用后,写入一页的时间分为三种情况写入第一页时T f=T+T+T,写入最后一页的时T lastpage=2T prog+T test,中间写入的页T midpag e=T p r og+T cache.如果连续输入N页(N>=3),那么每页平均耗时T av=(T fistpage+(N-2)T mid page+T lastpage)/N=T prog+T cache+(T ca+T d+T test-T cache)/N.ΔT writepage=T w ritepage-T av=(N-1)×(T ca+T d+T test-T cache)/N.当N足够大时,ΔT w ritepage≈T ca+T d+T tes t-T cache=182.384μs,ΔT writepage/T w ritepage=47.51%.Cache Program所操作的页必须在同一块中,因此N最大等于64.为了使用Cache2Program,我们需要将写缓存扩展到多页,这样写操作也发生了相应的变化(如图9).因为Cac he2Progra m操作的页必须在同一块中,所以当写入扇区所在块与写缓存的所属块不同时,需要调用Cache2Program将写缓存中的数据全部写回,再更新写缓存.图9 多页写缓存操作流程4 测试结果分析本文使用两套测试方法评估NA ND FL AS H驱动的性能.首先,使用Wi nC E自带的系统测试工具C ET K(Wi nC E Te st ki t)测试通过块设备接口直接读写数据的能力[3].再调用CopyFile测试通过文件系统接口读写数据的能力.前者直接反映驱动的性能,而后者则更加接近实际使用中的情况.CE T K存储设备测试分别使用大小为32个扇区、64个扇区和128个扇区的缓存,通过块设备接口读写Fla sh数据,测试结果如表1和表2(单位为m s、平均带宽单位为kbyte/s).表1 读测试结果缓存类别扇区数368平均带宽无缓存8633单页缓存6338多页写缓存146第2期张 超,张 哲等:Wi nC E系统上大容量NAND Fla sh驱动设计与优化200s c ac he2s te st wc rc41ns.Cache Program.istpage ca d c ac he24121419 1.012724 4.714292240.0表2 写测试结果缓存类别扇区数3264128平均带宽无缓存1224491317.6单页缓存1021431513.5多页写缓存39213393.9 在测试中多页写缓存大小为4页.由公式知,N =4时ΔT writepag e/T w r itepage=35.63%,因此使用多页缓存和单页缓存的写入速度相比V mu ltipage/V singlepag e= T writepag e/(T w ritepage-ΔT writepag e)=1.55.而从表中可以看出,使用多页写缓存(cache2progra m)后,V mu ltipage/ V sin glepage=2.24.因此,对于多页写缓存,Cache Pro2 gram带来的性能优化占1.55/2.24=69.2%,剩余的30.8%是由写操作的时空局部性带来的.同时,从表中可以看出,使用多页写缓存后,读取速度有所降低.这是因为采用写回方式后,在试图读取脏块(所要读取的扇区在写缓存内)时,会引发写缓存中的数据写回,导致了读速度的下降.这仅仅是读写带宽的再分配.从总体上看,使用多页写缓存后,性能有了显著的提高.测试二,调用系统函数CopyFile,分别从Flash 中拷出和拷入一个大小为25Mbyte的文件.单位: kbyt e/s.从表中可以看出,使用B uffer2Cache后性能有了明显提升.不过相对于直接调用块设备接口,通过文件系统读写,速度有所下降.表3 文件系统接口测试结果工作态缓存类别无缓存单页缓存多页写缓存读取1370.51517.31475.9写入754.51066.12016.15 结束语本文介绍了在嵌入式W INC E.NE T系统平台上,使用大容量NAND Fl ash作为存储设备的解决方案,详细介绍了动态扇区分配、坏块管理、数据缓存的实现.使用本方案的产品已在江苏东大集成电路系统工程技术有限公司的手持导航PDA中投入使用,系统运行稳定,取得了良好的效果.该方案可以在同类嵌入式产品中推广,具有广阔的应用前景.参考文献:[1] Samsung C o rp.Fl ash Memory K9W8G08U1M Dat asheet[S],March2000.[2] Int el C o rp.Int el PXA255Process o r Developer’s Man ual[S],March2003.[3] 付助荣王建华,基于虚拟扇区的Flash存储管理技术[J],单片机与嵌入式系统应用,2004.[4] 吴雨俊,嵌入式系统中的线性Flash文件系统设计单片机与嵌入式系统应用[J],2003(10)[5] 董明刘加等.适宜于嵌入式多媒体应用的Flash文件系统[J].电子技术应用,2002(9).[6] Al an J ay Sm i t h,C ache m emories[J].ACM C o m p uti ng Sur2veys,1982,14(3):4732530.[7] 陈向群王雷等编著,Wi ndo ws CE.NE T系统分析及实验教程[M],机械工业出版社,2003,5(5):94296.[8] Randal E.Bryant,David O’Hallaron著,深入理解计算机系统[M],中国电力出版社,2004246电 子 器 件第30卷。

ut-s5pc100开发板 说明书

ut-s5pc100开发板 说明书

UT-S5PC100开发板简介版本记录版本号作者版本说明日期V1.0Seeky初始版本2010-04-29目录UT-S5PC100开发板 (1)简介 (1)目录 (2)第一章UT-S5PC100开发板简介 (5)1.1产品简介 (5)1.2产品功能特性 (6)1.3产品标准配置 (6)1.4选配模块 (7)1.5标配液晶屏模块(UT_LCD43C) (8)1.6应用领域 (9)1.7典型应用 (9)1.8用户手册 (9)1.9联系购买 (9)第二章硬件资源 (10)2.1核心板实物图 (10)2.2底板实物图 (10)2.3硬件结构布局 (11)2.3.1核心板结构布局 (11)2.3.2底板结构布局 (11)2.4硬件接口 (12)2.5核心板引脚定义 (14)2.5.1J1连接器引脚定义 (14)2.5.2J2连接器引脚定义 (15)2.5.3J3连接器引脚定义 (16)2.5.4J4连接器引脚定义 (17)第三章硬件设计详细介绍 (18)3.1硬件原理设计框图 (18)3.2电源设计 (19)3.2.1S5PC100处理器电源电气特性 (20)3.2.2S5PC100处理器上电时序 (21)3.2.3UT-S5PC100开发板底板电源设计框图 (22)3.2.4UT-S5PC100开发板底板电源输入设计 (22)3.2.5UT-S5PC100开发板核心板电源设计框图 (23)3.3启动模式设置 (24)3.3.1S5PC100处理器支持的启动方式 (24)3.3.2UT-S5PC100开发板支持的启动方式 (25)3.4设备接口描述 (25)3.4.2电源输入接口 (26)3.4.3电源开关 (26)3.4.4电源指示灯 (27)3.4.5UART异步串行口 (27)3.4.6USB HOST接口 (28)3.4.7USB OTG2.0接口 (28)3.4.8100M以太网接口 (28)3.4.9SD卡接口 (29)3.4.10音频接口 (30)3.4.11LCD接口 (30)3.4.12VGA输出接口 (31)3.4.13TV OUT接口 (31)3.4.14HDMI接口 (32)3.4.15摄像头接口 (32)3.4.16JTAG接口 (33)3.4.17用户按键 (33)3.4.18RTC (34)3.4.19键盘/SPI/I2C/ADC/DAC接口 (34)3.4.22LED用户指示灯 (35)3.4.23复位按键 (35)第四章预留GPIO接口信号定义 (36)4.1J11(UART) (36)4.2J6(JTAG) (36)4.3J7(CAMERA) (37)4.4J29(SPI/AD) (37)4.5J30(GPIO) (38)4.6J32(KEYPAD) (38)4.7J16(50PIN LCD) (39)4.8J18(40PIN FPC LCD) (40)第五章光盘资料 (41)5.1光盘1 (41)5.2光盘2 (41)5.3光盘3 (42)5.4光盘4 (42)第六章支持与服务 (43)6.1产品咨询 (43)6.2产品保修服务 (43)6.3技术支持 (44)第七章友坚科技的其他产品和服务 (45)7.1开发板 (45)7.3OEM/ODM定制服务 (45)第一章UT-S5PC100开发板简介1.1产品简介UT-S5PC100开发板是性能稳定、功能强大、高性价比的ARM Cortex-A8处理器开发板;专为消费类电子、工业控制、车载导航、行业PDA等电子产品的开发而设计,主要供广大企业用户进行产品前期软硬件性能评估验证、设计参考用,其凭借极高的性价比成为高校、培训机构、嵌入式爱好者学习研究的最佳工具。

我的Platform Builder编译错误总结

我的Platform Builder编译错误总结作者:jbb0523(彬彬有礼)环境:S3C2440A+Platform Builder 5.0+4.2BSP1、Ram start overlaps rom binary错误分析:记得第一次自已定制操作系统,新建platform时就出现过这个错误,当时也没在意,就没再研究。

这次想研究一下PB的使用,首先添加了PDF、WORD、EXCEL和PPT的阅览器,下载内核后果然有变化,很有成就感;然后又想添加Windows Player,但添加了几个组件再次进行sysgen时,却出现了这个错误。

我的反应:好像前一段时间网上见过这种错误,再说添加几个组件后不至于出错呀,而且由错误提示的意思感觉是添加的组件导致内核太大了。

错误原因:操作系统添加的组件过多,其内核大小超出了BSP中files文件夹中的config.bib文件中规的大小。

解决方法:1)删除不必要的组件;2)修改BSP包下config.bib文件,具体方法可以在百度或google搜索“Ram start overlaps rom binary”或参考/ joyzml/ archive/2010/01/18/5207176.aspx文章。

2、Failed to initialize from CECONFIG.H.错误分析:修改BSP添加驱动后总是出奇怪的错误,无奈时就新建platform,为防止BSP包有错,新建好platform后直接在FileView下找到SMDK2440目录下的drivers目录,然后在driver上右击,Build current project,结果出错。

我的反应:很郁闷,一波未平,一波又起。

错误原因:后来我就当没这个错误,sysgen新建的platform,发现也没再出现这个错误,渐渐地快把它忘了,后来在网上看到了这个错误的解释,原来是因为没有编译platform所致。

解决方法:不要新建platform后就编译BSP,先编译platform再编译BSP,一切OK!3、Bootloader引导OS到SDRAM后无法执行,提示“Dabort exception!!!”(数据中止异常)错误分析:此错误应该不算是PB编译出错的范畴,但也把它列在这里。

wince

wince activesync Generic USB Serial 问题解决⽤USB线连接⽬标板和主机后,出现Generic USB Serial,但⽆法安装驱动程序,设备管理器出现黄⾊感叹号。

找到D:\Program Files\Microsoft ActiveSync\Drivers⽬录点击安装
发现找不到驱动
这是因为ACTIVESYNC中未注册你的设备
所有⾸先查看设备的PID,VID 设备管理器右键点击未识别设备-》点击属性-》详细信息-》设备范例信息——即可查看然后打开D:\Program Files\Microsoft ActiveSync\Drivers下的wceusbsh.inf⽂件
在wceusbsh.inf中添加:
[Samsung]
...
%USB\Vid_0547&Pid_2720.DeviceDesc% = Host_Inst, USB\Vid_0547&Pid_2720
...
Samsung = "Samsung"
...
USB\Vid_0547&Pid_2720.DeviceDesc = "SAMSUNG USB Device"
...
即⽬标板USB Device的VID和PID分别为0x0547和0x2720
SAMSUNG USB Device即为此设备名字
修改好安装信息后,在安装驱动即可成功识别 ACTIVESYNC也可以连接。

驱动课程资料GEC6818开发板裸机教程

目录第一章裸机开发环境的搭建 (2)一.)安装 ECLIPSE (2)二.)建立第一个工程 (4)三.)编译源码 (7)四.)下载源码到SD卡 (9)五.)设置开发板启动顺序 (15)六.)通过TF卡运行裸机程序 (15)第二章X6818 裸机实例 (16)一.)X6818裸机实例1-LED流水灯实验 (16)二.)X6818裸机实例2-蜂鸣器实验 (18)三.)X6818裸机实例3-复位实验 (21)四.)X6818裸机实例4-按键控制LED实验 (23)五.)X6818裸机实例5-按键控制LED和蜂鸣器实验 (23)六.)X6818裸机实例6-LED模拟心脏跳动实验 (24)七.)X6818裸机实例7-按键中断实验 (24)八.)X6818裸机实例8-串口 SHELL 实验 (24)九.)X6818裸机实例9-串口输入实验 (27)十.)X6818裸机实例10-移植 PRINTF 函数实验 (27)第一章裸机开发环境的搭建开发裸机有很多种方法,之前在S3C2410,S3C2440平台上,比较常用的是ADS1.2或是MDK。

但是这些工具主要针对ARM9平台,对于后续的cortex-A8,cortex-A9平台,他们是心有余而力不足。

也有一些朋友喜欢直接在linux下进行裸机开发,但是对于开发WINCE的朋友,可能就遇到困难了。

在linux下开发,需要安装linux操作系统,需要熟悉makefile,交叉编译工具链等。

正因为如此,我们自主搭建了强大的eclipse开发平台,制作了四套eclipse 开发环境,同时支持linux32位,linux64位,windows32位,windows64位操作系统。

有了这四套eclipse开发环境,无论您使用ubuntu32位,ubuntu64位,或是fedora32位,fedora64位,或是winxp,win7等等,都可以开发裸机。

同时,烧写程序也不再局限于linux系统,无论您使用何种操作系统,都能方便的将映像文件写到SD卡。

WinCE实验指导书实验

《— Windows CE应用程序开发—》实验指导书王晓栋编写适用专业:计算机科学与技术嵌入式厦门理工学院计算机系(部)2010年 8 月前言本课程的基本内容介绍,通过学习学生需要掌握的基本知识。

为了使学生更好地理解和深刻地把握这些知识,并在此基础上,训练和培养哪些方面的技能,设置的具体实验项目,其中哪几项实验为综合性、设计性实验。

各项实验主要了解、掌握的具体知识,训练及培养的技能。

本指导书的特点。

对不同专业选修情况说明。

实验 1 :Windows CE环境搭建实验学时:2实验类型:(演示、验证、综合、设计(√)、研究)实验要求:(必修)一、实验目的本实验是该课程所有实验的基础部分。

包括:EVC安装、PB安装、.net framework 1.1安装。

在这个实验中,要求学生认识windows ce相关工具软件及各自的作用,学会使用安装和配置这些工具软件。

通过本次实验对Windows CE开发环境和流程有一个整体认知,为很好的开展以后的实验打下基础。

二、实验内容1、掌握构建Windows CE系统的基本方法;2、熟悉EVC开发工具使用方法;3、熟悉Platform Builder开发工具使用方法;4、熟悉PXA255实验箱;5、掌握下载运行Windows CE的流程和方法。

三、实验原理、方法和手段1. PXA255实验箱介绍容田PXA255实验箱主要集成了集成了如下硬件资源:这里重点介绍几个外设:1、以太网接口本实验箱采用Cirrus Logic公司CS8900A以太网芯片,是符合IEEE802.3协议的工业标准架构总线的一款低成本的以太网芯片。

它高度集成了一些常用的部件比如:片内的RAM、10BASE-T传输和接受过滤器和ISA总线接口等。

2、音频接口PXA255处理器包含AC’97控制单元,支持音频控制器(AC-link),能通过串口传输数字音频、调制调解器、音频输入、控制寄存器和状态信息等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档