器件型号:TMS570LS0432
许多 TMS570模块包括一个安全机制、此机制要求用户应用程序读回任何已写入配置。
实际上、配置寄存器几乎总是由 Halcogen 函数更改。 但是、这些函数上的代码不会执行此检查、并且这些函数上的代码块会自动生成。
这是否意味着用户应该在每个 halcogen 函数的用户代码标签之间手动插入一个检查、以确保寄存器的值在退出函数之前是按预期的那样?
您的经验中是否有一些建议的做法来实现这些安全机制?
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.
器件型号:TMS570LS0432
许多 TMS570模块包括一个安全机制、此机制要求用户应用程序读回任何已写入配置。
实际上、配置寄存器几乎总是由 Halcogen 函数更改。 但是、这些函数上的代码不会执行此检查、并且这些函数上的代码块会自动生成。
这是否意味着用户应该在每个 halcogen 函数的用户代码标签之间手动插入一个检查、以确保寄存器的值在退出函数之前是按预期的那样?
您的经验中是否有一些建议的做法来实现这些安全机制?
然而,确实注意到这似乎是在进行中的工作。 该文件中有注释、如"(临时完成-删除反相 b4版本)"或"保留用于增强功能"、"请勿使用这些宏"。
有些模块没有自己的 xxGetConfigValue()函数,如 FEE 或 L2L3 (如果我没有弄错)。 如果您自己实现这些寄存器、请注意、非静态寄存器必须被省略(如果一个寄存器由于正常运行而需要改变值、就像一个状态寄存器一样)。 因此、应只读回配置寄存器。
你好
此函数具有 FEE 或 L2L3
typedef enum _ModuleId{
INVALID = 0、/**<保留、请勿使用*/
_no_supported_1 = 1、/**<保留、请勿使用*/
PMM = 2、/**<电源管理模块-电源状态控制器*/
DCC1 = 3、/**< DCC1 */
DCC2 = 4、/**< DCC2 */
系统= 5、/**<系统(SYS)模块*/
ESM = 6、/**<错误信令模块*/
CCMR4 = 7、/**< Cortex-R4比较模块*
TCMFLAASH = 8、/**<片上闪存 TCM (ATCM)*/
FEE = 9、/**<闪存 EEPROM 仿真模块*/
SRAM = 10、/**< SRAM 模块(BTCM 和外设 SRAM)*/
L2L3 = 11、/**< LEVEL2和 LEVEL3互连子系统*/
EFC = 12、/**< EFuse 模块*/
OTP = 13、/**< OTP 模块*/
IOMM = 14、/**< IO 多路复用模块*/
VIM = 15、/**<矢量中断模块*/
RTI = 16、/**<实时中断模块(定时器)*/
PBIST = 17、/**< PBIST */
STC = 18 /**<自检控制器*/
}模数 ID;
是的、但在 register_readback .c 上
#if L2L3_enabled case L2L3:details->baseline=&l2l3Baseline; details->size = sizeof (l2l3_config_reg_t); /* SAFETYMCUSW 95 S MR:11.1、11.4- "Reason - Implementation Constraint"*/ details->getConfiReg=(getConfiReg_t)l2l3GetConfigValue; break; #endif
l2l3GetConfigValue 是否存在? 在哪个文件中? 也许我错过了一些 halcogen 标志?
是的
你是对的。
是否要将“l2l3GetConfigValue”更改为“pcrGetConfigValue”?并将“iommGetConfigValue”更改为“pinmuxGetConfigValue”
REGISTER_READBACT.c?中
我在 TMS570程序中看到#if IOMM_enabled 和#if L2L3_enabled 不启用。它是否与 CPU 型号相关?
而 SAFY_LIBRARY 是不同的。