
程序语言
文章平均质量分 91
天才2012
天生我‘才’必有用
展开
-
GCC编译过程浅析
GCC编译过程浅析 2012-01-08 17:07:18| 分类: 编程技术 | 标签:linux 编程 学习笔记 |字号 订阅 前几天看了《程序员的自我修养——链接、装载与库》中的第二章“编译和链接”,主要根据其中的内容简单总结一下C程序编译的过程吧。我现在一般都是用gcc,所以自然以转载 2012-04-27 18:09:40 · 1279 阅读 · 0 评论 -
C语言小程序(131116)
1.尔秘多项式的实现#include #include int hermite(int n, int x){ if(n <= 0) { return 1; } else if(n == 1) { return 2*x; } else { return 2*x*hermite(n-1, x)-2*(n-1)*hermite(n-2, x); }}int mai原创 2013-11-16 15:27:53 · 1386 阅读 · 0 评论 -
DSP的cache一般在何时会生效,防止在cache使用造成数据不一致
在使用DSP的cache使能所有的ddr操作时,发现如果只是写操作,根据cache的机制,如果没有在了L1级hit,则直接使用write buffer来完成写操作。假如hit的话,那之前一定发生过读操作,比如移位某个字,肯定是先读入L2,L1,进入S模块移位完成后再输回到L1。这样就不得不在完成这个操作后进行一定的cache会写和无效操作,把最终的数据写回ddr中去。原创 2013-10-11 10:33:03 · 3709 阅读 · 0 评论 -
DM6437下裸定时器在CC5.4下开发的疑问现象解决
之前写的code发现有Bug存在,于是去调试这个定时器,悲剧的时当时自己使用的最简单的定时模式,竟然出现一些难以理解的现象。DM6437的Time有64bit ,32 bit等最简单的定时模式,对应的工作末模式包括once stop 和continous 模;以配置64bit模式如下:/*set 1us unit times*/void timer0_init(Uint32 time原创 2013-11-26 20:25:14 · 2550 阅读 · 2 评论 -
C语言小程序(131114)
1.简单的排序#include void sort1(unsigned char *a, unsigned int n);void sort2(unsigned char *a, unsigned int n);void main(){ unsigned int i; unsigned char a[] = {12,15,100,1,0,3,2,4,8,9,6,11}; f原创 2013-10-10 23:37:02 · 1441 阅读 · 1 评论 -
由驱动板级初始化发生的联想:内核解压,机器码匹配,uboot之bootm解析
#ifndef _LINUX_INIT_H#define _LINUX_INIT_H#include 。。。。。/* These are for everybody (although not all archs will actually discard it in modules) */#define __init __section(.init.text)原创 2013-03-04 15:55:50 · 3306 阅读 · 0 评论 -
gcc新版本引起的编译错误(命令执行时的外部库输入位置)
昨天,遇到一个比较bug的错误,用gcc来编译几个简单的文件出错,编译环境为x86_64的Ubuntu12.04,gcc版本号如下:gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3编译如下命令,主要是需要添加一个常用数学库libm.so。编译的语法如下出现了如下的错误:gcc -lm main.c bp_alg_api.c -o test还是会出现没有链接时指定的库原创 2014-06-05 11:53:22 · 2695 阅读 · 0 评论 -
C语言编程积累2
寥寥数笔,记录我的C语言盲点笔记,只为曾经经历过,亦有误,可交流。1.implict declartion of function 指的是在预处理时没有函数的申明,但该函数在别的函数中进行了编译与调用,编译可以完成链接但是会给出warning,需要提前申明2. sizeof是一个operand操作符,不能直接对其进行&取地址操作。是一个编译器自动算大小的函数,在预处理时。和宏定义有所类似。size原创 2014-05-26 22:13:11 · 2233 阅读 · 0 评论 -
c语言编写经验逐步积累3
寥寥数笔,记录我的C语言盲点笔记,只为曾经经历过,亦有误,可交流。 1.typedef来定义一个函数指针类型的方法,定义一个新的函数指针类型。:建立一个类型别名的方法很简单,在传统的变量声明表达式里用类型名替代变量名,然后把关键字typedef加在该语句的开头”。typedef int (*PFUN)(): 定义PFUN这个函数指针类型,由编译器自动来完成,比如PFUN pfun;定义了一个函数指原创 2014-05-26 22:14:13 · 3153 阅读 · 0 评论 -
c语言编写经验逐步积累4
寥寥数笔,记录我的C语言盲点笔记,只为曾经经历过,亦有误,可交流。1.逻辑表达式的使用取值 = 表达式 ? 表达式1:表达式2;比如x = y > z ? y:z2."+,-"等逻辑运算符优先级大于移位,移位大于逻辑运算3.sizeof在编译时由编译器完成,对其传入的参数不做运算处理。sizeof(i++);返回4;不会对实际的i进行操作sizeof和strlen的区别是,后者是运算时执行。返回遇原创 2014-05-26 22:16:19 · 2435 阅读 · 0 评论 -
C语言盲点笔记1
寥寥数笔,记录我的C语言盲点笔记,只为曾经经历过,亦有误,可交流。1.int* a和int *a有区别吗?没有任何区别,都表示a是int指针建议这么写int *a;这样明显一点理由如下int *a,b;a是指针,b是整形,一幕了然但是你如果写成int* a,b;虽然a还是指针,b还是整形但是a前面没直接跟*,一不留神,还真把b看成指针了2.C语言中和单片机C语言的数据类型char,前原创 2014-05-26 22:10:13 · 2810 阅读 · 2 评论 -
记linux内核处理bootargs到内核并加载模块时传入参数(module_param_named()等)
昨晚,一网友问我如何把LCD反转一下输出,顿时不会,只会去看之前的dm3730的linux2.6.32的内核。偶然发现直接设置bootargs的参数到内核也许就可以啦。Linux以内核模块为核心,自动编译如系统后,所以的类似init_call等都会存放在Init的section中。类似的,一个模块中经过module_param()和module_param_named()设置的参数。原创 2013-11-15 14:16:45 · 10906 阅读 · 0 评论 -
Android Camera HAL3中预览preview模式下的控制流
Android Camera HAL3中预览preview模式下的控制流原创 2015-10-10 16:07:39 · 16239 阅读 · 4 评论 -
记录几个C++多继承中,this指针与多虚表间编译与处理的疑问,看编译器的行为。
简单无理的的测试代码:#include #include using namespace std;class A{public: int x; int y;public: A(){ cout<<"构造函数A传入的this指针得值是:"<<std::hex<<std::showbase<<this<<endl;}原创 2015-10-19 14:58:31 · 4320 阅读 · 0 评论 -
TI的JPEG算法库在DM6437上的实现之encode和decode
TI的media library:h.264,MPEG,JPEG等都基于XDAIS和XDM的标志算法结构来实现。在此基础上有产生了DMAI等2次封装用于在Davinci的开发。做为TI的算法合成标准,XDA原创 2013-10-21 12:02:39 · 3341 阅读 · 0 评论 -
DM6437 C64X+ EDMA 疑惑总结记录
总结一下DM6437中的EDMA的使用出现的问题,方便以后再开发定位问题。1.EDMA Link 和 Chain的区别link实现了DMA的自动重加载(非静态模式)chain是不更新param set表,直接event对应的param。 2. transfer completioncode(TCC)a.OPT中的TCC决定了pending bit的位置,不需要做到和chan原创 2013-09-24 21:38:32 · 3673 阅读 · 2 评论 -
C语言link过程详解(多文件编译过程)
C语言link过程详解(多文件编译过程)详解link有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后,或许会有一些答案。首先看看我们是如何写一个程序的。如果转载 2012-04-28 10:53:13 · 4545 阅读 · 0 评论 -
结构体定义 typedef struct 用法详解和用法小结
结构体定义 typedef struct 用法详解和用法小结typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于:若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n;若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时转载 2012-04-20 15:26:02 · 1749 阅读 · 0 评论 -
数组名和指针的区别与大家分享下
最近写着写着,感觉自己基础还是不行,编译遇到很多问题许多程序员对数组名和指针的区别不甚明了,他们认为数组名就是指针,而实际上数组名和指针有很大区别,在使用时要进行正确区分,其区分规则如下:规则1 数组名指代一种数据结构,这种数据结构就是数组; char str[10]; char *pStr = s转载 2012-05-09 20:19:47 · 1152 阅读 · 0 评论 -
大BOSS语录
研究生:三个划:谋划,规划,计划。能力:学术+创新能力+研究能力。应用:论文,专利,项目申请书,文献综述,软著,出书。团队:合作——>压力——>不要守,要进取。研一:一篇小论文。研二:技术报告,2篇论文。提前毕业:优秀论文。每天工作时间:13-14小时,平均12小时。文档:文档资料归档,研究阶段报告(一学期2个报告)。平时:及时总结,把握平时。 宗旨原创 2012-05-11 14:38:53 · 1799 阅读 · 0 评论 -
Linux下DM644x设备驱动I2C之总线驱动(二)详解
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:200803090209@zjut.com,gzzaigcn2012@gmail.com I2总线驱动的另一块内容就是适配器对应的algorithm结构体,在这个结构体中的主要内容是完成I2C控制器数据的传输与接收和硬件密切相关static struct i2c_algori原创 2012-07-05 10:36:39 · 3353 阅读 · 0 评论 -
Linux下DM644x设备驱动I2C之设备驱动架构详解
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:200803090209@zjut.com,gzzaigcn2012@gmail.com 2.I2C之设备驱动开发在I2C的驱动开发中,另一块主要内容是设备的驱动开发。在这里以tlv320ai23.c来分析主要的驱动架构。在前面的博文中,主要介绍了I2C驱动开发下的总线开发架原创 2012-07-05 13:23:04 · 2626 阅读 · 0 评论 -
Linux下DM644x设备驱动I2C之总线驱动(一)详解
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:200803090209@zjut.com,gzzaigcn2012@gmail.com linux DM6441下I2C设备驱动的开发前言:和常用的Linux I2C的驱动开发一样,主要包括总线Bus驱动,以及相应的设备驱动开发。总线驱动和CPU的关系较为密切,原创 2012-07-04 22:04:36 · 4694 阅读 · 0 评论 -
DM6446的视频前端VPFE驱动之ioctl控制(视频缓存区,CCDC,decoder)解析之二
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:200803090209@zjut.com,gzzaigcn2012@gmail.com 本文承接上文的主要内容,对视频缓存区队列的相关执行过程进行一个解析。先给出之前的应用层的调用流程本文主要涉及到的命令为VIDIOC_QBUF,VIDIOC_DQBUF,VIDIOC_ST原创 2012-07-17 11:40:00 · 6434 阅读 · 0 评论 -
DM6446的视频前端VPFE的驱动大框架解析
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:200803090209@zjut.com,gzzaigcn2012@gmail.com dm6446是基于Davinci架构设计的多媒体处理器。在这里我们分析的Linux源码是montavista的2.6.10的版本,该源码中使用的视频驱动架构为V4L2的框架。对这个框架原创 2012-07-16 09:53:20 · 6721 阅读 · 0 评论 -
RISC和CISC的关系
CISC指令的特点是指令数量多,功能丰富,但造成的结果就是指令长度不同,执行指令需要的时间也就不同,比如在8086指令中的MOV指令,当操作数不同时,指令长度不同,执行的时间也不同,比如MOV AX,BX需要的时间为2个周期;而MOV BX,12H需要4个周期;MOV [2000H],AX需要10个周期……这样的结果就是只有当前的指令执行之后才能执行下一条指令,执行一段程序需要的时间就很长了。转载 2013-05-23 22:55:46 · 4689 阅读 · 0 评论 -
DM6446的视频前端VPFE驱动之ioctl控制(视频缓存区,CCDC,decoder)解析之一
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:200803090209@zjut.com,gzzaigcn2012@gmail.com 在这里分析驱动的ioctl的内容时,需要结合相关的应用层的操作,之前我已经说过,这块V4L2的控制都是Ioclt实现的,在完成前期的驱动后,后续的系统调用都由他来完成,主要通过应用层发送一定的原创 2012-07-16 11:08:12 · 5484 阅读 · 0 评论 -
CCS5 above中的image analyze工具的参数配置
核心配置参数:1.Image format图像格式,YUV,GRB,Bayer raw data等可选择2.常用YUV模式配置:Stride(YUV的跨度,比如UYVY是Y隔着2,U,V隔着4出现)。一行的stride就是一行的字节数,YUV422一行为行像素点数的2倍)Mask为取YUV的所在位置。但是实验出来,取数字是本应该是Y 是0xFF00,但貌似CCS5.4中是读取时大端排序原创 2013-07-10 16:06:35 · 3595 阅读 · 0 评论 -
dsp下基于双循环缓冲队列的视频采集和显示记录
dsp下基于双循环缓冲队列的视频采集和显示记录原创 2013-09-04 22:14:28 · 2892 阅读 · 0 评论 -
C的小程序记录(更新131006)
1.通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。#include "stdio.h"#include "string.h"void string_filter(char *s_in, int len, char *s_out);int main原创 2013-09-26 13:55:27 · 1425 阅读 · 0 评论 -
写给我的2013
前沿:代码看的累了,在新的一年终于可以找点时间来回忆我的2013。想着要写点什么,可是又没有什么可以写。因为回忆无非就是夹杂着些许痛苦与欢乐。原创 2014-01-03 23:18:47 · 8337 阅读 · 21 评论