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.
工具与软件:
我目前正在研究自定义 SPI 引导加载程序、以将 SPI 闪存内核加载到 RAM 中-请参阅先前的问题 - TMS320F280039C:TI 280039C SPI 引导加载程序- C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛
我正在使用此处的 SPI_Boot.c 文件- C:\ti\c2000\C2000Ware_5_02_00_00\libraries\boot_rom\f28003x\rev0\rom_sources\F28003x_rom\bootrom\source
第一个被调用的函数之一是:
// // SPI_start_Boot - Function to begin transmission and copying of data into // device memory // uint32_t SPI_start_Boot(uint16_t gpioSTEA) { uint32_t entryAddress; // // Enable EEPROM and send EEPROM Read Command // (void)SPIA_Transmit_Receive(0x0300U); // // Send Starting Address for Serial EEPROM (16-bit - 0x0000,0000) // or Serial Flash (24-bit - 0x0000,0000,0000) // Then check for 0x08AA data header, else go to flash // if(SPIA_SetAddress_KeyChk() != BROM_EIGHT_BIT_HEADER) { return FLASH_ENTRY_POINT; } // // Check for Clock speed change and reserved words // SPIA_ReservedFn(); // // Get point of entry address after load // entryAddress = GetLongData();
其中返回 RAM 中闪存内核的入口地址(32位)- entryAddress = GetLongData ();
为了测试我的自定义 SPI 引导加载程序 、我使用了 hex2000.exe 为 RAM 之外运行的 led_ex_blinky.application 创建了一个新的二进制 led_ex1_blinky.txt
方法是使用十六进制编辑器查看生成的二进制文件
我正在尝试了解这与 SPI 引导代码通过调用返回的入口地址有何关联- entryAddress = GetLongData()??
感谢您的任何帮助、
Brent Williams
您好、Brent:
将您与我们的一位 SPI 引导加载程序专家联系起来、进一步帮助您。
此致、
Aishwarya.
谢谢 Aishwarya、
我一直在查看 SPI 启动代码
uint32_t SPI_start_Boot(uint16_t gpioSTEA) { uint32_t entryAddress; // // Enable EEPROM and send EEPROM Read Command // (void)SPIA_Transmit_Receive(0x0300U); // // Send Starting Address for Serial EEPROM (16-bit - 0x0000,0000) // or Serial Flash (24-bit - 0x0000,0000,0000) // Then check for 0x08AA data header, else go to flash // if(SPIA_SetAddress_KeyChk() != BROM_EIGHT_BIT_HEADER) { return FLASH_ENTRY_POINT; } // // Check for Clock speed change and reserved words // SPIA_ReservedFn(); // // Get point of entry address after load // entryAddress = GetLongData(); // // Receive and copy one or more code sections to destination addresses // CopyData();
下面是使用 hex2000实用程序生成的.txt 文件
查看 SPI 引导代码、它读取的第一个代码如下:
#define BROM_EIGHT_BIT_HEADER 0x08AAU if(SPIA_SetAddress_KeyChk() != BROM_EIGHT_BIT_HEADER)
我可以在.txt 文件中看到它以红色突出显示的内容。
接下来、在 SPI 引导代码中、我看到以下内容:
// This function reads 8 reserved words in the header. SPIA_ReservedFn(void)
这将是以蓝色突出显示的词语。
SPI 引导代码中读入应用程序入口点的下一部分为:
// // Get point of entry address after load // entryAddress = GetLongData();
那么、这是否意味着入口点是0x00000000 -突出显示紫色?
此外、为什么没有 SPI 闪存内核?
谢谢!
Brent
如果我查看通用 RAM 连接器命令文件-
BEGIN : origin = 0x00000000, length = 0x00000002
突出显示的紫色值00 00 00 =>是起始地址。 下面的02是"块大小"。 这些位置的数据遵循此。
这一切现在都很有意义。
我仍然想了解为什么 C2000Ware 中没有 SPI 闪存内核?
谢谢!
Brent