老古开发网首页
导航:老古开发网首页文章索引索引第1123页文章分类技术文章第15页→[vxworks开发的一点心得]
| -文章搜索 - 最新文章 - |

vxworks开发的一点心得

发布时间:2005年9月12日 点击次数:3466
来源:   作者:
 
1 内存的使用



内存要预先分配好,要注意指针、长度的计算,用完必须释放。



嵌入式系统要求实时性高,系统一般在初始化时给各模块分配好内存。vxworks有一个内存管理策略,类似于BSD4.3(见理查德森编写的《TCP/IP协议实现》),基于POOL/MBLK/CBLK三级管理,采用链式指针。



内存的两个参数是起始指针和块长度,这在编程过程中必须要注意,尤其是成帧、解帧时必须计算好长度,笔者曾少计算两个字节,结果导致CRC校验总出错,结果对着1500个字节的ASCII码看了五六遍,终于发现。



内存的释放分为两类:本模块的释放以及其他模块内存的释放,本模块释放时只需要传送指针即可,但指针必须对准,否则会耗尽内存。其他模块内存释放借助于回调函数实现,这一般是一个指针函数。



2 驱动程序的编写



驱动程序编写其实很简单,明确它的功能即可。驱动程序包括两个部分的功能:I/O控制和数据的收发,这部分的接口在vxworks里面以及标准化了,ppc860t带有两块网卡,一个是百兆一个是十兆,两个驱动程序不同,都写的很好,很值得参考,里面包括了对寄存器的控制,数据内存的管理。一些非标准设备可以仿效网卡驱动程序,只要在MUX层下注册,能交给IP或对应的程序即可,具体内容在下节介绍。



3 MUX层的使用



MUX层是VXWORKS中的一个关键设计,MUX层以上是IP,IPX等协议,以下是各种网卡驱动协议,数据的上下传输都需要经过它,协议和驱动的对应通过绑定实现。MUX层中有两个重要的模式,精灵模式和混杂模式。精灵模式使得你可以挂进一个钩子函数,数据一到MUX层即被勾住,混杂模式则是所有协议都不处理时交给该协议处理。笔者在实现PPPOE时借助于百兆网卡实现,首先要剥掉以太网头,交给对应的PPP协议处理。百兆网的驱动是现成的,不想改也不好改。于是在MUX层想办法,通过在MUX层注册一个PPPOE的精灵程序,在IP之前勾住百兆网上传的数据,解帧后交给PPP,PPP解帧后再通过MUX层交给IP。精灵程序的另一个好处是实现防火墙。



4 编程的习惯



注释很重要,信号量、内存等必须注意释放。


欢迎进入老古论坛进行讨论
[技术文章] 相关文章:
1/6英寸VGA CMOS图像传感器OV7670
简介:
 生产商: 豪威科技 OmniVision Technologies  产品说明: 豪威科技 (OmniVision Technologies) 公司推出一款 1/6 英寸 VGA CMOS 图像传感器—— OV7670 CameraChip 。该器件适于移动应用,它采用新的光学格式,像素尺寸从 4.2m μ减小至 3.6 μ m ,有利于减小模块高度。 ......

关于计算机接口的小结
国内外EDA软件浅视
运放型号简介
常用元器件的识别
 
下一个:[新闻热点]贝尔阿尔卡特质疑华为订单 挑起全球竞争
简介:
  我们和华为的竞争不仅在国内,而且在全球。华为确实是ASB强有力的竞争对手我看到的华为,有效率、有活力、自身实力很强、管理方式良好,比较成功的是海外市场的进入做得非常好。总体来说,他们拥有非常好的产品,对用户的服务和支持也做得不错。   狄加似乎并不是特别爱笑,在台上作报告的时候,回答记者提问的时候……大多数时候,他的表情认真而严肃,若有所思。偶尔,在和翻译抢话的时候,狄加露出他的笑容,那种很放松的、咧开嘴角的笑容,和严肃的表情截然相反,非常可爱。 ......

上一个:[技术文章]嵌入式处理器漫谈

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:否 执行时间:63毫秒