tag 标签: 可移植性

相关博文
  • 热度 44
    2012-1-17 01:19
    5283 次阅读|
    21 个评论
    /******************************************************************** * Filename:一线研发之声:嵌入式C编程经验 之 请写可移植性高的模块 * Author:SedateFire E-mail:SedateFire@126.com * Version:1.000 Time: 2012-01-05 * key: 嵌入式  可移植性  模块化  依赖 ********************************************************************/          我想你或许有这样的经验,你要实现的一个模块同事已经实现了。老板发话说:你复用他的代码啊,半天给我搞定。于是你拷过来编译一下,几乎是必然的,会有error有warning,一看,哇,原来依赖了这么多外部的东东。于是你开始着手修改它,如果模块小,自然三两下搞定。如果是个大的模块要复用,一下弹出几百个编译错误报警,我想你边修改心里也边骂娘。   我靠,这个蜂鸣器控制函数为何要去判断当前在作什么应用?!   我靠,这么多缺失的include文件,没有拷过来吗?   我靠,这个函数是什么东东,注释明显对不上,还判断赋值了一堆全局变量。   我靠,这个if处理了,那else呢,哪里去了?这是什么跟什么啊。   我靠,通通删掉干掉,自己加班偷偷重写好了。   什么!老板在催了,我靠靠靠啊…   想必你有共鸣了 ......           那么如何实现可移植性高的代码呢,我就先写几点吧,有些晚了,准备睡觉了   1. 擅用define。 请把“裸露”的常量,用短小又信息准确的宏定义起来,务必全大写。常量的宏定义要大写,我会在后期关于代码规范的主题文章分析。请把设备驱动的io,用define定义分离出来。当然,还有许多妙用,宏定义简直是移植旅行必备佳品。待我后期再整理下思路吧。   2.抽像出平台依赖严重的代码 。比如访问一个特定mcu寄存器,开关中断,清狗指令,中断写法等等。   3.如果可以,我希望你的 .c档中包含的.h档尽可能的少 。这样在移植的时候,你只要看包含了那些.h档,你就知道该模块大概依赖了其他哪些模块。我知道,大多数的程序员都喜欢在.c档的文件头仅有一个 #include "includes.h" 而在includes.h 中包罗万象,这是原罪!当然,要一个萝卜一个坑地梳理清楚.c与.h档的关系,需要长期的工作经验,尤其在编译条件错综复杂时,操作起来的确痛苦且容易出错,但其实这已经预示了你系统架构的某种不合理。   如果没有足够的经验,那么我建议你,先在设备层的.c档尽量包含尽可能少的.h档。然后把设备层的.h档放在includes.h中,给应用层使用。   3. 打造自定义库, 这个准备设专题讲解。   4. 通信数据统一是大端的,内部应用代码统一用数值说话,和大小端无关,不要乱糟糟的一片胡写蛮缠。 少用union, 发送数据时统一用单字节移位发出去,接收时用移位收进来。牺牲了效率,但提高了可移植性。在51中也许不大现实,但在未来M3的大趋势下,效率是可以牺牲的。   5.欲知后事如何,请听下回分解....  
相关资源
  • 所需E币: 5
    时间: 2021-9-1 21:55
    大小: 1.44MB
    上传者: czd886
    PIC16F87XA系列MCU的可移植性分析与设计
  • 所需E币: 4
    时间: 2020-11-17 20:03
    大小: 2.08MB
    上传者: xgp416
    [摘要]采用分步方法来验证嵌入式处理器与设计其他部分之间的交互,可在验证流程中及早发现错误,以便最轻松地进行调试和纠正,从而节省时间。使用可移植性激励,可从描述的测试意图着手,生成高质量的测试激励,并将目标重定向到多个环境。  本文展示了如何针对SoC集成测试所包含的
  • 所需E币: 3
    时间: 2019-12-25 15:38
    大小: 211.23KB
    上传者: rdg1993
    在基于PXA255处理器的系统上对一种广泛应用的Bootloader--BLOB(BootLoaderObject)的启动流程进行分析,并以此为根据就一般引导程序的可移植性进行了研究.BLOB启动流程分析及引导程序可移植性研究周永冠1,林喜荣1一,周斌2(1..清华大学深圳研究生院,广东深圳518055;2.清华大学精密仪器与机械学系精密测试技术及仪器国家重点实验室,北京100084)摘要:在基于PXA255处理器的系统上对一种广泛应用的B∞tl∞de卜BLoB(BootI司Iad盯Object)的启动流程进行分析,并以此为根据就一般引导程序的可移植性进行了研究。关键词:引导程序BLOB可移植性在嵌入式系统应用中,通过引导程序(B00d∞d盯)可SAll00、sAlll0、PXA255、P)蝴等,用户可以根据目标以初始化硬件设备、建立内存空间的映射图、加载内核。板的特性进行定制。它能实现以下功能:从而将系统的软硬件环境带到一个合适的状态,以便为(1)引导嵌入式Hn呱,它可以把Ijn似、K印lel等从最终调用操作系统内核准备好正确的环境【¨。B∞tload盱n舾h加载到RAM中执行;依赖于实际的硬件和应用环境,对于不同的硬件架构以……
  • 所需E币: 4
    时间: 2019-12-25 12:17
    大小: 206.32KB
    上传者: quw431979_163.com
    基于arms3c44b0x处理器的Bootloader设计和实现维普资讯http://www.cqvip.com第26卷第7期计算机应用Vo1.26No.72006年7月Computer……
  • 所需E币: 3
    时间: 2019-12-25 10:21
    大小: 206.32KB
    上传者: givh79_163.com
    基于ARM3C44B0x处理器的Bootloader设计和实现维普资讯http://www.cqvip.com第26卷第7期计算机应用Vo1.26No.72006年7月Computer……