主题 : 求助。。2440 ADS 裸机启动代码的疑问。。困扰了很久 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 13064
精华: 0
发帖: 16
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2010-01-18
最后登录: 2011-06-14
楼主  发表于: 2010-05-03 17:30

 求助。。2440 ADS 裸机启动代码的疑问。。困扰了很久



[ :LNOT:THUMBCODE
         bl    Main    ;Do not use main() because ......
         ;ldr    pc, =Main    ;
         b    .
    ]

问题1:网上说,程序大于4k的,,要把所有代码都搬移到sdram,然后跳转到sdram运行。。跳到sdram运行时,init.s启动代码是不是还会再执行的。。。

问题2:按照网上流行的说法是,init.s启动程序执行完初始化cpu,及程序搬移SDRAM后,就跳转到Main  c函数入口。。

那这个时候,Main函数的入口地址是在哪个区域呢??是还在4k sram里面。。还是在SDRAM地址区里面了??

*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-05-03 21:31
问题1:网上说,程序大于4k的,,要把所有代码都搬移到sdram,然后跳转到sdram运行。。跳到sdram运行时,init.s启动代码是不是还会再执行的。。。

不会从头执行,从跳转到SDRAM中的函数入口处开始执行。

问题2:按照网上流行的说法是,init.s启动程序执行完初始化cpu,及程序搬移SDRAM后,就跳转到Main  c函数入口。。

那这个时候,Main函数的入口地址是在哪个区域呢??是还在4k sram里面。。还是在SDRAM地址区里面了??

在SDRAM中。
"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: 13064
精华: 0
发帖: 16
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2010-01-18
最后登录: 2011-06-14
2楼  发表于: 2010-05-03 22:29
多谢版主的帮助。。
级别: 新手上路
UID: 6100
精华: 0
发帖: 14
金钱: 110 两
威望: 46 点
贡献值: 0 点
综合积分: 28 分
注册时间: 2009-05-20
最后登录: 2013-04-13
3楼  发表于: 2010-05-04 00:14
这条好象要看是LDR还是ADR指令吧
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
贡献值: 0 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
4楼  发表于: 2010-05-04 09:42
1、代码还是那代码,位置不同而已。
2、从加载域跳转到执行域之后便是在SDRAM中执行了(前提是你把执行域设置在SDRAM中)。

以上论述和诸君所说的其实是同语反复。