这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » 嵌入式开发里的直接进行嵌入式开发

共2条 1/1 1 跳转至

嵌入式开发里的直接进行嵌入式开发

菜鸟
2008-07-21 14:26:09     打赏

  最直接的游戏开发模式是在手持设备提供的操作系统平台上直接

 

进行嵌入式开发。通常,这需要采用C/C++语言,因为操作系统一般都是由C/C++语言编写的,而且直接

 

提供C/C++语言作为低层接口语言。

C/C++语言作为一种运行效率高的语言,被多数开发人员掌握,通过C/C++的指针特性以及贴近硬件机能

 

的本质,运用C/C++开发能够最大限度的与硬件平台结合,充分利用硬件性能,实现高性能的图形显示。

但是仅仅利用C/C++自身的特性并不能够满足所有开发人员的需要,很多情况下,C 的函数库并不能够满

 

足需求,进行实际开发就必须调用各种预先准备好的函数库。实际上开发人员使用比较多的还是便携设

 

备操作系统提供的系统调用,只有充分利 用手持设备操作系统提供的功能才能够达到预定目标。

而在不同手持设备上,由于操作系统的不一致,原有的功能并不一致,导致不同设备的系统调用不一致

 

,导致使用C/C++进行开发在不同系统之间是不同的,这带来不同系统之间的移植问题。

而且,手持设备的开发本质上是属于嵌入式开发, 基于手持设备的硬件特性以及软件特性限制,基本上

 

还没有办法直接在便携设备上进行应用程序的编写,因为手持设备不是通用操作系统,没有通用系统中

 

提供的那 些丰富的工具。目前,那些直接能够在手持设备上应用的开发工具到目前为止只能够说是玩具

 

,功能比较简单,不过我们期望以后能够有真正功能强大的开发工具直 接运行在手持设备之上。

嵌入式开发的一般方式是在传统的PC上编写程序,通过PC上手持设备的模拟器 (一般厂家在提供开发工

 

具的时候也会附带这个软件)进行前期开发,在完成基本的测试以后,利用厂商提供的交叉编译工具在

 

PC上将代码编译成为可以在便携终 端上运行的二进制代码以后,然后通过某种机制下载到便携终端,在

 

终端上再次进行真实环境的测试,之后才能提供给用户。这种方式不仅仅用于便携设备的开发,基本上

 

所有的嵌入式系统都会利用这种模式进行开发,属于一种常见的嵌入系统的开发方式。

应用开发完成以后,我们的下一个目标就是将应用程序发布到实际用户的手持设备上。用户可以通过移

 

动互联网下载程序,或者通过手持设备的特有连接方式将程序传送到手持设备。实际上,下载到便携终

 

端的方式可以是通过有线方式或者是无线方式,大部分手机的J2me应用程序都可以通过类似于OTA(空中

 

下载,Over the Air)协议从应用服务器传递到手持设备上。一个类似的例子就是原来无线运营商通过无

 

线链路在空中传递SIM卡应用,实现STK功能扩展。

采用C/C++的这种开发方式可以针对特定的操作系统以及硬件特性进行设计和编码, 最大程度的利用底

 

层硬件的机能,实现高效的代码。但是每一个应用程序都仅仅针对特定平台,在不同手持设备平台之间

 

的移植需要花费大量的精力与时间,对于开 发人员推广其应用程序是一个不利的因素。

Palm上和PPC上两种环境的程序移植为例,在移植过程中大概有一下方面需要进行修改:

API调用:每一个操作系统的API方式都不一样,类似分配内存这种工作,在两个操作系统上因为是不同

 

的内存管理方式,提供的API接口也就不一样。类似绘图这类的API,更是迥异。

进程间交互方式:PPC支持多进程,用户需要显式关闭程序,Palm不支持多进程,在进行程序切换的时候

 

,前一个程序的当前状态必须被保存然后关闭。

诸如此类的差别使在平台之间移植程序成为一个让开发人员耗费大量时间以及精力的事情。




关键词: 嵌入式     开发     直接进行     手持     设备     进行     方式    

