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.
工具/软件: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"]char
data[52][100];
仅此行就会占用5200个字的堆栈。 这意味着您会使堆栈溢出很多。 使其成为全局变量。 那么您的程序可能无法链接、您必须使该数组更小。
如果这不能解决问题、我建议您大幅简化您的程序。 尝试使该程序正常工作...
#include int main(){ put("Hello,world!");}
谢谢、此致、
乔治