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.

[参考译文] CCS/TMS320F2.8377万S:关于DCSM's Linkpointer's地址的疑问

Guru**** 2482225 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/657454/ccs-tms320f28377s-doubt-regarding-dcsm-s-linkpointer-s-address

部件号:TMS320F2.8377万S

工具/软件:Code Composer Studio

DCSM中链接指针的地址是什么  

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

    Deepak您好!

    它在"图2-22. 区域选择块的位置基于TRM中DCSM部分的链接指针。

    此致,

    Vivek Singh

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

    图中显示地址为0x7.8万,但下面代码片段的粗体部分将值存储在名为linkpointer的变量中的0x5F000位置中。为什么要执行该操作

    无符号长LinkPointer;
    unsigned long *Zone1SelBlockPtr;
    Int Bitpos = 28;
    Int ZeroFound = 0;
    //读取DCSM模块的Z1-Linkpointer寄存器。
    LinkPointer =*(unsigned long *) 0x5F000;
    //位31 30和29作为最具签名的0是保留的LinkPointer选项
    LinkPointer = LinkPointer << 2;
    While ((ZeroFound == 0)&&(位数>-1))

    如果(LinkPointer和0x8000万)== 0)

    ZeroFound = 1;
    Zone1SelBlockPtr =(无符号长*)(0x7.8万 +((位数+ 3)*16));
    }否则

    比特位--;
    LinkPointer = LinkPointer <<1;
    }
    }
    IF (零环绕== 0)
    { Zone1SelBlockPtr =(unsigned long *)0x7.802万;
    }

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

    请阅读1.5 TRM中的2.13 链接指针和区域选择"一节。 用户在用户OTP中对三个链接指针(具有相同值)进行编程,当这些链接指针通过虚拟读取(通过BootROM代码或GEL文件)加载时, 硬件计算最终的链接指针值并将其复制到链接指针寄存器中,用户需要读取该寄存器才能解码区域选择块位置。 Zone1的链接指针寄存器(也是头文件的一部分)的地址是0x5F000。

    希望这一点是明确的。

    此致,
    Vivek Singh