heyman
驱动牛犊
驱动牛犊
  • 注册日期2005-11-23
  • 最后登录2009-06-29
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望28点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2035回复:2

提一个关于BSP中OAL与boot之间共享数据的问题

楼主#
更多 发布于:2008-06-27 09:46
Hi All,

以下选自2440的BSP上的代码。
在BSP中,boot loader和OAL之间有一些数据可以共享。这段数据被存放在(BSP_ARGS *) IMAGE_SHARE_ARGS_UA_START这块内存里。
#define IMAGE_SHARE_ARGS_UA_START       0xA0020000
#define IMAGE_SHARE_ARGS_CA_START       0x80020800
#define IMAGE_SHARE_ARGS_SIZE           0x00000800
可以看出来,IMAGE_SHARE_ARGS_UA_START指向的是虚拟内存中的Uncached段,而IMAGE_SHARE_ARGS_CA_START指向虚拟内存中的Cached段。
我的g_oalAddressTable中这样定义:
DCD     0x80000000, 0x30000000, 64      ; 32 MB DRAM BANK 6
因此,它们分别是指向物理地址0x30020000和0x30020800。

然后看config.bib中,可以看到有这段定义:
; Common RAM areas
    AUD_DMA             80002000  00000800  RESERVED
    SDIO_DMA            80010000  00010000  RESERVED
    ARGS                80020800  00000800  RESERVED
    DBGSER_DMA          80022000  00002000  RESERVED
    SER_DMA             80024000  00002000  RESERVED
    IR_DMA              80026000  00002000  RESERVED
    SLEEP               80028000  00002000    RESERVED
    EDBG                80030000  00020000  RESERVED
    DISPLAY             80100000  00100000  RESERVED  

其中ARGS对应的物理地址的0x30020800是为IMAGE_SHARE_ARGS_CA_START保留的吧。
我有几个问题:
1. 为什么没有为IMAGE_SHARE_ARGS_UA_START保留一段内存空间呢?
2. IMAGE_SHARE_ARGS_CA_START这段空间是做什么用的呢?我在代码中并没有看到IMAGE_SHARE_ARGS_CA_START被使用到。
3. 按照命名来看,这两个宏应该是指向同一个物理地址的两个不同虚拟地址才对,而为什么实际上却是指向了不同的物理地址呢?

大家讨论一下呵呵。
high
论坛版主
论坛版主
  • 注册日期2002-08-10
  • 最后登录2010-07-26
  • 粉丝4
  • 关注0
  • 积分60分
  • 威望655点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分60分
沙发#
发布于:2008-06-27 17:51
0x80 和 0xa0 都是指向相同地址, 一个ca, 一个ua. 不需要额外在给ua再次保留. 所以你的值应该是有错误的, 要修改0xA0020800

这个是eboot传递给kernel的参数. 保存BSP_ARGS结构, 定义在args.h中. 所以eboot中在OEMPlatformInit()初始化它, OAL在OEMInit()中读出.
heyman
驱动牛犊
驱动牛犊
  • 注册日期2005-11-23
  • 最后登录2009-06-29
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望28点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-06-28 10:50
是,我也觉得是定义错了,但我发现2410和2440的BSP似乎都在这个地方有这样的问题。感到很奇怪。
大家不妨看看自己的BSP(尤其是2410和2440),image_cfg.h里面,IMAGE_SHARE_ARGS_UA_START和IMAGE_SHARE_ARGS_CA_START的定义是否一致。
游客

返回顶部