b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

文件系统转换 Bootloader之uBoot简介(转)(11)

电脑杂谈  发布时间:2018-02-07 22:32:44  来源:网络整理

264 cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \

265 --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \

266 -Map u-boot.map -o u-boot

267

先使用第262~266的规则连接得到ELF格式的u-boot,最后转换为二进制格式u-

boot.bin、S-Record格式u-boot.srec。LDFLAGS确定了连接方式,其中的“-T

board/smdk2410/u-boot.lds -Ttext

0x33F80000”字样指定了程序的布局、地址。board/smdk2410/u-boot.lds文件如下:

28 SECTIONS

29 {

30 . = 0x00000000;

31

32 . = ALIGN(4);

33 .text :

34 {

35 cpu/arm920t/start.o(.text)

36 *(.text)

37 }

38

39 . = ALIGN(4);

40 .rodata : { *(.rodata) }

41

42 . = ALIGN(4);

43 .data : { *(.data) }

44

45 . = ALIGN(4);

46 .got : { *(.got) }

47

48 . = .;

49 __u_boot_cmd_start = .;

50 .u_boot_cmd : { *(.u_boot_cmd) }

51 __u_boot_cmd_end = .;

52

53 . = ALIGN(4);

54 __bss_start = .;

55 .bss : { *(.bss) }

56 _end = .;

57 }

从第35行可知,cpu/arm920t/start.o被放在程序的最前面,所以U-Boot的入口点在cpu/arm920t/start.S中。

现在来总结一下U-Boot的编译流程:

(1)首先编译cpu/$(CPU)/start.S,对于不同的CPU,还可能编译cpu/$(CPU)下的其他文件。

(2)然后,对于平台/开发板相关的每个目录、每个通用目录,都使用它们各自的Makefile生成相应的库。

(3)将1、2步骤生成的.o、.a文件按照board/$(BOARDDIR)/config.mk文件中指定的代码段起始地址、board/$(BOARDDIR)/u-boot.lds连接脚本进行连接。

(4)第3步得到的是ELF格式的U-Boot,后面Makefile还会将它转换为二进制格式、S-Record格式。

2.4 U-Boot的启动过程源码分析

首先强调,本书使用的U-Boot从NOR Flash启动,下面以开发板smdk2410的U-Boot为例。

U-Boot属于两阶段的Bootloader,第一阶段的文件为cpu/arm920t/start.S和board/smdk2410/lowlevel_init.S,前者是平台相关,后者是开发板相关。

U-Boot第一阶段代码分析

它与1.2节中描述的Bootloader第一阶段所完成的功能可以一一对应:

(1)硬件设备初始化。

依次完成如下设置:将CPU的工作模式设为管理模式(svc),关闭WATCHDOG,设置FCLK、HCLK、PCLK的比例(即设置CLKDIVN寄存器),关闭MMU、CACHE。

代码都在cpu/arm920t/start.S中,注释也比较完善,读者有不明白的地方可以参考前面硬件实验的相关章节。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66092-11.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...