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.

DSP6455,使用PCI后,BOOT方式选择及运行

Other Parts Discussed in Thread: TMS320C6455

各位好,目前基于TMS320C6455的开发中遇到以下问题:

前提:使用PCI、网口、EMIF、DDR、GPIO、I2C等接口。

在使用PCI时选取了BOOT方式,EMIF norFlash 加载方式,I2C自动初始化。程序下载到NORFLASH后,计算机可识别到PCI设备,但网口程序无法运行,在等候大约30分钟后,网口正常ping通,计算机PCI读写寄存器失效,这种加载方式该芯片支持,具体见Bootloader文档,但是实际运行时,怎么实现程序的加载和跳转暂未有文档进行说明。

问题:

1、能不能提供片内固化的源码?

2、有没有相关的文档说明?

3、关于PCI的源码和资料能不能给我提供一下?

4、由于自加载以及PCI需要上电即检测设备没法在线调试,有没有好的调试方法?

  • 1. 没有提供源码,只能接上仿真器去反汇编窗口看ROM里的代码。

    2. EMIF16 boot mode是直接跳转到EMIFA CE3 (0xB000 0000处执行代码,没有代码加载的过程。
    In EMIFA boot mode, the bootloader simply branches to the base address of EMIFA CE3 (0xB000 0000). Interrupts are disabled.

    3. E2E上有工程师共享里PCI例程,可以参考一下。
    https://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/112/t/50107

    4. 什么是自动加载?请问你现在用的是PCI boot mode还是EMIF16 boot mode?

  • EMIF16 boot mode 加载同时支持I2C eeprom autoinitialization。所以程序入口点在internal ROM处。现在是芯片手册支持这种加载方式。实际过程出现了我在前提里描述的问题。所以从internal rom 加载完代码之后是怎么跳转的成为了一个疑点?

    2,4的问题是一样的,我用的是EMIF16 boot mode,I2C autoinitialization方式加载。(自动加载就是程序烧录到板上,程序上电自启动)

  • join join 说:

    EMIF16 boot mode 加载同时支持I2C eeprom autoinitialization。所以程序入口点在internal ROM处。现在是芯片手册支持这种加载方式。实际过程出现了我在前提里描述的问题。所以从internal rom 加载完代码之后是怎么跳转的成为了一个疑点?

    2,4的问题是一样的,我用的是EMIF16 boot mode,I2C autoinitialization方式加载。(自动加载就是程序烧录到板上,程序上电自启动)

    一、

    自动加载就是程序烧录到板上,程序上电自启动?

    程序烧录到板上:

    1、I2C 片子?

    2、EMIF16 -》EMIFA CE3 (0xB000 0000). 处的 FLASH?

    你烧录的是哪个?

    二、

    EMIF16 boot mode

    SPRS276M 手册上 的是 EMIFA 8-bit ROM boot 不知道是否是一回事

    In EMIFA boot mode, the bootloader simply branches to the base address of EMIFA CE3 (0xB000 0000).

    三、EMIF16 boot mode 加载同时支持I2C eeprom autoinitialization

      这个在哪个手册上有说明吗?

  • 一、程序烧录到板上EMIFA CE3 (0xB000 0000). 处的 FLASH

    二、是EMIFA 8-bit ROM boot 。在文档《TMS320C645x/C647x DSP Bootloader User's Guide》中,In EMIFA boot mode, the bootloader simply branches to the base address of EMIFA CE3 (0xB000 0000).
    Interrupts are disabled. 。

    三、同样在文档《TMS320C645x/C647x DSP Bootloader User's Guide》中18页上有写到

  • @join join 

    1、

    The boot ROM can be identified by reading the ROM signature. The ROM address may very from one
    bootloader address to the next (see Table 8). The signature is a string of characters, stored one byte per
    32 bit word. If the ROM boot executes this signature is copied as a packed byte string (order depends on
    the endianness configuration) to L2 at 0x9ff040.

    表示 从 L2 的 0x9ff040 可以看出 bootloader的版本号。

    2、版本号的不同

    EMIF boot with PCI auto-initialization enabled is supported

    表示 你 从 EMIF bootloader,但是 

    the bootloader  不是 简单 地 simply branches to the base address of EMIFA CE3 (0xB000 0000).

    the bootloader 还把 PCI 接口给你初始化好了,便于你使用,并不表示 the bootloader 会同时从  PCI bootloader!

    3、怎么又弄到 同时 I2C 启动呢?

  • I2C eeprom 需要写入PCI相关的寄存器信息,bootloader启动时才能实现autoinitialization。这里I2C只做PCI的寄存器配置工作而不是从I2C启动。

    具体参看文档

  • 如何查看反汇编查看rom里的代码,有没有说明文档?谢谢

  • 在反汇编窗口里输入bootloader在ROM里的地址。

  •  这个反汇编看起来很麻烦啊,你们那有源码么,方便的话,帮我看看Internal ROM程序运行完之后是如何跳转到0xb0000000的,有什么条件么

  • 能详细介绍一下,6455的flash固化程序后利用seed560查看代码程序运行情况的方法吗?可以打断点吗?可以单步执行吗?