自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(21)
  • 收藏
  • 关注

转载 跟我一起写Makefile

0 Makefile概述 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefi

2015-06-30 16:38:14 238

原创 arm-linux-gcc/ld/objcopy/objdump参数总结

arm-linux-gcc/ld/objcopy/objdump参数总结 arm-linux-gcc -wall -O2 -c -o @@ <-o 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件 -Wall 指定产生全部的警告信息 -O2 编译器对程序提供的编译优化选项,在编译的时候使用该选项,可以使生成的执行文件的执行效率提高 -c 表示只要求编译器进行编译,而不要进行链

2015-06-30 16:36:35 306

转载 bin和elf文件格式的区别

嵌入式开发的时候,我们的编译一个*.S文件,并最终生成bin文件,编译命令大致如下:CC=arm–linux-gccLD=arm–linux-ldOBJCOPY=arm–linux-objcopy(CC)−g(CC) -g (CFLAG) -c boot.S #先将boot.S文件生成boot.o(LD)−g−Bstatic−T(LD) -g -Bstatic -T(LDFILE) -Tte

2015-06-30 16:35:58 693

原创 bin和elf文件格式的区别

嵌入式开发的时候,我们的编译一个*.S文件,并最终生成bin文件,编译命令大致如下:CC=arm–linux-gccLD=arm–linux-ldOBJCOPY=arm–linux-objcopy(CC)−g(CC) -g (CFLAG) -c boot.S #先将boot.S文件生成boot.o(LD)−g−Bstatic−T(LD) -g -Bstatic -T(L

2015-06-30 16:31:50 499

原创 ARM中断笔记

一、ARM体系CPU有以下7种工作模式: 1、用户模式(usr):正常的程序执行模式。不能直接切换到其他模式 2、系统模式(sys):运行操作系统的特权任务。与用户模式类似,但具有直接切换到其他模式等特权 3、快速中断模式(fiq):支持高速数据传输以及通道处理。FIQ异常响应时进入此模式 4、中断模式(irq):用于通用中断处理。IRQ异常响应时进入此模式 5、管理模式(svc):操作系

2015-06-30 15:47:14 591

原创 第16章 C++标准模板库STL

分为三种情况来看: 1)输入的字符串不超过限定大小 cin.get() 读取一个字符包括换行符 cin.get(char *,Size):读取所有字符,遇到’\n’时止,并且将’\n’留在输入缓冲区中,其将被下一个读取输入的操作捕获,影响该输入处理; getline(cin,string s):读取所有字符,遇到’\n’时止,并且将’\n’直接

2015-06-27 15:00:21 396

原创 第17章 输入输出和文件

C++程序通常在用户按下回车键时刷新输入缓冲区,通常在用户发送换行符时刷新输出缓冲区。这取决于具体的实现。程序到达输入语句时,它将刷新输出缓冲区中当前所有的输出。cout << “Enter:” float num cin >>num文件IOofstream fout fout.open(“1.txt”)或者 ofstream fout(“1.txt”) 以默认方式打开时,没有文件会创建文

2015-06-22 20:25:50 308

原创 第14章 C++代码重用

模板类对象的生成valarray v1;包含类的对象的类在创建构造函数时应调用所包含的类的构造函数初始化这部分类对象私有继承和包含特性相同:获得实现,但是不获得接口。公有继承获得接口私有继承也可以同包含一样,用来实现has-a关系使用多个基类的继承被称为多重继承。若是公有继承将导致一些问题,必须使用额外的语法规则来解决它们。//初始化基类组件包含提供了被显式命名的对象成员,而私有继承提供了两个无名称

2015-06-22 20:24:54 411

转载 QT入门心得

首先说说为什么要学习QT(一是因为牛叉的跨平台特性将来方便移植到嵌入式,而是本身自己学过c过度到c++比较容易,所以就选择了)Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和

2015-06-19 21:18:58 493

原创 C++第13章 类继承

C++语言中类定义的默认权限是private。class RatedPlayer:public TableTennisPlayer{}上述继承的是一个公有基类,这称为公有派生。派生类对象包含基类对象。使用公有派生,基类的公有成员将称为派生类的公有成员,基类的私有部分也将称为派生类的一部分,但是只能通过基类的工头和保护方法访问。派生类可以使用基类的方法,条件是方法不是基类私有的。基类指针可以在不进行显

