嵌入式系统开发平台_第1页
嵌入式系统开发平台_第2页
嵌入式系统开发平台_第3页
嵌入式系统开发平台_第4页
嵌入式系统开发平台_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章嵌入式系统开发平台第8章目录1.如何建立嵌入式系统开发平台2.数据队列3.串口驱动4.MODEM接口模块5.I2C总线模块6.SPI总线模块7.其它软件模块第8章目录1.如何建立嵌入式系统开发平台2.数据队列3.串口驱动4.MODEM接口模块5.I2C总线模块6.SPI总线模块7.其它软件模块8.1如何建立嵌入式系统开发平台平台的概念平台是一个意义很广泛的词,要准确的定义平台不是件容易的事。在嵌入式系统中的开发平台具有如下特点:层次性效劳性标准性通用性技术密度平台的概念平台是一个意义很广泛的词,要准确的定义平台不是件容易的事。在嵌入式系统中的开发平台具有如下特点:层次性效劳性标准性通用性技术密度平台是一个意义很广泛的词,要准确的定义平台不是件容易的事。在嵌入式系统中的开发平台具有如下特点:层次性层次性首先表现在平台本身具有层次,高层的平台是以低层平台为根底搭建起来的。还表现在每个层次的平台的内部还有层次性。越高层次的平台越容易使用,对使用者的要求也就越低。效劳性平台是为应用效劳的,没有应用的平台是无意义的,没有存在的必要。对于元器件来说,线路板就是它的应用。而API是硬件平台的应用,应用程序又是API的应用。标准性通用性技术密度平台的概念平台是一个意义很广泛的词,要准确的定义平台不是件容易的事。在嵌入式系统中的开发平台具有如下特点:层次性效劳性标准性当一个平台建立起来后,其对应用的接口就具有一定的标准。一个软件模块一旦开发完毕,其接口函数及使用方法就确定了,应用程序就需要按照标准使用。通用性平台从来不是给一个应用使用的。如果一个平台只能给一个应用使用,作为平台来说,其设计是失败的〔尽管其作为最终应用可能是成功的〕。这是平台的效劳性决定的。技术密度平台的概念平台是一个意义很广泛的词,要准确的定义平台不是件容易的事。在嵌入式系统中的开发平台具有如下特点:层次性效劳性标准性通用性技术密度平台特别是商业平台通常由相关领域的专家建立。这是因为往往需要适应不同的应用的要求,所以其需要的技术含量是很高的。应用程序应用程序接口电路板元器件平台的例子层次性效劳性标准性通用性技术密度本章重点介绍该层8.1如何建立嵌入式系统开发平台使用平台开发的优势应用程序接口这个嵌入式软件开发平台的提出和应用是因为其能够解决当前及今后的嵌入式开发过程中出现的一些矛盾。以下是使用嵌入式软件开发平台〔API〕开发的优点:缩短开发时间降低对开发人员的要求降低开发本钱增加稳定性和可靠性降低软件对硬件变化的敏感性不适合使用平台开发的场合虽然使用平台开发有很多优点,但其也不是万能的。有一些场合并不适合使用平台开发,这些场合主要有以下几种:极大批量的产品这种产品往往要求硬件本钱和生产本钱最低化。而使用平台开发不可防止带来资源占用的增加,反映到硬件上就是本钱的增加。有时这种增加是不可接受的。这种情况不适合用平台开发。没有适宜的平台但产品需要尽快上市时开发平台是需要时间的,甚至比当前的工程的时间更长。但如果后续有类似的产品,那么还是建议开发者逐步建立起自己的开发平台,这会对以后所有的工程带来好处。需要极度榨取硬件性能的场合除了极大批量的产品需要极度榨取硬件性能外,估计只有科学研究和一些一件一件制造的高价值产品〔如巨型机〕需要这样做了,在普通的企业中应该不容易见到。建立开发平台的方法1.选择操作系统操作系统〔OS〕是一个根底的软件平台。因此,建立软件开发平台〔自己的API〕首先需要选择一个适宜的操作系统。操作系统的选择与应用相关的,但对于嵌入式系统一般需要选择嵌入式操作系统。2.制定API标准及应用程序编写标准有了操作系统,就可以制订API标准和程序编写标准了。这些标准一局部已经被操作系统规定好了,另一局部需要自己制订。建议这些标准尽量靠近与已存在的事实标准,以减少学习时间。3.获取成熟的软件模块并修改适合指定的标准开发人员可以通过各种途径获取成熟的软件模块,还可以获取一些商业和自由的软件模块。这些软件模块不一定适合自己的标准,这就需要对这些软件模块进行进一步的修改或包装以适应自己的标准。4.编写自己的软件模块通过外部途径不一定能够获取所有必须的软件模块,此时就需要自己编写软件模块了。编写自己的软件模块因为开发平台基于操作系统,所以很可能多个任务和/或同时访问同一个API函数。这就需要API函数必须是可重入的。这里主要介绍如何使这些函数可重入,和其它一些内容。1.使用任务2.禁止然后允许中断3.使用信号量4.使用数据队列5.禁止然后允许任务调度6.使用一个任务作为模块效劳器7.复合方法编写自己的软件模块因为开发平台基于操作系统,所以很可能多个任务和/或同时访问同一个API函数。这就需要API函数必须是可重入的。这里主要介绍如何使这些函数可重入,和其它一些内容。1.使用任务有一些设备需要CPU周期为其效劳,典型的是扫描显示和扫描键盘。可以给它们分配相应的任务,与用户任务一起调度。这样,就可以使用任何任务间通信的方法实现。键盘扫描任务显示任务用户任务操作系统内核通信通信编写自己的软件模块2.禁止然后允许中断

