tag 标签: vxworks

相关博文
  • 热度 22
    2013-7-21 15:24
    1410 次阅读|
    0 个评论
      在ARM微处理器硬件平台上,应用WindRiver公司的Tornado集成开发环境,实现基于VxWorks的自动发送彩信的嵌入式应用系统。该系统使用现有CDMA网络,根据设定的参数发送彩信到特定的移动终端用户。   随着嵌入式应用的发展和16/32位RISC处理器技术的成熟,以及支持各种高端处理器的嵌入式操作系统的涌现和完 善,嵌入式无线设备可以利用CDMA网络实现许多新的应用。自动发送彩信的嵌入式系统就是这种新应用之一,在特定的条件下,系统自动发送彩信到指定的移动通信终端;该应用系统是由用户根据要求设定触发条件的自动发送彩信系统,当满足触发条件时,设备会自动控制捕获、压缩图像部件拍摄外部图像,经过模数转换、数字压缩等处理后,经处理器做MMS(Multimedia Message Service,多媒体短信服务)协议封装,封装后的数据经由手机模块发送到移动交换网络,最终转发到移动通信终端用户。   系统整体设计   ● 系统主处理器   系统选用Samsung公司的16/32位基于ARM7TDMI的微处理器,其最高主频可以达到130MIPS,同时支持16位的Thumb指令集,使用Thumb指令集可以以16位的系统开销得到32位的系统性能。   ● 系统原理框图   系统从逻辑上分成三部分:图像捕获和图像压缩模块用于捕获和压缩图像;MMS协议处理和主控制器模块处理图像数据和任务控制;手机模块可发送彩信和接收短消息。系统原理如图1所示。 图1 系统原理框图   ● 系统工作原理步骤   (1)系统上电启动后,手机模块读取UIM信息发送无线信号寻找CDMA网络,进行用户号码账户和身份验证后连接到网络;然后系统发起任务读取手机模块中的信息,确定是否有网络连接,若有网络连接则系统发起任务,等待满足触发自动发送彩信的条件。   (2)设备软件可以接受SMS(Short Message Service,短信服务)信息,并对之进行解析,根据解析的结果进行动作。当接收到用户的触发后,系统发起任务控制串口UART对图像捕获、压缩模块进行命令控制和拍照;拍照后发起任务对串口进行读取,接收图像捕获、压缩模块回传的图像数据。   (3)当接收到回传的图像数据后系统发起任务对图像数据进行MMS封装,封装格式完全符合MMS CLIENT端协议。   (4)系统发起任务使用WAP协议与WAP信息网关建立连接,建立连接后由系统把封装的图像数据通过标准串口UART传送给手机模块,最后系统发起任务使用AT指令控制手机模块把彩色图片发送到移动交换网络,最终转发到设定的目标移动通信终端用户,从而完成了自动发送彩信的功能。   ● 系统硬件设计   系统硬件设计技术要点包括以下部分。   (1)图像压缩处理模块完成对数字图像信息的压缩,部分电路如图2所示。SDRAM用来缓存图像数据,FLASH用来存储压缩处理器执行程序映像。此外,图像压缩处理器模块提供一个UART接口,以便将压缩的图像文件传输到主控处理器模块。 图2 图像压缩处理电路 点击看原图 图3 系统串口连接电路   (2)系统串口连接电路的部分电路如图3所示。ARM7处理器提供标准的UART接口连接手机模块,另外提供一个串行接口,与图像压缩处理器模块串行接口相连。   系统软件设计   ● 操作系统和开发环境   VxWorks是目前世界上用户数量最大的实时操作系统,具有丰富的应用软件支持、良好的技术服务、可伸缩性(VxWorks提供了超过1800个应用编程接口供用户自行选择使用)、可裁减性(指用户可以根据自己的应用需求对VxWorks进行配置,产生具有各种不同功能的操作系统映像)和可靠的系统稳定性。本系统主要采用其实时性、多任务、基于优先级的抢占式调度、同优先级轮转调度和任务间的通信与同步机制、任务与中断之间的通信机制。   VxWorks的开发环境是WindRiver(风河)公司提供的Tornado。Tornado采用主机-目标机开发方式,主机系统采用运行Windows2000/NT的工作站或PC,VxWorks则运行在ARM等目标处理器上。Tornado采用的主机-目标机连接方式为以太网、串行线等,主机与目标机之间的通信是通过运行各自处理器上的代理进程来完成的,使主机上的开发工具和目标机的操作系统可以完全脱离相互连接的方式。Tornado提供了友好的可视化开发界面、交叉编译环境、源码级调试工具、目标机命令解释器和目标机状态监视器等多种应用工具,为应用软件开发提供了一个高效而可靠的平台。   ● 软件设计原理   软件设计采用事件驱动机制;中断事件激活ISR,ISR将事件排队,并通过信号量的v 操作通知处理任务。处理任务进行p 操作,在没有事件需要 处理时就会阻塞,如果得到信号量则根据事件队列的内容进行相应处理;事件处理任务为一永久循环。   软件设计流程如图4所示。 图4 软件流程图   ● 软件关键设计的具体实现   (1)当系统启动时等待一段时间,若超时则正常加载内核进行引导,若从串口UART接收到配置参数请求信息,则通过串口UART发送配置文件到PC端;PC端对配置参数进行处理后,再将参数通过串口发送到设备,设备再将参数以文件的形式进行存储。   (2)初始化手机模块。先利用手机模块的硬复位线将手机进行硬复位,一直等到手机能响应AT指令,再将手机的信息通知功能打开,初始化短信处理到文本模式,激活CDMA,一直等待,手机信号要足够强。   (3)当接收到满足触发条件的短信息后,发起中断处理任务,将UIM卡中的短消息读出到缓冲,将短消息删除,对缓冲中短消息的有效性进行判断,若为有效短消息则进行相应的处理,再将根据短消息配置后的参数保存。   (4)系统根据触发参数发起任务进行拍照、封装,调用建立PPP连接的函数,先用AT指令ATD#777接通CDMA,然后初始化PPP连接,当PPP连接完成后设置好相应的IP 参数。   (5)然后初始化WAP相关参数,建立WAP连接,调用彩信发送函数将图片发送到目的移动通信终端用户,断开PPP连接。   关键源代码如下。   STATUS mmsmain(viod)   {   int ioFd, i;   pSysInfo = (sysInfo_t *) calloc(1, sizeof(sysInfo_t));   pSysInfo-tickRate = SYS_TICK_RATE;   pSysInfo-pQueue = msgQCreate( SYS_MSG_COUNT, sizeof(sysMsg_t), MSG_Q_FIFO );   pSysInfo-pCamQueue = msgQCreate( SYS_MSG_COUNT, sizeof(sysMsg_t), MSG_Q_FIFO );   pSysInfo-pPhotoQueue = msgQCreate(SYS_MSG_COUNT, sizeof(sysMsg_t), MSG_Q_FIFO);   pSysInfo-pModemQueue = msgQCreate(SYS_MSG_COUNT, sizeof(sysMsg_t), MSG_Q_FIFO);   DEBUG_PRINT(("Now begin read config information... "));   if (readFlash() == ERROR)   {   initDefaultInfo();   readFlash();   }   DEBUG_PRINT(("Now end read config information... "));   #ifndef CDMA_MODULE   while(wavecomLibInit() == ERROR);   for (i=0; i2; i++)   {   if (startPPP() == OK)   break;   pppDelete(0);   taskDelay(30);   wavecomLibInit();   }   if (i= 2)   {   DEBUG_PRINT(("startPPP ERROR! "));   return ERROR;   }   if (wapInit()!= OK)   {   DEBUG_PRINT(("wapInit ERROR! "));   return ERROR;   }   #else   cdmaLibInit();   #endif   sysRecvLibInit();   taskSpawn("tCamera", 80, 0, 50 * 1024, cameraTask, pSysInfo-pCamQueue, pSysInfo-pPhotoQueue,2,3,4,5,6,7,8,9);   photoSendLibInit();   taskDelay(2);   irLibInit();   if (sysInitInfo-motionDetction)   camQSend(SYS_MOTION_PIC, NULL, 0x0200 + sysInitInfo-camPixel);   commCallBackFun = commStrHandle;   pSysInfo-initialized = TRUE;   return OK;   }   主要实现的功能有:初始化系统参数,初始化捕获、图像压缩处理器模块,初始化手机modem,建立PPP连接,发送连接包,断开PPP连接并返回;建立检查modem信息接收任务,建立系统主循环任务,在主循环任务中处理modem信息接收任务和中断处理程序中发送到信息队列中的内容。   这种实现自动发送彩信的系统可用于无线监控和实现智能家居安全,系统收发机制使用CDMA网络传输信息,目标移动通信终端用户不论在何地都可以接收由系统发送的彩信,从而能够实现远程监控等功能,为用户提供更多的安全和便利。   参考文献   1 VxWorks Programmer’s Guide 5.4. Wind River Systems, Inc   2 VxWorks Reference Manual. Wind River Systems, Inc   3 陈智育,温彦军,陈琪编著. VxWorks程序开发实践. 人民邮电出版社,2004.5   4 杜春雷. ARM体系结构与编程. 清华大学出 版社,2004.4
  • 热度 21
    2012-5-20 12:18
    2022 次阅读|
    4 个评论
    想学习vsworks,但是手边没有目标版,看网上介绍多用vmware虚拟一个系统,然后安装vxworks,进行学习。 看了需要下载的东西:vmware就多说了网上资源很多的,关键是里面需要下载一个AMD PCNET的驱动,去了AMD主页,完全找不到需要下载的东东。绝望之余使用了关键字“AMD的PC-NET 下载”在谷歌搜索,居然在CSDN上找到了相关的下载,之前也在PUDN上找到过可是苦于没有积分不能下载。 csdn上的这个资源也是免积分的,我就借花献佛增加一点资源好了。 文件如附件。 当然还需要有 RamDiskNT 1.5,这个还没找估计也会好下载的。 如果难找的话,找到了再来补充共享。 http://21cnbao.blog.51cto.com/109393/120035/
  • 热度 17
    2012-5-18 23:23
    1681 次阅读|
    1 个评论
    刚开始工作,工作领域用到的多是FPGA,DSP。 自己是做硬件工作的,具体就是设计电路图和PCB电路,可是自从自己踏上这条路开始就觉得搞硬件不懂软件不行,学校里接触的软件不多,也没有花足够 的时间去学习软件。回头看,还会觉得硬件是个体力工作,因为大部分时间是在抄别人的东西(抄官网的开发板),最体力的是PCB设计了,画封装, 布局,布线。。。正是不懂软件,所以设计的时候不能把握系统,不能考虑软件的设计时的需求。总是对自己设计的电路没有足够把握,总会出这样那样的bug。 以前打算学linux,想了解系统,但是工作使用的系统是vxworks。自己就调整方向学习下这个,至少明白软件是如何工作的。 说实话,不知道这个学习该从何入手,因此才写这第一篇博文,试图借以理清思路。 网上有个博文好像挺多相关文章的这里先mark下了:http://hi.baidu.com/qiangjiewang/blog/category/vxworks%D1%A7%CF%B0 电脑上tornado 2.2已经安装完毕。但是还是不知道vxworks是怎么个结构...所以就先百度下,知道点东西: 最开始就是 vxworks的组成 了:内核(wind),I/O系统,文件系统,网络支持。 内核:就是完成任务调度,任务同步、通信,中断管理,内存管理工作了。 I/O:这里的I/O,完全不是硬件电路设计中的I/O了,那是I/O接口。而这里的是I/O设备。例如,键盘,并口,RAM,磁盘。都被认为是I/O设备。可以执行读写等操作。 文件系统:支持多种/个文件系统,支持BSP(board support package),VxWorks操作系统提供了对各种板子的硬件功能操作的统一的软件接口 网络支持:提供了对其它VxWorks系统和TCP/IP 网络系统的"透明"访问 知道了这些还是没法开始学习。 那就只好上windriver的主页了,兴许上面会有入手点。 最先看到的就是这个图片了,很形象。   不同层之间有着一定的依赖关系。那么学习的话可以有两种方法:1. 自下向上;2. 自上向下。 之前就找过kernel,没找到。并且接触过linux,学习中也有讲先用后学。即推荐采用方法1学习,那么这里我也从1开始了。 对应上图就是windriver workbench了。其实就是我开始讲的tornado。已经安装过了。那么就开始学习这个软件吧。~期待  
  • 热度 24
    2012-4-19 15:47
    2184 次阅读|
    0 个评论
    其实从去年底至今年这会儿,我主要是折腾在两块板子上,一块是我自己画的跟smartfusion相对应的那块信号处理板,一块是基于powerpc的那块载板。两块板子的共同特点是都卡在st16c654这个芯片上。还是分开来说吧。   我自己的那块信号板,可以说在跟st16c654的原理连接上是完全错误的:   我选的st16c654是sop64封装的,这样它就只能是intel(16)mode 下,而我是把smartfusion的EMC直接连接在st16c654的引脚上的,这样首先没有写使能信号,其次通道使能cs信号相对于地址没有延迟,再次EMC是32位的,这样地址总线上的A0,A1是没法用的,最后,由于不熟悉芯片,直接把reset信号接到FPGA上,其实这样也可以,但是最好还是应该加一个RC复位信号,这样有一个短暂的脉冲,整个片子才开始启动。   后来经过无数飞线之后,终于调通。但是在芯片厂商的建议是自己在smartfusion芯片内部的FPGA部分做一个总线控制器,通过APB3总线来驱动st16c654芯片,这样会更好更灵活一些。而我则考虑到由于每个芯片均要4个通道使能信号,则两块芯片共需8个,显然如果用MSS内部的EMC总线,它只有2个片选段,这是无论如何都不够用的,所以只有自己写一个总线控制器,并参考官方给出的示例,写一个桥,把该控制器与APB3总线连接起来。后来用ModelSim进行仿真后,才完成一个初步,还需要进行更深的测试。   至于那块加载在自己所做载板上的powerpc的板卡,虽然在该最小系统板内部跑的是Vxworks,但是由于是以download app的形式进行调试,所以与Vxworks本身倒没有太大关系。反而由于是三个人都有在上面做工作,所以同样也走了不少弯路,:   首先要通过CPLD进行译码,对不同的地址进行翻译后输出不同的通道使能端。这里面有一个片选信号的使用,即用片选信号来进行锁定,否则容易造成混乱。其次同样是reset信号的问题,这里在CPLD内部产生一个脉冲信号,在芯片上电时候进行复位。最后是中断的使用,由于在Vxworks内部如果直接加中断的话,会造成系统紊乱,所以还是将串口最后封装在BSP里面,打包成为IO设备来进行操作。   另外的问题则是另外的一类了,在外部总线输出时,powerpc的数据总线是反的,这样高八位和低八位就成了颠倒的了,但是由于沟通上的错误,外部总线输出是16位的时候,我们接的是A0,A1,A2。这样A0没有用,但是还是可以操作ST16c654的,起码是在用查询方式的时候是可以的。当厂家采用硬连接的手段把POWERPC的数据总线反过来时,我们还是按照8位的方式来操作,这样我们操作的数据就是高八位的数据了,这样又造成了新的问题。所以带来了又一次的反复。  
  • 热度 18
    2011-7-20 12:17
    2110 次阅读|
    0 个评论
    The year was 1981. Motorola shipped the 68000 and Intel the 8086. The most common then were eight bit processors; while the 8051 was in production and Z80s were found everywhere. That was also the year Jerry Fiddler established Wind River ( the name was derived from the Wind River mountain range, a Wyoming favorite of Jerry's ). Consultants at first, by 1987 the company came out with the first version of VxWorks, the RTOS that forever defined the company. VxWorks, though much improved and in now available in many different flavors, is still the company's flagship product. In 1993 Wind went public, the first embedded outfit to do so. In the heady days preceding the dot-com collapse the company's stock soared and they bought, well, everybody: ISI. Dr. Design. Embedded Systems Tools. Diab. SDS. What goes up must come down. After the Internet boom imploded Wind River sputtered along for a time and lost money for years. But eventually the ship righted itself and in recent years has been respectably profitable. They have always been the 800-pound gorilla of the industry, one of the few embedded tool vendors with revenues over $100m. Their sales have typically been in the quarter billion to a third of a billion dollar range in recent years. As the economy recovered it was soon apparent that Linux was to be an important force in embedded systems. In 2004 Wind entered that market, and I'm told Linux is now an important revenue source for them (the company has never broken out sales by segment). Some surveys suggest that today nearly half of all 32 bit embedded apps run Linux, alone or in conjunction with a conventional RTOS. 2009 saw a remarkable change: in a move puzzling to analysts Intel bought Wind River. Intel, the inventor of the embedded system, had over the years jettisoned all of the processors targeted at that market, but with the introduction of the Atom is reestablishing its presence in this space ( though, oddly, they skipped the recent Embedded Systems Conference ). In a nice bit of synergy Intel introduced the first embedded processor, the 4004, exactly ten years before Wind River was born. So Wind is 30 this year and the microprocessor is 40. In another bit of synergy some of the first processors VxWorks supported were the embedded offerings from Intel. I'm told various people will be blogging about this anniversary event at http://blogs.windriver.com/ . Hopefully more old-timers will post memories and stories. I congratulate Wind River on their 30 years, and on their continuing contributions for fully three quarters of the era of the microprocessor revolution. I can't think of any other embedded software company that has survived for so long.  
相关资源