主题中讨论的其他器件:CCStudio、
工具/软件:TI C/C++编译器
您好!
我将面临 GEL 脚本和 Java 脚本。
InvokeCSS.js
//将 DSS 软件包导入我们的命名空间,以便在键入时保存
importPackage (Packages.com.ti.debug.engine.scripting);
importPackage (Packages.com.ti.ccstudio.scripting.environment);
importPackage (Packages.java.lang);
//修改这些变量以匹配您的环境。 使用正斜杠
VAR ccs6InstallDir ="C:/ti/ccsv6;
VAR RTWorksDir ="/ccs_temp";
VAR TargetCCXMLfile = RTWorksDir +"/TMS570LS3137.ccxml";
VAR programToLoad = RTWorksDir +"/Test.out";
var logfile = RTWorksDir +"/log.xml";
//创建我们的脚本环境对象-这是主要入口点
//进入任何脚本和工厂,以创建其他可脚本服务器和会话
VAR 脚本= ScriptingEnvironment.instance();
//在当前目录中创建日志文件以记录脚本执行
script.traceBegin (logfile、ccs6InstallDir +"/ccs_base/scripting/examples/DebugServerExamples/DefaultStylesheet.xsl");
//设置控制台和日志的跟踪级别
script.traceSetConsoleLevel (TraceLevel 信息);
script.traceSetFileLevel (TraceLevel。all);
script.traceWrite ("开始脚本会话");
//获取调试服务器并启动调试会话
var debugServer = script.getServer ("DebugServer.1");
debugServer.setConfig("D:/RTRT/TestRealTime/targets/CCS61_TMS570LS3137/cmd/TMS570LS3137.ccxml");
debugServer.setConfig(TargetCCXMLfile);
/var debugSession=debugServer.openSession(".*");
/var debugSession=debugServer.openSession("Texas Instruments XDS100v2 USB Debug Probe/CortexR4");
var debugSession=debugServer.openSession("Blackhawk USB560-M 仿真器,20引脚 JTAG 电缆/CortexR4");
script.traceWrite ("连接目标");
//连接到 CPU
debugSession.target.connect();
script.traceWrite ("目标已连接");
//debugSession.expression.evaluate ('GEL_LoadGel ("ccs_temp/tms570ls3137.gel"));
debugSession.expression.evaluate ('GEL_LoadGel ("C:/ti/ccsv6/ccs_base/emulation/gel/tms570ls3137.gel)"');
//加载程序
script.traceWrite ("加载程序");
debugSession.memory.loadProgram (programToLoad);
script.traceWrite ("从 GEL 执行程序");
debugSession.expression.evaluate ("load_BP_report_file");
var privClose = debugSession.symbol.getAddress ("priv_close");
var ccs6End = false;
while (!ccs6End)
{
if (debugSession.memory.readRegister ("PC")!=专用)
{
Thread.Sleep (2000);
}
其他
{
ccs6End = true;
}
}
//Thread.Sleep (15000);
debugSession.breakpoint.add("exit.c",85);
script.traceWrite ("退出断点集");
//运行目标
debugSession.target.run();
script.traceWrite ("目标正在运行");
//全部完成
debugServer.stop();
debugServer.stop();
script.traceWrite ("结束脚本会话");
//停止记录并退出。
script.traceEnd();
根据我们的要求修改 GEL 文件(字体为粗体):
TMS570LS3137.GEL
/* *//
/*(c) Texas Instruments 2006-2011、保留所有权利。 *
/* *//
/* *//
/*文件: TMS570LS3137.GEL *
/*版本: 1.0 */
/* *//
/*注意:此 GEL 文件作为示例提供,可用于 */
TMS570LS3137 微控制器的//软件开发。 之前 */
/* 用法建议检查文件是否提供 了*/
/* 功能预期。 *
/* *//
/* *//
/*------------------ *
/*定义-内存映射说明符 */
#define FLASH 0
#define RAM 1.
define nEMIF 0
#define EMIF 1.
/*------------------ *
/*定义-文本格式指定符 */
#define 黑色 0
#define blue 1.
#define RED 2.
/*------------------ *
/*定义-内存开关 */
#define 已启动0
#define COMPl 1.
/*------------------ *
/*全局变量-默认内存映射 */
unsigned int MemoryMap =闪存;
/*------------------ *
/*全局变量-内存开关 */
unsigned int MemSwitchState = compl;
/*------------------ *
/*函数- startup() */
/* *//
startup(){
}/* startup()*/
/*------------------ *
/*函数- OnResetDetected () */
/* *//
OnResetDetected (){
if (MemSwitchState == compl){
memmap (闪存、EMIF);
MemoryMap =闪存;
GEL_TextOut ("\t 由于系统复位、闪存@地址0x0的内存映射设置\n"、、、、 );
}
if (MemSwitchState ==已启动)
MemSwitchState == compl;
}
/*------------------ *
/*函数- OnTargetConnect() */
/* *//
OnTargetConnect()
if (MemoryMap ==闪存){
memmap (闪存、EMIF);
GEL_TextOut ("\t 闪存@地址0x0"、、、、、、的内存映射设置 );
}
if (MemoryMap == RAM){
memmap (RAM、EMIF);
GEL_TextOut ("\tRAM 的内存映射设置@地址0x0。"、、、、 );
GEL_TextOut ("\t 仅用于调试!"、、、、 );
}
}/* OnTargetConnect()*/
/******** /
menuitem "load TestRT Program";
INT RTRT_Mode = 0;
热菜单 load_BP_report_file (int nErrorCode、int bSymbolsOnly)
{
int BREAKPTS_SET = 0;
int 计数器= 0;
//GEL_Reset ();
//GEL_Restart ();
RTRTRT_Mode = 0;
GEL_TextOut ("清除断点 priv_writeln \n");
GEL_HWBreakPtDel (priv_writeln);
GEL_TextOut ("清除断点 priv_close \n");
GEL_HWBreakPtDel (priv_close);
GEL_HWBreakPtReset ();
//GEL_System ("del c:\\temp\\rtr.dat");
//GEL_System ("del c:\\temp\\tempfile.txt");
if (!BREAKPTS_SET)
{
GEL_TextOut ("设置断点\n");
GEL_HWBreakPtAdd (priv_writeln);
GEL_TextOut ("为 priv_writeln 设置断点\n");
GEL_HWBreakPtAdd (priv_close);
GEL_TextOut ("为 priv_close\n"设置断点);
GEL_TextOut ("b -%x\n"、、、、 sizeof (atl_buffer));
BREAKPTS_SET = 1;
GEL_Run();
RTRT_Mode = 1;
GEL_TextOut ("RTRT 模式设置为1\n");
}
}
OnHalt()
{
GEL_TextOut ("OnHalt called n");
GEL_TextOut ("PC -%x\n"、、、、 PC);
//GEL_Run ();
if (RTRT_Mode = 1)
{
if (pc ==priv_writeln)
{
Int A;
a= sizeof (atl_buffer);
GEL_TextOut ("a -%x\n"、、、、 a);
GEL_MemorySave (atl_buffer、0、a、"log.dat");
GEL_System ("type log.dat >>c:/temp/RTRT.dat);
GEL_Run();
}
否则 if (PC =priv_close)
{
GEL_TextOut ("\nTestRT:程序正常执行\n");
GEL_System ("echo Execution _Complete > c:/temp/tempFile.txt);
GEL_Halt();
RTRTRT_Mode = 0;
}
其他
{
GEL_Run();
}
}
}
热菜单 clear_RAM_buffer()
{
/* 清除"atl_buffer"的 RAM 缓冲器*/
GEL_MemoryFill (atl_buffer、0、0x0C00、0x00);
GEL_TextOut ("RAM 缓冲器已清除\n");
}
hotmenu load_report_file()
{
/*打开窗口以查看 RIO (结果)文件*/
//GEL_OpenWindow ("TestRT Rio Data Window"、0);
/* RIO (结果)文件的内容*/
/*数据的大小为6K,即6144字节("atl_buffer"的大小)*/
// GEL_MemorySave (atl_buffer、1、sizeof (atl_buffer)、"c:/temp/Test.spt、1、1);
GEL_TargetTextOut (ATL_buffer、0、6144、0、"TestRT Rio Data Window"、1);
}
hotmenu save_report_file (int nErrorCode、int bSymbolsOnly)
{
Int A;
a= sizeof (atl_buffer);
GEL_MemorySave (atl_buffer、0、a、"log.dat");
GEL_System ("type log.dat >> D:/MSS_TDR/temp/RTRT.dat");
}
/************* /
/*------------------ *
/*函数- memmap (memSel、extMem) */
/* *//
memmap (memSel、extMem){
GEL_MapOff ();
GEL_MapReset();
/*闪存/RAM 定义*/
if (memSel ==闪存){
/*闪存定义*/
GEL_MapAdd (0x00000000、0、0x00300000、1、0); /*内部闪存() */
GEL_MapAddStr (0xF0400000、0、0x00060000、"R|AS2"、0); /*内部闪存 ECC */
GEL_MapAdd (0x08000000、0、0x00040000、1、1); /*内部 RAM */
GEL_MapAdd (0x08400000、0、0x00040000、1、1); /*内部 RAM ECC */
GEL_MapAdd (0x20000000、0、0x00300000、1、0); /*镜像闪存 */
GEL_MapAdd (0xFE000000、0、0x01000000、1、1); /* CRC/PSA */
}
if (memSel == RAM){
/* RAM 定义*/
GEL_MapAdd (0x00000000、0、0x00040000、1、1); /*内部 RAM */
GEL_MapAdd (0x00400000、0、0x00040000、1、1); /*内部 RAM ECC */
GEL_MapAdd (0x08000000、0、0x00300000、1、0); /*内部闪存() */
GEL_MapAddStr (0xF0400000、0、0x00060000、"R|AS2"、0); /*内部闪存 ECC */
GEL_MapAdd (0x20000000、0、0x00300000、1、0); /*镜像闪存 */
GEL_MapAdd (0xFE000000、0、0x01000000、1、1); /* CRC/PSA */
}
if (extMem =EMIF){
GEL_MapAdd (0x60000000、0、0x10000000、1、1); /*外部异步存储器 */
GEL_MapAdd (0x80000000、0、0x08000000、1、1); /*外部同步 SDRAM 内存 */
}
/*其它与闪存相关的内存*/
GEL_MapAdd (0xF0200000、0、0x00010000、1、0); /* EEPROM */
GEL_MapAddStr (0xF0100000、0、0x00002000、"R|AS2"、0); /* EEPROM ECC */
GEL_MapAdd (0xF0000000、0、0x00004000、1、0); /*客户 OTP */
GEL_MapAddStr (0xF0040000、0、0x00000800、"R|AS2"、0); /*客户 OTP ECC */
GEL_MapAdd (0xF000E000、0、0x00001000、1、0); /*客户 OTP、EEPROM */
GEL_MapAddStr (0xF0041C00、0、0x00000400、"R|AS2"、0); /*客户 OTP、EEPROM ECC */
/*外设寄存器定义*/
GEL_MapAdd (0xFFF7FC00、0、0x00000200、1、1); /* SPI5 - PS00 */
GEL_MapAdd (0xFFF7FA00、0、0x00000200、1、1); /* SPI4 - PS01 */
GEL_MapAdd (0xFFF7F800、0、0x00000200、1、1); /* SPI3 - PS01 */
GEL_MapAdd (0xFFF7F600、0、0x00000200、1、1); /* SPI2 - PS02 */
GEL_MapAdd (0xFFF7F400、0、0x00000200、1、1); /* MIBSPI1 - PS02 */
GEL_MapAdd (0xFFF7E400、0、0x00000100、1、1); /* LIN - PS06 */
GEL_MapAdd (0xFFF7E500、0、0x00000100、1、1); /* SCI - PS06 */
GEL_MapAdd (0xFFF7E000、0、0x00000200、1、1); /* DCAN3 - PS07 */
GEL_MapAdd (0xFFF7DE00、0、0x00000200、1、1); /* DCAN2 - PS08 */
GEL_MapAdd (0xFFF7DC00、0、0x00000200、1、1); /* DCAN1 - PS08 */
GEL_MapAdd (0xFFF7C800、0、0x00000800、1、1); /* Flexray - PS12+PS13 */
GEL_MapAdd (0xFFF7A000、0、0x00000200、1、1); /* Flexray TU - PS23 */
GEL_MapAdd (0xFFF7D400、0、0x00000100、1、1); /* I2C - PS10 */
GEL_MapAdd (0xFFF7C200、0、0x00000200、1、1); /* MIBADC2 - PS15 */
GEL_MapAdd (0xFFF7C000、0、0x00000200、1、1); /* MIBADC1 - PS15 */
GEL_MapAdd (0xFFF7BC00、0、0x00000100、1、1); /* GIO - PS16 */
GEL_MapAdd (0xFFF7B800、0、0x00000100、1、1); /* NHET1 - PS17 */
GEL_MapAdd (0xFFF7B900、0、0x00000100、1、1); /* NHET2 - PS17 */
GEL_MapAdd (0xFFF7A400、0、0x00000100、1、1); /* HET TU - PS22 */
GEL_MapAdd (0xFFF7A500、0、0x00000100、1、1); /* HET TU2-PS22 */
/*外设存储器*/
GEL_MapAdd (0xFC520000、0、0x00002000、1、1); /* CPPI、以太网 RAM - PS05 */
GEL_MapAdd (0xFF0A0000、0、0x00020000、1、1); /* MibSPI5 RAM - PS05 */
GEL_MapAdd (0xFF0C0000、0、0x00020000、1、1); /* MibSPI3 RAM - PS06 */
GEL_MapAdd (0xFF0E0000、0、0x00020000、1、1); /* MibSPI1 RAM - PS07 */
GEL_MapAdd (0xFF1A0000、0、0x00020000、1、1); /* CAN3 RAM - PS13 */
GEL_MapAdd (0xFF1C0000、0、0x00020000、1、1); /* CAN2 RAM - PS14 */
GEL_MapAdd (0xFF1E0000、0、0x00020000、1、1); /* CAN1 RAM - PS15 */
GEL_MapAdd (0xFF3A0000、0、0x00020000、1、1); /* MIBADC2 RAM - PS29 */
GEL_MapAdd (0xFF3E0000、0、0x00020000、1、1); /* MIBADC1 RAM - PS31 */
GEL_MapAdd (0xFF440000、0、0x00020000、1、1); /* NHET2 RAM - PS34 */
GEL_MapAdd (0xFF460000、0、0x00020000、1、1); /* NHET1 RAM - PS35 */
GEL_MapAdd (0xFF4C0000、0、0x00020000、1、1); /* HET2 TU RAM - PS38 */
GEL_MapAdd (0xFF4E0000、0、0x00020000、1、1); /* HET1 TU RAM - PS39 */
GEL_MapAdd (0xFF50000、0、0x00020000、1、1); /* Flexray TU RAM - PS40 */
/*系统外设寄存器*/
GEL_MapAdd (0xFE000000、0、0x01000000、1、1); /* CRC */
GEL_MapAdd (0xFFA00000、0、0x00001000、1、1); /* CoreSight 调试 ROM *
GEL_MapAdd (0xFFA01000、0、0x00001000、1、1); /* R4调试寄存器 */
GEL_MapAdd (0xFFA02000、0、0x00001000、1、1); /* ETM-R4寄存器 */
GEL_MapAdd (0xFFA03000、0、0x00001000、1、1); /* CoreSight TPIU 寄存器 */
GEL_MapAdd (0xFFA04000、0、0x00001000、1、1); /* POM 寄存器 */
GEL_MapAdd (0xFFF80000、0、0x00001000、1、1); /* DMA RAM */
GEL_MapAdd (0xFFF82000、0、0x00001000、1、1); /* VIM RAM */
GEL_MapAdd (0xFFF83000、0、0x00001000、1、1); /* RTP RAM */
GEL_MapAdd (0xFFF87000、0、0x00001000、1、1); /*闪存包装程序寄存器 */
GEL_MapAdd (0xFFF8C000、0、0x00001000、1、1); /*熔丝组控制器 */
GEL_MapAdd (0xFFFFFF0000、0、0x00000200、1、1); /*电源管理寄存器*/
GEL_MapAdd (0xFFFFFFE000、0、0x00000100、1、1); /* PCR 寄存器 */
GEL_MapAdd (0xFFFFFFE100、0、0x00000100、1、1); /*系统2寄存器 */
GEL_MapAdd (0xFFFFFFE400、0、0x00000200、1、1); /* PBIST */
GEL_MapAdd (0xFFFFFFE600、0、0x00000100、1、1); /* STC */
GEL_MapAdd (0xFFFFFFEA00、0、0x00000200、1、1); /* IOMM */
GEL_MapAdd (0xFFFFFFEC00、0、0x00000100、1、1); /* DCC1 */
GEL_MapAdd (0xFFFFFF000、0、0x00000400、1、1); /* DMA */
GEL_MapAdd (0xFFFFFF400、0、0x00000100、1、1); /* DCC2 */
GEL_MapAdd (0xFFFFFF500、0、0x00000100、1、1); /* ESM */
GEL_MapAdd (0xFFFFFF600、0、0x00000100、1、1); /* CCMR4 */
GEL_MapAdd (0xFFFFFF700、0、0x00000100、1、1); /* DMM */
GEL_MapAdd (0xFFFFFF800、0、0x00000100、1、1); /* RAM ECC 偶 数*/
GEL_MapAdd (0xFFFFFF900、0、0x00000100、1、1); /* RAM ECC 奇数 */
GEL_MapAdd (0xFFFFFF00、0、0x00000100、1、1); /* RTP */
GEL_MapAdd (0xFFFFFF00、0、0x00000100、1、1); /* RTI 寄存器 */
GEL_MapAdd (0xFFFFFFFD00、0、0x00000100、1、1); /* VIM 奇偶校验 */
GEL_MapAdd (0xFFFFFF00、0、0x00000100、1、1); /* VIM 寄存器 */
GEL_MapAdd (0xFFFFFF00、0、0x00000100、1、1); /*系统寄存器 */
/* EMIF/以太网寄存器*/
GEL_MapAdd (0xFCFFE800、0、0x00000100、1、1); /* EMIF */
GEL_MapAdd (0xFCF78000、0、0x00000400、1、1); /* CPGMAC 从属设备 */
GEL_MapAdd (0xFCF78800、0、0x00000100、1、1); /* CPGMACSS 包装程序 */
GEL_MapAdd (0xFCF78900、0、0x00000100、1、1); /*以太网 MDIO */
GEL_MapOn();
}/*函数- memmap (memSel、extMem)*/
/*------------------ *
/*函数- swap_mem (memSel) */
/* *//
swap_mem (memSel){
GEL_TextOut ("注意:\n\t 将切换设备的闪存/RAM 存储器地址。");
GEL_TextOut ("\tat 此例程的末尾将重置器件。");
GEL_TextOut ("\t 这可能会导致弹出消息、指出错误!");
GEL_TextOut ("\tJust 在消息出现后重新连接。");
MemSwitchState =已启动;
if (memSel == RAM){
memmap (RAM、EMIF);
MemoryMap = RAM;
*(int *) 0xffffffffc4 = 0x050505;
*(int *) 0xffffffcc = 0x00000001;
*(int *) 0xffffffcc = 0x00000000;
}
if (memSel ==闪存){
memmap (闪存、EMIF);
MemoryMap =闪存;
*(int *) 0xffffffffc4 = 0x0A0A0A0A;
*(int *) 0xffffffcc = 0x00000001;
*(int *) 0xffffffcc = 0x00000000;
}
MemSwitchState = compl;
GEL_TextOut ("\t 内存交换完成。");
GEL_TextOut ("\TIN case 弹出消息、已重新连接到器件。");
}/* swap_mem (memSel)*/
/*------------------ *
/*菜单项-"TMS570LS3137内存映射设置" */
/* *//
菜单项"TMS570LS3137内存映射设置";
热菜单 CCS_MemMap_flash_at_0x0 (){
memmap (闪存、EMIF);
GEL_TextOut ("\t 闪存@地址0x0"、、、、、、的内存映射设置 );
}
热菜单 CCS_MemMap_RAM_at_0x0 (){
memmap (RAM、EMIF);
GEL_TextOut ("\tRAM 的内存映射设置@地址0x0。"、、、、 );
GEL_TextOut ("\t 仅用于调试!"、、、、 );
}
/*------------------ *
/*菜单项-"TMS570LS3137内存开关" */
/* *//
菜单项"TMS570LS3137内存开关";
热菜单 Target_Flash_TO_0x0 (){
swap_mem (FLASH);
}
热菜单 Target_RAM_TO_0x0 (){
swap_mem (RAM);
}
我的错误日志文件"CortexR4:GEL 输出:PC - 0x00005A20 "无法通过 GEL 文件读取:
CortexR4:GEL 输出:清除断点 priv_writeln
CortexR4:GEL 输出:PC - 0x00005A20
CortexR4:GEL 输出:清除断点 priv_close
CortexR4:GEL 输出:设置断点
CortexR4:GEL 输出:为 priv_writeln 设置断点
CortexR4:GEL 输出:为 priv_close 设置断点
CortexR4:GEL 输出:B - 0x00000C00
CortexR4:GEL 输出:RTRT 模式被设定为1
CortexR4:GEL 输出:OnHalt 被调用
CortexR4:GEL 输出:PC - 0x000000C0
CortexR4:GEL 输出:A - 0x00000C00
CortexR4:GEL_System:键入 log.dat >> c:/temp/RTRT.dat
CortexR4:GEL_System:
CortexR4:GEL 输出:OnHalt 被调用
CortexR4:GEL 输出:PC - 0x000000C0
CortexR4:GEL 输出:A - 0x00000C00
CortexR4:GEL_System:键入 log.dat >> c:/temp/RTRT.dat
CortexR4:GEL_System:
CortexR4:GEL 输出:OnHalt 被调用
CortexR4:GEL 输出:PC - 0x000000C0
CortexR4:GEL 输出:A - 0x00000C00
CortexR4:GEL_System:键入 log.dat >> c:/temp/RTRT.dat
CortexR4:GEL_System:
CortexR4:GEL 输出:OnHalt 被调用
CortexR4:GEL 输出:PC - 0x000000C0
CortexR4:GEL 输出:A - 0x00000C00
CortexR4:GEL_System:键入 log.dat >> c:/temp/RTRT.dat
CortexR4:GEL_System:
CortexR4:GEL 输出:OnHalt 被调用
CortexR4:GEL 输出:PC - 0x000000C0
CortexR4:GEL 输出:A - 0x00000C00
CortexR4:GEL_System:键入 log.dat >> c:/temp/RTRT.dat
CortexR4:GEL_System:
CortexR4:GEL 输出:OnHalt 被调用
CortexR4:GEL 输出:PC - 0x000000C0
CortexR4:GEL 输出:A - 0x00000C00
CortexR4:GEL_System:键入 log.dat >> c:/temp/RTRT.dat
CortexR4:GEL_System:
CortexR4:GEL 输出:OnHalt 被调用
CortexR4:GEL 输出:PC - 0x000000C0
CortexR4:GEL 输出:A - 0x00000C00
CortexR4:GEL_System:键入 log.dat >> c:/temp/RTRT.dat
CortexR4:GEL_System:
CortexR4:GEL 输出:OnHalt 被调用
CortexR4:GEL 输出:PC - 0x000000C0
CortexR4:GEL 输出:A - 0x00000C00
CortexR4:GEL_System:键入 log.dat >> c:/temp/RTRT.dat
CortexR4:GEL_System:
CortexR4:GEL 输出:OnHalt 被调用
CortexR4:GEL 输出:PC - 0x000000C0
CortexR4:GEL 输出:A - 0x00000C00
CortexR4:GEL_System:键入 log.dat >> c:/temp/RTRT.dat
CortexR4:GEL_System:
严重:无法读取寄存器 PC:执行状态阻止访问
严重:评估"PC"时出错:无法读取寄存器 PC:执行状态阻止访问
org.moilla.javascript:WrappedException:wrapped com.ti.ccstudio。scripting.environment.ScriptingException:Error evaling "PC":Could not read register PC: execution state prevented access (D:\RTRTRT\TestRealTime\Targets\CCS61_TMS570LS3137\cmd:InvokeCCS.js#61)
在 org.mozilla.javascript:context.throwAsScriptRuntimeEx (context.java:1693)