2011年11月28日

Lex和Yacc应用方法(转)

摘要: Lex(Lexical Analyzar 词法分析生成器),Yacc(Yet Another Compiler Compiler编译器代码生成器)是Unix下十分重要的词法分析,语法分析的工具。经常用于语言分析,公式编译等广泛领域。遗憾的是网上中文资料介绍不是过于简单,就是跳跃太大,入门参考意义并不大。本文通过循序渐进的例子,从0开始了解掌握Lex和Yacc的用法。<本系列文章的地址:http://blog.csdn.net/liwei_cmg/category/207528.aspx>一.Lex(Lexical Analyzar) 初步示例先看简单的例子(注:本文所有实例皆在Re 阅读全文

posted @ 2011-11-28 10:36 千兵卫博士 阅读(2864) 评论(0) 推荐(0) 编辑

2011年11月25日

部分功能函数命名总结(补充中)

摘要: 在读代码中难免遇到看不懂的函数命名、结构体的英文命名等,在这里记一下,顺便也学习英语了~~在自己写代码的时候也可方便查找,直观方便。动词英汉accept接收convert转变、转换handle处理;句柄interleave交叉、交替(收取、发送)paser从语法上描述或分析;分析、剖析probe调查、查找process处理(数据)、检查remove删除、除去reschedule重订时间表 简写:reschedscan扫描、粗略看strip除去,取走名词英汉event事件interval间隔时间policy政策, 方针session开庭、开会statement声明token标志、象征、记号、令. 阅读全文

posted @ 2011-11-25 12:45 千兵卫博士 阅读(298) 评论(1) 推荐(1) 编辑

2011年11月23日

流媒体网络传输协议

摘要: 一、RTP传输协议二、RTCP数据传输控制协议三、 RTSP实时流媒体协议四、 RSVP资源预留协议------------------------------------------------------------------------------------------------------------------- 流媒体实现的关键技术是流式传输,因此,流媒体传输协议无疑成为流媒体技术的重中之重,流媒体协议的设计和制定是为了实现流媒体服务器和客户端的通讯。在流媒体传输中,标准的协议是RTP(Real-time Transport Protocol,实时传输协议)、RTCP(Rea 阅读全文

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

2011年11月18日

C专家编程笔记(未完)

摘要: 编程习惯关键字编程习惯1.进行比较时避免错写为赋值 if(i==3)错写成if(i=3) 应写为: if (3==i) ,这样,如果不小心误用了赋值符号,编译器会发出“attempted assighnment to literal(试图向常数赋值)”的错误信息。关键字1.auto 这个关键字只对创建符号表入口的编译器设计者有意义。意思是“在进入程序块时自动进行内存分配”(与全局静态分配或在对上动态分配相反)。其他程序员不必操心auto这个关键字,它是缺省的变量内存分配模式。2.register 这个关键字能给编译器设计者提供线索,就是程序中的哪些变量会经常被使用,这样就可以把它们存放在寄存器 阅读全文

posted @ 2011-11-18 17:22 千兵卫博士 阅读(205) 评论(0) 推荐(0) 编辑

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 千兵卫博士 阅读(267) 评论(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 千兵卫博士 阅读(1723) 评论(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) 编辑

2011年11月14日

Linux的多线程编程的高效开发经验

摘要: 背景Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多线程编程上的问题,并分别引出相关改善的开发经验,用以避免这些的陷阱。我们希望这些经验可以帮助读者们能更好更快的熟悉 Linux 平台的多线程编程。我们假设读者都已经很熟悉 Linux 平台上基本的线程编程的 Pthread 库 API 。其他的第三方用以线程编程的库,如 boost,将不会在本文中提及。本文中主要涉及的题材包括线程开发中的线程管理,互斥变量, 阅读全文

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

导航