S3C6410 DDR

以nand flash启动,则,nand flash 前 8K 的内容就会被原原本本的(硬件自动)复制到 6410 片内
    8K 内存中,且被映射到 0x0 地址中,然后从 0 地址开始运行。(ARM 的 CPU 都这样)
    
    当程序大于 8K 时,就得用DDR(需要初始化 DRAMC 和 DDR )。启动时吧全部程序复杂到DDR里面。
    
问题:DDR共128MBYTE,那,把程序复制到DDR哪里?
    答:复制到链接地址。
    
    
一个程序分为3段:
            1.代码段:指令
            2.数据段:有初始值并且初始值不等于零的全局变量、静态变量。
            3.BSS段:初始值为零或无初始值的全局变量、静态变量。
            
二进制文件中不包含BSS段。

总结:
    1.程序运行时,“应该”位于它的链接地址
    2.由硬件决定了,一上电,则程序被复制到片内8K里面,从0x0开始运行。而又由
        于程序大于8K,所以需要用到DDR,因此需要重定位,前面一小段代码把程序复制
        到DDR上它对应的链接地址(这里的前一段代码作用有两个:一是重定位,二是把程序代码复制到对应DDR的链接地址上然后清零BSS段)。
    3.那为何前面一小段代码能够正确运行?因为这一段代码是用位置无关码写的
        位置无关码:
                1)跳转用b,bl这些相对跳转指令
                2)不用全局变量,静态变量。
                
    
从原理图上看出DDR由15条地址线链接,能访问2的15次方(即32k)个地址。

怎么访问DDR?
        1.初始化 DRAMC (动态内存控制器)
                        1)地址线的设置(行/列地址)
                        2)位宽
                        3)设置时序(时间参数)
        2.初始化 DDR

        
不会设置,需查找网络资源。

转载于:https://my.oschina.net/fengyeshangqing/blog/335159

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值