社区
CPU和硬件区
帖子详情
SDRAM中的bootloade代码的物理起始地址
wbluyang
2013-10-11 02:42:25
steppingstone中的4K代码一个很重要的任务是,将nandflash的最前面区域的bootloader拷贝到SDRAM中去。那么拷贝到SDRAM中的bootloade代码的物理起始地址是多少,这个起始地址是程序员能控制的
吗?如果能,怎么控制?
...全文
2312
10
打赏
收藏
SDRAM中的bootloade代码的物理起始地址
steppingstone中的4K代码一个很重要的任务是,将nandflash的最前面区域的bootloader拷贝到SDRAM中去。那么拷贝到SDRAM中的bootloade代码的物理起始地址是多少,这个起始地址是程序员能控制的 吗?如果能,怎么控制?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lr2131
2015-02-12
打赏
举报
回复
steppingstone过程,起始地址应该是由硬件决定的吧。 比如说S3C6410支持多种启动方式,可以从SD卡启动,可以从Nand启动,可以从OneNand启动,不过这些启动方式,可以通过OM[3:0]那几个管脚的电平决定。
Lazylink
2015-02-11
打赏
举报
回复
同楼上,复制代码后,其地址又要重定位,这些也可以在代码中实现
wjx5210
2014-11-17
打赏
举报
回复
上面的回答都很好,初始地址都是将程序从NAND中前4KB复制到SDRAM中,然后从0开始执行。 下面是一个非常重要的概念:位置无关代码和位置相关代码;具体可以百度 然后如果一直是位置无关代码,然后就一直从0开始到4KB执行; 但是因为很多指令都是位置相关的计算和我们的程序太大了,超过4KB,地址不够了,所以才需要我们跑到DDR中,但是我们的程序还在NAND中,下面还需要作两个工作:初始化DDR和将NAND中程序放到DDR中;
kerneler_
2014-11-04
打赏
举报
回复
bootloader运行地址是程序员可以控制的。 首先,要根据处理器的datasheet上的address map来确定sdram的地址空间,然后选择一个sdram上的起始地址,比如0x8000。 其次,编译bootloader时来指定程序的链接地址,这个连接器ld有参数-Ttext来指定,如-Ttext=0x8000。 像uboot,可以配置CONFIG_SYS_TEXT_BASE,其实也是在ld时添加了-Ttext。 最后,程序的链接地址 加载地址 运行地址是一致的。 配置4k代码,让其将bootloader从nand中搬运到0x8000地址上,跳转到0x8000运行就可以了。搬运到sdram其他地址是不能正常运行的。
moquan1100
2014-05-31
打赏
举报
回复
可以设置。 我做过一个WINCE的bootloader,在这里面是能设置bootloader的SDRAM位置和kernel的位置。 CPU启动后加载的4K代码不是到SDRAM,是到SRAM,这4k的代码会初始化SDRAM,然后将bootloader加载到SDRAM中运行。 我们的当时做的bootloader有上百k(功能比较多)。
猪头三小队长
2014-03-21
打赏
举报
回复
据我所知是不能设置的,提供了这个功能,既可以少了BOM,也可以用廉价的NAND取代NOR。既然是bootloader,那么它的运行地址应该是固定的,否则cpu复位之后找不到。 我所理解的这个功能的复位步骤如下: 1. 上电后首先拉住arm核的复位线,使其保持在复位态,同时将NAND的前4K读到0地址的SRAM(至少此时是0地址) 2. 释放arm核的复位线,pc指针指向0地址,运行bootloader 3. bootloader中的代码包含了NAND和SDRAM控制器的驱动,并将剩余的引导部分读入到SDRAM中 4. 在这之后就是正常的启动步骤了,想重映射就重映射,想起操作系统就起操作系统。
猪头三小队长
2014-03-21
打赏
举报
回复
应该是SRAM吧,除非是它的SDRAM控制器能上电之后自动初始化。
fly 100%
2014-03-21
打赏
举报
回复
这个4k是可以控制的 这个地址一般存在与scatter文件中 如果没有就是在编译之前的编译选项里面设置的
Carl_CCC
2013-10-16
打赏
举报
回复
这个地址是编译的时候定义在一个文件里面的,不同的平台略微不一样。
你可以搜索TEXT_BASE的定义,一般是这个。
YTerrenceLau
2013-10-15
打赏
举报
回复
起始地址要看你mmu的配置,不同处理器都不一样的。 地址肯定可以控制,用链接脚本控制,你可以查查链接脚本相关信息。
物理
地址
相关说明
那么拷贝到
SD
RAM
中
的
boot
load
e
代码
的
物理
起始
地址
是多少,这个
起始
地址
是程序员能控制的吗?如果能,怎么控制? 针对这个问题有不同的说法: 1、
起始
地址
要看你mmu的配置,不同处理器都不一样的。
地址
肯定...
ARM嵌入式LINUX启动过程(大师级人物)
一位大师级的人物写的,不看要后悔的哟!! LINUX启动过程 ...首先,porting linux的时候要规划内存影像,...
地址
从0x 0800 0000 -0x0bff ffff,32m flash,
地址
从0x0c00 0000-0x0dff ffff. 规划如下:
boot
load
e
嵌入式Linux——写jz2440
Boot
Load
er的第一阶段
代码
简介: 本文主要介绍为JZ2440编写
Boot
Load
er来引导和启动Linux系统。本文为
Boot
Load
er的第一阶段,即对开发板硬件环境进行初始化来为第二阶段的引导内核和启动内核... 我想很多人在看u-
boot
或者在了解
Boot
Load
e...
ARM
Boot
Load
er简介
在操作系统内核运行之前,通过一小程序,可以初始化硬件设备、建立内存空间的映射图等,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核配置好相应的环境,也可以下载文件到系统板上的
SD
RAM
...
收录 U
boot
详解
我们知道,
boot
load
er是系统上电后最初加载运行的
代码
。它提供了处理器上电复位后最开始需要执行... 在PC机上引导程序一般由BIOS开始执行,然后读取硬盘
中
位于MBR(Main
Boot
Record,主引导记录)
中
的
Boot
load
e
CPU和硬件区
1,025
社区成员
562
社区内容
发帖
与我相关
我的任务
CPU和硬件区
Linux /Unix kernel支持不同的硬件体系,X86, ARM, MIPS, 等等
复制链接
扫一扫
分享
社区描述
Linux /Unix kernel支持不同的硬件体系,X86, ARM, MIPS, 等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章