TI中文支持网
TI专业的中文技术问题搜集分享网站

关于写BOOTCFG的问题。

你好!

        我在系统上电的时候,做了一个写BOOTCFG的操作,第一次写的时候,可以成功,后来想要再次改写BOOTCFG,就用"LM Flash Programmer" –>" Other Utilities"–>"Debug Port Unlock" 的功能Unlock了一下,Unlock 以后,BOOTCFG的数据复位为0xFFFFFFFE,但是这次用原来的软件,再次改写BOOTCFG,就一直无法成功,每次都是0xFFFFFFFE。

         我的写BOOTCFG的软件如下:

void write_BOOTCFG(void)
{
     unsigned long regVal;
     regVal = HWREG(0x400FE000 + 0x1D0);
     if (regVal & 0x80000000)
     {
          HWREG(0x400FD000 + 0x000) = 0x75100000;
          HWREG(0x400FD000 + 0X004) = FLASH_BOOTCFG_PORT_A | FLASH_BOOTCFG_PIN_6 | FLASH_BOOTCFG_DBG1;
          HWREG(0x400FD000 + 0x008) = 0xA4420008;    //FMC=key+commit
          SysCtlDelay(100 * SysCtlClockGet() / (3 * 1000));
     }
}

我现在的问题是:

1.     BOOTCFG是否可以多次烧写?

2.     对于再次烧写BOOTCFG的方法,我上面做是否正确?还是需要用其它的方式?

3.     如果我先禁掉JTAG口,是否把上面红色的那一句更改为:HWREG(0x400FD000 + 0X004) = FLASH_BOOTCFG_PORT_A | FLASH_BOOTCFG_PIN_6;

        就可以了?(就是把DBG1和DBG0都清零)。

4.     在"LM Flash Programmer" –>" Other Utilities"–>"Debug Port Unlock" 里面有两个选项,一个为“Fury,DustDevil,and Bizzard Classess",另外一  个为"Tempest,and Firestorm Classes",对于JTAG解锁,应该选哪一个?

Michael Sun:

1.可以多次烧写,但每次烧写前必须解锁,让Bootcfg寄存器恢复为默认值。

2.参考下面的代码。

3.禁用JTAG也可以使用GPIO寄存器,解锁后将对应GPIO的JTAG切换到其他功能上。

4.楼主使用的是M4吗?如果是M4.应该选Blizzard那一个。

下面代码可以对BootCFG寄存器进行操作。这里配置使用PA6来使能BootLoader。

这个函数在初始化系统时钟后调用。

void CheckBootCfg(void){ unsigned long regVal; regVal = HWREG(FLASH_BOOTCFG); if(regVal & FLASH_BOOTCFG_NW) { regVal = FLASH_BOOTCFG_PORT_A | FLASH_BOOTCFG_PIN_6 | FLASH_BOOTCFG_KEY | FLASH_BOOTCFG_DBG1; HWREG(FLASH_FMD) = regVal;

HWREG(FLASH_FMA) = 0x75100000;

regVal = FLASH_FMC_WRKEY | FLASH_FMC_COMT; HWREG(FLASH_FMC) = regVal;

while((HWREG(FLASH_FMC) & FLASH_FMC_COMT) == FLASH_FMC_COMT) {

} }}

Michael Sun:

回复 Michael Sun:

补充一点:

头文件加上:

#include "inc/hw_flash.h"

赞(0)
未经允许不得转载:TI中文支持网 » 关于写BOOTCFG的问题。
分享到: 更多 (0)