2011年11月16日

C语言高效编程的几招

摘要: 引 言: 编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。第1招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招——以空间换时间。例如:字符串的赋值。方法A,通常的办法:#define LEN 32char string1 [LEN];memset (string1,0,LEN);strcpy (string1,“This is a example!!”);方法B:const char string2[LEN] =“This is a .. 阅读全文

posted @ 2011-11-16 16:30 千兵卫博士 阅读(250) 评论(0) 推荐(0) 编辑

C语言嵌入式系统编程修炼之六性能优化

摘要: 在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个: 错误做法:#define MIN(A,B) ( A <= B ? A : B ) 正确做法:#define MIN(A,B) ((A)<= (B) ? (A) : (B) ) 对于宏,我们需要知道三点: (1)宏定义"像"函数; (2)宏定义不是函数,因而需要括上所有"参数"; (3)宏定义可能产生副作用。 下面的代码:least = MIN(*p+ 阅读全文

posted @ 2011-11-16 16:29 千兵卫博士 阅读(268) 评论(0) 推荐(0) 编辑

uboot-2009.03成功移植到mini2440

摘要: 一、移植环境主 机:RedHat 开发板:友善之臂mini2440编译器:arm-linux-gcc-4.3.2.tgzu-boot:u-boot-2009.03.tar.bz2二、移植步骤建立自己的开发板项目并测试编译。目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但没有2440,所以我们就在这里建立自己的开发板项目。1)因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目, 阅读全文

posted @ 2011-11-16 16:26 千兵卫博士 阅读(1725) 评论(0) 推荐(0) 编辑

U-BOOT源码分析及移植

摘要: 本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网络功能。 这些认识源于自己移植u-boot过程中查找的资料和对源码的简单阅读。下面主要以smdk2410为分析对象。一、u-boot工程的总体结构:1、源代码组织对于ARM而言,主要的目录如下:board 平台依赖 存放电路板相关的目录文件,每一套板子对 应一个目录。如smdk2410(arm92. 阅读全文

posted @ 2011-11-16 16:23 千兵卫博士 阅读(541) 评论(0) 推荐(1) 编辑

Linux系统下遇到的问题总结(未完)

摘要: 解压缩权限丢失:自己编写的头文件链接无法正常引用结构体无法正常引用系统头文件解压缩权限丢失:下载的压缩包要在Linux下解压缩,若在Windows下会丢失x权限使用命令 chmod +x 添加权限自己编写的头文件链接:无法引用自己写的头文件 make后显示 error:xxx.h: No such file or directory需要在makefile中指明头文件地址: 例如 gcc -c -I/home/sui/code/ main.c无法正常引用结构体:函数 int router_traversal( struct ipc_socket *socket, struct process * 阅读全文

posted @ 2011-11-16 11:39 千兵卫博士 阅读(443) 评论(0) 推荐(1) 编辑

导航