- 博客(54)
- 资源 (1)
- 收藏
- 关注
转载 嵌入式Linux之我行——S3C2440上LCD驱动(FrameBuffer)实例开发讲解(二)
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn 开发环境主 机:VMWare--Fedora 9开发板:Mini2440--64MB Nand, Kernel:2
2014-03-31 18:12:21
869
转载 嵌入式Linux之我行——S3C2440上LCD驱动(FrameBuffer)实例开发讲解(一)
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn一、开发环境主 机:VMWare--Fedora 9开发板:Mini2440--64MB Nand, Kernel:2.
2014-03-31 18:11:25
755
转载 Android LCD(四):LCD驱动调试篇
关键词:android LCD TFTSN75LVDS83B TTL-LVDS LCD电压背光电压平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:samsung exynos 4210、exynos 4412 、exynos 5250作者:xubin341719(欢迎转载,请注明作者)欢迎指正错误,共同学习、
2014-03-31 16:12:41
781
转载 Android LCD(三):Samsung LCD接口篇
关键词:android LCD控制器 Framebuffer PWM 平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:samsung exynos 4210、exynos 4412 、exynos 5250作者:xubin341719(欢迎转载,请注明作者)欢迎指正错误,共同学习、共同进步!!
2014-03-31 16:11:40
517
转载 Android LCD(二):LCD常用接口原理篇
平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:samsung exynos 4210、exynos 4412 、exynos 5250作者:xubin341719(欢迎转载,请注明作者)欢迎指正错误,共同学习、共同进步!!下载链接:LCD规格书(404份),之前工作用用到的 、 LCD规格
2014-03-31 16:10:42
683
转载 Android LCD(一):LCD基本原理篇
id="article_content" class="article_content"> style="background:rgb(254,254,254)"><spanstyle="color:#333333">关键词:<spanstyle="color:#333333">android <spanstyle="color:#3333
2014-03-31 16:07:20
553
转载 链接脚本
1、什么是ld?它有什么作用? ld是GNU binutils工具集中的一个,是众多Linkers(链接器)的一种。完成的功能自然也就是链接器的基本功能:把各种目标文件和库文件链接起来,并重定向它们的数据,完成符号解析。Linking其实主要就是完成四个方面的工作:storage allocation、symbol management、libraries、relocation。
2013-12-16 20:42:01
695
原创 GTK常用接口——绘图
绘图//实现过程//在曝光事件信号"expose_event"所连接的回调函数里进行相应的绘图操作gboolean callback (GtkWidget *widget, GdkEventExpose *event, gpointer data){// 绘图的相关操作return FALSE; //如果窗口里有其他控件,函数必
2013-11-09 22:01:00
2026
原创 GTK常用接口——事件处理
事件处理//设置控件捕获相应的事件void gtk_widget_set_events (GtkWidget *widget, gint events); GDK_BUTTON_PRESS_MASK:鼠标点击 GDK_BUTTON_RELEASE_MASK:鼠标释放 GDK_BUTTON_MOTION_MASK:鼠标移动 GDK_KEY_PRE
2013-11-09 21:57:25
2433
原创 GTK常用接口——日历、定时器
日历GtkCalendar//创建日历GtkWidget* gtk_calendar_new (void);//设置年份与月份gboolean gtk_calendar_select_month (GtkCalendar *calendar, guint month, guint year);//设置日历模式void
2013-11-09 21:52:31
1330
原创 GTK常用接口——行编辑、复选框、下拉框
行编辑GtkEntry//创建行编辑GtkWidget* gtk_entry_new (void);//获得文本内容const gchar* gtk_entry_get_text (GtkEntry *entry);//设置行编辑的内容void gtk_entry_set_text
2013-11-09 21:50:22
4854
原创 GTK常用接口——信息对话框、文本选择对话框
信息对话框GtkMessageDialog//创建信息对话框GtkWidget* gtk_message_dialog_new (GtkWindow *parent, GtkDialogFlags flags, GtkMessageType type, GtkButtonsType buttons, gchar *message_format, ...); pa
2013-11-09 21:46:24
3045
原创 GTK常用接口——进度条、滚动窗口、分栏列表
进度条GtkProgressBar//创建进度条GtkWidget* gtk_progress_bar_new (void);//设置进度条显示的百分比void gtk_progress_bar_set_fraction (GtkProgressBar *pbar, gdouble fraction);fraction: 0.0-1
2013-11-09 21:41:17
2565
1
原创 GTK常用接口——图片、图片控件
图片GdkPixbuf//创建图片资源对象GdkPixbuf* gdk_pixbuf_new_from_file (const gchar *filename, GError **error);//创建指定图片大小资源对象GdkPixbuf* gdk_pixbuf_new_from_file_at_size (const char* filename, g
2013-11-09 21:32:04
1380
原创 GTK常用接口——按钮、标签
普通按钮GtkButton//创建普通按钮GtkWidget* gtk_button_new (void);GtkWidget* gtk_button_new_with_label (const gchar* label);//设置按钮文本内容void gtk_button_set_label (G
2013-11-09 21:24:47
1676
原创 GTK常用接口——布局
布局//创建垂直/水平布局容器GtkWidget* gtk_vbox_new (gboolean homogeneous, gint spacing); GtkWidget* gtk_hbox_new (gboolean homogeneous, gint spacing); homogeneous:
2013-11-09 21:01:35
1284
原创 GTK常用接口——窗口
控件GtkWidget//设置控件最小大小void gtk_widget_set_size_request (GtkWidget *widget, gint width, gint height); //设置控件是否可绘制背景 void gtk_widget_set_app_paintable (GtkWidget *widget, gboolean a
2013-11-09 20:48:07
1174
原创 新的关键字
动态内存分配C++中的动态内存分配--C++中通过new关键字进行动态内存申请--C++中的动态内存申请是基于类型进行的--delete关键字用于内存释放变量申请:Type* pointer = new Type;// ......delete pointer;数组申请:Type* pointer = new Type[N];// ......del
2013-09-12 23:49:53
614
原创 函数的升级(下)
重载的概念重载(Overload).同一个标示符在不同的上下文有不同的意义.如:.“洗”和不同的词汇搭配后有不同的含义--洗衣服,洗脸,洗脑,洗马桶,.......“play”和不同的单词搭配后有不同的含义--play chess,play piano,play basketball,......C++中的函数重载函数重载(Function Overlo
2013-09-09 23:46:38
765
原创 函数的升级(上)
内联函数C++中推荐使用内联函数替代宏代码片段C++中使用inline关键字声明内联函数inline int func(int a ,int b){return a }内联函数声明时inline关键字必须和函数定义结合在一起,不是和函数声明结合在一起,否则编译器会直接忽略内联请求C++编译器可以将一个函数进行内联编译被C++编译器内联编译的函数叫做内联函数内
2013-09-08 00:05:16
464
原创 C++中的引用
思考:对于一段连续的存储空间只能有一个别名吗?在C++中新增加了引用的概念.引用可以看做一个已定义变量的别名.引用的语法:Type& name = var;例1: int a = 4; int& b = a; //定义引用b引用a,意味引用b成为了a的别名,a和b指向了同一段内存空间 b = 5; printf(
2013-09-03 01:10:16
542
原创 C到C++的升级
C与C++的关系1.C++继承了所有的C特性2.C++在C的基础上提供了更多的语法和特性3.C++的设计目标是运行效率与开发效率的统一C++对C的加强1.C++中更强调语言的“实用性”,所有的变量都可以在需要使用的时候再定义 for(int i=0; i { for(int j=0; j {
2013-08-28 22:06:54
674
原创 可变参数分析
可变参数C语言中可以定义参数可变的函数,可以增加可以减少,如:printf()参数可变函数的实现依赖于stdarg.h头文件va_list 变量与 va_start,va_end 和 va_arg 配合使用能够访问参数值例1:#include #include stdarg.h>float average(int n, ...){ va_list args;
2013-07-20 22:11:39
471
原创 认清函数的真面目
函数的由来与好处——以下摘自陈正冲《C语言深度剖析》其实在汇编语言阶段,函数这个概念还是比较模糊的。汇编语言的代码往往就是从入口开始一条一条执行,直到遇到跳转指令(比如ARM 指令B 、BL 、BX 、BLX 之类)然后才跳转到目的指令处执行。这个时候所有的代码仅仅是按其将要执行的顺序排列而已。后来人们发现这样写代码非常费劲,容易出错,也不方便。于是想出一个办法,把一些功能相对
2013-07-20 21:49:56
570
原创 野指针和内存操作分析
初始也指针野指针通常是因为指针变量中保存饿值不是一个合法的内存地址而造成的合法的内存地址:1.堆空间申请的动态空间 2.栈空间上的局部变量所占用的空间野指针不是NULL指针,是指不可用内存的指针NULL指针不容易出错,因为if语句很好判断一个指针是不是NULLC语言没有任何手段可以判断一个指针收费为野指针!野指针的由来1.局部指针没有被初始化struct St
2013-07-20 18:07:48
548
原创 程序的内存布局
代码在可执行程序中的对应关系如何执行编译出来的a.out文件呢?命令行敲如a.out文件,之后就可运行了。操作系统怎么知道这是一个可执行程序的呢?操作系统在接到./a.out这个命令后回去读文件头,读文件头看一下这个文件头里面对应的是不是可执行程序的信息。如果是的话,操作系统就知道这是一个可执行程序,操作系统就要为这个可执行程序分配一些内存空间来给其运行。这个内存空间很有可能一部分当做
2013-07-20 15:54:59
576
原创 程序中的栈、堆和静态存储区
一般来说,我们可以简单的理解为内存分为三个部分:静态区,栈,堆。很多书没有把把堆和栈解释清楚,导致初学者总是分不清楚。其实堆栈就是栈,而不是堆。堆的英文是heap ;栈的英文是stack,也翻译为堆栈。堆和栈都有自己的特性。程序中的栈栈是现代计算机程序里最重要的概念之一栈在程序中用于维护函数调用的上下文,没有栈就没有函数,没有局部变量后进先出栈保存了一个函数调用
2013-07-20 12:16:52
588
原创 动态内存分配
为什么使用动态内存分配?C语言中的一切操作都是基于内存的变量和数组都是内存的别名,如何分配这些内存由编译器在编译期间决定.定义数组的时候必须指定数组唱的.而数组长度是在编译期就必须决定的需求:程序运行的过程中,可能需要使用一些额外的内存空间malloc和freemalloc和free用于执行动态内存分配和释放malloc所分配的是一块连续的内存,以字
2013-07-20 11:21:53
587
原创 函数与指针分析
函数类型C语言中的函数有自己特定的类型函数类型由返回值,参数类型,参数个数共同决定参数类型和参数个数隐含了另一个条件:参数顺序例:int add(float i, char j) 的类型为int(int, int),其返回值类型是int,有两个参数,第一个参数float,第二个参数char int ff(double e, int i); //ff函数
2013-07-20 10:26:31
569
原创 数组参数和指针参数的分析
为什么C语言中的数组参数会退化为指针?C语言中只会以值拷贝的方式传递参数,本质上还是传值,传地址也是传值,只不过传的是地址值当向函数传递参数时.将整个数组拷贝一份一份传入函数 错.将数组名看做常量指针传数组首元素地址 对C语言以高效为最初设计目标,在函数传递的时候,如果将拷贝整个数组执行效率将大大下降。 所以数组参数退化为指针
2013-07-20 00:39:04
587
原创 多维数组和多维指针
指向指针的指针指针变量在内存中会占用一定的空间可以定义指针来保存指针变量的地址int main(){ int a = 0; int* p = NULL; int** pp = NULL; pp = &p; //把指针变量p的地址赋给指针变量pp *pp = &a; //解引用pp可以把a的地址赋给p return 0;}int** pp本质上还是指针
2013-07-20 00:02:14
693
原创 指针数组和数组指针分析
int指的是数组元素的类型,而不是数组的类型定义数组类型C语言中通过typedef为数组类型重命名 typedef type(name)[size];数组类型: typedef int(AINT5)[5]; typedef float(AFLOAT10)[10];数组定义:
2013-07-19 22:02:29
490
原创 C语言中的字符串
从概念上讲,C语言中没有字符串类型在C语言中使用字符数组来模拟字符串C语言中的字符串是以‘\0’结束的字符数组C语言中的字符串可以分配于栈空间,堆空间或者只读存储区char s1[] = {'H', 'e', 'l', 'l', 'o'}; //没有‘\0’,所以s1只不过是个单纯的字符数组char s2[] = {'H', 'e', 'l', 'l', 'o', '\0'}
2013-07-19 18:19:21
640
原创 数组与指针分析
指针就是指针,指针变量在32 位系统下,永远占4 个byte ,其值为某一个内存的地址。指针可以指向任何地方,但是不是任何地方你都能通过这个指针变量访问到。 数组就是数组,其大小与元素的类型和个数有关。定义数组时必须指定其元素的类型和个数。数组可以存任何类型的数据,但不能存函数。数组的本质:数组是一段连续的内存空间数组的空间大小为 sizeof(array_type)
2013-07-19 13:22:43
545
原创 数组基础
编译器只给这20字节空间取了一个名字a,数组的每一个元素都没有名字。数组大小:数组在一片连续的内存空间中存储元素数组元素的个数可以显示或隐式指定int a[5] = {1,2}; //显示数组大小sizeof(a) = 20, 数组长度 sizeof(a)/sizeof(*a) = 5 ,指定数组长度,不管初始化列表有多少个元素,都会以指定的长度来作为唯一的指标分配
2013-07-18 23:05:00
483
原创 指针基础
#include int main(){ int i = 5; int* p = &i; printf("%d, %08X\n", i, p); *p = 10; //等价于i = 10; printf("%d, %08X\n", i, p); return 0;}运行输出:
2013-07-18 18:00:22
511
原创 #和##运算符使用解析
#运算符用于在预编译期将宏参数转换为字符串例1:#include #define CONVERS(x) #xint main(){ printf("%s\n", CONVERS(Hello world!)); printf("%s\n", CONVERS(100)); printf("%s\n", CONVERS(while)); p
2013-07-18 16:10:30
436
原创 #pragma预处理分析
#pragma是编译器指示字,用于指示编译器完成一些特定的动作#pragma所定义的很多指示字是编译器和操作系统特有的#pragma在不同的编译器间是不可移植的预处理器将忽略它不认识的#pragma指令,当预处理器看到#pragma后,就不会像处理#define,#include那样来进行进一步的处理,会把#pragma指令留给后续的编译模块,编译模块会根据他的参数执行一系列的动作,编
2013-07-18 12:18:41
699
原创 #error、#warning和#line
#error的用法#error用于生成一个编译错误消息,并停止编译用法 #error message注:message不需要用双引号包围#error编译指示字用于自定义程序员特有的编译错误消息类似的,#warning用于生成编译警告,但不会停止编译例1:#include #define CONST_NAME1 "CONST_NAME1
2013-07-17 18:44:03
1807
原创 宏定义与使用分析
宏定义常量:#define宏定义常量可以出现在代码的任何地方#define从本行开始,之后的代码都可以使用这个宏常量以上宏定义都正确最后一个宏定义采用了接续符“\”,等同于#define PATH_3 D:\Delphi\CTopic3.ppt宏定义表达式#define表达式有函数调用的假象,却不是函数#define表达式可以比函数更强大#defi
2013-07-17 17:56:25
662
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人