• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : Bootloader一点小问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 5271
精华: 0
发帖: 30
金钱: 300 两
威望: 225 点
综合积分: 60 分
注册时间: 2009-04-16
最后登录: 2010-09-09
楼主  发表于: 2009-05-20 21:50

 Bootloader一点小问题

在NAND FLASH启动模式下,会把中断向量表设在开始的0地址位置处,也就是S3C2440里的内部SRAM中,但是这时候这4K的SRAM不是都装着bootloader吗,这样直接写入不会有问题??
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
1楼  发表于: 2009-05-20 22:25
bootloader也需要处理中断啊,所以它也有中断向量表的。
级别: 新手上路
UID: 5271
精华: 0
发帖: 30
金钱: 300 两
威望: 225 点
综合积分: 60 分
注册时间: 2009-04-16
最后登录: 2010-09-09
2楼  发表于: 2009-05-21 09:29
是的。可在NAND FLASH启动模式下,它是把中断向量表写在S3C2440里的内部SRAM中,但是这时候这4K的SRAM装着bootloader,这样不就把代码覆盖了吗?这样没问题??
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
3楼  发表于: 2009-05-21 09:34
晕死啦,中断向量是bootloader的一部分啊!
级别: 新手上路
UID: 5271
精华: 0
发帖: 30
金钱: 300 两
威望: 225 点
综合积分: 60 分
注册时间: 2009-04-16
最后登录: 2010-09-09
4楼  发表于: 2009-05-21 09:50
大哥,中断向量的设定是Bootloader的第一个工作,是他产生的,但刚开始是把Bootloader前4K代码复制到那快SRAM中,然后执行Bootloader设定了中断向量,这不就把那代码覆盖了吗??
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2009-05-21 10:02
这位大哥,你认为"中断向量的设定是Bootloader的第一个工作,是他产生的"Bootloader是如何做到的?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 5271
精华: 0
发帖: 30
金钱: 300 两
威望: 225 点
综合积分: 60 分
注册时间: 2009-04-16
最后登录: 2010-09-09
6楼  发表于: 2009-05-21 10:05
@
@ Exception vector table (physical address = 0x00000000)
@

@ 0x00: Reset
    b    Reset

@ 0x04: Undefined instruction exception
UndefEntryPoint:
    b    HandleUndef

@ 0x08: Software interrupt exception
SWIEntryPoint:
    b    HandleSWI

@ 0x0c: Prefetch Abort (Instruction Fetch Memory Abort)
PrefetchAbortEnteryPoint:
    b    HandlePrefetchAbort

@ 0x10: Data Access Memory Abort
DataAbortEntryPoint:
    b    HandleDataAbort

@ 0x14: Not used
NotUsedEntryPoint:
    b    HandleNotUsed

@ 0x18: IRQ(Interrupt Request) exception
IRQEntryPoint:
    b    HandleIRQ

@ 0x1c: FIQ(Fast Interrupt Request) exception
FIQEntryPoint:
    b    HandleFIQ
就是这样做的
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
7楼  发表于: 2009-05-21 10:20
那你认为这和把Bootloader前4K的代码复制到有什么区别?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 5271
精华: 0
发帖: 30
金钱: 300 两
威望: 225 点
综合积分: 60 分
注册时间: 2009-04-16
最后登录: 2010-09-09
8楼  发表于: 2009-05-21 10:27
大哥,前4K代码的复制是内核的工作,刚上电的时候内核会把NAND FLASH里的前4K代码复制到内部的SRAM中,软后执行该段代码,这段代码也就是BOOTLOADER,但这段代码的第一件事就是设置中断向量表,会设置在0x0的地址上,而这时候这个地址映射的就是这块4K的SRAM,而这个时候它保存的也是这段代码,这不就覆盖了吗?就是想问问覆盖了没事??
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
9楼  发表于: 2009-05-21 10:30
在大学里待太久了脑袋不好使了?看问题只会一条道?只会等着别人告诉你答案就算知道了又有什么价值?
如果被覆盖的东西和用来覆盖的东西是一样的,你说有没有事?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go