菜鸟
2008-07-21 14:57:11     打赏
2楼
用CP2200实现MCU的简易型以太网接口
引 言
  当前,嵌入式设计人员在为远程控制或监控设备提供以太网接入时,使用的以太网控制器(如RTL8019、DM9008、CS8900A等)都是专为个人计算机系统设计的。这些器件不仅接口电路复杂,体积较大,而且比较昂贵。CP2200是Silabs公司于近期推出的一款48引脚独立以太网控制器。它符合IEEE 802.3协议,支持10M以太网接入,而且仅需很少的外部电路连线就可满足绝大多数嵌入式以太嗣接口的设计要求,简化了嵌入式以太网接口的设计,减小了占板空间,降低了系统开发成本。
  另外,该以太网控制器具有8位并行主机接口,可以为绝大多数微控制器或主处理器提供以太网通信功能。8位并行总线接口支持Intel和Motorola总线方式,可以使用复用或非复用方式寻址。这些功能加上相关处理器的TCP/IP协议栈,使得嵌入式应用系统的以太网接口实现变得十分简易。
1 CP2200的主要功能
  ◆符合IEEE 802.3协议:内置lOMbps以太网物理层器件PHY及媒介接入控制器MAC,可按业界标准的以太网协议可靠地收发信息包数据;具有可编程填充和CRC自动生成功能。
  ◆可编程过滤功能:特殊的过滤器,可自动评价、接收或拒收Magic Packet、单播(Unicast)、多播(Multicast)或广播(Broadcast)信息包,以减轻主控单片机的处理负荷。
  ◆30 Mbp5速率的并行主机接口:支持Intel和M0torola两种总线方式。
  ◆8 KB Flash存储器:8192字节非易失性数据存储空间,可对其进行灵活编程;工厂预编程的唯一48位MAC地址。
2 硬件电路设计
  系统的硬件电路原理可参考图1。其中,要特别注意CP2200控制器与RJ-45的连接电路,因为这些参数对通信的可靠性影响很大。

  CP2200的外围电路比较简单,主要考虑其复位引脚、晶振输入、并行接口和与以太网变压器的连接。
2.1 复位电路
  CP2200具有上电复位功能。一旦VDD上升到某个门限值后,就会在片内产生上电复位脉冲。当VDD上升到足够器件上作时,器件会以初始化状态启动。CP2200支持软件复位,可以通过并口将复位寄存器置位来实现软件复位。
2.2 晶振电路
  CP2200的工作频率为20MHz,晶振连接在XTAL1和XTAL2之间。CP2200也可由连接到XTAL1引脚的外部时钟源驱动。
2.3 I/O并行接口
  CP2200的并行主机接口,支持Motorola和Intel两种总线方式,且支持地址数据复用和非复用方式。可以通过将MUXEN和MOTEN引脚接地或拉高电平来实现对主机接口总线方式的配置。
2.4 以太网变压器
  要实现以太网接口,以太网变压器是不可缺少的。在差分接收引脚(RX+/RX-)上,需要1个专用于10BASE-T操作的l:1脉冲变压器;在差分发送引脚(TX+/TX-)上,需要外接1个带有中心抽头的l:2.5脉冲变压器。变压器应具有2 kV以上的电压隔离性能,以防止静电干扰。发送端需要2个8Ω(精度为1%)的电阻和1个560pF的电容与特定端相连,接收端需要1个100Ω电阻与特定端相连(具体连接方式见图1)。
  按照CP2200的要求,笔者采用的是PRJ系列的PRJ-010型变压器。该变压器集成了RJ-45接头,在省去了不少连线的同时也提高了高频信号传输的可靠性。
2.5 其他电路
  LINK和ACT引脚输出电平用于驱动LED,以指示网络的连接和活动状态。
  所有电源引脚都必须与同一个外部3.3V电源相连。类似地,所有参考地都应在外部连接到相同的接地点。每个VDD和地之间都应连接一个0.1μF的陶瓷旁路电容,且尽可能靠近引脚。
  需要特别说明的是,驱动双绞线接口需要相对高的电流,因此以太网的收发数据线应尽可能短,并且线径适当加大以减少电阻损耗(为了保证数据的可靠传输,笔者的PCB电路板选择了20mil的线径)。(注:100mil=2.54 mm。)
