摘要: 在我的第一篇博文Plx9030通讯卡驱动开发提到,PLX官网提供了丰富的9000系列(9030,9052,9054)芯片的驱动文件(sys)和SDK开发包。我们在发布自己的产品时,简单的话,可以直接用官方sys文件,用SDK做二次接口封装。然而,在利用官方sys文件时,需要注意几个事情,这是PLX公司建议的。设置硬件ID为了避免设备冲突,发布自己产品建议设置硬件ID. 硬件ID用来区别与其他系统内的设备,告知软件哪一个是与之匹配的。根据PCI2.0规范,PCI配置空间(256B)的前64个字节含义是标准的,包含verdor id、device id、subsys id、reversion id 阅读全文
posted @ 2014-03-28 11:49 木椅 阅读(3950) 评论(0) 推荐(0) 编辑
摘要: INF Files for Bears of Little BrainMay 1, 2003Brian CatlinCopyright � 2003 by Brian Catlin. All rights reservedJust the other day, while walking through the hundred acre wood, I was accosted by the local fauna."Excuse me", asked a small pink pig. "B-B-B-But do you know anything about 阅读全文
posted @ 2014-03-27 18:37 木椅 阅读(805) 评论(0) 推荐(0) 编辑
摘要: VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广泛地应用在通 信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的 F-16、FA-18 战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。VxWorks原先对中国区禁止 销售,自解禁以来,在我们的军事、通信、工业控制等领域得到了非常广泛的应用。VxWorks 的实时性体现在能于限定的时间内执行完所规定的功能,并能在限定的时间内对 阅读全文
posted @ 2014-03-26 22:03 木椅 阅读(15120) 评论(0) 推荐(1) 编辑
摘要: 1. windows采用设备树描述所有挂在系统总线上的设备,每个设备对应一个节点。2.每个设备有自己的device object stack/driver stack. 一个物理上的设备对应多个device object.3.系统加电后,PnP管理器要求(PCI)总线驱动程序枚举(enumerte)挂载的设备信息,bus diver响应此请求,扫描物理设备(IDSEL),为每个物理设备建立物理设备对象(physical device object,PDO).PnP管理器会查找注册表,搜索哪些驱动程序为该PDO服务,建立设备堆栈。见文章设备对象与设备堆栈4.用户空间和内核空间的关键区别:用户模式 阅读全文
posted @ 2014-03-26 17:15 木椅 阅读(330) 评论(0) 推荐(1) 编辑
摘要: 编写代码,我是半路出家,没有哪位老师给出明确的建议怎么书写代码注释。所以,从来也没形成过自己的代码注释风格,汗颜。这一段时间在写PCI-CAN的驱动接口封装,感觉编写代码时候比较费力,绕路,有些基本性的编码技能需要改善。1.代码注释注释的目的是什么呢?代码是给人看的,给自己也给别人看。既然这样,注释应该简单、清晰、有用。这一点可以参加转载的文章编写易于理解代码的六种方式注释是用中文还是英文呢?看习惯老外写的代码,总觉得中文注释别扭,表述不清晰,而且中文注释总是给你语法错误提示。结合自己的外语水平,还是用简单的英文注释。什么地方加注释?函数、全局变量、设计的数据结构、宏定义。其实准则很简单,你觉 阅读全文
posted @ 2014-03-26 14:23 木椅 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 文章:一个跨平台的 C++ 内存泄漏检测器 阅读全文
posted @ 2014-03-25 21:36 木椅 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 原文:技巧:在 C/C++中如何构造通用的对象链表虚拟链表和类链表可以很好地实现这一点您是否做过这样一个项目,它要求您在内存中保存数目不定的若干不同对象?对于某些情况,二叉树是最佳选择,但在通常情况下,更简单的链表是显而易见的选择。一个简化的问题示例链表的难点在于必须复制链表处理函数来处理不同的对象,即便逻辑是完全相同的。例如:两个结构类似的链表struct Struct_Object_A{ int a; int b; Struct_Object_A *next;} OBJECT_A;typedef struct Struct_Object_B{ int a; i... 阅读全文
posted @ 2014-03-25 21:28 木椅 阅读(351) 评论(0) 推荐(0) 编辑
摘要: [原文]编写易于理解代码的六种方式如何让您免受读不懂代码的折磨对于一名开发人员,时间是最宝贵的资源。本文所要介绍的这六种编写可维护代码的方法可以保证让您节省时间和少受挫折:在编写注释上多花一分钟,会让您少受一小时研读代码的痛苦折磨。我学习编写、改善和维护代码的过程是很艰苦的。在过去的 12 年里,我一直在编写计算机游戏并通过曾红极一时的共享软件技术进行网络销售,并以此为生。这就是说,我常常要从空白的屏幕开始从头编码,当代码达到数万行之后才能拿去销售。这也就是说,如果我出了错,我必须要自己去解决问题。当我在凌晨三点还在竭力寻找 bug 的时候,看着这些不知所云的晦涩代码,我不禁自问:“我的天啊, 阅读全文
posted @ 2014-03-25 20:22 木椅 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 我很幸运,我很爱我的妻子,我的妻子也很爱我,我们的宝贝刚刚出生2周,她叫笑笑。我们无依靠的生活在一个新的城市,远离父母的荫蔽,所以现实的事情,只能依靠自己。我们没有房子,没有车子,生活在租屋里。今夜,我在这个孤单的城市,妻儿在那个孤单的乡村。多么想,此刻妻儿在我的床头,有温暖的灯光,有宁静的夜晚……刚刚在网络的那一头,看着妻子展不开的眉头,丈夫不在她的身边,夜里反复的被孩子的哭声叫醒,还有明天她的妈妈又要离开她去另一个城市,她是如何也展不开眉头的,可是这一切我们得走过去,我的妻子。请原谅我,我没有足够的时间在这个城市给你和孩子温馨的呵护,我只是需要时间,去实现我们家庭的梦想,请相信我,我的妻子 阅读全文
posted @ 2014-03-23 20:32 木椅 阅读(294) 评论(0) 推荐(1) 编辑
摘要: 涉及到数据通信的软件开发,不能回避的一点是,设计一个实用高效率的数据缓冲区,例如fifo。今天在做项目时候,需要缓存CAN总线上的数据,然后再需要的时候读这些数据。下边给出我自己设计的,采用循环数组实现的FIFO,未经过严格的测试,请您斟酌。需要指出的是,fifo的数组深度是256,采用的数组下标是unchar类型,当下标在0xff加1,到达数组末端时,刚好unchar类型的下标溢出为0,这样免去了手动修改下标。先看代码:#pragma once#include #include "afx.h"#define BUF_MAX 256struct _fifo { int bu 阅读全文
posted @ 2014-03-21 19:54 木椅 阅读(2181) 评论(0) 推荐(0) 编辑