这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 下载专区 » [原创]4510 bootloader的实现与分析 (附源代码)

共35条 3/4 1 2 3 4 跳转至
菜鸟
2004-10-22 07:26:00     打赏
21楼
[quote]以下是引用tianwen在2004-9-9 19:45:00的发言: 问一下twentyone ,你说的那个比较全的bootloader (BIOS)不知哪里有的下,我想看看[/quote] 你用GOOGLE搜索一下BIOS-LT就找到了。

菜鸟
2005-09-28 19:50:00     打赏
22楼

tftp_ipaddr:0xc0a8a865

0xC0 = 192
0xA8 = 168
0xA8 = 168
0x65 = 101


菜鸟
2005-11-16 18:53:00     打赏
23楼

44B0是没有REMAP功能的。其实REMAP并不是目的,问题的关键是,把要运行的程序从FLASH里正确装载到SDRAM里去,为程序创建好运行环境,让程序正确运行就可以了。

如果你想了解44B0的启动流程,你可以看版主置顶的IAR程序,版主的程序说明了44B0的启动过程。


菜鸟
2005-11-17 05:45:00     打赏
24楼

如果你的程序没有RW段的话,程序可以在FLASH中运行的,不过在FLASH里面运行比在SDRAM里面运行慢。如果你的程序有RW段的话,RO段可以在FLASH里头,不过RW段一定好拷贝到SDRAM里面去。最好的是,程序在SDRAM里面运行,这样RO段和RW段都在SDRAM里面,速度比较快。


菜鸟
2005-11-17 21:38:00     打赏
25楼

1. 你的理解是正确的;
2. 44B0不能做REMAP的,所以,如果你想把程序(RO+RW)拷贝到SDRAM里面去运行,需要做些别的处理。例如,你希望你的程序上电的时候从FLASH里面开始执行,然后程序用自拷贝把你的程序拷贝到SDRAM里面继续执行。你可以用这种方式实现:

你些两个独立的程序,一个程序的RO_BASE在FLASH里面;第二个程序的RO_BASE在SDRAM里面。第一个程序上电后执行,初始化SDRAM,并负责把第二个程序拷贝到SDRAM里面去,然后把控制权交给第二个程序;


菜鸟
2005-11-21 18:58:00     打赏
26楼

sdramcon0 前后不一样,BASE POINTER和NEXTPOINTER需要改变
romcon0 前后不一样,BASE POINTER和NEXTPOINTER需要改变
syscfg 前后一样
extdbwth 前后一样
srefextcon 前后一样

[align=right][color=#000066][此贴子已经被作者于2005-11-21 10:59:08编辑过][/color][/align]

菜鸟
2005-12-20 23:59:00     打赏
27楼

1. 在我的程序里面没有用到堆栈,如果你在C程序里面调用了别的C函数的时候,需要用到堆栈。在嵌入式开发里面堆栈的设置比较随意,只要保证安全就可以了,并不一定要设置在SDRAM的顶部。ARM的堆栈一般是降序的;
2. 是的,搬运了2次;
3. 如果你觉得有必要的话,你可以在BOOTLOADER里用中断,但一般不需要的;


菜鸟
2006-01-06 19:46:00     打赏
28楼

1. 下面这些变量都是链接器定义的内部变量,详细信息你可以参考ADS LINKER GUIDE
IMPORT |Image$$RO$$Base|
IMPORT |Image$$RO$$Limit|
IMPORT |Image$$RW$$Base|
IMPORT |Image$$RW$$Limit|
IMPORT |Image$$ZI$$Base|
IMPORT |Image$$ZI$$Limit|

2.下面的这些指令是用来初始化S3C4510的存储空间的,如果你想了解具体的意思,建议看4510的手册
LDR r1, =rEXTDBWTH ;EXTDBWTH
LDR r2, =rROMCON0 ;ROMCON0 @ 0M ~ 2M
LDR r3, =rROMCON1 ;ROMCON1 @ DISABLED
LDR r4, =rROMCON2 ;ROMCON1 @ DISABLED
LDR r5, =rROMCON3 ;ROMCON1 @ DISABLED
LDR r6, =rROMCON4 ;ROMCON1 @ DISABLED
LDR r7, =rROMCON5 ;ROMCON1 @ DISABLED
LDR r8, =rSDRAMCON0 ;SDRAMCON0 @ 2M ~ 18M
LDR r9, =rSDRAMCON1 ;SDRAMCON1 @ DISABLED
LDR r10,=rSDRAMCON2 ;SDRAMCON2 @ DISABLED
LDR r11,=rSDRAMCON3 ;SDRAMCON3 @ DISABLED
LDR r12,=rSREFEXTCON

LDR r0, =ARM7_EXTDBWTH
STMIA r0, {r1-r12}

3. 数字定义的是局部标号,可以重复定义,所以可以用B,F来表示跳转的时候是向前搜索还是向后搜索标号。


菜鸟
2006-04-15 04:37:00     打赏
29楼
PART7做的就是RW段的拷贝,到执行PART7的时候,SDRAM已经被MAP到地址0X0开始的地方去了,而且程序也已经运行在SDRAM里面.PART7做的只是将RW段拷贝到合适的位置去.

菜鸟
2006-04-20 07:27:00     打赏
30楼

应该会有参考作用的.希望对你有帮助.


共35条 3/4 1 2 3 4 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]