DB43_T 2260-2021 信息技术应用创新工程建设规范 第9部分:驱动开发通用技术要求.docx
《DB43_T 2260-2021 信息技术应用创新工程建设规范 第9部分:驱动开发通用技术要求.docx》由会员分享,可在线阅读,更多相关《DB43_T 2260-2021 信息技术应用创新工程建设规范 第9部分:驱动开发通用技术要求.docx(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ICS01.140.20CCSL7043湖南省地方标准DB43/T22602021信息技术应用创新工程建设规范第9部分:驱动开发通用技术要求EngineeringspecificationfortheApplicationInnovationProjectofInformationTechnologyPart9:Generaltechnicalrequirementsofdriverdeveloping2021-12-29发布2022-03-29实施湖南省市场监督管理局发布DB43/T22602021目次前言引言1范围12规范性引用文件13术语和定义14缩略语25核内驱动总体要求25.1编程要
2、求25.2设备驱动模型35.3文件组织形式35.4驱动程序实现35.5第三方技术使用46核内驱动具体要求56.1字符设备驱动程序56.2块设备驱动程序66.3平台设备驱动程序76.4网络设备驱动程序96.5显示帧缓存设备驱动程序106.6驱动程序的DKMS包制作126.7驱动程序的调试验证137常用外设开发要求137.1打印机驱动开发137.2扫描仪驱动开发147.3手写液晶屏驱动开发15附录A(资料性)设备驱动分类16附录B(资料性)驱动程序实现函数示例17附录C(资料性)驱动程序可调用的内核函数接口19附录D(规范性)驱动程序相关的结构体21附录E(资料性)DKMS技术说明及示例23附录F
3、(资料性)第三方内核模块打包26附录G(资料性)驱动程序的调试验证方法32附录H(资料性)打印机驱动库配置文件示例36IDB43/T22602021引言湖南省为深入贯彻国家网络强国战略,全面落实中央有关文件精神,部署开展湖南省信息技术应用创新工程建设,保障全省各级党政机关关键信息基础设施信息安全和信息系统安全可靠运行。针对自主可控产品体系初具规模,但相关产品和工程实施标准规范还很缺乏的现状,为了规范工程建设,加速工程进度,扩大建设结果,同时有力提升自主可控产业发展水平,确保信息安全,由湖南省国家密码管理局作为业务主管单位、湖南省工业和信息化厅作为技术归口单位,由中国人民解放军国防科技大学、中国
4、电子信息产业集团有限公司等单位与湖南省合作制定了信息技术应用创新工程建设规范地方标准。信息技术应用创新工程建设规范主要由自主可控核心产品、典型应用、工程管理等方面的规范组成,重点解决应用创新工程建设当中产品选型、应用开发、工程实施等基础环节的实际问题,可为应用创新工程的用户使用单位、集成建设单位和相关产品研制单位,在产品和应用规范化、软硬件兼容适配、工程实施标准等方面提供一般性指引。信息技术应用创新工程建设规范未来将根据自主可控产业和应用创新工程的发展变化进行相应的必要调整和补充。VDB43/T22602021VIDB43/T22602021信息技术应用创新工程建设规范第9部分:驱动开发通用技
5、术要求1范围本文件提出了国产操作系统驱动程序开发的编程要求、设备驱动模型、文件组织形式、驱动程序实现、第三方技术使用等总体要求,并针对字符设备、块设备、平台设备、网络设备、显示帧缓存设备的驱动程序框架和开发提出具体要求。本文件适用于国产操作系统上第三方驱动程序的开发,也为第三方驱动程序的调试验证提供指导。2规范性引用文件下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T152721994程序设计语言C3术语和定义下列术语和定义适用于本文件。3.1驱动程序
6、driver驱动程序是硬件厂商根据操作系统编写的配置文件,操作系统通过驱动来与控制设备和进行通信。3.2设备device是计算机系统中输入、输出设备(包括外存储器)的统称。设备对数据和信息起着传输、转送和存储的作用。3.3总线bus是计算机各种功能部件之间传送信息的公共通信干线。3.4设备驱动模型devicedrivermodel设备驱动模型是操作系统内核为了管理硬件上的设备和对应的驱动程序所制定的一套软件体系。3.5平台总线platformbus平台总线是操作系统内核定义的一种虚拟总线,操作系统内核通过平台总线来管理芯片内部集成设备。3.6平台设备驱动模型platformdevicedriv
7、ermodel1DB43/T22602021平台设备驱动模型,即采用平台总线的方式对驱动程序和设备进行管理的设备驱动模型。3.7字符设备characterdevice字符设备是不可寻址的,仅提供数据的流式访问的设备。3.8块设备blockdevice块设备是以块为单位的、可以寻址的设备。块设备通常支持重定位操作,实现对数据的随机访问。3.9网络设备networkdevice网络设备通过网络适配器和特定的网络协议来完成网络访问的设备。3.10版本魔术信息vermagicinformation版本魔术信息是驱动程序内存储的、用来描述操作系统内核版本号以及基础内核配置的字符串。3.11导出符号exp
8、ortsymbol导出符号是操作系统内核模块导出的、可供其他模块中的函数使用的全局变量或者函数。3.12GNU编译器套件GNUCompilerCollectionGNU编译器套件是由GNU开发的编程语言编译器,它包括C、C+、Objective-C、Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc+,libgcj等。)3.13OPPS信息OPPSInformation操作系统内核发生严重错误时所提示的信息,包括错误发生时的各个常用寄存器的值,调用的堆栈,以及出错的可能原因。4缩略语下列缩略语适用于本文件:ACPI:高级配置和电源管理接口(AdvancedC
9、onfigurationandPowerManagementInterface)CPU:中央处理器(CentralProcessingUnit)DKMS:动态内核模块支持(DynamicKernelModuleSupport)GNU:开源标准(GNUsNotUnix)GPL:GNU通用公共许可证(GNUGeneralPublicLicense)I/O:输入/输出(Input/Output)NAPI:网络数据处理API(NewAPI)PMU:性能监视单元(PerformanceMonitoringUnit)5核内驱动总体要求5.1编程要求驱动程序代码应符合GB/T15272-1994和Linux
10、内核编程的相关要求,并采用系统内核提供的代码2DB43/T22602021检查脚本来检查驱动程序代码的合规性。为了保证内核升级时其内部调用符号的可用性,驱动程序代码分为内核框架层和核心代码逻辑层,其中内核框架层实现与内核对接的部分,而核心代码逻辑层实现驱动模块的核心功能,编写时应符合以下原则:a)不使用内核的API接口和数据结构;b)不使用内核的框架代码;c)不进行内核版本的判断处理;d)不使用宏进行同架构内CPU的判断处理;e)二进制文件只包含需要保护的代码。5.2设备驱动模型应基于设备驱动模型来进行驱动程序开发,设备驱动模型分类参见附录A,设备和驱动程序均应挂载到总线上,并通过总线来实现对
11、驱动程序和设备的管理。5.3文件组织形式应采用独立目录存放驱动程序的代码文件,驱动程序目录:a)应包含Makefile驱动程序构建文件,用于驱动程序的自动化编译;b)应使用.c源码文件来保存驱动程序实现,若驱动程序的功能复杂,通过多个源码文件来分类存放驱动程序实现;c)应使用.h头文件来声明驱动程序中的函数、数据结构和变量,应安装内核提供的linux/init.h、linux/module.h和linux/kernel.h头文件,当需要调用内核功能时,驱动应使用上述头文件中提供的函数接口来请求内核功能;d)应使用Kconfig配置文件来描述驱动程序源码文件相关的内核配置菜单;e)宜使用Read
12、me说明文档来介绍驱动程序的功能和使用方法。5.4驱动程序实现5.4.1入口函数驱动程序开发应定义和实现驱动程序的入口函数,驱动程序的入口函数应满足以下要求:a)应使用_init初始化修饰符来修饰入口函数;b)应完成驱动程序的注册和加载操作;c)应调用内核提供的驱动程序总线注册函数来完成驱动程序的注册;d)应通过具体的返回值来表示驱动程序是否加载成功,加载失败的返回值宜定义为负值,不同的负值对应不同的错误原因;e)应通过内核提供的module_init()模块初始化函数来声明驱动程序的入口函数。驱动程序入口函数示例见附录B.1。5.4.2出口函数驱动程序开发应定义和实现驱动程序的出口函数,驱动
13、程序的出口函数应满足以下要求:a)应使用_exit退出修饰符来修饰出口函数;b)应完成驱动的卸载操作;c)应打印卸载相关信息,无需通过返回值来注明驱动程序的卸载是否成功;d)应通过内核提供的module_exit()模块退出函数来声明驱动程序的出口函数。3DB43/T22602021驱动程序出口函数示例见附录B.2。5.4.3信息声明驱动程序的加载代码中应包含驱动程序的信息声明,包括“模块许可协议”、版本”、“作者”以及“模块描述”等信息,信息声明示例见附录B.3。5.4.4remove卸载函数驱动程序应实现remove卸载函数,在remove卸载函数中实现对驱动程序申请的设备、内存以及sys
14、文件系统节点等资源的释放。卸载程序中的资源释放示例见附录B.4。若驱动程序中注册了回调函数,则remove卸载函数中应包含注销回调函数的操作。5.4.5核心数据结构的可扩展性应通过以下方式来实现驱动程序核心数据的可扩展性:a)在数据结构中添加reserved保留字段;b)在数据结构中添加表示私有数据的指针,扩展时只需要修改该指针所指向的数据结构,而无需修改核心数据结构。核心数据结构的可扩展性实现示例见附录B.5。5.4.6probe探测函数驱动程序应实现probe探测函数,用于完成设备驱动程序注册的最后收尾工作。在probe探测函数中进行硬件资源的获取、内存结构的映射以及设备的创建等操作时,应
15、通过内核提供的内核操作函数接口进行,涉及的内核操作函数接口见附录C。5.4.7用户空间内存访问若驱动程序需访问用户空间内存,应在访问前先使用access_ok检验函数来检查用户空间内存指针的有效性。5.4.8调试统计变量驱动程序开发时应添加必要的调试统计变量,以便于对驱动程序的调试测试。调试统计变量宜实现分级开关,以提供各种粒度的调试测试选项。5.4.9导出符号规范驱动程序应使用内核提供的EXPORT_SYMBOL_GPL宏或EXPORT_SYMBOL宏来导出符号。EXPORT_SYMBOL_GPL宏导出的符号适用于包含GPL许可的模块,EXPORT_SYMBOL宏导出的符号适用于任何模块。示
16、例:驱动导出符号的两种方式EXPORT_SYMBOL(func1);EXPORT_SYMBOL_GPL(func2);5.5第三方技术使用驱动程序开发若涉及对第三方技术的使用,应在驱动程序正式开发前对所涉及的第三方技术进行效率、兼容性、稳定性等方面的测试,确保第三方技术的使用不会对驱动程序的功能、性能造成不良影响。4DB43/T226020216核内驱动具体要求6.1字符设备驱动程序6.1.1驱动程序框架字符设备驱动程序框架见图1。图1字符设备驱动程序框架字符设备驱动包括以下部分:a)设备文件操作函数接口:字符设备驱动通过file_operation结构体函数集向用户空间提供设备文件操作函数接
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DB43_T 2260-2021 信息技术应用创新工程建设规范 第9部分:驱动开发通用技术要求 2260 2021 信息技术 应用 创新 工程 建设 规范 部分 驱动 开发 通用 技术 要求
链接地址:https://www.taowenge.com/p-87916130.html
限制150内