论文导读::本文就如何实现嵌入式系统中的红外通信为研究目标,利用Platform Builder 4.2构建目前已经技术成熟的嵌入式系统WindowsCE,用Microsoft eMbedded Visual C(EVC )4.0开发工具制作应用程序,在S3C2410为核心的平台上实现短距离红外通信。
论文关键词:红外通信,嵌入式系统,S3C2410,WindowsCE,应用程序
0 引言
Windows CE是微软公司设计的主要用于建立支持具有丰富应用程序和服务的32位嵌入式系统,针对用户需求提供灵活的解决方案。它能在多种处理器结构上运行,并且通常适用于那些对内存占用空间有一定限制的设备。
IrDA组织(InfraredDataAssociation)规定了红外数据传输的标准IrDA,它规定了通过红外设备进行无线传输的方法。1994年,第一个IrDA的红外数据通信标准发布,即IrDA1.0。IrDA规范包含两个设备之间通信的标准以及与其他设备进行通信的协议。IrDA标准包含设备之间通信数据的格式以及与其他设备进行通信的协议。红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。它一般由红外发射和接收系统两部分组成。发射系统对一个红外辐射源进行调制后发射红外信号,而接收系统用光学装置和红外探测器进行接收,就构成红外通信系统。由于红外通信方便高效应用程序,结构简单、功耗小和能进行高速数据传输。采用红外线做为传输媒介的通信网,保持了有线网络高速率的特点,可支持高速有线网络的所有业务,无需布线即可灵活地组成可移动的局域网,并具有移动计算能力论文参考文献格式。因此红外通信在PC、PC 外设、通信及信息家电等设备上的应用也日益广泛。
1硬件电路的选择和设计
终端主电路框图如图1所示。

图1 嵌入式终端结构原理框图
Fig.1 Embeddedterminal structure functional block diagram
选用带有红外通信硬件,功能强大的S3C2410A处理器。S3C2410A是Samsung公司推出的16/32位RISC处理器,采用了ARM920T内核,0.18um工艺的CMOS标准宏单元和存储器单元。它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。同样它还采用了Advanced Microcontroller Bus Architecture(AMBA)新型总线结构,适合于手持设备、POS机、数字媒体播放设备等等,具有低功耗、高性能等特点。S3C2410A提供了以下丰富的内部设备:16KB的指令Cache和16KB数据Cache,MMU虚拟存储器管理,LCD控制器(支持STN & TFT),支持NAND Flash 系统引导,系统管理器(片选逻辑和SDRAM控制器),3通道UART,4通道PWM定时器,I/O端口应用程序,RTC,8通道10位ADC和触摸屏接口, 总线接口,IIS总线接口,USB主机接口,USB设备接口,SD卡& MMC卡接口,2个SPI总线接口以及内部PLL时钟倍频器。
S3C2410A可以通过设置UART线控制寄存器ULCONn的Infra-red-mode位来进入这一模式如图2所示。当IR处于发送模式时,如果输送的的数据位为0,传输周期是正常串口传输的3/16脉冲;当IR处于接收模式时,接收器必须侦测3/16脉冲周期来识别一个0值。

