在ucos中打算将数据存在Flash中,但是一但运行命令整个程序就死掉了,复位起不来,重新上电也不行,得重新用JTAG下载完后才能起来,但是一但命令又死掉了,程序是调用是周公书上写的API,程序如如下:
//----------------------ucos任务-------------------------------------------------
//
//--------------------------------------------------------------------------------
void task(void *pdata)
{
OS_ENTER_CRITICAL(); //关中断
R_save = VICIntEnable;
VICIntEnClr = 0xffffffff;
save_to_flash(cp, data_work, data_ref, &save_bit); //实现保存到Flash中接口
VICIntEnable = R_save;
OS_EXIT_CRITICAL(); //关中断
...........................
...........................
}
//----------------------实现保存到Flash中-----------------------------------------
// 调用周立功例4.63 API演示实验程序
//
//--------------------------------------------------------------------------------
int save_to_flash(uint8 *p, uint8 *data_work, uint8 *data_ref, uint8 * save_bit)
{
IAP_Entry = (void(*)())IAP_ENTER_ADR;
SelSector(7, 7); // 选择扇区
print("SelSector 7\n");
EraseSector(7, 7); // 擦除扇区
print("EraseSector\n");
SelSector(7, 7); // 选择扇区
print("SelSector\n");
flash_err = RamToFlash(0x00007000, (unsigned int)data_work, 256); // 写数据到扇区
print("RamToFlash\n");
if(flash_err)
printu("error");
...........................
...........................
}
不知道怎么解决?希望能得到周公等的解答,谢谢
在把例4.63 API演示实验程序下载到EasyARM2131上是没有问题的,会不会是ARM出界了呢?才5个TASK啊128字节 * 5不应该啊? |