AM335x SPL(二)
来源:互联网 发布:抓小三软件下载 编辑:程序博客网 时间:2024/06/05 10:01
参考http://blog.mcuol.com/User/nidetech/Article/79007_1.htm
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目录下:
通过上面的图,可以很清楚的了解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段内容
- AM335x SPL(二)
- AM335x SPL(二)
- AM335x SPL (三)
- AM335x SPL(一)
- AM335x SPL (三)
- AM335x SPL (四)
- AM335x SPL(一)
- AM335x SPL(三)
- AM335x SPL (四)
- AM335x SPL
- AM335x SPL
- AM335x SPL
- AM335x SPL
- AM335x SPL
- AM335x uboot spl分析
- AM335x uboot spl分析
- AM335x uboot spl分析
- AM335x uboot spl分析
- 【Github教程】github使用方法:github入门到精通
- javascript的Prototype属性应用
- 【PA2013】【BZOJ3837】Filary
- MultiByteToWideChar和WideCharToMultiByte的正确使用方法及参数详解
- 计蒜客 爱奇艺的自制节目(枚举 贪心)
- AM335x SPL(二)
- JS 事件基础 边框拖拽
- Unity3d 人物控制器CharacterController
- 未能加载文件或程序集“”或它的某一个依赖。找到的程序集清单定义与程序集引用不匹配。
- 将Excel中的数据保存到Oracle中
- 浅谈数据中心(IDC)网络大二层技术
- Linux more命令的简单实现
- Xcode7 Https 在plist上添加NSAppTransportSecurity -NSAllowsAtbritraryLoads
- 读《符号逻辑讲义》