QNX网络驱动-设备驱动编写处理方式

2023-11-03


锋影

e-mail:174176320@qq.com

第一部分: QNX系统的安装与使用
1.QNX的微内核,甚至不包括进程管理,仅提供进程间的通信(Software Bus)。但在实际编译的系统中,仍然是进程调度、同步、进程间通信等编译在同一个可执行文件中的,它就是/boot/sys/procnto (QNX6). 
2.QNX 4.x仅支持x86,QNX 6.x可支持PowerPC等 
3.QNX 4.x只有Process,没有Thread,QNX 6.x都有了,这跟POSIX 1003 – 2001是同步的。 
4.如何创建启动镜像:(QNX4) 
1.在/boot/build里,install.1是启动镜像的配置文件 
2.cd /boot 
3.make b=install.1 
4.上述步骤会成功编译出/boot/images/install.1镜像文件(该文件为MS-DOS可执行文件),其中包含了/boot/build/install.1配置文件中指定的所有可执行文件的映象(如Proc32、Slib32等)。 
5.copy install.1 到 /.boot即可
5.clear屏幕,使用ctrl+l 
6.文件系统/块设备的驱动,qnx4在/bin下,如Fsys.eide,而qnx6在/sbin目录下。 
7.块设备命名,可以通过/boot/build/install.1的设备驱动加载参数来指定,一般会是hd0.0(对应primary master)、hd0.1(对应primary slave)、h1.0(对应secondary master)、hd1.1(对应secondary slave)。 
8.hd0t79,其中t79是指type 和type id 
9.添加块设备后,可以使用fdisk进行分区,如fdisk /dev/hd0.1,分区后,查看/dev/hd*还只能看见/dev/hd0.1,要查找新分出来的分区,需要使用mount –p /dev/hd0.1 (probe)。 
10.启动过程

