驱动程序设计流程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注意问题
(1)MMU 对该硬件的地址映射正确 (改 BSP) (2)中断向量表该中断的定义位置,知道相应 中断的中断标志位等信息(改 BSP) (3)查出中断号及中断级别,硬件中断登记 (INTCONNECT),及 ISR (4)系统任务协调,保证在该程序执行时,没 有其它任务占用 CPU
ISR设计要求
编码设计
1、程序中不能有不可理解的魔鬼数字,所有常 量应用宏定义。 2、整个芯片的基地址用一个宏来定义,各积存 器的地址均用宏定义 3、注释方面,对寄存器的取值,取值的含义应 有详细注释。 4、程序排版要符合编程规范要求。 5、注释格式和注释量要达到编程规范要求,注 释内容要清楚明了,必须与代码保持一致。 6、在每一个对外接口函数前,应对该函数的使 用方法进行详细注释。
编码设计
7、变量、结构、函数、常量等标识符的命名 要符合见名知意的原则。 8、对函数的参数输入和非参数输入(如公共 变量)都要进行有效性检查。 9、应对每种出错情况都进行处理。 10、在修改代码时一定要注意——修改相应注 释。 编码完成,应对所有代码进行正规检视或 走读,因为共享代码中的一个错误,将随着不 断被移植而不断放大
(1)代码尽可能短小; (2)不能进行浮点操作; (3)不要使用printf打印语句; (4)不能调用引起操作阻塞的函数,如 read,write,msgReceive,taskSpawn
中断调试
中断服务程序只能在系统调试模式下调试,不能在任 务调试模式下调试。因为中断服务程序是作为系统 的一部分运行,不是以任务方式运行,因此不需要 为它产生任务。 中断服务程序调试步骤: * 用-g选项编译源代码产生目标文件。 * 下载产生的目标文件。 * 在MultiTaskTestInit函数的开始设置断点。 * 在Debugger命令窗口输入命令attach system进入 系统调试模式。 * 执行菜单命令Debug | Continue继续运行程序。 * 如果产生相应的中断,程序就会在中断服务程序 的断点处停下。进行需要的调试。
调试
因芯片驱动程序直接与硬件相关,脱离 硬件芯片来做单元测试没有多大意义, 故直接在硬件上进行调试,调试应覆盖 所有的功能模块和函数,应达到100%的 条件覆盖。 详细记录调试过程,包括调试结果,异 常情况分析,问题修改及验证,总结经 验教训
中断问题定位
(1)确定一下是否中断发生,在中断发生 时,查中断标志寄存器INTST1中相应的 IRQ为是否置1,或用示波器量该IRQ管 脚。有中断产生且中断enable,就应该执 行相应的ISR。 (2)如上面没有问题,仍不执行,再查一 下是否有比该IRQ等级更高的中断持续 发生屏蔽了该IRQ中断。 特别要注意中断屏蔽寄存器的设置
芯片驱动开发流程
芯片驱动程序的开发,是一个相对独立的开发过程,只 针对具体芯片,不具体到单板,和单板软件的开发过 程是有区别的,芯片驱动程序的开发包括以下步骤: 1、熟悉芯片资料,输出芯片介绍资料。 2、芯片驱动程序详细设计,输出初步的详细设计说 明书。 3、编码,输出供调试用的代码。 4、芯片驱动程序调试,整理详细设计说明书,输出 芯片驱动程序调试报告. 5、测试跟踪优化
设计原则
(4)外部接口函数的数量尽量少,使今后的移植 工作量尽量小。 (5) 驱动程序中所有的函数都是不可重入的,使 用时应该保障在任一时刻没有两个任务同时调用 一个函数。 最终目标:提供的驱动程序,在移植时,只须修 改一些宏定义的值或者改变对外接口函数的参数 值,不用修改程序的任何具体执行语句。也就是 说,开发的芯片驱动程序,作为一个黑盒提供给 用户(指各具体单板应用程序),用户只须修改 几个参数,就可完成调用。
详细设计
目标是确定怎样具体地实现芯片的各种功能,提供 怎样的接口来实现共享,得出对芯片功能的精确 描述,详细设计的结果基本上决定了最终的代码 质量。 设计原则: (1)独立性原则,该驱动程序应尽量与具体应用环境 无关,与具体的操作系统无关; (2)编程语言建议选用标准C语言; (3)为形成有效的驱动程序共享,应尽量使调用简单, 最好只修改一些相应宏定义,即可完成嵌入具体 的应用程序中;
VxWorks 驱动程序开发
深圳微迪软件
2003/03
主要内容
介绍串口、网口、定时器驱动
中断处理及注意事项 驱动开发流程
串口驱动
ddSerial_5.f.pdf
网口驱动
ddEnd_8.f.pdf
轮询与中断处理
ddPolIntr_3.f.pdf
Fra Baidu bibliotek
驱动模式
(1)分层结构,特别对网络协议栈来说有 network protocol/MUX/network driver(EN D,BSD). (2)没有层次的概念,在应用程序中直接访问 硬件的。比方说现在有两种类型的驱动,譬 如USB 和ATM,他们需要直接交换数据,不 想走OS那一套标准的流程,也就是 OS Independent,按照相关协议标准封装 数据包按照硬件定义放入相应的地址空间