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.

Bootloader过程中的cmd怎么修改?

TI工程师们,你们好!

最近在做F2810的CAN引导的Bootloader,我想问一下如果我把bootloader放入A扇区,应用程序想放入D扇区,请问应用程序的cmd文件应该怎么修改呢?

因为在cmd文件中CSM_RSVD、BEGIN 、CSM_PWL这三个储存空间总是连续的,并且BEGIN总是夹在另外两个中间,cmd还要求空间必须连续,要改BEGIN必须会改另外两个区间,而另外两个的空间又必须在FLASHA中,也就是说BEGIN也必须在FLASHA中,。这样就矛盾了,该怎么改呢?

谢谢!

  • 首先,BEGIN只是两个单元的跳转地址,是固定不变的。我觉得跟CSM没什么关系,不用去管他们。

    做bootloader的时候,我的做法是用两个工程,bootloader自己的工程,main, cmd, 初始化等,同理应用程序。区别就是bootloader把所有的代码都放到A扇区。

    那问题就在入口地址分配给谁,而相应的另一个的入口又是如何? 

    芯片的上电入口地址是0x3F7FF6,如果你希望上电的时候,先进去bootloader, 那在bootloader的cmd中,则把BEGIN设为0x3F7FF6。那应用程序的BEGIN要设多少呢?假如是D扇区,那我建议可以直接设为

    BEGIN       : origin = 0x3EC000, length = 0x000002

    FLASHD      : origin = 0x3EC002, length = 0x003FFE

    这样,如果bootloader要跳转到应用程序,则直接跳转到0x3EC000这个地址就可以了,用软件跳转你的方式。

    反之亦然。

    ERIC

  • 非常感谢您的回答!我试试。

  •  您好!我尝试修改了一下,有一点不知道该怎么改,就是FLASHA后原来留给CSM_RSVD 、BEGIN 、CSM_PWL这三部分应该怎么弄呢 ?

  • CSM_RSVD : origin = 0x3F7F80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
    BEGIN : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
    CSM_PWL : origin = 0x3F7FF8, length = 0x000008 /* Pa

    不要动他们,你只改BEGIN。

    ERIC

  • 已改好  非常感谢您!

  • 我把28335应用程序都分在了H区,修改了BEGIN段报错是怎么回事呢?

  • 没问题了,不好意思搞错了

x 出现错误。请重试或与管理员联系。