VxWorks
ch3rry
每天早上醒来,看见你和阳光都在,这就是我想要的未来。
展开
-
VxWorks学习笔记 -- 信号量
一.信号量的概念是实现任务互斥、同步操作的主要机制。VxWorks提供的信号量经过了高度优化,在所有任务间通信机制中,速度最快。 二.信号量的分类Binary Semaphores(二进制):完成互斥、同步操作的最佳方式;速度最快,最常用。Mutual Exclusion Semaphores(互斥):一种特殊的二进制信号量,专门针对互斥操作进行了优化。Counting Semaphores(计数...转载 2018-04-04 15:47:00 · 748 阅读 · 0 评论 -
vxWorks应用程序加载的另一种办法
现在我们的工作中,应用程序一般都是和BSP联编,然后将vxworks_rom.bin烧到班子里。在BSP启动后,调用应用程序的函数的。 但是这样有个问题,就是应用程序和BSP结合的太紧密了。BSP开发者得将BSP代码给应用程序开发者,或者应用程序开发者得将应用程序编译后的.a文件给BSP开发者,才能完成程序的升级! 那么下面的方法是我这两天弄出来的,可以将应用程序和BSP开发分离的...转载 2018-11-01 09:45:03 · 1411 阅读 · 0 评论 -
Vxworks下的SATA提速
1. ATA接口的三种数据传输方式 (1)PIO(Programmable Input-Output)传输,可以分为PIO寄存器传输和PIO数据传输。PIO寄存器传输主要用于对ATA设备中的寄存器进行读写。读写的数据位数为8位DD[7:0]。ATA主机控制器根据所要读写的寄存器地址设置CS0_、CS1_、DA[2:0]地址信号,同时将DIOW_或DIOR_设为有效,ATA主机控...转载 2018-11-01 09:51:21 · 766 阅读 · 0 评论 -
中断处理程序不能使用printf的本质
vxworks 中断处理程序之所以不用printf,本质在于printf是将信息输出到标准输出设备(STDOUT)中, 整个标准输出设备是一个全局变量,由于有semTake操作,那么就会发生阻塞,vxworks属于硬实时操作系统,不能在规定的时间内完成操作即会死机或复位。所以vxworks不用printf的原因在于阻塞。 网上说printf 因为引用全局变量stdout,所以是不可重入的。这个稍微...转载 2018-11-01 09:52:39 · 279 阅读 · 0 评论 -
VxWorks各部分初始化流程
一)configAll.h中定义所有定置系统配置的宏INCLUDED SOFTWARE FACILITIES:定义了基本组件;EXCLUDED FACILITIES:定义了扩充组件,缺省不包括;KERNEL SOFTWARE CONFIGURATION:内核运行的基本参数定义,包括文件个数、任务个数等等;"GENERIC" BOARD CONFIGURATION:板通用属性定义;"MIS...转载 2018-11-01 09:56:56 · 1425 阅读 · 0 评论 -
vxWorks驱动架构
Vxworks内核驱动基本结构:三张表:1. 系统设备表 2. 系统驱动表 3. 文件描述符表 Vxworks 内部对每个设备使用DEV_HDR 数据结构进行表示:Typedef struct{ DL_NODE node; Short drvnum; Char *name;} 该结构中给出了链接指针(用以将该结构串入队列中)...转载 2018-11-01 09:59:00 · 667 阅读 · 0 评论 -
消除CACHE对DMA的影响
随着社会的发展、人们生活水平的提高,人们对嵌入式计算机应用的要求也越来越高。因此,对嵌入式系统的性能要求也越来越高。明显体现在嵌入式系统的CPU速度的不断提高上。但问题也随之而来,嵌入式CPU的主频不断地提高,一方面加强了CPU的处理能力,另一方面,在速度上造成了与慢速的系统存储器极不相配的情况,从而影响了整个系统的性能。为了解决这个问题,引入了CACHE技术。CACHE是一种高速缓冲存储器,...原创 2019-07-12 10:30:53 · 418 阅读 · 0 评论 -
Cache安全的内存分配--cacheDmaMalloc
VxWorks中实现了MMU(前提是CPU要支持MMU),内存管理页灵活了很多,未能针对所有MMU属性代码一一查看,但Cache安全的内存分配是最为常见实用的。VxWorks中用cacheDmaMalloc来分配cache安全的内存,也就是不存在cache一致性问题的内存,这些内存对于DMA设备和驱动常常使用。而malloc分配的内存就是具有cache功能的,也就存在cache一致性的问题了,...原创 2019-07-12 10:40:25 · 1468 阅读 · 0 评论 -
vxworks copy函数缺陷
当用copy命令拷贝文件到tffs或者U盘中,6.x版本上拷贝速度明显远远慢于5.5。追踪代码发现copy使用的中间函数copyStreams。这个函数的作用是从第一个文件中读出一个数据块到缓冲区,然后写入第二个文件。vxWorks5.5下,这个数据块的大小是64K,对于1M的文件只需要调用16次文件系统的写函数;而vxWorks6.x下,这个数据块的大小是1K,拷贝1M的文件需要调用102...原创 2019-09-12 17:36:32 · 610 阅读 · 0 评论 -
VxWorks嵌入式系统几种常用的延时方法
1 taskDelay taskDelay(n)使调用该函数的任务延时n个tick(内核时钟周期)。该任务在指定的时间内主动放弃CPU,除了taskDelay(0)专用 于任务调度(将CPU交给同一优先级的其他任务)外,任务延时也常用于等待某一外部事件,作为一种定时/延时机制。在没有中断触发时,taskDelay 能很方便地实现,且不影响系统整体性能。例如写数据至EEPROM,EEPRO...转载 2018-11-01 09:42:07 · 1463 阅读 · 0 评论 -
消息队列和管道的区别
本文整理了网上诸多博客,文章,仁者见仁智者见智,以飨读者。转载自:http://bbs.chinaunix.net/viewthread.php?tid=265266作者:beginner-bj请问管道和消息队列有什么不同管道通信(PIPE)管道通信方式的中间介质是文件,通常称这种文件为管道文件。两个进程利用管道文件进行通信时,一个进程为写进程,另一个进程为读进程。写进程通过...原创 2018-09-10 10:52:30 · 1169 阅读 · 0 评论 -
VxWorks管道(Pipe)创建与文件操作
VxWorks管道(Pipe)创建与文件操作 管道最明显的优势就是支持Select(),这样任务可以同时等待包括管道在内的一系列I/O设备上的数据。此外,PipeDrv提供的几个I/O控制命令也比较有用。 使用管道除了需要管道驱动PipeDrv(定义为宏INCLUDE_PIPES)支持外,还需要用到I/O系统库IoLib/IosLib(定义为宏INCLUDE_IO_SYS...转载 2018-09-10 10:49:16 · 2267 阅读 · 0 评论 -
VxWorks信号量小结
信号量是VxWorks中任务间通信的一种基本手段。VxWorks提供了三种信号量:二进制信号量、互斥信号量和计数信号量。下面针对实验中的程序编写和调试,讲一讲我对信号量的理解。首先,信号量的使用必须包括semLib.h这个头文件。下面分类进行简单说明:1.二进制信号量 创建二进制信号量的函数:SEM_ID semBCreate( int options , SEM_B_STATE i...原创 2018-04-04 17:22:44 · 3713 阅读 · 0 评论 -
vxWorks驱动架构
驱动程序的结构包括三个部分:初始化部分,函数功能部分和中断服务程序ISR。初始化部分初始化硬件,分配设备所需的资源,完成所有与系统相关的设置。如果是字符设备,首先调用iosDrvlnstall()来安装驱动程序,把中断向量和ISR挂上,然后调用iosDevAdd()来把驱动程序加到IO系统中:如果是块设备,首先把中断向量和ISR挂上,在内存中分配一个设备结构,然后初始化该结构。用户要使用该设备时,...转载 2018-05-04 16:57:18 · 584 阅读 · 0 评论 -
关于VxWorks
VxWorks操作系统 VxWorks时实时多任务的嵌入式操作系统,它主要包括任务调度、I/O功能、文件系统、中断管理、内存管理、网络功能、内存管理、BSP(系统启动模块)等。它的多任务的实现是由中断驱动的,即在每个系统时钟中断中,实现任务的调度。VxWorks中的任务有优先级的概念。与其它嵌入式操作系统相比,它有如下优点:1. 任务之间的切换快,任务间通信手段多样;2. 中断响应...原创 2018-05-28 17:23:20 · 9536 阅读 · 0 评论 -
VxWorks 操作系统学习笔记
1. 任务VxWorks任务:在执行时每个程序都被称之为任务。VxWorks操作系统中,任务可以直接地或者以共享方式访问大多数系统资源,为了维护各自的线程,每个任务必须保持有足够的上下文环境。 (1) 任务状态:就绪(READY):该状态时任务仅等待CPU的状态,不等待其他任何资源。阻塞(PEND):任务由于一些资源不可用而被阻塞时的状态。睡眠(DELAY):出于睡眠的任务状态。...转载 2018-05-28 17:40:47 · 18491 阅读 · 0 评论 -
VxWorks 命令
vxWorks命令规则:名词+动词,第二个单词开始大写 序号状态命令备注1BSPc改变配置2BSPp打印当前配置信息3BSP@开始加载内核4BSPctrl+x重新启动5BSP6BSP7vxWorksi查看进程8vxWorksifShow查看当前网络设置9vxWorksdevs查看所有的设备10vxWorkscd "/xxx/"进入目录11vxWorkscfIdeInit每次上电后执行12vxW...转载 2018-05-30 10:54:40 · 11974 阅读 · 0 评论 -
VxWorks操作系统shell命令与调试方法总结
VxWorks下的调试手段主要介绍在Tornado集成开发环境下的调试方法,和利用支撑定位问题的步骤、思路。1 Tornado的调试工具嵌入式实时操作系统VxWorks和集成开发环境Tornado的组成结构如下图1。分为主机和目标机系统。图1 集成开发环境结构图在Tornado下,调试相关操作在Debug菜单下,包括:图2 Debug菜单简单解释各菜单项的功能1.1 ...转载 2018-05-30 11:06:34 · 3822 阅读 · 0 评论 -
vxworks驱动开发基础
Vxworks内核驱动基本结构: 三张表:1. 系统设备表 2. 系统驱动表 3. 文件描述符表 Vxworks 内部对每个设备使用DEV_HDR 数据结构进行表示:Typedef struct{ DL_NODE node; Short drvnum; Char *name;}该结构中给出了链接指针(用以将该结构串入队列中)、驱动索引号、设备节点名称。内核...转载 2018-05-30 15:36:05 · 1684 阅读 · 1 评论 -
vxworks常用API总结
这两天在看VxWorks下的socket网络方面的编程,其中涉及到不少VxWorks下的函数使用 vxWorks编程指南 一、官方的Program Guide 位于安装目录下:\docs\vxworks\guide\index.html 二、常用的库: #i nclude "taskLib.h" /* 任务 */ #i...转载 2018-09-06 11:32:45 · 1140 阅读 · 0 评论 -
eclipse启动出现“An Error has Occurred. See the log file”解决方法
启动Wind River Workbench 3.3时,弹窗出现"An Error has Occurred. See the log file"打印 后删除了,目录下“.metadata/.plugins/org.eclipse.core.resources/.snap”文件就好了。...原创 2019-09-26 12:29:51 · 668 阅读 · 0 评论