This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570LS3137的RAMECC初始化

Other Parts Discussed in Thread: TMS570LS3137, HALCOGEN

各位专家,在对TMS570LS3137芯片的RAMECC初始化时,有几个问题想请教一下:

1. 通过HAL Code generator自动生成的代码,在_c_int00()函数中,为什么是先调用_memoryInit_(0x01)完成硬件自动初始化,再调用_coreEnableRamEcc_()使能SRAM ecc。在芯片手册中写的不应该是先使能ECC,再进行硬件初始化吗?如果先执行初始化,那初始化的时候怎么知道SRAM是按照奇偶校验初始化的还是按照ECC纠错初始化的?

2. 是否需要先使能外设接口模块的时钟门控,才能去读写各个外设模块的寄存器以及ram空间呢?另外,外设的ram空间是否只能是奇偶校验的保护措施?外设的RAM空间在执行硬件自动初始化前,不需要在各个外设模块中使能外设的奇偶校验吗?例如在HAL Code generator自动生成的代码中,对于VIM接口RAM的初始化,仅仅是调用_memoryInit_(0x04)来初始化VIM接口的RAM,而在调用此函数前,并未时能VIM时钟门控以及VIMram奇偶校验使能控制寄存器,这是为什么呢?

3. cpu ram区的address parity checking是干嘛用的? address parity checking出现错误是会产生ESM group2 的错误信号,但在hal code generator软件上为什么不能使能group2和group3的错误信号通道啊?

4. RAM ecc1比特错报错给ESM可以产生中断,2比特错误是产生data abort异常吗?

  • 各位专家,怎么没有人回复啊?

  • yuyin,

      你好!

       1.首先关于RAM区间的auto-initiation是可选的一个配置项。它的作用相当于将所有的RAM空间和RAM对用的ECC空间都初始化到一个正确值。这个操作时可以在RAM ECC 校验之前进行的,如果你想进一步了解TCRAM的内容,可以参考ARM公司的Cortex-R4F的白皮书,里面有更详细的介绍。

    2. 我的理解是在我们的额TMS570里面,所有的RAM区间,包括外设的寄存器是可以统一管理的,包括分组校验检测,这个是可以独立于外设模块去进行操作的。因为我们的TCRAM它可以看做一个独立的RAM管理单元,对于RAM的初始化操作,不需要借组外设的操作。

    3. 关于ESM模块有的一些错误channel确实现在没有支持可配置,原因是我们系统里面已经默认将它设置好了,不支持外部配置。

    4. RAM ECC校验1个比特会自动纠正,2个比特会把报错。两个错误都会关联到ESM模块。

  • 您好

    关于问题1:你是说在没有调用_coreEnableRamEcc_()函数使能RAM ecc的情况下,直接调用自动初始化RAM的函数_memoryInit_(0x1),则达成的效果是RAM区间(0x080000000~0x083fffff)初始化为0,RAM的ECC区间也会被初始化成正确的值0xfc?

    另外想补充问两个问题:

    1.  spnu499a.pdf手册第六章一直强调说256kB的RAM分为B0TCMB1TCM两块,这两个ram区具体是怎么区分的啊?

    2.   RAM的错误关联到ESM模块,而ESM模块关于RAM的错误说明如下:

    ESM group1channel26/28  RAM even/odd bank---correctable error

    ESM group2channel6/8  RAM even/odd bank---uncorrectable error

    ESM group2channel10/12  RAM even/odd bank---address bus parity error

    ESM group3channel3/5  RAM even/odd bank---ECC uncorrectable error

    想请教的是ESM group2channel6/8 和ESM group3channel3/5有什么区别啊?RAM ecc 一比特错是关联的ESM group1channel26/28吗?

  • 关于问题1, RAM进行auto—initiation后,RAM区间的都会初始化为0, RAM的ECC空间初始化为相对应的ECC是0X0c,这个在我们的技术手册上面有说明。

    关于B0TCM 和B1TCM是COrtex-R4F内核里面的TCRAM模块的两个接口,一个用于连接片内RAM的奇地址,一个偶地址。

    关于你提到的四个错误,我没怎么注意,因为在HALCOGEN中ESM group2、3还是不能配置的。

    你是从那里得到关于它们的channel对应的信息的呢?

    谢谢

  • 您好,手册中写到的是必须先使能RAM ecc,再执行auto -initiation,才会将ram清零,ram ecc空间初始化成0x0c啊?我现在的疑惑是为什么ram ecc都没有使能的前提下直接执行auto -initiation也能达到上述效果吗?

    RAM奇地址对应的是64bit的还是32bit的呢?例如0x08000008、0x08000004、0x08000001哪个算奇地址啊?

    group2和3是已经配置好的,他们的相对信息是在TMS570LS3137的芯片补充手册中写的,在TMS570LS3137一个两千多页的pdf手册中