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.

[参考译文] DSS从文本文件读取数据

Guru**** 2587345 points
Other Parts Discussed in Thread: CCSTUDIO

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/605186/dss-read-data-from-text-file

部件号:TMS320C6748
主题中讨论的其他部件:CCStudioOMAPL138

工具/软件:Code Composer Studio

您好,Ki Soo Lee,

非常感谢您帮助我解决了之前的问题。 现在,我正在6.2 中使用DSS进行单元测试的自动化。 我可以加载我的项目并使用"getaddress"添加中断点。

这里我的问题是如何从文本文件加载和读取数据(我有两个文本文件,它们将输入系数馈入我的函数)?

//##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################[##########################################[#[###### //

我已经看了TI提供的一个示例,即memoryDump.js。 在此脚本中有一些变量,如page,address,....等  

// C6x SIM的值
VAR页面= 0;
VAR地址= 0x20;
VAR AddrUnits = 1;
VAR字节大小=8;
VAR文字大小= 32;

//加载jpg
var sample_JPG_load ="tidotcom.jpg";
debugSession.memory.loadRaw (页面,地址,sample_JPG_load,wordSize,FALSE);

//打开jpg
VAR FIS = new FileInputStream(script.toAbsolutePath(sample_JPG_load));

//##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################[##########################################[#[###### //

对于我的功能,我有一些文本文件,这些文件具有我需要输入的窗口系数,因此请指导我如何打开和读取数据,并将结果存储到一个文本文件。

请考虑我的请求并解决我的问题。

谢谢你。

此致,

