免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6931 | 回复: 5
打印 上一主题 下一主题

[BootLoader] 求教LowLevel_init.s的SMRDATA问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-28 22:40 |只看该作者 |倒序浏览
本帖最后由 相逢的日子 于 2011-08-29 16:08 编辑

大家好啊,我在看天嵌2440的lowLevel_Init.s。发现了一点疑问


SMRDATA:
    .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
    .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
    .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
    .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
    .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
    .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
    .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
    .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
    .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
    .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
    .word 0x32
    .word 0x30
    .word 0x30



请问这13个地址里存放的代表的是什么啊,谢谢了!

求教啊求教,谢谢谢谢

论坛徽章:
0
2 [报告]
发表于 2011-08-29 15:28 |只看该作者
人工置顶一下,大神们。。。

论坛徽章:
2
水瓶座
日期:2013-09-04 15:09:57白羊座
日期:2014-04-17 16:48:13
3 [报告]
发表于 2011-08-29 15:58 |只看该作者
看样子好像是内存控制器BANK0-BANK7的设置内容,一个总控寄存器+8个BANK的寄存器。

不懂LZ说的13个地址是什么意思?

论坛徽章:
0
4 [报告]
发表于 2011-08-29 16:10 |只看该作者
看样子好像是内存控制器BANK0-BANK7的设置内容,一个总控寄存器+8个BANK的寄存器。

不懂LZ说的13个地址是 ...
l2y3n2 发表于 2011-08-29 15:58


不好意思我少粘贴了2行

我是不知道这几个word内容是什么意思,之前有如下代码:
lowlevel_init:
        /* memory control configuration */
        /* make r0 relative the current location so that it */
        /* reads SMRDATA out of FLASH rather than memory ! */
        ldr     r0, =SMRDATA
        ldr        r1, _TEXT_BASE
        sub        r0, r0, r1
        ldr        r1, =BWSCON        /* Bus Width Status Controller */
        add     r2, r0, #13*4
0:
        ldr     r3, [r0], #4
        str     r3, [r1], #4
        cmp     r2, r0
        bne     0b
为什么要复制SMRDATA呢

论坛徽章:
2
水瓶座
日期:2013-09-04 15:09:57白羊座
日期:2014-04-17 16:48:13
5 [报告]
发表于 2011-08-29 16:19 |只看该作者

  1.         ldr        r1, =BWSCON        /* Bus Width Status Controller */
  2.         add     r2, r0, #13*4
  3. 0:
  4.         ldr     r3, [r0], #4
  5.         str     r3, [r1], #4
  6.         cmp     r2, r0
  7.         bne     0b
复制代码
这段应该是把SMRDATA开始的13个DWORD写到从BWSCON开始的对应的13个寄存器中。

上面那段不清楚那几个常量ld脚本里是怎么定义的,大概作用注释里面也说了
当前内存控制器还没初始化,所以要算出SMRDATA开始的数据在SoC的内部RAM上的地址而不是链接脚本里面写的地址。

论坛徽章:
0
6 [报告]
发表于 2011-08-29 16:22 |只看该作者
我貌似理解了,应该就是初始化所有bank吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP