博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VxWorks驱动移植至SylixOS总结
阅读量:5932 次
发布时间:2019-06-19

本文共 1225 字,大约阅读时间需要 4 分钟。

hot3.png

本文档描述了将VxWorks中的驱动源码快速移植至SylixOS中的方法,使用时需要结合SylixOS中的VxWorks兼容层实现。

1. 驱动注册与初始化

1.1 VxWorks中驱动注册与初始化

1.1.1 初始化函数

VxWorks中大部分函数使用了VxWorks的VxBus结构,对于基于VxBus的驱动结构,通常都定义了如下所示的结构体。

LOCAL struct drvBusFuncs xxxDrvFuncs = {xxxInstInit, /* devInstanceInit */xxxInstInit2, /* devInstanceInit2 */xxxInstConnect /* devConnect */ };
  • devInstanceInit在Kernel初始化前被调用,若设备或其一部分被Kernel使用,则相关的初始化实现在该函数中完成。
  • devInstanceInit2在Kernel初始化后被调用,若无特别要求,初始化都应在此函数中实现。
  • devInstanceConnect用于设备的连接,通常可以不使用,但如果它依赖于其他设备,则启动代码在其中实现。

1.1.2 中断连接

VxWorks的中断连接在系统配置相关c文件中统一实现。

1.2 SylixOS中驱动注册与初始化

1.2.1 初始化函数

SylixOS中驱动的初始化入口在bspInit.c中可以根据实际使用需要在halBusInit、halDrvInit、halDevInit中进行调用。 所以需将VxWorks中devInstanceInit、devInstanceInit2中的实现整合为一个Init函数,在bspInit.c中对应位置进行调用。

1.2.3 中断连接

SylixOS的中断连接需要在驱动中调用API_InterVectorConnect、API_InterVectorEnable函数注册中断并使能中断。

2. 关于地址映射

VxWorks下的很多虚拟地址在开机初始化时就进行了映射,其映射关系通过一个VIRT_TO_PHYS的数组描述,通常规律是地址的最高位不同,但低31位都相同。 在SylixOS中,应用程序空间的虚拟地址到物理地址的映射,并不一定遵从低31位相同的规则,使用时需使用API_VmmVirtualToPhysical函数获取其映射后的物理地址。

3. 不使用系统IO层、协议栈的驱动移植

对于不使用系统IO层、协议栈的驱动,可以改写devInstanceInit、devInstanceInit2等函数,使其为一个Init函数,在bspInit.c中调用;并且定义中断连接的操作,在Init函数中调用。

4. 使用系统IO层、协议栈的驱动移植

对于使用系统IO层、协议栈的驱动,则必须根据使用场景进行改写。

转载于:https://my.oschina.net/wPCBsKzQ/blog/1931244

你可能感兴趣的文章
常见系统故障之-bash
查看>>
preg_replace 一个有意思的参数
查看>>
PHP 连接 MYSQL
查看>>
Mysql数据库四大特性、事物的四个隔离、基本MySQL语句、独立表空间
查看>>
安装supervisor
查看>>
DEDE让广告延时加载显示,大大提高网页访问的速度
查看>>
apache常用的两种工作模式 prefork和worker
查看>>
mysql 开启远程访问
查看>>
gopacket 使用
查看>>
收入分配理论的合理性分析
查看>>
使用C# 创建windows 服务
查看>>
editView
查看>>
【资料整理】查看硬件配置方法
查看>>
程序包编译安装
查看>>
08/23 总结
查看>>
Spring 事务配置
查看>>
AlertDialog对话框
查看>>
Spring从MongoDB中下载文件之GridFS
查看>>
Doug Lee NIO PPT
查看>>
分享我写的一个LNMP一键安装包
查看>>