11.如何制作软盘启动的系统(QNX4) 
1.cd /boot 
2.make b=floppy 
3.格式化软驱fdformat /dev/fd0;初始化软驱dinit –hb /dev/fd0;将软盘挂载到/fd - mount /dev/fd0 /fd 
4.cp /boot/images/floppy /fd/.boot,启动映象就好了。 
5.mkdir etc;mkdir etc/config;mkdir bin;mkdir usr;mkdir /usr/bin 
6.cp /etc/config/sysinit.floppy /fd/etc/config/sysinit 
7.cp /etc/logo.F /fd/etc/ 
8.将必要的一些二进制文件从/bin/或/usr/bin拷贝到/fd/bin或/fd/usr/bin(对应的),如ls、pax、fcat、esh、sh、echo、vi、Dev、Fsys.eide、mount、rm、rmdir、mv、melt、Fsys、Dev、Dev.con、chkfsys、ps、prefix、emu87、mount、rtc、df、dinit、fdformat等。 
9.修改/etc/config/sysinit,从而加载硬盘驱动,添加下面一行:
/bin/Fsys.eide fsys –Ndsk0 –n0=hd0. –n5=cd0. eide –a1f0 –i14 
10.重新启动,从软盘加载,搞定。 
11.关机命令:shutdown –b(完全关机不重启)
12.用户环境
Boot Image -> /etc/config/sysinit.node -> /etc/profile -> $HOME/.profile
13.压缩解压 
1.melt / freeze,前者释放abc.F为abc,后者将abc压缩为abc.F(only for QNX4) 
2.gzip / gunzip
14.拷贝 
1.cp 
2.cpio
第二部分:QNX网络
QNX有很强的网络功能,最具特色的是它的FLEET Networking,该技术框架可以将跨接于不同网络(如Ethernet + Token)的节点直接链接起来,用户程序只需要使用msg_send即可跟网络上的任意qnx节点通信。
Fleet Network的配置需修改:
1.配置结点号
修改/boot/build/install.1文件名为install.x(x为你要的ID,比如2,下同),修改install.2中的$ /boot/sys/Proc32 –l 1为$ /boot/sys/Proc32 –l 2,后面这个2就是结点号。
2.生成新的image 
1.cd /boot 
2.make b=install.2 
3.cp images/install.2 /.boot
3.修改配置文件 
1.cd /etc/config 
2.cp sysinit.1 sysinit.2 
3.cp inetd.1 inetd.2 
4.cd bin 
5.cp Input.1 Input.2 
6.cp ph.1 ph.2 
7.cp tcpip.1 tcpip.2 
8.修改tcpip.2,两个内容,一个是ip地址,如果想使用dhcp,则注释掉/usr/ucb/ifconfig en1 10.1.1.119 node$NODE up,替换为/usr/ucb/dhcp.client
9.然后修改/.licenses,将license添加进去 
10.最后修改/etc/config/netmap,把网内的各个节点添加进去,完成
4.使用netmap –f,即时更新网络节点表,使用netmap可查看现有的 节点,使用alive可查看各节点的在线状况 
5.如过网卡不灵等,可用以下命令来重启相关服务。 
1.slay Net 
2.Net & 
3.Net.ether2100 –l1 –p0x1080 –i9 & 
4.slay Socklet 
5.Socklet node2 &
其它网络相关部分
1. 如何控制远程机器:ditto –n3 –k,即可控制远程node3。
2. 如何查看网卡状态:netstat –in
3. 如何查看路由表: netstat –rn
4. 如何使用远程桌面:phindows –n/dev/photon,在qnx侧则需要激活phrelay(inetd)。
5. 如何查PCI卡的IO地址和中断:show pci
6. 如何进入另外一台机起:on –f 3 /bin/sh
7. 如何检查网络监听:netstat –an
8. 如何查看启动后系统执行过的命令: sin ar
9. sin mem:当前进程虚拟地址分配情况
10. sin –t: 查看每个进程用了多少CPU时间。
关于QNX网络架构——
从驱动到应用层:Net -> Net.ether -> Socket/Socklet -> inetd -> nfsd
配置工具:ifconfig、route、hostname、netmap
查询工具:netstat、alive
第三部分:QNX6基础
1.Build Boot Image 
1./boot/build仍然是build启动映象的配置文件 
2.bios.build是X86通用的 
3.mkifs –v bios.build bios.img
2.在momentics中生成一个启动映象(支持硬盘和QNX4文件系统) 
1.生成QNX System Builder Project,在build文件生成一节,选择导入/boot/build/bios.build文件。 
2.双击打开project.bld,在binaries中加入devb-eide 
3.在DLL中加入cam-disk.so、io-blk.so、fs-qnx4.so。 
4.在share library中加入libcam.so.2 
5.点击bios,右键菜单调出properties窗口,在SYSTEM的PATH、LD_LIBRARY_PATH中添加必要的路径,包括/bin:/sbin:/usr/bin:/usr/sbin等PATH以及/lib:/usr/lib等库路径。 
6.修改bios.bsh,在PCI的section后增加硬盘驱动的部分
i. #start IDE drive
ii. devb-eide &
iii. waitfor /dev/hd0t79
iv. mount /dev/hd0t79 /
v. waitfor /bin
7.修改bios.bsh,在最后增加启动/etc/system/sysinit脚本的部分。
i. [+session] sh –c “/etc/system/sysinit”
ii. 最后注释掉ide驱动和这之间的其它部分。
8.编译生成bios.ifs,拷贝该文件到/.boot即可。
1.其它
QNX6的启动脚本已经更象Linux/Unix了,包括了sysinit和rc.d。而QNX6的设备驱动则远比4要灵活——顺便提一下,QNX4甚至没有提供DDK给用户,几乎所有的QNX4下的设备驱动都是QNX公司自己开发的(或受客户委托开发)。QNX6则改变了这一局面——而且QNX6已经完全开源了,QNX6用户也不再受那些license的困扰,普通个人用户可以直接下载和安装QNX6的RTOS和开发环境,包括使用Qnet——要知道,QNX4的Fleet Network倘若没有2个以上的licenses,是无法使用的。
第四部分:关于QNX6的网络架构和Qnet
QNX6的网络尤其是它的Qnet与QNX4一样独具特色。相对而言,QNX4的Fleet Network无论从配置还是使用来讲都要显得复杂一些,也要偏僻一些。而QNX6的Qnet则大大简化了配置的复杂性,也同时在尽量让远程的访问显得更正常。
首先,QNX6的网络驱动不同于qnx4的Net + Net.ether + Socket/Socklet或netmap的方式,而是采用了模块化更强,更灵活也更具一致性的方式。这个改变应当源于QNX6底层架构的升级。
从QNX6的启动看,在x86上,首先由BIOS启动startup-bios(一个二进制包),然后就启动了微内核procnto,紧接着在启动脚本里开始加载一些驱动。首先加载的一般是一个console,devc-con;然后应当加载pci-bios,试PCI总线开始工作;接着加载硬盘驱动和文件系统;最后启动一些进程通信管理程序,如mqueue、pipe等。
在QNX6里,网络、硬盘与其它设备(如音频)一样,都由一个io-xxx的程序来管理,硬盘是io-blk,网络则是io-net,而音频则是io-audio。但它们之间也有差别,比如硬盘,可执行的程序是devb-eide(常用的字符设备和块设备好像都是这个方式),而网络的则是io-net(net、audio这些好像是一样的),这多少显得有些怪异。
扯远了,回到io-net。
io-net的启动一般带一些参数,这些参数可以在加载网卡驱动的同时,加载各种协议栈,包括tcpip和Qnet。比如:
# io-net –dpcnet –ptcpip –pqnet
这一步操作即可在vmware虚拟机上跑的qnx6中成功加载网卡驱动、tcpip协议栈和Qnet协议栈。通过下面的命令可以检查io-net加载的状况:
# ls /dev/io-net
en0 ip0 ip_en qnet_en
此外,还有一种方式可以向已经启动的io-net中添加设备驱动和协议栈。比如:
# slay io-net
# io-net
# mount –Tio-net devn-pcnet.so
# mount –Tio-net npm-tcpip.so
# mount –Tio-net npm-qnet.so
这三个操作便向io-net添加了pcnet网卡驱动、tcpip和qnet协议栈。
其它一些命令:
1.查看io-net中已经加载的驱动:ls /dev/io-net 
2.查看网络中其它的qnet节点:ls /net 
3.访问网络中其它的qnet节点:cd /net/nodename(切换到目标结点的根目录).至于节点名称,则是通过hostname来设置的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QNX网络驱动-设备驱动编写处理方式 的相关文章

  • [转]QNX_BSP包分析

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 这篇文章主要分
  • 基于QNX的Testbed单元测试环境配置过程

    锋影 e mail 174176320 qq com 1 本机安装QNX系统 A安装VMware Workstation v exe B在VMware打开QNX虚拟机 vmware Qnx Other vmx 2 打开Virtual Box
  • 【QNX】快速入门指南

    目录 1 QNX 快速入门指南 2 系统要求 2 安装 QNX Momentics 开发套件 3 安装 QNX Neutrino 实时操作系统 4 QNX Neutrino 操作系统的联网 1 QNX 快速入门指南 本指南旨在帮助用户安装和
  • 嵌入式 Linux 系统在线升级策略-固件升级-升级固件-系统升级

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额1元起步 多少随意 锋影 email 174176320 qq com 嵌入式 Linux 系统在线升级策略 对于运行 Linux 系统的嵌入式产品 很多时候我们发
  • [转]QNX与Linux OS比较优劣-QNX与Linux两家未来有望独霸车载电子操作系统

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 车载电子操作系
  • qnx的modbus开发方案及其功能使用

    qnx的modbus多用于工业自动化 锋影扣扣 174176320 e mail 174176320 qq com qnx的modbus方案有几个 有serial TCP IP等 1 使用专用的库处理 2 自行编写库 3 编写简易modbu
  • 五大车载操作(VOS)系统优劣对比,车载系统架构分析-QNX系统性能分析

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 导读 车载操作
  • [Linux]Linux下查看文件和文件夹大小-查看容量-查看文件夹盘符容量

    锋影 email 174176320 qq com 如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 当磁盘大小超过标准时会有报警提示 这时如果掌握df和du命令是非常明智的选择 df可以查
  • 搭建QNX开发环境-qnx系统环境开发

    锋影 e mail 174176320 qq com QNX是可以提供试用30天 目前发布最新的是qnx7 0版本 申请也是只能7 0 做好白老鼠的准备 老版本不再申请试用 其实多数时候 老版本的650 650sp1 和较新稳定的660版本
  • [转]汽车电子还能这么玩

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 导读 汽车电子
  • 项目中QNX的USB驱动开发的反思

    锋影 e mail 174176320 qq com 接触驱动层的东西 心里还有点小激动 总感觉自己比没搞之前提高了那么一点点 也不知是真的假的 拉出来遛遛 1 整体思路 驱动层 先从驱动层说起 他将USB设备通过Resource Mana
  • QNX驱动开发—进程调度和进程通信

    锋影 e mail 174176320 qq com QNX进程间调度和进程通信切换任务 一 进程调度方法 1 FIFO 先进先出队列法 一个最高优先级的线程可以一直执行到结束或是主动放弃CPU 高优先级的线程可以随时中断低优先级的线程 获
  • [QNX700]QNX 7.0 平台QT开发环境配置

    锋影 email 174176320 qq com 如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 1 QNX q
  • 斑马网络和荣威RX5深度研究

    锋影 email 174176320 qq com 佐智汽车就李想的观点访谈了两位业内专家 他们的回答如下 专家A 这个是需求推动 有需求就有人做 特斯拉用Linux一样有地图 Android过于复杂 可靠性问题比Linux大几个数量级 做
  • Bootloader

    Bootloader 一段有下载和引导功能的程序 下载应用程序 引导使MCU运行在应用程序中 只在有更新请求或者APP无效的时候才会激活 APP和Bootloader都存在Flash中 Flash Driver用来擦除APP 下载临时存放在
  • 机器人操作系统ROS

    锋影 email 174176320 qq com 如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 ROS已经发布八周年了 在国外科研机构中非常受欢迎 目前 以美国西南研究院为首的几位大佬
  • 经纬恒润重磅推出第七代前视单目摄像头控制器

    随着L2 自动驾驶功能的普及 整车架构的升级 以及越来越高的法规要求 ADAS产品的开发迎来了更高的挑战 一方面 需要提高ADAS产品的整车性能 以应对更多的使用场景 另一方面 需要考虑ADAS的综合成本 以应对量产压力 据相关数据统计 2
  • QNX系统的ftp调试,连接FTP调试-QNX的PC104调试ftp

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额1元起步 多少随意 锋影 e mail 174176320 qq com 板子上QNX系统ftp的调试 双网卡 IP分别为 192 192 1 10 192 192
  • VTD — 智能驾驶复杂交通场景仿真工具

    德国VIRES 公司开发的复杂交通场景视景仿真工具VTD Virtual Test Drive 可应用于汽车主动安全 无人车半实物测试的实时复杂交通场景生成 含雷达 红外 摄像头等传感器成像 及汽车驾驶模拟器开发中的交通视景展示 也应用于工
  • QNX 6.5.0(SP1) 和 6.6.0(向后兼容)有什么区别?

    找不到指出 QNX 6 5 1 和 6 6 0 之间确切区别的实际发行说明 我知道 Photon 不再受支持 到目前为止 我已经有了 SDP 6 6 0 但我可能还需要我的软件在 6 5 0 上运行 那么 6 5 0 的实际向后兼容性级别是

