木有寸557

 

08 2013 档案

C/C++关键字 extern
摘要:1.基本解释:extern 可置于变量或函数前面,表示变量或函数的定义在别的文件中,以提示编译器遇到此变量或函数时在其他模块中寻找定义。 extern还有另外2个作用。第一:与“C”连用时,如 extern "C" void fun( int a, int b );表示编译器在编译fun这个函数时,按照C的规则翻译相关的函数名而不是C++。C++会把这个函数名翻译的面目全非,因为C++函数能重载。 第二:extern 不与“C”一起修饰全局变量或函数时,如:extern int g_Int;它的作用就是申明函数或全局变量的作用范围的关键字。其申明的函数或全局变量可在本模块或 阅读全文

posted @ 2013-08-14 22:28 小猪_你快跑 阅读(194) 评论(0) 推荐(0)

BootLoader 详解(3)
摘要:BootLoader的stage2 stage2的代码是C语言来实现的,以便于实现更复杂的功能和取得更好的代码可读性和移植性。它与普通C语言程序不同的是,在编译和链接BootLoader这样的程序时,不能使用glibc库中的任何支持函数。这就带来了一个问题,从哪里跳转到main()函数呢?直接把main()函数的起始地址作为stage2执行映像的入口点。但这样做有2个缺点:1)无法通过main()函数传递函数参数; 2)无法处理main()函数返回的情况。一种更为巧妙的方法是利用trampoline(弹簧床)的概念。用汇编写一段trampoline小程序,并将这段小程序作为stage2可执行映 阅读全文

posted @ 2013-08-08 10:52 小猪_你快跑 阅读(519) 评论(0) 推荐(0)

BootLoader 详解(2)
摘要:BootLoader的stage1 1.基本的硬件初始化 这是BootLoader一开始就执行的操作,其目的是为stage2的执行以及随后的kernel的执行准备好一些基本的硬件环境。它通 常包括以下步骤 ①屏蔽所有中断。为中断提供服务通常是OS设备驱动程序的责任,因此在BootLoader的执行全过程中可以不比响应任何中断。中 断屏蔽可以通过写CPU的中断屏蔽寄存器或者状态寄存器(比如ARM的CPSR寄存器)来完成。 ②设置CPU的时钟和频率 ③RAM初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等 ④初始化LED。通过GPIO来驱动LED,其目... 阅读全文

posted @ 2013-08-07 20:57 小猪_你快跑 阅读(787) 评论(0) 推荐(0)

BootLoader 详解(1)
摘要:1. Boot Loader的概念 BootLoader就是在操作系统内核运行前之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 1.BootLoader 的安装媒介 系统加电或者复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址取指令。比如,基于ARM7TDMI core 的CPU在复位时通常从地址0x00000000取它的第一条指令。而基于CPU构建的嵌入式系统通常都在某种类型的固态设备(比如ROM、EEPROM、FLASH)被映射到这个预先安排的地址上。... 阅读全文

posted @ 2013-08-07 10:43 小猪_你快跑 阅读(1500) 评论(0) 推荐(0)

导航