Koti。

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

    Kosti -您似乎在下面有类似的重复帖子:
    e2e.ti.com/.../s>222.7324万

    您似乎有两个用户帐户。 请尝试合并您的线程和帐户

    谢谢
    KI

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

    很抱歉,这是我的主要账户。 我看到你对我的问题的回答对我没有帮助。 下面是我的脚本。

    ############################################################################################################################################################################################################################################## /
    //将DSS软件包导入我们的命名空间,以便在键入时保存
    ImportPackage( Packages.com.ti.debug.engine.scripting);
    ImportPackage( Packages.com.ti.ccstudio.scripting.environment);
    ImportPackage(Packages.java.lang);
    ImportPackage(Packages.java.io);
    ImportPackage(Packages.java.io.file);


    var read_buffer = 100;//一次读取100字节。

    //创建我们的脚本环境对象-它是主要入口点
    //到任何脚本和工厂中,用于创建其他可脚本的服务器和会话
    VAR脚本= ScriptingEnvironment.instance();

    //创建日志文件以记录脚本执行
    script.traceBegin ("phasecompLOG.xml","DefaultStylesheet.xsl");

    //设置控制台和日志的跟踪级别
    script.traceSetConsoleLevel (TraceLevel.info);
    script.traceSetFileLevel (TraceLevel);

    script.traceWrite("开始脚本会话");

    //获取调试服务器并启动调试会话
    var debugServer = script.getServer("DebugServer.1");
    debugServer.setConfig("D:/target_configuration/OMAPL138_c6748.ccxml");
    var debugSession = debugServer.openSession("Blackhawk XDS560v2-USB系统跟踪仿真器_0/C674x_0");

    //连接到CPU
    debugSession.target.connect();

    //加载程序
    debugSession.memory.loadProgram ("D:/Sandboxes/DRP_previous/04_Engineering/03_Workspace/alge/DRP_sim/Debug_L138/DRP_C6748.out);

    // C6x SIM的值
    VAR页面= 0;
    VAR地址= 0x20;
    VAR AddrUnits = 1;
    VAR字节大小=8;
    VAR文字大小= 32;

    //加载jpg
    var input_phase_Coeff_load ="D:/test_vectors/PhaseComp_Array.dat";
    debugSession.memory.loadRaw (页面,地址,input_phone_Coeff_load,wordSize,FALSE);

    VAR页面= 0;
    VAR地址= 0x40;
    VAR AddrUnits = 1;
    VAR字节大小=8;
    VAR文字大小= 32;

    var input_绞 盘_coeff_load ="D:/test_vectors/绞 盘_Array.dat";
    debugSession.memory.loadRaw (页面,地址,input_winger_Coeff_load,wordSize,FALSE);

    //打开jpg
    VAR Inp1 = new FileInputStream(((input_phone_Coeff_load));
    VAR Inp2 = new FileInputStream(((input_gandon_Coeff_load));


    gotFromFile = java.lang.refling.Array.newInstance(java.lang.Byte.type, read_buffer);
    VAR gotFromMem;
    VAR bytesRead;
    变量索引= 0;
    VAR错误计数= 0;
    VAR预防匹配=假;

    //继续阅读,直到我们到达文件的末尾
    执行{
    //将字节读入数组
    bytesRead = Inp1.ReadData(GotFromFile);

    //从内存读取字节
    如果(bytesRead >0){

    gotFromMem = debugSession.memory.ReadData (页,地址+(index * addrUnits),byteSize,bytesRead);

    对于(var i = 0;i < bytesRead;I++){

    //从带符号字节转换为(无符号)长整型值
    VAR来自文件;
    如果(gotFromFile[i]< 0){
    fromFile = gotFromFile[i]+ 0x100;
    }
    否则{
    fromFile = gotFromFile[i];
    }

    var fromMem = gotFromMem[i];

    PreviousLine =当前行;
    currentLine =(索引+ I)+"\t\t"+
    "0x"+ Long.totHexString (地址+((索引+ I)* addrUnits))+"\t\t"+
    "0x"+ Long.toHexString (fromFile)+"\t\t"+
    "0x"+ Long.toHexString(fromMem);

    //比较值
    如果(FromFile != fromMem){

    //从内存操作生成一条消息
    //memErrors.add ("<Byte "+ String.valueof (index + I)+">原始JPG:0x"+ Long.toHexString (fromFile)+" From Memory:0x"+ Long.toHexString (fromMem));
    ErrorCount++;

    //写入输出日志
    //如果这是一个失败,而上一个是匹配的-则也显示上一个
    如果(预防){
    testLog.println(=================================================================================================================================== ");
    testLog.println (previousLine);
    testLog.println(=================================================================================================================================== ");
    }

    testLog.println (currentLine);
    预防=假;

    }其他{
    prep Matched =真;
    }
    }
    }

    //请跳过
    index ++ bytesRead;

    }同时(bytesRead >0);

    inp1.close();


    //在printf()语句中添加断点
    VAR Competing_Phase_Comp_Address = debugSession.symbol.getAddress ("Compet_Phase_Comp")
    VAR ComputePhaseComp_Process = debugSession.breakpoint.add(Compute_Phase_Comp_Address);

    //重新启动我们的目标
    debugSession.target.Restart()

    //如果尚未在main上自动停止,则运行。 应在第一个BP处停止
    IF (debugSession.Expression.Evaluate ("PC")!= Compute Phase_Comp_Address)

    debugSession.target.run();
    }

    //使用表达式-获取PC的当前值
    VAR NPC = debugSession.expression.Evaluate ("PC")

    //验证我们是否在正确的地址停止。 使用Static Java方法Long.toHexString()转换
    //记录消息时的结果为十六进制字符串
    IF (NPC == Compate_Phase_Comp_Address)

    script.traceWrite("success:halted at correct location");
    }
    否则

    script.traceWrite ("失败:期望值为0x"+ Long.toHexString (Compet_Phase_Comp_Address)+",实际值为0x"+ Long.toHexString (NPC))

    script.traceSetConsoleLevel (TraceLevel.info)
    script.traceWrite("测试失败!")
    script.traceEnd()
    java.lang.System.Exit(1);
    }


    //全部完成
    debugServer.stop();

    script.traceSetConsoleLevel (TraceLevel.info)
    script.traceWrite("测试成功");

    //停止日志记录并退出。
    script.traceEnd();

    ########################################################################################################################################################################################################################################################## /

    Ki,请看一下我的脚本,我会像这样面对这个问题

    "TypeError:找不到函数ReadData。 "

    在此,我请求您解决我的问题,从本地路径中存在的文件读取数据并将数据写入输出文件。

    我已经查看了您之前对相同问题 e2e.ti.com/.../41.859万e2e.ti.com/.../71.0641万的回复 ,但我无法解决此问题。

    请帮帮我


    谢谢你

    此致,
    Koti。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kosti -您没有回答我关于您正在使用哪种数据文件的问题:
    e2e.ti.com/.../222.7324万

    谢谢
    KI