打印

关于bootloader 中烧录地址的问题

[复制链接]
1984|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
goodbyefd|  楼主 | 2010-9-9 23:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是将两个程序写进nandflash的程序片段,

//设置断点分别烧写两个程序
  //4K 从第0块开始 bootloader
   size =  WrFileToNF((CHAR *)0x30100000L,0x1000,0,1,BlockPage,PageSize);
  //读出bootloader检查
   RdFileFromNF((CHAR *)0x30200000L,0x1000,0,1,BlockPage,PageSize);
  //128K 从第二块开始 应用软件
  size =  WrFileToNF((CHAR *)0x30100000L,0x20000,1,10,BlockPage,PageSize);
  //读出应用软件检查
  RdFileFromNF((CHAR *)0x30200000L,0x20000,1,10,BlockPage,PageSize);

我想问下,那个0x30100000是怎么来的,为什么不是0x30000000,而且两次都是0x30100000,

下面这段是从flash 到sdram的拷贝,

bl ReadNandID
mov r6, #0
ldr r0, =0xec73
cmp r5, r0
beq %F1
ldr r0, =0xec75
cmp r5, r0
beq %F1
mov r6, #1
1
bl ReadNandStatus

mov r8, #0
ldr r9, =__ENTRY
2
ands r0, r8, #0x1f
bne  %F3
mov  r0, r8
bl  CheckBadBlk
cmp  r0, #0
addne r8, r8, #32
bne  %F4
3
mov r0, r8
mov r1, r9
bl ReadNandPage
add r9, r9, #512
add r8, r8, #1
4
cmp r8, #256   ;128K
bcc %B2

拷到__ENTRY去,我想问下这时这个地址是多少,0x30100000吗,
怎么算出来的,

相关帖子

沙发
yan2005| | 2010-9-10 09:17 | 只看该作者
1. 仔细看WrFileToNF的函数定义吧。貌似第一个参数只是一个基地址,第二个参数是一个偏移。

2. _ENTRY应该是和链接器有关的,到链接器脚本中看看,或者是到链接完毕之后的map文件中找一下,就能看到__ENTRY是多少。

使用特权

评论回复
板凳
goodbyefd|  楼主 | 2010-9-10 23:20 | 只看该作者
好像 不是吧,怎么都没人回答,唉,自学就是有点累啊

使用特权

评论回复
地板
goodbyefd|  楼主 | 2010-9-11 12:51 | 只看该作者
哪位大大给解释下第一个问题吧,实在不懂

使用特权

评论回复
5
goodbyefd|  楼主 | 2010-9-15 22:44 | 只看该作者
没人回......................................

使用特权

评论回复
6
wshuqi| | 2010-10-1 16:42 | 只看该作者
但从这个程序片段看不出来,需要有arm地址以及函数定义等其它的参数。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

7

帖子

1

粉丝