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.

[参考译文] CCS/TMS320F28335:无法打开/读取.csv 文件

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/816376/ccs-tms320f28335-unable-to-open-read-a-csv-file

器件型号:TMS320F28335

工具/软件:Code Composer Studio

您好!

我很难确定 fopen 为何不允许我打开文件。 当我调试时、它不会到达 if 语句、并且当前不允许我在 fopen 行设置断点。 我在 MVS 中测试了我的代码、它工作正常。

我只收到两条警告:

#10247-D null:创建输出段".CIO"而不包含段规范 测试   C/C++问题
#10247-D null:创建输出段"ramfuncs"而不包含段规范 测试   C/C++问题

#include "DSP28x_Project.h"
#include 
#include 
#include 

void main (void)
{
DisableDog ();
文件*outfile = fopen ("test.csv、"r");
if (outfile!= NULL){
退出(1);
}
字符数据[52][100];
fgets (data[0]、100、outfile);
fclose(outfile);

} 

提前感谢、

何塞

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

    这些警告...

    [引用 user="Jose de Casas"]#10247-D null:创建输出段".CIO"而不包含段规范 测试   C/C++问题
    #10247-D null:创建不带 SECTIONS 规范 的输出段"ramfuncs "测试   C/C++问题[/quot]

    (笑声) 指示您未使用正确的链接器命令文件。  作为一种权变措施、向链接器命令文件中添加条目、以将这些输出段中的每个段放入可读取和写入的存储器范围中。  要了解有关缺少链接器命令文件的原因的更多信息、请在 C2000器件论坛中启动新主题。  或者、如果您愿意、我可以将此主题移至该论坛。

    这可能不是您唯一的问题。  有关  更多背景和建议、请参阅文章使用 printf 的提示。

    谢谢、此致、

    乔治

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

    我当前正在使用28335_RAM_lnk.cmd 文件。 我对所有这些都很陌生、那么我如何添加您刚才所说的条目?

    至于提示、我将堆大小更改为0x100、堆栈大小更改为0x300、但正如我之前所说的、我不确定这是否正确。 我不知道设置正确大小的正确方法是什么。 此外、我还将优化级别设置为"整个程序优化"。

    我想我想知道如何添加这些条目:  

    SECTIONS
    {//
    设置“引导至 SARAM"模式:
    codestart 段(可在 DSP28_CodeStartBranch.asm 中找到)
    将执行重定向到用户代码的开始。 */
    codestart :>开始, PAGE = 0
    
    #ifdef __TI_Compiler_version__
    #if __TI_Compiler_version__>=15009000
    .TI.ramfunc:{}> RAML0, PAGE = 0
    #else
    ramfuncs :> RAML0, PAGE = 0
    #endif
    #endif
    
    .text :> RAML1, PAGE = 0
    .cinit :> RAML0, PAGE = 0.Pinit
    :> RAML0, PAGE = 0.switch
    :> RAML0, PAGE = 0.CIO
    :> RAML0,page = 0 //我添加了此行
    ramfuncs:> RAML0,page = 0 //我添加了此行
    
    .stack :> RAMM1, PAGE = 1.ebss
    :> RAML4, PAGE = 1.econst
    :> RAML5, PAGE = 1
    .esysmem :> RAMM1, PAGE = 1
    
    IQmath :> RAML1, PAGE = 0
    IQmathTables :> IQTABLES,PAGE = 0,TYPE = NOLOAD 

    它使警告消失、但问题与以前相同。

    感谢您的帮助、

    何塞

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

    我注意到的另一件事是、如果我注释 fgets 函数、该文件能够在没有错误的情况下打开。

    此外、当我进入 fopen 时、我会达到以下目标:

    (三
    *函数:codestart 段
    *
    说明:分支到代码起始点
    
    
    .sect "codestart"
    
    code_start:
    如果 WD_DISABLE = 1
    LB wd_disable ;分支到看门狗禁用代码//此行代码。 它从这里循环回 fopen。
    其他
    LB _c_int00 ;分支到 RTS 库中 boot.asm 的启动
    .endif 

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

    我只是注意到主函数中的这一行...

    [引用用户="Jose de Casas"]chardata[52][100];

    仅此行就会占用5200个字的堆栈。  这意味着您会使堆栈溢出很多。  使其成为全局变量。 那么您的程序可能无法链接、您必须使该数组更小。

    如果这不能解决问题、我建议您大幅简化您的程序。  尝试使该程序正常工作...

    #include 
    int main(){ put("Hello,world!");} 

    谢谢、此致、

    乔治