有一些设备需要的访问时间很短,如全局变量。它们可以通过禁止中断——访问设备——允许中断的方式编写软件模块。任务A允许中断禁止中断中断服务函数全局变量编写自己的软件模块3.使用信号量一些设备需要的访问时间比较长,使用方法2可能造成关中断时间过长。此时可以使用信号量来编写软件模块。具体过程为申请信号量——访问设备——发送信号量。信号量访问独享资源之前申请信号量其它任务申请信号量受阻,不能访问独享资源独享资源任务A任务B任务C信号量信号量申请成功后,可以访问独享资源编写自己的软件模块4.使用数据队列有一些设备具有自己的中断,典型的是串口输出。可以利用消息队列将用户任务需要的效劳通过消息队列排队、缓冲起来,利用中断功能依次效劳。任务A任务B任务C中断服务函数

数据队列编写自己的软件模块5.禁止然后允许任务调度当中断效劳程序不可能访问这个资源时,可以使用本方法防止实现函数重入。但是不推荐用户使用此方法。任务A允许任务切换禁止任务切换中断服务函数独享资源编写自己的软件模块6.使用一个任务作为模块效劳器当一个软件模块十分复杂,使用上述方法难以保证API函数可重入性时,或软件模块需要在单任务环境和多任务环境都能够使用时,可以依照单任务的方式编写,然后编写一个任务作为效劳器,由这个效劳器直接操作这个软件模块,而其它的任务通过消息队列等方式与之通讯,把需要的操作提交给效劳器,而效劳器通过消息邮箱等方式返回操作结果。服务器任务任务A任务B...任务N软件包

