QNX驱动程序开发
随想ustb
相信自己,改变自己
展开
-
QNX驱动开发——Resource manger framework
在QNX下开发驱动程序,最主要的工作除了了解底层硬件具体工作流程外,就是建立一个能与操作系统兼容且支持POSIX的Resource manger框架了。在任何一段程序的执行过程中一段都是从main函数开始的,然而在操作系统中的main函数还传递了两个参数:int argc, char **argv,这两个参数是用来传递从shell命令行或者buildfile中传来对Resource m原创 2012-08-09 14:22:15 · 3213 阅读 · 0 评论 -
QNX驱动开发——操作系统之进程调度和进程通信
一、进程调度方法1.FIFO:先进先出队列法。一个最高优先级的线程可以一直执行到结束或是主动放弃CPU。高优先级的线程可以随时中断低优先级的线程,获得CPU的使用权限,与之相同优先级的CPU也只能等待其交出CPU的使用权限后才能按排队的顺序先后执行。2.Round Robin:循环法。除了对于最高的相同优先级的使用时间片轮转的方法外,其他特点与FIFO法相同。注意此处的时间片轮转与wind原创 2012-07-27 21:04:28 · 3511 阅读 · 0 评论 -
QNX驱动开发——SD卡SD模式开发实录
和大多数朋友一样以前只用过SD卡的SPI模式,因为这种模式简单,无需专门的控制器,在大多数单片机上都可以实现,且无需CRC校验,控制起来也比较方便。而SD模式可以实现4条数据线同时传输,在速度上,比SPI模式有很大优势,所以这次项目选择了SD模式,使用处理器自带的SDHC控制器控制。 其实硬件开发基本要搞清楚三点才能少走弯路,一是清楚被控硬件的驱动流程,二是要熟悉处理器控制器每个原创 2012-07-22 21:26:50 · 9291 阅读 · 1 评论 -
QNX驱动开发——应用层与resource manger交互
QNX操作系统是一个类Unix实时操作系统,遵从POSIX规范,驱动程序具有良好的可移植性。 编写任何驱动程序都会遇到同样的一个问题:应用程序与驱动程序之间是如何进行交互的。其实这个问题很简单,QNX有大量资料说明这一点。 当客户端调用fd = open(“dev/mydevice”,O_RDWR)打开设备mydevice,并期望从设定的地址上读写数据时,这个问原创 2012-07-19 23:17:54 · 4733 阅读 · 5 评论 -
QNX驱动开发——中断处理
在操作系统中,对于中断的处理一直是一件麻烦事,其实主要是对操作系统的中断管理机制不熟悉。当中断产生时,内核去执行中断服务程序ISR,中断服务程序中要做尽量少的工作,以提高系统执行效率,有些人在中断服务程序中使用延时函数和printf函数和malloc函数,其实是很不可取的。延时函数不仅大大降低了中断执行的效率,也可能会屏蔽下次中断的产生,从而丢失对中断的响应。对于printf函数为什么不行呢?可以原创 2012-08-27 10:36:28 · 5004 阅读 · 0 评论 -
从API开始理解QNX -- 消息传递
转自 openQNX中文论坛 xtang 大家都知道QNX是个微内核结构的操作系统,靠的是进程间通讯来实现整个系统功能的。那么具体到写一个程序的时候,到底这个通讯是如何完成的呢?这章就是具体介绐最底层的消息传递API的。消息传递是通过内核进行的,所以所谓的API,实际也就是最底层的内核调用了。需要指出的是,真正在QNX上写程序的时候,很少会直接用到这些API,而是利用更高层的A转载 2012-08-28 13:01:01 · 6541 阅读 · 1 评论