PXA3XX平台(MONAHANS) 内存升级 128M(两片64)升级到256M(两片128)

wdq0461   2010-1-20 17:31 楼主
    http://topic.eeworld.net/u/20081121/16/4ba50dc9-fe31-48b9-acce-0619bb010372.html?27857
    和这个帖子的情况基本相同,从里面看到不少东西,但我们的两个平台实现上好像有些差距。config.bib和oemaddrtab都差不多。我们的平台是这样实现的。
  void NKStartup (struct KDataStruct * pKData)
{
    ...
    ...
    OEMInit();          // initialize firmware
    // flush I&D TLB
    OEMCacheRangeFlush (NULL, 0, CACHE_SYNC_FLUSH_TLB);
    KernelFindMemory();
    ...
    ...
}

    OEMInit();中没有找到OEMGetExtensionDram,在KernelFindMemory中找到了,如下:
         
  KernelFindMemory(void){
    ...
    ...
        //
        // Ask OEM if extension RAM exists.
        //
        if (g_pOemGlobal->pfnEnumExtensionDRAM) {
            cExtSections = (*g_pOemGlobal->pfnEnumExtensionDRAM)(MemSections, MAX_MEMORY_SECTIONS - 1);
            DEBUGCHK(cExtSections < MAX_MEMORY_SECTIONS);
        } else if (OEMGetExtensionDRAM (&MemSections[0].dwStart, &MemSections[0].dwLen)) {
            cExtSections = 1;
        } else {
            cExtSections = 0;
        }

        dwRAMStart = pTOC->ulRAMStart;
        dwRAMEnd = g_pOemGlobal->dwMainMemoryEndAddress;
        mainpages = (PAGEALIGN_DOWN(g_pOemGlobal->dwMainMemoryEndAddress) - PAGEALIGN_UP(pTOC->ulRAMFree+MemForPT))/VM_PAGE_SIZE - 4096/VM_PAGE_SIZE;
    ...
    ...
}

同样存在无法启动的问题。

回复评论 (11)

栈,MMU映射表,config.bib中各段空间大小都要设置的
点赞  2010-1-21 08:36
要设置的地方很多,可以多方尝试解决,实践出真知…
点赞  2010-1-21 10:14
寄存器中的colomn,row address;memory map都挺重要的。
点赞  2010-1-21 10:22
帮顶下。

MARK.
点赞  2010-1-21 10:55
1. ram的硬件寄存器配置有没有问题?
在eboot下测试一下
2. mmu配置
参照别人的配一下
点赞  2010-1-20 22:18
关注
点赞  2010-1-21 08:31
如果我什么也不动,直接用128的那些配置是可以直接运行的,说明寄存器的配置是兼容的,应该不用修改。就是地址映射的问题太多。而且给我的感觉是那么多内容必须一次性改好才能运行起来。
点赞  2010-1-22 09:03
那个栈设置是怎么回事   能解释一下吗
点赞  2010-1-22 14:54
引用: 引用 9 楼 ztg328 的回复:
那个栈设置是怎么回事? 能解释一下吗

栈设置应该是SP指针赋值。
点赞  2010-1-25 19:38
  IF :DEF: BSP_DDR256MB
        DCD        0x80000000, 0xB8000000, 256      ; ZYLONITE DDR SDRAM (256 MB).
        。。。
         。。。
         。。。
         DCD        0x9A400000, 0xB8000000, 4        ; to avoid prefetch failure, 0xBC00_0000 must have same virtual/physical address.

各位大侠,最后一项的设置意义是什么呀,在一开始的时候0xB8000000不是已经映射过了吗?
点赞  2010-1-25 19:40
好了很长时间也没找到DDR在哪里初始化的。关键是那个MDCNFG不知道在哪配的。哪位兄弟有DMC对DDR的配置实例代码。另外MMU还要重新配置吗,感觉不需要吧。多谢!
点赞  2010-1-26 11:23
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复