数据队列编写自己的软件模块6.使用一个任务作为模块效劳器当一个软件模块十分复杂,使用上述方法难以保证API函数可重入性时,或软件模块需要在单任务环境和多任务环境都能够使用时,可以依照单任务的方式编写,然后编写一个任务作为效劳器,由这个效劳器直接操作这个软件模块,而其它的任务通过消息队列等方式与之通讯,把需要的操作提交给效劳器,而效劳器通过消息邮箱等方式返回操作结果。7.复合方法有一些驱动程序比较复杂〔例如通讯协议〕,可以结合两种或两种以上的方法实现。编写自己的软件模块编写软件模块由一个要注意的地方是:必须把与硬件相关的局部和与硬件无关的局部分开。这可以通过把与硬件相关的局部放在驱动程序中实现。这样,硬件变化时只需要重新编写驱动程序即可。驱动程序也可以分层实现。也可以通过配置实现,不过这有时不太容易实现。当然可以合并使用。硬件平台A硬件平台B硬件平台C硬件驱动A硬件驱动B硬件驱动C软件模块软件模块软件模块软件模块应用于不同的硬件平台时,只需要修改相应的硬件驱动第8章目录1.如何建立嵌入式系统开发平台2.数据队列3.串口驱动4.MODEM接口模块5.I2C总线模块6.SPI总线模块7.其它软件模块8.2数据队列简介数据队列一般用于数据缓存,可以用来平衡速率不同的两个部件,使快速部件无需等待慢速部件。任务A任务B数据队列任务A产生信息快而短促任务B处理信息相对较慢8.2数据队列简介数据队列一般是先入先出〔FIFO〕的,但本数据队列可以配置为后入先出。本数据队列是可配置可裁减的模块,并且不依赖于操作系统,可以在前后台系统中使用。数据队列使用的空间由用户分配且由这个空间的地址唯一识别一个数据队列。8.2数据队列API函数数据队列软件模块包括的API函数如下所示:API函数名功能简介QueueCreate建立数据队列QueueRead获取队列中的数据QueueWriteFIFO(先进先出)方式发送数据QueueWriteFrontLIFO(后进先出)方式发送数据QueueFlush清空队列QueueNData取得队列中已存储数据的数目QueueSize取得队列中总共可以存储的数据数目API函数45673012数据队列有效数据空间空闲数据空间QueueRead读队列中数据QueueWriteFIFO方式写数据QueueWriteFrontLIFO方式写数据注:API函数的具体使用方法,请参看相关手册。QueueCreateQueueFlushQueueNDataQueueSize第8章目录1.如何建立嵌入式系统开发平台2.数据队列3.串口驱动4.MODEM接口模块5.I2C总线模块6.SPI总线模块7.其它软件模块8.3串口驱动简介在实际应用中,嵌入式系统往往不是作为一个独立的控制单元而存在,它还要和其它控制单元进行通信。这些控制单元可以是另一个嵌入式系统,也可以是PC机。如果双方均遵循同样的通讯协议,就可以互相通讯了。8.3串口驱动API函数串口驱动软件模块包括的API函数如下所示:API函数名功能简介UART0Init初始化UART0UART0Putch发送一个字节数据UART0Write发送多个字节数据UART0Getch接收一个字节数据UART0InitUART0Init8.3串口驱动API函数串口驱动软件模块包括的API函数如下所示:主机A主机BUART0GetchUART0PutchUART0WriteTXDRXDUART0PutchUART0WriteUART0GetchTXDRXD第8章目录1.如何建立嵌入式系统开发平台2.数据队列3.串口驱动4.MODEM接口模块5.I2C总线模块6.SPI总线模块7.其它软件模块8.4MODEM接口简介在实际应用中,嵌入式系统和其它控制单元的通信可能不局限于一个小的地理范围,如跨城市通讯甚至跨洲通讯。此时,如果需要布置专门的通讯线路那么本钱太高,利用现成的通讯网络成为唯一的选择。而网络是目前分布最广的廉价通讯网络。不过,要利用网络需要一种接口设备,这就是MODEM〔调制解调器〕。8.4MODEM接口模块API函数MODEM接口软件模块包括的API函数如下所示:API函数名功能简介ModemInit初始化MODEMGetModemState获取MODEM状态ModemWrite通过MODEM发送多个字节数据ModemGetch从MODEM获取一个字节数据ModemDiaUP通过MDOEM拨号ModemDiaDown挂断MODEM8.4MODEM接口模块API函数所有API函数的返回值为当前MODEM的状态,如下所示:MODEM状态状态说明NOT_INIT_MODEM不能初始化MODEMNOT_FIND_MODEM没有找到MODEMMODEM_CLOSE连接关闭MODEM_RING发现振铃信号MODEM_CONNECT已经与对方连接上ModemInitGetModemStateModemDiaUPModemDiaDownModemInitGetModemStateModemDiaUPModemDiaDownAPI函数ModemGetch获取一字节数据ModemWrite发送多字节数据ModemWrite发送多字节数据ModemGetch获取一字节数据第8章目录1.如何建立嵌入式系统开发平台2.数据队列3.串口驱动4.MODEM接口模块5.I2C总线模块6.SPI总线模块7.其它软件模块8.5I2C总线模块简介I2C总线由Philips公司推出,是近年来在微电子通信控制领域广泛采用的一种新型总线标准。它是同步通信的一种特殊形式,具有接口线少、控制方式简化、器件封装形式小、通信速率较高等优点。在主从通信中,可以有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。8.5I2C总线模块简介I2C总线通过2根线——串行数据线(SDA)和串行时钟线(SCL)——连接到总线上的任何一个器件,每个器件都应有一个唯一的地址,而且都可以作为一个发送器或接收器。此外,器件在执行数据传输时也可以被看作是主机或从机。RpRpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2CBUS8.5I2C总线模块API函数I2C接口软件模块包括的API函数如下所示:API函数名功能简介I2cInit初始化I2C总线I2cWrite向I2C从器件写数据I2cRead从I2C从器件读数据8.5I2C总线模块API函数RpRpVDDSCLSDASDA出SDA入SCL入SCL出SCLSDA器件1器件2I2CBUSI2cWrite向从器件写数据I2cRead读取从器件数据I2cInit初始化I2C总线第8章目录1.如何建立嵌入式系统开发平台2.数据队列3.串口驱动4.MODEM接口模块5.I2C总线模块6.SPI总线模块7.其它软件模块8.6SPI总线模块简介串行外围设备接口SPI总线技术是Motorola公司推出的一种同步串行接口。SPI总线是一种三线同步总线,因其硬件功能很强,所以,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论