请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:PGA900主题中讨论的其他部件:PGA970、 UNIFLASH
工具/软件:
一旦我编写了固件并准备好将其刷写到 PGA900 或 PGA970、我应该使用什么工具?
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.
Uniflash 是 TI 用于将固件刷写到 PGA900 和 PGA970 的首选工具。
XDS110 调试器(可在任何 MSP LaunchPad 上找到或单独购买) 是 TI 的优选调试探针。 此示例使用 XDS110。


用户可以保存其会话配置设置。

Uniflash 中的默认设置会将固件刷写到 PGA900/970 DEVRAM。 如果用户想将固件刷写到 OTP (PGA900) 或 FRAM (PGA970) 中、则必须更改.gel 文件。 在.gel 文件中、重映射函数将重映射地址设置为 0x01:
Config_Remap()
{
WR_MEM_08(REMAP_ADDR,0x01);
}
如果用户想要对 OTP 或 FRAM 进行写入、则必须将其设置为 0x00。
//####################################################
//PGA900 OTP GEL file
//v1.1 March 4,2014
//####################################################
//*******************************************************************
//Watchdog register
//*******************************************************************
#define WDOG_CTRL_STAT_ADDR (0x4000051C)
//*******************************************************************
//Remap register
//*******************************************************************
#define REMAP_ADDR (0x40000220)
//*****************************************************************************
//Read write prototype
//*****************************************************************************
#define WR_MEM_08(addr, data) *(unsigned char*)(addr) = (unsigned char)(data)
#define RD_MEM_08(addr) *(unsigned char*)(addr)
//*****************************************************************************
//Global Functions
//*****************************************************************************
//Watchdog is disabled to eliminate warm resets during debug
Disable_Watchdog()
{
WR_MEM_08(WDOG_CTRL_STAT_ADDR,0x00);
}
//Set the processor to User mode after a file is loaded, on a
//restart or on a reset
//This will facilitate code loading and debug by putting the processor in a known
//state
PGA900StartState()
{
xPSR = (xPSR & ~0x1F) | 0x10;
}
OnFileLoaded()
{
GEL_TextOut("**** PGA900 OnFileLoaded .......... \n","Output",1,1,1);
PGA900StartState();
Config_Remap();
GEL_TextOut("**** PGA900 OnFileLoaded is done **** \n","Output",1,1,1);
}
OnRestart()
{
GEL_TextOut("**** PGA900 OnRestart .......... \n","Output",1,1,1);
PGA900StartState();
Config_Remap();
GEL_TextOut("**** PGA900 OnRestart is done **** \n","Output",1,1,1);
}
OnReset()
{
GEL_TextOut("**** PGA900 OnReset .......... \n","Output",1,1,1);
PGA900StartState();
Disable_Watchdog();
Config_Remap();
GEL_TextOut("**** PGA900 OnReset is done **** \n","Output",1,1,1);
}
Config_Remap()
{
WR_MEM_08(REMAP_ADDR,0x00);
}
OnTargetConnect()
{
GEL_MapOff();
GEL_MapReset();
GEL_MapAddStr(0x00000000, 0, 0x00002000, "RAM|AS4", 0); // OTP
GEL_MapAddStr(0x21000000, 0, 0x00002000, "R|W", 0); // Development RAM
GEL_MapAddStr(0x20000000, 0, 0x00000400, "R|W", 0); // SRAM Internal
GEL_MapAddStr(0x40000000, 0, 0x00000080, "R|W", 0); // EEPROM
GEL_MapAddStr(0x40000080, 0, 0x00000008, "R|W", 0); // EEPROM Cache
GEL_MapAddStr(0x40000088, 0, 0x00000578, "R|W", 0); // Control and status registers
GEL_MapAddStr(0xE000E000, 0, 0x00000F00, "R|W", 0); // M0 registers
GEL_MapOn();
PGA900StartState();
GEL_TextOut("**** PGA900 Initialization is in progress .......... \n","Output",1,1,1);
Disable_Watchdog();
Config_Remap();
GEL_TextOut("**** PGA900 Initialization is Done ****************** \n","Output",1,1,1);
}
OnPreFileLoaded()
{
GEL_TextOut("**** PGA900 OnPreFileLoaded .......... \n","Output",1,1,1);
Config_Remap();
GEL_TextOut("**** PGA900 OnPreFileLoaded is done **** \n","Output",1,1,1);
}//####################################################
//PGA970 FRAM GEL file
//v1.0 May 15,2015
//####################################################
//*******************************************************************
//Watchdog register
//*******************************************************************
#define WDOG_CTRL_STAT_ADDR (0x4000051C)
//*******************************************************************
//Remap register
//*******************************************************************
#define REMAP_ADDR (0x40000220)
//*****************************************************************************
//Read write prototype
//*****************************************************************************
#define WR_MEM_08(addr, data) *(unsigned char*)(addr) = (unsigned char)(data)
#define RD_MEM_08(addr) *(unsigned char*)(addr)
//*****************************************************************************
//Global Functions
//*****************************************************************************
//Watchdog is disabled to eliminate warm resets during debug
Disable_Watchdog()
{
WR_MEM_08(WDOG_CTRL_STAT_ADDR,0x00);
}
Config_Remap()
{
WR_MEM_08(REMAP_ADDR,0x00);
}
//Set the processor to User mode after a file is loaded, on a
//restart or on a reset
//This will facilitate code loading and debug by putting the processor in a known
//state
PGA970StartState()
{
xPSR = (xPSR & ~0x1F) | 0x10;
}
OnFileLoaded()
{
GEL_TextOut("**** PGA970 OnFileLoaded .......... \n","Output",1,1,1);
PGA970StartState();
Config_Remap();
GEL_TextOut("**** PGA970 OnFileLoaded is done **** \n","Output",1,1,1);
}
OnRestart()
{
GEL_TextOut("**** PGA970 OnRestart .......... \n","Output",1,1,1);
PGA970StartState();
Config_Remap();
GEL_TextOut("**** PGA970 OnRestart is done **** \n","Output",1,1,1);
}
OnReset()
{
GEL_TextOut("**** PGA970 OnReset .......... \n","Output",1,1,1);
PGA970StartState();
Disable_Watchdog();
Config_Remap();
GEL_TextOut("**** PGA970 OnReset is done **** \n","Output",1,1,1);
}
OnTargetConnect()
{
GEL_MapOff();
GEL_MapReset();
GEL_MapAddStr(0x00000000, 0, 0x00004000, "R|W", 0); // FRAM_TEXT
GEL_MapAddStr(0x21000000, 0, 0x00004000, "R|W", 0); // Development RAM
GEL_MapAddStr(0x20000000, 0, 0x00000800, "R|W", 0); // SRAM Internal
GEL_MapAddStr(0x20000800, 0, 0x00000200, "R|W", 0); // Waveform RAM
GEL_MapAddStr(0x40000000, 0, 0x000005E7, "R|W", 0); // Control and status registers
GEL_MapAddStr(0xE000E000, 0, 0x00000F00, "R|W", 0); // M0 registers
GEL_MapOn();
PGA970StartState();
GEL_TextOut("**** PGA970 Initialization is in progress .......... \n","Output",1,1,1);
Disable_Watchdog();
Config_Remap();
GEL_TextOut("**** PGA970 Initialization is Done ****************** \n","Output",1,1,1);
}