2015-06-17 21:18:40 433

原创 C++第12章项目,ATM机模拟队列。

//笔记:

2015-06-17 21:18:01 467

原创 第12章 类和动态内存分配

为什么不能在类声明中初始化静态成员变量?当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态数据成员的用途之一是统计有多少个对象实际存在。 静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在够造函数中

2015-06-15 21:02:36 350

原创 第06课 ARM中断

最近在学ARM9的裸板编程,中断对设备的控制特别重要,故了解其过程非常重要。 下图可以看到整个中断机制的硬件处理过程。S3C2440的datasheet里面写着ARM芯片总共有60个中断源,网友也有讨论过不是60个之类的,但是我们以datasheet为准。中断源分内部中断源和外部中断源,I/O的属于外部中断源。 中断能否成功处理,有两部分,1是触发中断信号,2是ARM能否识别中断。 1触发中断

2015-06-13 15:35:57 497

原创 C++第11章,使用类

运算符重载 operator+(argument-list) 假设有一个Saleperson类 如果a,b,c都是其对象。 a = b + c; 等价于 a = b.operator+(c)隐式的使用b,显式的使用ca = b + c + d ; a = b.operator+( c + d) a = b.operator+(c.operator+(d)); 重载限制: 重载后

2015-06-13 09:47:44 326

原创 C++ Const详解,包含类对象的类

1、非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误)2、表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,    任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用);3、唯一的例外是对于mutable修饰的成员。    加了const的成员函数可以被非const对象和const对象调用

2015-06-11 19:52:27 1176

转载 volatile与指针

volatile用在如下的几个地方:1、中断服务程序中修改的供其它程序检测的变量需要加volatile;2、多任务环境下各任务间共享的标志应该加volatile;3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;volatile修饰指针一般用在共享指针上面。下面代码:uchar * volatile reg;

2015-06-07 21:45:42 505

原创 C++ 第8章 函数探幽

常量引用double refcube(const double &ra) : 当编译器发现代码修改了ra的值时,将会生成错误信息。如果编写基本数值类型的函数,应该采用按值传递。而不要采用引用。当数据比较大的时候,如结构或者类,引用参数将会很有用。左值可以表示对象,即具有对应的可以由用户访问的存储单元(应特别注意和类风格面向对象中的对象——类的实例的区别;Java等语言的对象即使

2015-06-07 19:26:02 258

原创 指针的注意事项

指针占的内存大小和平台有关,比如ARM32位 就是4字节,与指针的类型无关,指针本身存储着一个4字节的地址,*p是告诉编译器,把指针指向的地址的内容解释为什么,跟定义指针的类型有关,对指针的运算,也是基于指针定义的类型int main(){    unsigned char * p = (unsigned char *)0x30000000;    pr

2015-06-05 16:14:20 320

原创 第5课 NAND FLASH 控制器

从硬件上访问Nand flash1,.命令 CLE2.Addr  ALE3 数据从软件上,2440通过NAND FALSH控制器来控制。C语言的函数参数分别对应于寄存器R0,R1,R2,R3ATPCS即ARM-THUMB procedure call standard(ARM-Thumb过程调用标准)的简称。

2015-06-03 09:07:58 854

转载 ARM GCC中内联汇编语法

ARM嵌入式开发中的GCC内联汇编简介嵌入式开发交流群280352802,欢迎加入!在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了唯一的选择。但如果完全通过汇编代码实现,又会过于复杂、难以调试。因此,C语言内嵌汇编的方式倒是一个不错的选择。然而,使用内联汇编的一个主要问题是,内联汇编的语法格式与使用的编译器直接

2015-06-02 10:53:00 2057

原创 第4课 MMU内存管理单元

MMU主要作用:1.权限管理:静止程序的非法访问,如访问内核空间,其他程序的地址空间2.地址映射。MMU提供了虚拟地址到物理地址的映射(CPU使用虚拟地址)。测试,hello1,hello2.映射成连续的地址空间。方便的实现动态内存的管理。CPU不关心发出的是物理地址还是虚拟地址。链接地址(没有虚拟地址,和物理地址的概念,就是一个单纯的地址),而是从CPU的角度看到的,从CPU角度

2015-06-01 09:36:39 393

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除