随机推荐

  • linux 软件安装各种方法

    一 简单介绍 1 软件安装卸载 分几种情况 A RPM包 这种软件包就像windows的EXE安装文件一样 各种文件已经编译好 并打了包 哪个文件该放到哪个文件夹 都指定好了 安装非常方便 在图形界面里你只需要双击就能自动安装 如何卸载 1
  • SE-ResNet的实现

    见 D pythonCodes 深度学习实验 4 1 经典分类网络 inference代码汇总 models se resnet py 一 SE ResNet的实现方法 读了senet这篇论文之后 可以知道senet并没有提出一个新的网络
  • Easyui combobox 判断输入项是否存在于下拉列表中

    combobox的getValue方法很诡异 当输入项是存在于下拉列表时 返回的是需要的ID 但是当输入项是不存在于下拉列表时 却直接返回用户的输入结果 从而导致没法判断用户是否输入了下拉框不存在的项 本来第一时间想到直接判断getValu
  • 蓝绿发布、滚动发布、灰度发布,有什么区别?

    目录 01 蓝绿发布 02 滚动发布 03 灰度发布 04 A B测试 在项目迭代的过程中 不可避免需要 上线 上线对应着部署 或者重新部署 部署对应着修改 修改则意味着风险 目前有很多部署发布的技术 这儿将常见的做一个总结 举一个情景例子
  • 第一次使用Xshell服务器跑程序(保姆教程)

    前期准备 1 提前下载好Xshell和Xftp 2 有自己的服务器账号名 密码 服务器IP 默认端口号 我的是组里师兄给我创建的 以上两步下载注册步骤可以参考文章1和文章2 3 我的服务器默认安装好了Anaconda3和cuda11 1 1
  • Flutter之状态管理Provider使用和详解

    在前端页面 状态管理和消息传递一直是我们开发一个交互性好 体验好的前端应用或者APP必须要提到的东西 设想一下我们需要两个组件之间共享数据 而且两个组件之间具有联动效果 对于Flutter来说我们能够把数据保存到一个全局变量 然后每次使用的
  • Spring源码分析之createBean主流程分析

    我们知道 在调用getBean获取bean实例的实例 首先会从缓存中获取bean实例 如果没有获取到 就会去创建bean的时候 关于获取bean实例 可以参考Spring源码分析之getBean主流程分析 而本文将会对创建bean实例的主流
  • 分享一个前后端分离的web项目(vue+spring boot)

    Github地址 https github com smallsnail wh 前端项目名为wh web 后端项目名为wh server 项目展示地址为我的github pages https smallsnail wh github io
  • simple and useful command lines

    pip list grep package name 显示获取已安装包的信息 包名与版本号 pip show package name 能显示该安装的包的相关信息 其中包括它的安装路径 实际上包通常被安装在python安装目录下的lib s
  • Numpy学习笔记

    文章目录 常用函数 np linspace numpy arange start end step dtype numpy tile A reps np array numpy ndim A np flatten np reshape np
  • RPA机器人有效解决低效能业务流程升级难点

    企业的数字化 自动化转型是一个综合命题 RPA也绝非是低效套用的通用模板 在决策各个阶段的关键要点都需要量体裁衣 细致考量 为了达到更好的效果 企业在从厘清内部需求阶段就应引入专业的咨询人员有针对性地开展交流和指导 以结果为导向 协助企业全
  • ue4 命令行编译 烘焙 打包 存档

    首先是官方wiki的说明 How to package your game with commands Jump to navigation search Template Rating This aims to be a quick gu
  • 爬虫做js逆向分析的思路

    1 为什么要做逆向 正常我们访问一个网站是由html css js 文件组成的 下图是某网站的正常访问 当然我们也可以看到是谁调用了这个请求执行了什么 2图为某网站登录链接 分析URL 我们可以看到这个链接他的请求参数 传输方式等 我们可以
  • 蚁群算法原理及matlab代码实现

    蚁群算法基本原理 背景 在自然界中 生物群体所表现出的智能得到越来越多的关注 许多的群智能优化算法都是通过对群体智能的模拟而实现的 其中模拟蚂蚁群体觅食的蚁群算法成为一种主要的群智能算法 算法原理 在自然界中 对于觅食的蚂蚁群体 其可以在任
  • MATLAB PreScan CarSim 联合仿真

    参考视频 PreScan carsim simulink联合仿真 哔哩哔哩 bilibili 参考文档 matlab carsim prescan联合仿真从零开始详细步骤 版本 MATLAB2021b Prescan8 5 CarSim20
  • java注解-ElementType详解

    java注解使用是相当频繁 特别是在搭建一些框架时 用到类的反射获取方法和属性 用的尤其多 java中元注解有四个 Retention Target Document Inherited Retention 注解的保留位置 Retentio
  • go安装

    windows 1 建议去go语言中文网下载 网址 https studygolang com dl 2 配置环境变量 先创建GOPANTH 再配置path 如图 3 检测环境是否安装成功
  • python - os.walk()

    介绍 讲解 概述 os walk 方法用于通过在目录树中游走输出在目录中的文件名 向上或者向下 os walk 方法是一个简单易用的文件 目录遍历器 可以帮助我们高效的处理文件 目录方面的事情 语法 walk 方法语法格式如下 os wal
  • Android反编译apk逆向分析

    Android反编译apk 反编译 逆向 软件下载地址 反编译 逆向 反编译 高级语言源程序经过 编译 变成可执行文件 反编译就是逆过程 但是通常不能把可执行文件变成高级语言源代码 只能转换成汇编程序 计算机软件反向工程 Reversepe
  • QNX网络驱动-设备驱动编写处理方式

    锋影 e mail 174176320 qq com 第一部分 QNX系统的安装与使用 1 QNX的微内核 甚至不包括进程管理 仅提供进程间的通信 Software Bus 但在实际编译的系统中 仍然是进程调度 同步 进程间通信等编译在同一