这个星期项目就要结束了,新项目开始应该还不是特别的忙,趁着这段时间,把一些项目期间该总结的东西贴上来,免得日后忘记了。今天总结下vxWorks的I/O系统:
I/O system
1.文件,设备和驱动程序
文件一般保存在设备上(字符设备,块设备,网络设备,memDev,ramDev,等等);而app访问device则是依靠驱动程序加以完成底层的功能.
文件的名称有一些约定,比如:host:download, DEV1:, /dev1/libs
2.基本的IO
无缓冲的IO, open等操作函数,文件描述符一般是一个整数.
3.缓冲IO
文件描述符是一个指向结构体的指针,此结构包含有与此文件对应的缓冲区. 两种描述符可以相互转换.
缓冲IO相对于基本的IO有一些优点,能减少实际的物理操作,提高系统的性能.但是由于各种缓冲操作限制在单个进程当中,所以对于多进程同时访问设备可能会出现异常情况.另外,以为的close可能也导致缓冲区的信息丢失.
4.select
因为很多东西都可以抽象化为文件,所以select可以应用于多种对象: socket, pipe, message queue, file等等.linux的select功能似乎需要driver的支持, 不知道vxWorks是如何实现的.
5.io系统的内部结构
app可以不用关心驱动的具体实现,但是了解一些驱动体系的结构对提高程序的效率还是很有帮助的.
对于用户的IO请求,vxWorks将其分解为两个阶段的操作: IO系统的处理(与设备无关),驱动的处理(和设备打交道).
比如那些面向字符设备的通信协议就运行在与设备无关的io系统中.vxworks系统的IO子系统只是起到将用户请求和相应的驱动程序关联起来的开关作
用.
最基本的设备类型是字符设备和块设备,块设备一般来说都是和文件系统紧密相关的,由文件系统完成大部分的IO操作,驱动的工作相对来说不是很复杂. 字符设备的种类非常多.
vxWorks的驱动程序除了一般的io操作函数外还包括如下的三个函数: 驱动程序安装函数(iosDrvInstall,
负责在设备驱动程序表中建立表项, 返回表项索引,称为驱动程序索引号), 设备创建函数(xxDevCreate, iosDevAdd,
将设备添加到设备列表中, 设备列表保存了以独立于驱动的DEV_HDR结构开始的结构体,里面包含了许多设备相关的信息.
DEV_HDR中包括驱动程序索引号以及设备名称), 中断处理函数(用于处理设备产生的中断).
另外系统使用文件描述符表来维护文件描述符和驱动描述符的关系,
文件描述符表包含了驱动程序索引号以及驱动程序确定的一个四字节的值(该值是驱动程序内部的描述符值,
用于系统识别文件驱动程序使用它来操作相关的文件).
6.关于网络设备的IO
vxworks支持NFS,Non-NFS网络设备.NFS利用nfsMount来进行挂接.
Non-NFS又可以分为RSH,FTP(都利用netDevCreate).
NFS的话挂接之后只能访问挂接部分的文件,优点是每次访问不必要读入全部的文件内容(相当于网络传输是持续的);而RSH或者FTP每次都把文件的全部
内容一次性读进来, 优点是可以访问全部的文件.当然这里面都有权限的限制.依赖于host system的配置和应用的通信协议类型.
例如应用RSH的话,权限就是利用相应用户目录下的.rhosts文件来控制的, 这个用户就是建立RSH的时候使用的用户名.
linux上的服务是通过inetd demon程序提供的. 可以通过观察其日志文件看到remote的RSH请求.
相关推荐
《VxWorks7编程指南》笔记(八)——I/O系统:标准I/O
VxWorks提供了一个完全支持ANSI C的标准I/O包(stdio.h),因此与Unix和Windows的标准I/O包兼容。
VxWorks内核解读-7
为了实现应用层程序的平台无关性,操作系统为应用层提供了一套标准的接口函数,这些接口函数在所有的平台上都保持一致,只是随着平台的变化,底层驱动或接近驱动部分操作系统中间层可能会随着调整。这样可以使用户程序独立于具体的硬件平台,增加了应用层开发的效率,避免了重复编码。通用操作系统GPOS(General Purpose Operating System)比如Unix,Linux,将这套提供给应用层的标
《VxWorks7编程指南》笔记(十)——I/O系统:异步I/O
异步I/O
阻塞与非阻塞的IO网络读写
转载地址:https://www.cnblogs.com/charlesblc/p/6202402.html 看我之前的文章就知道,一般对于网络读的socket,都会加上O_NONBLOCK,非阻塞的选项。 int setnonblocking(int fd) { int old_option = fcntl(fd, F_GETFL); int new_option = old_o...
《VxWorks7编程指南》笔记(九)——I/O系统:其他格式化I/O函数(可用于调试)
VxWorks还提供了其他内核格式化I/O功能。
VxWorks编程指导-3
1.1. POSIX接口POSIX(可移植操作系统接口)是ISO/IEEE下的软件团体代表开发的标准。该标准的目的是实现多操作系统应用的源代码级移植。现下为实时操作系统提供的服务定义了一套接口(POSIX标准1003.1b,以前称作1003.4)。利用这些接口编程就会使应用从一个操作系统轻松的移植到另外一个操作系统上。 POSIX接口包括:m 异步I/Om
Vxworks学习(二)_中断、POSIX与Wind比较、I/O系统
Vxworks学习(二)_中断、POSIX与Wind比较、I/O系统一、中断二、POSIX 与 Wind2.1 POSIX和Wind调度方法比较2.2 POSIX和Wind信号量比较2.3 POSIX和Wind消息队列比较三、输入/输出系统 声明本学习记录为笔者的学习记录笔记,其中大量借鉴了多本已出版书籍与网络资料,并会在文章末尾注明出处,同时笔者无虚拟机镜像。 一、中断 中断为实时操作系统的核心。举个例子,一辆带有实时操作系统的自动驾驶的汽车在车头安装了一个距离传感器(现实中可能是用其他的传感器)用于检测
VxWorks的I/O复用(select)
当任务在某个I/O阻塞时,如果有另一个I/O请求到了,那么必须解除阻塞后,才能处理之后到来的I/O 例如: #include #include #include #include #include #include #define TASK_PRIORITY 125 #def
VxWorks版本的MSDN(6): I/O系统API开发手册
本手册全面介绍了VxWorks实时操作系统的I/O系统API,涵盖基础I/O、标准I/O和异步I/O三大接口类型。特别强调了对实时系统至关重要的异步I/O机制,通过aiocb控制块实现I/O操作与应用程序的并行执行。手册还提供了文件系统管理、设备控制(ioctl)和标准I/O重定向等高级功能的实现方法,并给出多任务环境下文件操作的最佳实践建议。
VxWorks tffs文件系统 操作实例
#include "vxworks.h" #include "stdio.h" #include "ioLib.h" #include "sioLib.h" #include "string.h" #include "ioctl.h" #include "selectLib.h" #include "sys/stat.h" long get_file_size(char *filena...
vxworks部分源码
这是vxworks的部分源码,希望能给需要的人一些帮助。共同研究请至779641703@qq.com
VxWorks编程指导
VxWorks 编程指导1. 概述1.1. 介绍本手册讲述的是VxWorks,VxWorks是Tornado开发系统的高性能实时操作系统。本手册包括以下内容:l 在实时应用中怎样运用VxWorks。l 怎样运用VxWorks的可选组件WIND基础类,VxMP,和VxVMI。l 不使用工程怎样配置和编译VxWork
ADS1231驱动开发:24位高精度ADC嵌入式实现指南
24位Δ-Σ型ADC是高精度传感器信号采集的核心器件,其原理基于过采样与数字滤波实现远超奈奎斯特极限的分辨率。技术价值在于以低成本硬件达成微伏级信号分辨能力,显著提升称重、压力、力等桥式传感器系统的动态范围与温漂稳定性。典型应用场景涵盖电子秤、工业变送器及材料测试设备等对线性度、零点漂移和抗工频干扰(50/60Hz)有严苛要求的领域。本文围绕ADS1231这一面向惠斯通电桥优化的专用ADC,深入解析其串行同步时序驱动、PGA增益配置、参考电压匹配及FreeRTOS多任务安全集成等关键工程实践。
VxWorks 学习笔记-IO and File System
§ IO and File System分层结构 Stardand I/O (stdio, fioLib) is based on Basic I/O Stardand I/O routines use file pointer Basic I/O routines use file descr
用WorkBuddy和ima搭建本地知识库:从概念到实操
在AI应用普及的今天,私有知识的高效管理与调用成为痛点。RAG(检索增强生成)技术通过将外部知识库与语言模型耦合,为精准问答提供了技术底座。然而,传统RAG方案往往涉及向量数据库、文本切分等复杂环节。一种更轻量的路径应运而生:借助WorkBuddy与ima的组合,将知识收集、语义检索与智能体工作流整合,让本地知识库真正服务于日常办公和研发场景。从概念到实操,系统解析这套轻量级方案的核心逻辑与配置方法,并对比重方案适用边界,帮助读者快速搭建属于自己的AI知识助手。
用AI免费制作30分钟电影:完整工作流与实操解析
AI视频生成技术正大幅降低影视创作门槛,但真正制作一部完整电影并非一键生成,而是涉及剧本、分镜、画面、配音、剪辑的复杂流水线。理解其基本原理,是将文本转化为连续视觉叙事的关键。对于创作者而言,掌握角色一致性控制、素材批量管理、免费额度合理分配等技术价值,能有效避免生成结果崩坏与资源浪费。该能力可广泛应用于短视频创作、独立电影预演、教学演示等场景。本文以30分钟AI电影制作为例,拆解从工具选择到成片输出的全流程,重点分析免费方案下的时间与积分成本,以及最容易翻车的环节,并给出基于实践验证的排查与优化策略。
VxWorks内核解读 -设备驱动
redseazhaojianertao的博客 目录视图 摘要视图 订阅 优快云日报20170330 ——《我们错过了那么多机会,怎么办》 十二大技术领域优质资源汇总图谱 程序员3月书讯 博客搬家,有礼相送 VxWorks内核解读-7 2016-12-23
新版股票配资系统源码/股票分析系统技术方案
新版股票配资系统;全套源码支持新股申购功能,包含C#+MySQL开发的后台系统及Spring框架,采用C/S架构。注意:本源码仅限技术学习、功能测试及模拟交易使用,严禁用于非法用途,违者责任自负。
vxWorks内核解读七--IO操作
为了实现应用层程序的平台无关性,操作系统为应用层提供了一套标准的接口函数,这些接口函数在所有的平台上都保持一致,只是随着平台的变化,底层驱动或接近驱动部分操作系统中间层可能会随着调整。这样可以使用户程序独立于具体的硬件平台,增加了应用层开发的效率,避免了重复编码。通用操作系统GPOS(General Purpose Operating System)比如Unix,Linux,将这套提供给应用层的标
嵌入式开发必备:aarch64-linux-gnu-gcc交叉编译工具链保姆级安装指南(含常见错误解决)
本文详细介绍了aarch64-linux-gnu-gcc交叉编译工具链的安装与配置方法,涵盖从系统软件源安装到Linaro二进制包部署的全流程。针对嵌入式开发中常见的依赖错误、版本冲突等问题提供实用解决方案,并分享性能优化技巧与项目集成经验,帮助开发者高效完成ARM64设备的跨平台开发。
MCU-内部flash模拟成EepRom(重新梳理)
通过fee写数据Data的过程中,数据会mapping一个虚拟地址,这个虚拟地址就是你的身份,在向flash写数据的过程中会写入很多相同虚拟地址的不同数据,在读取或切页的过程中,遍历数据只会认为最下面第一个的虚拟地址所持有的数据是有效数据,其他的都是老数据,可以丢弃。模拟成eeprom的两个eep_page写数据逻辑就是,先在eep_page0写数据,eep_page0写满后,将eep_page0的有效数据copy到eep_page1,之后擦eep_page0;
VxWorks的字符设备和块设备与I/O系统的关系
【AFAC2026金融智能-赛题二】2亿像素的面条图,我切了1000刀拼回完美Markdown
摘要: AFAC2026金融智能创新大赛的「复杂金融文档还原挑战」任务是将高分辨率金融文档截图转换为结构化Markdown文本。面对2亿像素的“面条图”和严格的计算限制(禁用主流大模型,仅允许调用FinixDoc-VL API且模型需小于10M),作者提出四层流水线解决方案: 图像预处理:通过文本行投影检测在行间隙处智能切图,避免截断文字; API调度:5路并发轮询请求,结合内容哈希缓存与指数退避重试机制优化调用效率; 后处理:采用最长公共子串匹配去除文本重叠,并设计表格对齐算法修复跨块表格; 结果输出:按
vxworks实时操作系统(4):系统组件与驱动
本文详细介绍了VxWorks实时操作系统的核心组件开发技术,涵盖五大模块:文件系统与I/O管理、网络协议栈、设备驱动开发、板级支持包(BSP)以及系统启动流程。每个模块包含理论解析和完整C代码示例,展示了VxWorks的虚拟文件系统架构、TCP/IP协议栈实现、统一设备驱动接口、硬件抽象层以及多阶段启动过程等关键技术。通过POSIX标准API、BSD套接字编程和DDI驱动框架等示例代码,系统阐述了异步I/O、中断处理、DMA优化等高级功能的实现方法,为开发高可靠嵌入式系统提供全面参考。
CesiumForUnreal实现鹰眼地图(MiniMap)效果
CesiumForUnreal实现鹰眼地图(MiniMap)效果
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
854



被折叠的 条评论
为什么被折叠?



