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.

[参考译文] TMS320C5517:fopen 不起作用(返回空)

Guru**** 2580305 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/594616/tms320c5517-fopen-does-not-work-return-null

器件型号:TMS320C5517

您好!

我尝试使用电路板上的 fopen 函数打开文件(tms5517)、但返回0。

文件*fp;
fp = fopen (filename、"rb");

我尝试使堆栈更大、但它也不起作用。

-stack 0x2000 /*主堆栈大小*/
-sysstack 0x1000 /*次要堆栈大小*/
堆0x20000 //堆区域大小*/

存储器

MMR:O = 0x000000 l = 0x0000c0 /* 192B 存储器映射寄存器*/

DARAM0:O = 0x0000C0 l = 0x001F40 // 8kB 双存取 RAM 0 */
DARAM1:O = 0x002000 l = 0x002000 // 8kB 双存取 RAM 1 */
DARAM2:O = 0x004000 l = 0x002000 // 8kB 双存取 RAM 2 */
DARAM3:O = 0x006000 l = 0x00A000


SARAM0:O = 0x010000 l = 0x040000



CS0:O = 0x050000 l = 0x7B0000 // 8MB CS0外部存储器空间*/
CS2:O = 0x800000 l = 0x400000 // 4MB CS2外部存储器空间*/
CS3:O = 0xC00000 l = 0x200000 // 2MB CS3外部存储器空间*/
CS4:O = 0xE00000 l = 0x100000 /* 1MB CS4外部存储器空间*/
CS5:O = 0xF00000 l = 0x0E0000 /* 1MB CS5外部存储器空间*/
ROM:O = 0xFE0000 l = 0x01FF00 // 128KB ROM (MPNMC=0)或 CS5 (MPNMC=1)*/
VECS:O = 0xFFFFFF00 l = 0x000100 //复位向量*/


部分

向量(空载)> VECS /*如果 MPNMC = 1、请删除 NoLoad 指令*
.cinit > DARAM3 align = 4
.text > DARAM3 ALIGN = 4
.stack > SARAM0 align = 4
.sysstack > SARAM0 align = 4
.sysmem > SARAM0 align = 4
.data > SARAM0 ALIGN = 4
.cio > SARAM0 ALIGN = 4
.bss > SARAM0 ALIGN = 4
.const > SARAM0 ALIGN = 4
.switch > SARAM0 ALIGN = 4

我没有使用任何外部 RAM、这意味着只有 DSP 本身的内存。 那么、memory 是否太小、以至于 fopen 无法运行?  

但我想将 bin 文件写入闪存、如果无法打开该 bin 文件、我会将整个数据移动到.h 文件中、这是一个麻烦的工作。

有人可以帮帮我吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我已通知软件团队。 他们的反馈将在此处发布。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    user4626108、

    这是您要加载到闪存中的引导映像吗?
    您正在读取的 bin 文件有多大?
    WB 与 Rb 相比是否适用于 fopen?

    Lali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1。
    是的、我想将 bin 文件加载到闪存中、这大约是194.00的大容量(小于0x40000、0x40000是 SARAM 的大小为5517)。 但它稍后会增大。 我还没有使用外部 RAM。

    现在我无法使用 fopen、我使用了另一种方法:将 bin 文件加载到程序中的数组中。 但是、由于闪存写入程序在 DSP 上占用一些空间、因此可以写入闪存的应用程序大小将更小。

    2.
    什么是 WB 和 RB?
    我已经尝试过 printf,但它也不起作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    user4626108、

    请参阅 http://www.cprogramming.com/tutorial/cfileio.html 的 fopen 部分。 讨论 RB 和 WB。

    代码中的 printf 可能会很麻烦。 您可以使用 uartPrintfs 来帮助调试吗?

    Lali

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    WB 和 RB 都不能与 fopen 一同使用。

    uartPrintf 是否使用 UART 串行端口? 我的串行端口连接到另一个 MCU、MCU 的串行端口可以连接 PC。 使用串行端口不是很方便。 我必须先将数据传输到 MCU、然后 MCU 将数据传输到 DSP。

    因此、如果函数正常工作、最好使用 fopen。   但是、如果没有其他方法、我终于使用了串行端口。