主题 : 韦老板_mini2440_2_偷天换日之sdram 复制链接 | 浏览器收藏 | 打印
知识改变命运!
级别: 新手上路
UID: 39523
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2011-03-09
最后登录: 2011-06-16
楼主  发表于: 2011-03-26 16:17

 韦老板_mini2440_2_偷天换日之sdram

这个基本上就没改什么,请看:
复制代码
  1. ;========================================================================
  2. ;date:20113.31      by:kissyyg    filename:head.s
  3. ;function:init the sdram and cpy code from steppingstone to sdram        
  4. ;========================================================================
  5. mem_ctr_base     equ     0x48000000
  6. sdram_base        equ        0x30000000
  7.     
  8.     import main
  9.     code32
  10.     area init,code,readonly
  11.     entry
  12.     
  13.     bl disable_watch_dog
  14.     bl memsetup
  15.     bl copy_steppingstone_to_sdram
  16.     ldr pc, =on_sdram
  17. on_sdram
  18.     ldr sp, =0x34000000
  19.     bl main
  20. halt_loop
  21.     
  22.     b halt_loop
  23.     
  24. disable_watch_dog
  25.     ldr r1, =0x53000000
  26.     mov r2, #0x0
  27.     str r2, [r1]
  28.     mov pc, lr
  29. copy_steppingstone_to_sdram
  30.     mov r1, #0
  31.     ldr r2, =sdram_base
  32.     mov r3, #4*4096
  33.     
  34. loop_copy
  35.     ldr r4, [r1],#4
  36.     str r4, [r2],#4
  37.     cmp r1, r3
  38.     bne loop_copy
  39.     mov pc,lr
  40.     
  41.     
  42. memsetup
  43.     mov  r1, #mem_ctr_base
  44.     adrl r2, mem_cfg_val
  45.     add  r3, r1,#52
  46.     
  47. loop_mem
  48.     ldr r4, [r2],#4
  49.     str r4, [r1],#4
  50.     cmp r1, r3
  51.     bne loop_mem    
  52.     mov pc, lr
  53. mem_cfg_val    
  54.     DCD    0x22011110
  55.     DCD    0x00000700
  56.     DCD    0x00000700            
  57.     DCD    0x00000700
  58.     DCD    0x00000700            
  59.     DCD    0x00000700
  60.     DCD    0x00000700    
  61.     DCD    0x00018005
  62.     DCD    0x00018005
  63.     DCD    0x008c07a3
  64.     DCD    0x000000b1
  65.     DCD    0x00000030
  66.     DCD    0x00000030            
  67.     
  68.     end


在这里小弟有个不明白的问题:
书上说在 bl on_sdram这里就自动跳转到了sdram中去执行了,原因是连接地址为0x30000000,所以这条指令的地址就是0x300000010,那么为什么链接地址是0x300000000,他还可以在sram中执行呢,期待答案啊,我的环境是ads,不是arm-linux-gcc啊,求解
[ 此帖被kisssummer在2011-03-26 16:27重新编辑 ]
级别: 新手上路
UID: 40036
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 36 分
注册时间: 2011-03-15
最后登录: 2011-08-28
1楼  发表于: 2011-04-19 14:02
楼主我支持你做这些裸机程序,是否愿意加我qq,我是初学者,想努力学习学习,674819950
勿在浮沙筑高台
级别: 新手上路
UID: 35854
精华: 0
发帖: 17
金钱: 85 两
威望: 17 点
贡献值: 0 点
综合积分: 34 分
注册时间: 2011-01-07
最后登录: 2015-05-12
2楼  发表于: 2011-04-22 08:12
要先初始话SDRAM,不然不能执行的
级别: 新手上路
UID: 30113
精华: 0
发帖: 46
金钱: 230 两
威望: 46 点
贡献值: 0 点
综合积分: 92 分
注册时间: 2010-10-12
最后登录: 2018-02-08
3楼  发表于: 2011-04-22 20:21
因为一上电,CPU必须是去到地址0执行的!!
勿在浮沙筑高台
级别: 新手上路
UID: 35854
精华: 0
发帖: 17
金钱: 85 两
威望: 17 点
贡献值: 0 点
综合积分: 34 分
注册时间: 2011-01-07
最后登录: 2015-05-12
4楼  发表于: 2011-04-26 08:24
我说错了,楼上正解