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

linux字符驱动向vxworks移植,VxWorks驱动移植至SylixOS总结相关推荐

  1. 基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九)

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  2. gt9xx linux 移植_GT9XX驱动移植说明书_for_Android_2014011401.pdf

    GT9XXforAndroid驱动移植说明书 一.驱动基本信息 支持芯片型号 GT911 GT9110 GT9110P GT913 GT915 GT918 GT927 GT928 GT960 GT96 ...

  3. 【华为云技术分享】小熊派华为物联网操作系统LiteOS裸机驱动移植02-LCD驱动移植及使用

    1. LCD裸机驱动 小熊派开发板使用的LCD屏幕为1.3寸的TFT彩屏,色彩深度16bit,分辨率240*240,使用 SPI 接口与 MCU 之间通信. 如果你对裸机玩转LCD屏幕还不熟悉,请先阅 ...

  4. linux不同内核驱动移植问题,基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九-2)...

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  5. Linux字符设备驱动程序开发(4)-LED驱动程序设计

    这里编写一个LED内核驱动代码.流程大概如下: 1.实现一个内核模块. 2.添加字符设备驱动框架. 3.在字符设备驱动中实现open和ioctl函数. 4.编写应用程序. led.c #include ...

  6. 基于tiny4412的Linux内核移植 -- eMMC驱动移植(六)

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  7. X210开发板(S5PV210芯片)uboot移植DM9000驱动移植

    前言 本文是介绍在uboot中如何移植DM9000的驱动,并不深入去讲解DM9000芯片的操作时序和内部寄存器,想要读懂驱动代码要仔细阅读DM9000芯片的数据手册.移植的基础是手里有DM9000芯片 ...

  8. linux 字符设备驱动cdev

    linux字符设备是最为常见的驱动,比如 serial drivers, audio drivers, video drivers, camera drivers, and basic I/O dri ...

  9. 联咏平台(Novatek) | RTL8188FU WIFI驱动移植

    目录 1 开发环境 2 内核配置 2.1 配置支持USB设备 2.2 配置支持 wifi 设备 2.3 配置支持 wifi 网络 IEEE 802.11 2.4 编译内核 3 wifi 驱动移植 3. ...

最新文章

  1. 超长JVM总结,面试必备
  2. s5pv210启动debian出错提示bash: cannot set terminal process group (-1): Inappropriate ioctl for device...
  3. Spring的新注解——Configuration、ComponentScan、Bean、Import、PropertySource || spring整合Junit分析
  4. mxnet基础到提高(22)-C++-常量和变量
  5. boost::mpl::distance相关的测试程序
  6. 四位数码管树莓派c语言,用树莓派和四位数码管模块做一个时钟
  7. 2017-03-16 Codeforces 453A 概率期望,思维 UOJ 228(待补)
  8. python AES使用
  9. idea 2019最新版无法打开报错问题,Error occurred during initialization of VM Initial heap size set to a larger va
  10. 计算机上的证书安装不了,win10系统数字证书安装不上的详细教程
  11. 评侯捷的《深入浅出MFC》和李久进的《MFC深入浅出》
  12. 全国高校计算机能力挑战赛Java试题(一)
  13. 演讲者模式投影到幕布也看到备注_PPT制作技巧:如何实现ppt放映不同界面(演讲者模式)?...
  14. 数字麦克风PDM信号采集与STM32 I2S接口应用(三)
  15. 从字符串中查找并提取数字
  16. MATLAB函数文件的使用
  17. c# chart 各个属性_C# Chart各个属性详细解析、应用
  18. 中台能力是什么?PaaS是什么?微服务是什么?
  19. 我的世界mod开发(6)无敌的护甲
  20. VPB和OSGGIS安装

热门文章

  1. 数据算法与结构基本知识
  2. mysql delette_关于字符串:首字母大写MySQL
  3. vue变量传值_Vue各类组件之间传值的实现方式
  4. ACL'21 | debug完的神经网络,如何测试是否仍然存在bug?
  5. 美团下一代服务治理系统 OCTO 2.0 的探索与实践
  6. 微服务系列:服务注册与发现的实现原理、及实现优劣势比较
  7. 技术动态 | 图对比学习的最新进展
  8. 会议交流 | IJCKG 2021:Keynotes released!欢迎注册参会
  9. 一文搞懂HMM(隐马尔可夫模型)-Viterbi algorithm
  10. 函数式编程让你忘记设计模式