3 软件设计
  TCP/IP协议种类繁多,相互之间交互作用复杂,在单片机上不可能实现所有协议,所以必须对协议栈进行裁剪。结合系统的具体通信要求,本系统最后只保留了TCP、UDP、IP、ICMP、ARP协议模块。在协议栈程序的整体设计上,考虑到单片机的单任务执行方式很难发挥TCP/IP协议的特点,采用了基于事件驱动机制的TCP/IP协议栈的实现方法。该机制的引入,使得系统在保证具有高效的汇编语言代码效率的同时,实时响应性也得到了大幅提高。下而将具体阐述事件驱动机制的原理、特点以及基于该机制的TCP/IP协议栈的实现。
3.1 事件驱动机制的原理
  系统初始化完成后,进入事件循环体,不断查询C8051F040的事件队列是否有事什,一些事件队列非空,则读取事件标志字,判断事件类型,而后调用对应事件处理子程序。处理子程序执行完毕后,仍然返回到事件循环体中。事件标志字由中断直接或者间接驱动,当某个事件发生后,只需在中断服务程序中将状态字的对应位置位。中断不断向事件队列中添加事件,而C8051F040处理程序则不停地从事件队列中读取事件标志字,处理事件。

3.2 事件驱动机制的特点
  ①由于在中断处理程序中,仅执行了改变事件标志字这样的简单程序语句,把事件添加到C8051F040的事件队列中后就立即返回,所以系统关闭中断的时间很短,从而增强了系统对中断处理的实时性。
  ②C805lF040根据当前读取的事件,进行相应事件处理或者向事件队列中添加进一步处理所需的事件。这实际上是对任务都进行了分步处理,在执行一步某一任务的同时,也可以执行一步其他任务。这样,在不影响主程序流程的情况下,提高了系统的实时性。
3.3 事件循环体的简要流程
  事件循环体的简要流程如图2所示,下面具体介绍各事件的含义。

  ◆EVENT_ETH_ARRIVED:有待处理的以太网帧事件。检测到此事件,C8051F040会调用读CP2200接收缓冲区程序,然后对帧进行解包处理。
  ◆EVENT_TCP_RETRAN:TCP重传事件。若TCP定时器超时,则触发该事件。
  ◆EVENT_TCP_INACTIVITY:关断不话动连接事件。若某连接超过0.5s没有收发数据,则触发此事件。
  ◆EVENT_ARP_RETRAN:ARP请求数据包重传事件。若某一ARP请求在发出O.5s后没有相应,则触发该事件。若经两次重发都没回应,则将以该IP为目的地址的数据包丢弃。
  ◆EVENT-AGE_ARP_CACHE:更新ARP缓存事件。每60s触发该事件一次。
  ◆EVENT_COME_NEWDATA:有新数据事件。当有新数据待发送时,触发该事件。
4 结论
  CP2200的多种集成功能(如CRC校验、数据滤波等)有效地减轻了单片机的载荷,它内部的收发接口单元操作起来灵活方便,为以太网数据包提供了有效的缓冲;另外,该芯片具有稳定的工作性能和抗干扰抗震性能。笔者利用CP2200、C8051F040和文中提到的TCP/IP协议栈开发出了用于铁路机车的以太网通信接口板卡。此板卡已在测试机车上运行,工作性能良好,能够进行稳定的数据传递。



相关型号:ADV7125KSTZ50 UPD4711ACX W24512AK-20 MAX1798AEP MIC29151-3.3WU  http://www.yule2000.com/ADV7125KSTZ50_ic.htm http://www.yule2000.com/UPD4711ACX_ic.htm http://www.yule2000.com/W24512AK-20_ic.htm http://www.yule2000.com/MAX1798AEP_ic.htm http://www.yule2000.com/MIC29151-3.3WU_ic.htm

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]