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.

[参考译文] TMS570LS3137:TI 闪存和 FEE API 函数问题

Guru**** 2589265 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1058406/tms570ls3137-ti-flash-and-fee-api-functions-problems

器件型号:TMS570LS3137
主题中讨论的其他器件:HALCOGEN

我正在尝试实现引导加载程序。   引导加载程序示例中有一些模块、例如 BL_FLASH.c /.h、允许我们修改闪存和 EEPROM。

我尝试使用此模块。 在 Halcogen 中启用 FEE 驱动器并确保系统时钟为160MHz。  

我包括了 Fapi 静态库及其路径、然后还包括 BL_FLASH 模块。

然后我编写了这样的测试代码;

				FlashBank7SectorErase((uint32_t) BOOTLOADER_REQUEST_ADDRESS);
				uint8_t Data2Wr = PENDING_BL_REQUEST;
				uint8_t BlockProgramStatus = FlashBank7Program(BOOTLOADER_REQUEST_ADDRESS, (uint32_t) &Data2Wr, sizeof(Data2Wr));
				if(BlockProgramStatus != 1)
				{
					/* send somethingh from uart*/
				}

以上代码段不起作用。 当程序进入扇区擦除功能时、下面有一个函数。

Fapi_initializeFlashBanks((uint32_t) SYS_CLK_FREQ); /* used for API Rev2.01 */

 当开始执行此函数时,programram 会出现以下错误: Can't find a source file at "C:\Sid\work\GIT\catmcuauto-flashapi-f021-int\api\makefile/./Source/FlashStateMachine InitializeFlashBanks.c

1.问题出在哪呢?

 

我尝试了第二个解决方案、决定使用 FEE API 函数并编写了此代码块。

				uint8_t Data2Wr = PENDING_BL_REQUEST;
			    uint8_t BlockNumber=0x1;
			    Std_ReturnType ret;
			    ret = TI_Fee_WriteSync(BlockNumber, &Data2Wr);
			    ret=TI_Fee_Read(BlockNumber,0,&Read_Ptr,1);
			    TI_FeeModuleStatusType Status;
			     do
			     {
			         TI_Fee_MainFunction();
			         delay();
			         Status=TI_Fee_GetStatus(0);
			     }
			    while(Status!=IDLE);

				if(ret == E_OK)
				{
				  // Send UART..
				}

上面的代码正常工作、并将 内容写入0xF020_0038地址、但正如您在图片中看到的、闪存组7从0xF020_0000开始。

它在图片中被分离了4个块。

2.数据表中的数据块与 Halcogen Fee 驱动程序中的数据块有何区别?

在 FEE 驱动器中、指定了一个标头在大小为16字节的块顶部参与。 但在我的例子中、偏移量是0x38H、也就是56个字节。

3.该偏移可以来自哪里?

第四、假设我的设计是在 Halcogen 中有一个块、那么我必须根据字节来设置块的大小。

但没有关于此大小的最大限制的任何信息。

4.我应该如何知道 块大小的最大限制,我必须将其作为 Halcogen 的输入值?

Okey 我找到了它、在 FEE API Documantary 中有写入

注意:所有数据块的大小不能超过虚拟扇区长度。  

默认情况下、为一个虚拟扇区分配一个闪存扇区。

5.最后,您是否有用于编程和擦除 BANK0和 BANK1 或建议使用 BL_FLASH 的闪存编程 API?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="486399" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum 1058406/tms570ls3137-ti-flash-and-fee-api-functions-problems"]1. 问题出在哪?

    您的项目中是否包含 F02闪存 API 库?

    我建议使用 FEE 驱动器将数据编程到组7 (仿真 EEPROM)。  EEPROM 允许用户重复擦除和重新编程应用程序中存储的数据。  TI FEE 驱动器提供一组软件函数、这些函数旨在将片上闪存存储器(组7)的扇区用作仿真 EEPROM。 应用程序透明地使用这些软件函数来写入、读取和修改数据。

    [引用 userid="486399" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum 1058406/tms570ls3137-ti-flash-and-fee-api-functions-problems"]2. 数据表中的块与 Halcogen Fee 驱动程序中的块之间有何区别?

    请参阅 FEE 用户手册中的2.1.2数据块组织。

    [引用 userid="486399" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum 1058406/tms570ls3137-ti-flash-and-fee-api-functions-problems"]3. 此偏移量可以来自何处?

    虚拟扇区标头的大小为32字节、块标头为24字节。 对于虚拟扇区中的第一个块、数据有效载荷的地址偏移为32+24=56。

    [引用 userid="486399" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum 1058406/tms570ls3137-ti-flash-and-fee-api-functions-problems"]4. 我应该如何知道 块大小的最大限制,我必须输入块大小作为 Halcogen 的输入值?

    您已找到它。  所有数据块的大小不能超过虚拟扇区长度。  

    [引用 userid="486399" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum 1058406/tms570ls3137-ti-flash-and-fee-api-functions-problems"]5. 最后,您是否有用于编程和擦除 BANK0和 BANK1 或建议使用 BL_FLASH 的闪存编程 API?[/QUERP]

    您可以使用 bl_flash.c/h 作为参考。  

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

    我将"F021_API_CortexR4_BE_V3D16.lib"静态库复制并粘贴到工程中并添加了路径。 还有其他事要做吗?

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

    王杰爵士

    当我在 Halcagon 中禁用 FEE 驱动器时、使用 BL_FLASH .c .h 中的函数时的问题得到解决。

    现在、在执行此函数时  、Fapi_initiatileFlashBanks ((uint32_t) SYS_CLK_FREQ);//用于 API Rev2.01 *

    程序不会 gıve 此错误 : Cant 在"C:\Sid\work\GIT\catmcuauto-flashapi-f021-int\api\makefile/./Source/FlashStateMachine.InitializeFlashBanks.c 中查找源文件  

    这有点奇怪。