图2 S3C2410实现IR模式
Fig.2 S3C2410 realizes the IR pattern
DeviceARM2410A核心板只需要用户板(即底板)提供一组3.3V电源,而S3C2410A所需的内核1.8V电源是通过核心板上的LDO芯片产生,SPX1117系列LDO芯片输出电流可达800mA,输出电压的精度在-1%到+1%以内,还具有电流限制和热保护功能,广泛用于手持式仪表、数字家电、工业控制等领域。使用时,其输出端需要一个至少10uf的钽电容来改善瞬态响应和稳定性。
由于ARM芯片的高速、低功耗、低工作电压导致其噪声容限低应用程序,对电源的纹波、瞬态响应性能、时钟源的稳定性、电源监控可靠性等诸多方面也提出了更高的要求。DeviceARM2410A核心板的复位电路使用了内置E2PROM存储器的电源监控复位芯片CAT1025JI-30(复位门槛电压为3.0~3.15V),提高了系统的可靠性, nRSTIN信号是由用户板输入的复位控制信号,用户板上可以将nRSTIN引脚接一个复位按键(接到地),用于手动复位,也可以悬空。nRSTIN信号为CAT1025JI-30输出的复位信号,此信号连接到S3C2410A芯片的复位输入引脚上,实现系统复位控制。
CAT1025JI-30内置256字节E2PROM存储器,I2C总线接口,所以用了S3C2410芯片的I2C总线接口与其连接。DeviceARM2410A核心板上扩展了64MB的NAND Flash(芯片型号K9F1208U0B),使用S3C2410A的NAND Flash控制引脚与其相连,K9F1208U0B的I/O0~I/O7引脚直接与S3C2410A的数据总线DATA0~DATA7相连,通过数据总线发送数据、命令和数据。
S3C2410A芯片的总线驱动能力有限,在实际应用中,总线上可能有多个设备,为了提高系统的可靠性,DeviceARM2410A使用75LV245对引出的总线进行了驱动应用程序,提高总线的驱动能力。
2 Platform Builder定制操作系统
Platform Builder4.2是开发基于Windows CE嵌入式操作系统的开发工具,它提供了将定制的操作系统下载到目标平台的所有工具。在Platform Builder4.2中,为更好的满足用户需要,参考组态设置为支持工业自动化设备、掌上电脑等模式,从而为不同应用领域提供了特定的解决方案。
开发工作站采用一台装有windows XP的普通PC机,platformbuilder4.2在其上运行。Platform Builder4.2提供了创建和调试Windows CE映象NK.HIN的集成开发环境,如向导和工具栏:支持活动模板库(ATL),微软基本类库(MFC)和Visual Basic支持的处理器提供编译器、内核调试器以及各种远程调试工具等。
2.1 基于新的BSP创建一个Platform
BSP( BoardSupport Package)是板级支持包,是介于主板硬件和操作系统之间的一层,属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板论文参考文献格式。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP。创建一个新的Platform后,在Catalog中把开发中要用到的一些组件加入到Platform中。然后编译链接整个平台,生成新建WINCE平台的映象文件。
2.2 烧录系统引导程序
系统引导程序通常称为Bootloader,是在系统复位后执行的第一段代码。Bootloader独立于操作系统,它的实现高度依赖于硬件,包括处理器的体系结构、具体型号、硬件电路板的设计。在S3C2410的嵌入式系统中,系统的上电或复位时都是从地址0X00000000处开始执行应用程序,所以2410loadr. bin就烧录在这个位置,即整个NandFlash的第0块。Eboot.nb0是一个bootloader的配置程序,通过Jtag将它烧入Nandflash中,然后Nboot将引导eboot启动来配置整个系统。比如设置IP,将WinCE烧入Nandflash,或者通过网络下载运行。Eboot.nb0应该烧录到整个Nandflash的第2块。
2.3 配置EBOOT并且运行
首先设置IP地址,然后设置mac,通过网络下载来的WinCE内核烧录到Nandflash中,并将设置的选项存入flash,下次启动就不用重新设置了。再通过PB中Target项下的“ConfigureRemote Connection…”将新编译的内核烧录到flash中。这样,每次重启或加电的时候,就会运行flash里面的Windows CE了。
也可采用SM卡创建系统启动盘,启动盘由引导程序和内核程序组成。将以上创建的引导程序2410loaer.bin和nk.nb0写入SM卡中,启动盘创建完毕,经测试可以从SM卡中冷启动,Windows CE加载正常,测试应用程序可以运行。
3 使用EVC4.0开发红外通信应用程序
EmbeddedVisual C++是Microsoft公司推出的Windows CE程序的可视化开发工具应用程序,是Windows CE的重要组成部分。利用EVC4.0可以开发出规模较大,功能较复杂的Windows CE应用程序和流式驱动程序。程序设计流程图如图3所示

图3 程序设计流程图
Fig.3 Programmingflow chart
3.1socket()函数:分配套接字。
Intsocket(int domain,int type,int protocol);
domain应该设置成“AF-IRDA”,参数type告诉内核是 SOCK-STREAM类型还是SOCK-DGRAM类型。最后,把protoxol设置为“0”。Socket()返回在以后的系统调用中可用到的socket描述符,或者在错误的时候返回-1。
调用方式:s-Socket=socket(AF-IRDA,SOCK-STREAM,0);
c-Socket(AF-IRDA,SOCK-STREAM,0);
3.2bind()函数:将服务端口与套接字帮定。
Intbind(int sockfd,struck sockaddr*my-addr,int addrlen);
Sockfd 是调用socket返回的文件描述符论文参考文献格式。My-addr是指向数据结构struct sockaddr的指针,他保存你的地址(即端口和IP地址)信息。addrlen设置为sizeof(stuctsockaddr)。一旦有了一个套接字,要想将套接字和机器上的一定的端口关联起来,这就要调用bind()。
调用方式:Bind(s-Socket,(struct sockaddr*)address,sizeof(address));
3.3 listen()函数:侦听是否有传入的连接。
Intlisten(int sockfd,void*addr,int backlog);
1/2 1 2 下一页 尾页 |