Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1432258
  • 博文数量: 1334
  • 博客积分: 645
  • 博客等级: 上士
  • 技术积分: 5762
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-25 16:56
文章分类

全部博文(1334)

文章存档

2014年(108)

2013年(1059)

2012年(169)

分类: 嵌入式

2013-08-28 18:26:17

原文地址:AM335x SPL(二) 作者:skyajlm

SPL代码分析:

分析SPL代码,首先要看一下SPL目录下的Makefile文件,在Makefile中:

CONFIG_SPL_BUILD := y
export CONFIG_SPL_BUILD

这个宏定义用于打开U-boot代码里有关SPL部分的分支.

另外,Makefile还交代了SPL涉及到的相关代码文件:

主要有 u-boot-2011.09-psp04.06.00.08\arch\arm\cpu\armv7

          u-boot-2011.09-psp04.06.00.08\arch\arm\lib

          u-boot-2011.09-psp04.06.00.08\drivers

          等.

除了通过Makefile分析SPL涉及到的相关代码文件外,还可以简单的通过在编译SPL时,在make 后加上O=am335x来将所有的.o文件归类在一起,在am335x/spl目录下:

clip_image002

clip_image002[6]

clip_image002[8]

clip_image002[10]

通过上面的图,可以很清楚的了解SPL在编译时涉及到U-Boot中的代码文件

 

# Linker Script
ifdef CONFIG_SPL_LDSCRIPT
# need to strip off double quotes
LDSCRIPT := $(addprefix $(SRCTREE)/,$(subst ",,$(CONFIG_SPL_LDSCRIPT)))
endif

该处指定了SPL的链接脚本文件

CONFIG_SPL_LDSCRIPT 在 u-boot-2011.09-psp04.06.00.08\include\configs\Am335x_evm.h中定义:
#define CONFIG_SPL_LDSCRIPT        "$(CPUDIR)/omap-common/u-boot-spl.lds"

所以SPL的链接脚本是u-boot-2011.09-psp04.06.00.08\arch\arm\cpu\armv7\omap-common\u-boot-spl.lds

在u-boot-spl.lds中,空间分配如下:

MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
        LENGTH = CONFIG_SPL_MAX_SIZE }
MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
        LENGTH = CONFIG_SPL_BSS_MAX_SIZE }

其中,CONFIG_SPL_TEXT_BASE、CONFIG_SPL_MAX_SIZE、CONFIG_SPL_BSS_START_ADDR、CONFIG_SPL_BSS_MAX_SIZE都是在Am335x_evm.h定义:

#define CONFIG_SPL_TEXT_BASE        0x402F0400
#define CONFIG_SPL_MAX_SIZE        (101 * 1024)

#define CONFIG_SPL_BSS_START_ADDR    0x80000000
#define CONFIG_SPL_BSS_MAX_SIZE        0x80000        /* 512 KB */

因此,实际的空间分配如下:

MEMORY { .sram : ORIGIN = 0x402F0400, LENGTH = (101 * 1024) }
MEMORY { .sdram : ORIGIN = 0x80000000, LENGTH = 0x80000 }

 

SRAM从0x402F0400开始用于存放.TEXT段、.rodata段、.data段内容

SDRAM从0x80000000开始用于存放.bss段内容

阅读(718) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~