文档章节

VxWorks驱动移植至SylixOS总结

z
 zhywxyy
发布于 2018/08/21 10:51
字数 673
阅读 24
收藏 0

本文档描述了将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层、协议栈的驱动,则必须根据使用场景进行改写。

© 著作权归作者所有

z
粉丝 1
博文 18
码字总数 25163
作品 0
南京
私信 提问
SylixOS-IgH系统平台搭建

1.参考手册 下面7个文件存放在本地服务器“\10.9.1.113.研发部9.ExchangeFolder郑磊”路径下 《RealEvo-IDE使用手册》 《SylixOS应用开发手册》 《SylixOSshell用户手册》 《SylixOS-IgH使用...

zhengleich
2018/05/15
0
0
SylixOS上EtherCAT实现

1 EtherCAT开源协议栈介绍 目前常见开源的主站代码为RT-LAB开发的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS对两者都支持。其中IgH作为常用的...

Jackstraw瑞
2017/11/01
0
0
倪光南再谈核心技术自主可控:将替代 Wintel 体系

为期三天的智博会昨日在重庆开幕,在智能时代信息安全高端论坛上,中国工程院院士倪光南围绕我国网信领域的创新发表演讲,再次提到技术方面国产自研的重要性,并介绍四项国产化替代方案。 今...

王练
2018/08/25
2.7K
53
SylixOS调试方法详解——综合案例分析

1. SylixOS调试方法介绍 SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。目前RealEvo-IDE既支持自动推送调试、也支持传...

Esc120
2018/06/26
0
0
SylixOS调试方法详解——综合案例分析

SylixOS调试方法介绍 SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。目前RealEvo-IDE既支持自动推送调试、也支持传统...

Esc130
2017/10/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用Python帮你上马,哪里无码打哪里

目录 0 引言 1 环境 2 需求分析 3 代码实现 4 代码全景展示 5 后记 0 引言 所谓的像素图,就是对图像做一个颗粒化的效果,使其产生一种妙不可言的朦胧感。费话不多说,先来看一张效果图。 <c...

上海小胖
15分钟前
1
0
python from import与import as 的含义

from os import makedirs, unlink, sep #从os包中引入 makedirs.unlink,sep类 from os.path import dirname, exists, isdir, splitext 从 os包中的path类中引入 dirmame exists 等方法 impo......

dillonxiao
15分钟前
1
0
【转】URL最大长度问题

今天在测试Email Ticket的时候发现在进行Mark as Read/Unread操作时,请求是通过GET方式进行的。URL中列出了所有参与该操作的Ticket Id。于是,我想起GET请求是有最大长度限制的。遂输入超长...

ZhangLG
17分钟前
0
0
Segment段

CurrentHashMap和HashMap相比支持并发操作,整个CurrentHashMap是由一个个的Segment组成的,也是就是常说的分段锁 Segment继承了重入锁ReentrantLock来进行加锁, 可以简单的把CurrentHashMa...

周慕云
18分钟前
0
0
JS Date 自定义格式化方法

JS Date 自定义格式化方法 Date 时间对象 快速 自定义格式化 定义方法 // 自定义格式化方法Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, ......

DrChenXX
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部