85

帖子

0

TA的资源

一粒金砂(初级)

21
 
1. LZ Turn off the MMU 应该在设成 SVC 後, Config SDRAM 前执行.

2. LZ 的 EBoot 在跳至 NK 前是否已确实将 Cache flush??

3. LZ 在何处存取 "CRUS" 这字串?? 是否有将位址从 88000000 改为 88080000?? 还是使用 STARTUPTEXT 这个 label??

Paul, Chao @ Techware

回复

71

帖子

0

TA的资源

一粒金砂(初级)

22
 
引用 20 楼 paul_chao 的回复:
1. LZ Turn off the MMU 应该在设成 SVC 後, Config SDRAM 前执行.

2. LZ 的 EBoot 在跳至 NK 前是否已确实将 Cache flush??

3. LZ 在何处存取 "CRUS" 这字串?? 是否有将位址从 88000000 改为 88080000?? 还是使用 STARTUPTEXT 这个 label??

Paul, Chao @ Techware


1. 这个STARTUP是原来BSP自带的,并且在EBOOT的STARTUP中已经CONFIG中已经做过 CONFIG SDRAM,所这里CONFIG SDRAM应该跳过了吧,而且奇怪的是在烧到0X60000000或是设置在烧到RAM中的任何地址都能正常起来。
2.这段代码倒是没看到,我看过2410的BSP 在LAUNCH函数里他CACHE FLUSH,但是我这个BSP用的是PFNLAUNCH 并且我找不到这个函数的原型,很奇怪((PFN_LAUNCH)(dwLaunchAddr))();就是这个函数
3我在CONFIG.BIB中将8800000改为了88080000,这个在上面提到了,我的理解是系统根据880800000这个地址和CRUS这个字串,已经后面的几个0,来最终确定了60081008这个跳转地址
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

23
 
还有一点疑问的,我看了2410的EBOOT,里面都是用的虚拟地址,只有在lanuch函数关闭了MMU才用VATOPA函数转成了物理地址,但在我这个EBOOT里用的都是物理地址,比如FLASH地址就是0x60000000的地址,擦出烧写用的都是这个地址,而且在在LANUCH函数这里也没用转换函数。但在EBOOT里的STARTUP中确实已经打开了MMU啊,为什么还用物理地址?
这个是EBOOT STARTUP 中打开MMU  
Lets setup the MMU Linear = Physical.  This allows us to
; setup cachable and noncachable areas.
;
                bl              MMUSetup
;
; Branch to eboot main C routine.
;
                bl              EbootMain
;
; KernelStart should never return:
;


在MEMORY.H中还有这么个定义
#ifdef PHYSICAL_EQUAL_VIRTUAL
#define SDRAM_VIRTUAL_MEMORY                PHYSICAL_ADDR_SDRAM_MAIN
#define FLASH_VIRTUAL_MEMORY                PHYSICAL_ADDR_FLASH_INTEL
#define SRAM_16BIT_VIRTUAL_MEMORY           PHYSICAL_ADDR_SRAM_16BIT
#define VIRTUAL_SYSTEM_ASIC_REGS_BASE       PHYSICAL_SYSTEM_ASIC_REG_BASE
#define SDRAM_UNCACHED_VIRTUAL_MEMORY       SDRAM_VIRTUAL_MEMORY
#define PCMCIACARD_BASE                     PHYSICAL_ADDR_PCMCIA1
#define PCMCIACARD_MEMORY                   PCMCIACARD_MEMORY_PHYSICAL
#define PCMCIACARD_IO                       PCMCIACARD_IO_PHYSICAL
#define PCMCIACARD_ATTRIBUTE                PCMCIACARD_ATTRIBUTE_PHYSICAL

#else
#define SDRAM_VIRTUAL_MEMORY                0x80000000
#define FLASH_VIRTUAL_MEMORY                0x88000000
#define SRAM_16BIT_VIRTUAL_MEMORY           0x8c000000
#define VIRTUAL_SYSTEM_ASIC_REGS_BASE       (0x90000000 | 0x20000000)
#define PCMCIACARD_BASE                     (0x91000000 | 0x20000000)
#define PCMCIACARD_IO                       (PCMCIACARD_BASE + 0x00000000)
#define PCMCIACARD_ATTRIBUTE                (PCMCIACARD_BASE + PCMCIACARD_IO_SIZE)
#define PCMCIACARD_MEMORY                   (PCMCIACARD_BASE + PCMCIACARD_IO_SIZE + PCMCIACARD_ATTRIBUTE_SIZE)
#define SDRAM_UNCACHED_VIRTUAL_MEMORY       (SDRAM_VIRTUAL_MEMORY | 0x20000000)
#endif


EBOOT里用时上面那个定义

系统起来后用的就是后面那个定义,为什么要用2个?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

24
 
最后总结下现在的问题

1.烧到RAM中运行 系统能正常启动,并且任何地址都行
2.烧到FLASH的首地址0x60000000中可以正常启动

3.烧到FLASH其他地址,启动不了,通过点灯试验,看到有时可以进到OAL的STARTUP中,有时又进不去{同一个地址,反复烧几次)。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

25
 
up
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

26
 
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

27
 
up
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

28
 
已经搞定了,是烧FLASH时的一个地址没有偏移,导致烧进去的数据不对,感谢各位的帮助,结贴
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表