linux字符驱动向vxworks移植,VxWorks驱动移植至SylixOS总结
本文档描述了将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总结相关推荐
- 基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九)
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
- gt9xx linux 移植_GT9XX驱动移植说明书_for_Android_2014011401.pdf
GT9XXforAndroid驱动移植说明书 一.驱动基本信息 支持芯片型号 GT911 GT9110 GT9110P GT913 GT915 GT918 GT927 GT928 GT960 GT96 ...
- 【华为云技术分享】小熊派华为物联网操作系统LiteOS裸机驱动移植02-LCD驱动移植及使用
1. LCD裸机驱动 小熊派开发板使用的LCD屏幕为1.3寸的TFT彩屏,色彩深度16bit,分辨率240*240,使用 SPI 接口与 MCU 之间通信. 如果你对裸机玩转LCD屏幕还不熟悉,请先阅 ...
- linux不同内核驱动移植问题,基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九-2)...
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
- Linux字符设备驱动程序开发(4)-LED驱动程序设计
这里编写一个LED内核驱动代码.流程大概如下: 1.实现一个内核模块. 2.添加字符设备驱动框架. 3.在字符设备驱动中实现open和ioctl函数. 4.编写应用程序. led.c #include ...
- 基于tiny4412的Linux内核移植 -- eMMC驱动移植(六)
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
- X210开发板(S5PV210芯片)uboot移植DM9000驱动移植
前言 本文是介绍在uboot中如何移植DM9000的驱动,并不深入去讲解DM9000芯片的操作时序和内部寄存器,想要读懂驱动代码要仔细阅读DM9000芯片的数据手册.移植的基础是手里有DM9000芯片 ...
- linux 字符设备驱动cdev
linux字符设备是最为常见的驱动,比如 serial drivers, audio drivers, video drivers, camera drivers, and basic I/O dri ...
- 联咏平台(Novatek) | RTL8188FU WIFI驱动移植
目录 1 开发环境 2 内核配置 2.1 配置支持USB设备 2.2 配置支持 wifi 设备 2.3 配置支持 wifi 网络 IEEE 802.11 2.4 编译内核 3 wifi 驱动移植 3. ...
最新文章
- 超长JVM总结,面试必备
- s5pv210启动debian出错提示bash: cannot set terminal process group (-1): Inappropriate ioctl for device...
- Spring的新注解——Configuration、ComponentScan、Bean、Import、PropertySource || spring整合Junit分析
- mxnet基础到提高(22)-C++-常量和变量
- boost::mpl::distance相关的测试程序
- 四位数码管树莓派c语言,用树莓派和四位数码管模块做一个时钟
- 2017-03-16 Codeforces 453A 概率期望,思维 UOJ 228(待补)
- python AES使用
- idea 2019最新版无法打开报错问题,Error occurred during initialization of VM Initial heap size set to a larger va
- 计算机上的证书安装不了,win10系统数字证书安装不上的详细教程
- 评侯捷的《深入浅出MFC》和李久进的《MFC深入浅出》
- 全国高校计算机能力挑战赛Java试题(一)
- 演讲者模式投影到幕布也看到备注_PPT制作技巧:如何实现ppt放映不同界面(演讲者模式)?...
- 数字麦克风PDM信号采集与STM32 I2S接口应用(三)
- 从字符串中查找并提取数字
- MATLAB函数文件的使用
- c# chart 各个属性_C# Chart各个属性详细解析、应用
- 中台能力是什么?PaaS是什么?微服务是什么?
- 我的世界mod开发(6)无敌的护甲
- VPB和OSGGIS安装
热门文章
- 数据算法与结构基本知识
- mysql delette_关于字符串:首字母大写MySQL
- vue变量传值_Vue各类组件之间传值的实现方式
- ACL'21 | debug完的神经网络,如何测试是否仍然存在bug?
- 美团下一代服务治理系统 OCTO 2.0 的探索与实践
- 微服务系列:服务注册与发现的实现原理、及实现优劣势比较
- 技术动态 | 图对比学习的最新进展
- 会议交流 | IJCKG 2021:Keynotes released!欢迎注册参会
- 一文搞懂HMM(隐马尔可夫模型)-Viterbi algorithm
- 函数式编程让你忘记设计模式