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

bootloader中可以使用外围驱动库中的函数吗?

bootloader中可以调用FlashErase ()或ROM_FlashErase ()之类的外设驱动库中的函数吗?谢谢

xyz549040622:

应该是不可以的,我的理解是,调用外设的时候,MCU的时钟必须初始化OK,即打开时钟,bootloader只是决定启动方式以及下载方式的吧。

Ken Wang:

你的问题可以分两部分来解释,首先如果是固话在芯片内部的bootloader,你肯定不能再去修改程序,增减代码。但是bootloader里面肯定是有对FLASh操作的函数的。因为他要把程序写到flash里面去。

如果是你自己写得bootloader程序的话,调用flash操作应该是可以的。

谢谢

tanson tang:

回复 Ken Wang:

我就是想改动官方提供的tivaware中的boot_serial,将updata函数自己写,使用外设的erase和programme函数,这样可以吗?谢谢

wenjun zhang1:

回复 Ken Wang:

1  测试平台:EK-TM4C1294XL ,    ARM型号:TM4C1294NCPDT。

2  目的:设置BOOTCFG寄存器,使的PA6引脚上电低电平时使得ARM进入ROM中的bootloader。

3 测试程序:利用例程blinky,在其中添加设置BOOTCFG寄存器代码如下:

void CheckBootCfg(void)

{

    long i=0;  

    unsigned long regVal;  

   regVal = HWREG(FLASH_BOOTCFG);

    if(regVal & FLASH_BOOTCFG_NW)

   {   

           HWREG(FLASH_FMA) = 0x75100000;         

          regVal = FLASH_BOOTCFG_PORT_A | FLASH_BOOTCFG_PIN_6 | FLASH_BOOTCFG_KEY | FLASH_BOOTCFG_DBG1;

          HWREG(FLASH_FMD) = regVal;

          regVal = FLASH_FMC_WRKEY | FLASH_FMC_COMT;   

          HWREG(FLASH_FMC) = regVal;

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

    }

}

4 现象:程序下载后,如果系统上电时,PA6引脚处于低电平,通过连接USB到电脑,观察设备管理器出现的USB DFU设备,确认ARM进入ROM中的bootloader;

                                    如果系统上电时,PA6引脚处于高电平,此时电脑设备管理器并未出现USB DFU设备,可推断ARM并未进入ROM中的bootloader,此时应该进入flash中的blinky程序,闪烁lED,但事实是ARM无任何动作,并未运行blinky程序。

 

5 问题总结:通过PA6引脚低电平可控制ARM进入ROM中的bootloader,但当PA6上电处于高电平时,ARM无法正常加载flash中的用户程序运行。

 

经过多次测试,问题依然如此,请TI工程师帮忙分析一下原因。TI工程师能帮忙测试一下该程序吗?

赞(0)
未经允许不得转载:TI中文支持网 » bootloader中可以使用外围驱动库中的函数吗?
分享到: 更多 (0)