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

28377D flash api 连仿真器能运行,不连仿真器擦除flash出错

打算在28377D上 用flash api向flash中写入数据,擦除flash不成功。程序下载到flash中,FLASH api库复制到RAM中运行。仿真时能正常擦除和写入,断开仿真单独上电时擦除失败。

cmd文件中flash api对应部分:

Flash28_API: {
-lF021_API_F2837xD_FPU32.lib(.text)
-lF021_API_F2837xD_FPU32.lib(.ebss)
} LOAD = FLASHA,
RUN = RAMGS14,
LOAD_START(_Flash28_API_LoadStart),
LOAD_END(_Flash28_API_LoadEnd),
RUN_START(_Flash28_API_RunStart),
LOAD_SIZE(_Flash28_API_LoadSize),
PAGE = 0

程序开始时把flash api 库复制到RAMGS14中:

memcpy(&Flash28_API_RunStart, &Flash28_API_LoadStart,(uint32_t)&Flash28_API_LoadSize);

flash api初始化的相关代码:

EALLOW;
FlashPumpSemaphoreRegs.PUMPREQUEST.all=0x5a5a0002;
Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0x0;
oReturnCheck=Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS,200);
EDIS;

用Fapi_issueAsyncCommandWithAddress函数擦除一个sector,然后用Fapi_doBlankCheck检查是不是已经擦除

在连接仿真器调试的时候,能够擦除成功。但是断开仿真器,重新上电后,擦除失败。

Eric Ma:

先检查一下断开仿真器的时候,芯片有没有跑到main.

仿真和脱机在软件上并没有太多差别。

ERIC

打算在28377D上 用flash api向flash中写入数据,擦除flash不成功。程序下载到flash中,FLASH api库复制到RAM中运行。仿真时能正常擦除和写入,断开仿真单独上电时擦除失败。

cmd文件中flash api对应部分:

Flash28_API: {
-lF021_API_F2837xD_FPU32.lib(.text)
-lF021_API_F2837xD_FPU32.lib(.ebss)
} LOAD = FLASHA,
RUN = RAMGS14,
LOAD_START(_Flash28_API_LoadStart),
LOAD_END(_Flash28_API_LoadEnd),
RUN_START(_Flash28_API_RunStart),
LOAD_SIZE(_Flash28_API_LoadSize),
PAGE = 0

程序开始时把flash api 库复制到RAMGS14中:

memcpy(&Flash28_API_RunStart, &Flash28_API_LoadStart,(uint32_t)&Flash28_API_LoadSize);

flash api初始化的相关代码:

EALLOW;
FlashPumpSemaphoreRegs.PUMPREQUEST.all=0x5a5a0002;
Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0x0;
oReturnCheck=Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS,200);
EDIS;

用Fapi_issueAsyncCommandWithAddress函数擦除一个sector,然后用Fapi_doBlankCheck检查是不是已经擦除

在连接仿真器调试的时候,能够擦除成功。但是断开仿真器,重新上电后,擦除失败。

Chunlin Song:

回复 Eric Ma:

能跑到main,程序正常运行。调试的时候擦除正常,看不出来问题。我就用串口把结果发出来了,串口数据收发都正常。

芯片肯定是跑程序了。就是擦除FLASH不成功。

另外 TI有没有28377D的flash api例子啊,我再ControlSuite里找不到

打算在28377D上 用flash api向flash中写入数据,擦除flash不成功。程序下载到flash中,FLASH api库复制到RAM中运行。仿真时能正常擦除和写入,断开仿真单独上电时擦除失败。

cmd文件中flash api对应部分:

Flash28_API: {
-lF021_API_F2837xD_FPU32.lib(.text)
-lF021_API_F2837xD_FPU32.lib(.ebss)
} LOAD = FLASHA,
RUN = RAMGS14,
LOAD_START(_Flash28_API_LoadStart),
LOAD_END(_Flash28_API_LoadEnd),
RUN_START(_Flash28_API_RunStart),
LOAD_SIZE(_Flash28_API_LoadSize),
PAGE = 0

程序开始时把flash api 库复制到RAMGS14中:

memcpy(&Flash28_API_RunStart, &Flash28_API_LoadStart,(uint32_t)&Flash28_API_LoadSize);

flash api初始化的相关代码:

EALLOW;
FlashPumpSemaphoreRegs.PUMPREQUEST.all=0x5a5a0002;
Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0x0;
oReturnCheck=Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS,200);
EDIS;

用Fapi_issueAsyncCommandWithAddress函数擦除一个sector,然后用Fapi_doBlankCheck检查是不是已经擦除

在连接仿真器调试的时候,能够擦除成功。但是断开仿真器,重新上电后,擦除失败。

Seven Han:

回复 Chunlin Song:

例程在C:\ti\controlSUITE\device_support\F2837xD\v210\F2837xD_examples_Dual\flash_programming

打算在28377D上 用flash api向flash中写入数据,擦除flash不成功。程序下载到flash中,FLASH api库复制到RAM中运行。仿真时能正常擦除和写入,断开仿真单独上电时擦除失败。

cmd文件中flash api对应部分:

Flash28_API: {
-lF021_API_F2837xD_FPU32.lib(.text)
-lF021_API_F2837xD_FPU32.lib(.ebss)
} LOAD = FLASHA,
RUN = RAMGS14,
LOAD_START(_Flash28_API_LoadStart),
LOAD_END(_Flash28_API_LoadEnd),
RUN_START(_Flash28_API_RunStart),
LOAD_SIZE(_Flash28_API_LoadSize),
PAGE = 0

程序开始时把flash api 库复制到RAMGS14中:

memcpy(&Flash28_API_RunStart, &Flash28_API_LoadStart,(uint32_t)&Flash28_API_LoadSize);

flash api初始化的相关代码:

EALLOW;
FlashPumpSemaphoreRegs.PUMPREQUEST.all=0x5a5a0002;
Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0x0;
oReturnCheck=Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS,200);
EDIS;

用Fapi_issueAsyncCommandWithAddress函数擦除一个sector,然后用Fapi_doBlankCheck检查是不是已经擦除

在连接仿真器调试的时候,能够擦除成功。但是断开仿真器,重新上电后,擦除失败。

mangui zhang:

回复 Chunlin Song:

是不是时间差异的问题     按理说仿真应该是在RAM中跑  更快

flash执行效率更低一些

赞(0)
未经允许不得转载:TI中文支持网 » 28377D flash api 连仿真器能运行,不连仿真器擦除flash出错
分享到: 更多 (0)