ARM技术william hill官网
直播中

mantianyu

10年用户 27经验值
擅长:光电显示
私信 关注

关于韦东山老师视频教程中 6410 和 2440/2410 的几个小区别

@weidongshan 老师您好, 我正在看您的视频, 我是从头开始看的, 您的视频里一开始是讲的 2440/2410, 不过我之前买过一块 OK6410 的开发板, 所以我在实践的时候发现 2440 里的很多程序不能适用于 6410.

比如 2440 sdram 初始化并跳到 sdram 那块, 就不能用同样的步骤操作 6410 ddr. 所以我是看完 2440 sdram 的视频后又跳到 6410 ddr 的视频看的. 在这之间我发现有那么几个小区别:



1. 我发现在 6410 ddr 的例子中, start.S 这个文件的最后一行是跳转到 main 函数中:
  1. on_ddr:



在这之前没有设置栈指针(在调用 sdram_init 之前有一次, 是 ldr sp, =8*1024), 但是在 2440 sdram 的例子中, 是有设置栈指针这一步的:

  1. on_sdram:
         /* 初始化栈指针*/
          ldr sp, =0x34000000
          bl main



请问下为什么在 6410 的例子中不需要设置栈指针呢? 如果不设的话, sp 不是还是指向 8192 这个地址吗?

2. 第二个问题是, 在 2440 sdram 的例子中, 好像没有事先初始化时钟, 但是程序可以从 steppingstone 拷到 sdram 里执行. 但是在 6410 ddr 的例子中, 如果不初始化时钟的话, 程序似乎就无法从 steppingstone 拷到 sdram 里执行, 我试过, 只有调用了您代码中的 clock_init 过程, 这个例子才能跑通.

请问这个是 2440 和 6410 的区别吗?

谢谢东山老师 ^_^
已退回1积分

回帖(1)

mantianyu

2014-11-25 01:14:02
自己默默的顶下....望得到回答...
举报

更多回帖

发帖
×
20
完善资料,
赚取积分