首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式硬件电路基础总结-5

嵌入式硬件电路基础总结-5

6.4 面向硬件构件底层驱动程序要求

——>独立编程的实体就是硬件构件,硬件构件分为内部构件和外部构件,内部构件如系统初始化、定时器、Flash、串口等,外部构件如LED、形状、按钮、电机等
——>对每个硬件构件编写独立的驱动程序:每个构件对应一个头文件和源文件,如果构件是外部构件,则要在头文件中用宏定义构件接在哪个脚上,头文件只声明供外部调用的功能函数;也就是说,其他人只要看头文件函数声明就知道如何使用此构件而无需去看源文件去阅读代码
——>一般函数的命名规则是:构件_功能
——>如果一个函数只供构件功能函数内部调用,则此函数在源文件里面声明和实现,不出现在头文件里,并声明为static函数
——>如果一个全局变量只供某模块使用,则可以把此全局变量定义为static
——>模块函数就实现此模块要实现的功能,模块内部之间不能相互调用;可以通过返回值告诉高端,让高端根据返回值来决定是否调用串口子程序
——>返回值问题:如果只返回一个基本类型的返回值,则用返回值返回此值也可;如果返回一个复杂类型的返回值,比如一个struct结构体,则用返回值返回的话要进行复制,开销很大,此时用传地址方式返回;如果返回的值很多,可以把这些值定义在一个struct里面,通过指针形式返回
——>函数命名要合理,所有的函数代码编写方式有一个统一的风格,注意对齐
——>尽量用效率高的方式编码,比如乘除可以用移位来实现
——>驱动程序一般在两个地方调用:一个是main函数,一个是中断处理函数
——>变量分为全局变量、堆栈变量、函数内静态变量、文件内静态变量和寄存器变量
——>寄存器变量当某个变量频繁使用很多次的时候为了避免每次从内在中读它,而把它放在寄存器中来改变性能
——>如果一个变量只有函数中使用,并且要一直存在,则命名为函数内静态变量,如果一个函数只在某个源文件中使用,此源文件各个函数通过此变量来通信,则此变量命名为文件内静态变量
——>全局变量前面加前缀g,静态变量前面加前缀s,寄存器变量前面加前缀r;不管使用何种命名写法,全局要统一一致,不能两种混合使用




6.5 硬件驱动模块的测试要求

——>对于已经设计好的驱动模块,必须经过严格的测试后才能使用;同时,测试过程要以目录的形式保留下来,用于备案
——>对于有可视结果的模块先行测试
——>测试只能证明错误的存在,而不能证明错误的不存在
——>不能简单的直接在无可视执行结果的模块的测试中直接修改
——>用于测试驱动模块的工程中,必须要有一个用于记录测试信息的文本文件,记录的内容包括测试人,测试时间、测试结果及意见等相关信息
——>通过把测试用例放到静态变量中,然后不断修改静态变量,实现了自动对测试用例的覆盖测试
——>可使用辅助测试工具测试
返回列表