重定位代码 两个不同的地址概念: 对于程序而言,需要理解两个地址,一个是程序当前所处的地址,即程序运行时所处的当前地址。二是程序应该位于的运行地址,即编译程序时所指定的程序的链接地址。在Tiny6410中板子上电启动时只会从NAND Flash/MMC等启动设备中拷贝前8K的代码到SRAM中,然后跳 ...
分类:
其他好文 时间:
2016-09-04 20:50:28
阅读次数:
202
最简单的bootloader的编写步骤: 1. 初始化硬件:关看门狗、设置时钟、设置SDRAM、初始化NAND FLASH2. 如果bootloader比较大,要把它重定位到SDRAM3. 把内核从NAND FLASH读到SDRAM4. 设置"要传给内核的参数"5. 跳转执行内核 改进:1. 提高C ...
分类:
其他好文 时间:
2016-09-02 20:25:19
阅读次数:
118
程序的装入为了阐述上的方便,我们先介绍一个无需进行链接的单个目标模块的装入过程。该目标模块也就是装入模块。在将一个装入模块装入内存时,可以有绝对装入方式、可重定位装入方式和动态运行时装入方式,下面分别简述之。第四章 存 储 器 管 理 ·119·1.绝对装入方式(Absolute Loading M ...
分类:
其他好文 时间:
2016-08-30 18:10:03
阅读次数:
191
汇编器构造 一、 汇编器简介 前面介绍了编译器构造和静态链接器构造的具体方法,而且我们实现了一个将高级语言转化为汇编语言的编译器,同时又实现了一个将多个目标文件链接为一个可执行文件的链接器。现在需要一个连接这两个模块的功能模块——汇编器,它能将一个单独的汇编文件转换为一个可重定位目标文件,如图1-1 ...
分类:
其他好文 时间:
2016-08-27 06:24:46
阅读次数:
179
先贴两个图 32位文件 64位文件 此文为静态分析ELF文件结构,遍历其中Elf_Ehdr文件头信息,遍历Elf_Shdr节表头信息,并将所有节放置在左侧树控件上,遍历Elf_Phdr程序头也放置在左侧树控件上,并着重分析字符串表,重定位表,符号表。遍历表头的使用使用map将节表信息对应字符串存入, ...
分类:
其他好文 时间:
2016-08-21 12:23:13
阅读次数:
116
源代码如下: typedef struct _IMAGE_BASE_RELOCATION { DWORD VirtualAddress; DWORD SizeOfBlock; // WORD TypeOffset[1]; } IMAGE_BASE_RELOCATION; typedef IMAGE_... ...
分类:
其他好文 时间:
2016-08-17 11:48:06
阅读次数:
304
ELF文件格式是一个开发标准,各种UNIX系统的可执行文件都采用ELF格式,它有三种不同的类型: 可重定位的目标文件 可执行文件 共享库 现在分析一下上一篇文章中经过汇编之后生成的目标文件max.o和链接之后生成的可执行文件max的格式,从而理解汇编、链接和加载执行的过程。 一、目标文件 ELF文件 ...
分类:
其他好文 时间:
2016-08-13 22:36:02
阅读次数:
293
本篇索引: 1、引言 2、文件描述符 3、open函数 4、close函数 5、read函数 6、write函数 7、lseek函数 8、i/o效率问题 9、内核用以维护打开文件的相关数据结构 10、O_APPEND标志 11、dup函数(文件描述符重定位函数) 12、有关文件共享的问题 13、fc ...
1:BL0BL1BL2分别是什么(1)BL0:s5pv210的iROM中固化的代码作用:初始化系统时钟,设置看门狗,初始化栈,加载BL1(2)BL1:从外部启动介质(nand/SD卡)中加载的uboot.bin的前16K代码作用:初始化RAM,关闭Cache,初始化DDR,设置栈,加载BL2(3)BL2:是指在代码完成重定位..
分类:
其他好文 时间:
2016-08-04 19:49:15
阅读次数:
190