!!!热存储区恰巧使用了系统堆栈避开的64字节,当数据区大于一定字节数时,就会导致热存储区末端超出内存RAM边界,从而导致崩溃。
暂时把它改为256字节,尚未找到一劳永逸的解决办法。
This commit is contained in:
parent
fb91451698
commit
2a374f6004
|
@ -393,7 +393,13 @@ const Config& Config::CreateRAM()
|
|||
{
|
||||
// 最后一块作为配置区
|
||||
static CharStorage cs;
|
||||
static Config cfg(cs, Sys.StackTop(), 64);
|
||||
static Config cfg(cs, Sys.StackTop(), 256);
|
||||
|
||||
/*// 从堆申请一块内存
|
||||
if (cfg.Size == 0) {
|
||||
cfg.Address = (uint)new byte[256];
|
||||
cfg.Size = 256;
|
||||
}*/
|
||||
|
||||
return cfg;
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ void TSys::ShowInfo() const
|
|||
debug_printf("Time : ");
|
||||
DateTime::Now().Show(false);
|
||||
debug_printf(" Start: %d/%d \r\n", HotStart, StartTimes);
|
||||
debug_printf("Support: http://www.WsLink.cn\r\n");
|
||||
//debug_printf("Support: http://www.WsLink.cn\r\n");
|
||||
|
||||
debug_printf("\r\n");
|
||||
#endif
|
||||
|
|
|
@ -124,7 +124,7 @@ INROOT bool Task::CheckTime(UInt64 end, bool isSleep)
|
|||
// 全局任务调度器
|
||||
TaskScheduler* Task::Scheduler()
|
||||
{
|
||||
static TaskScheduler _sc("Sys");
|
||||
static TaskScheduler _sc("Task");
|
||||
|
||||
return &_sc;
|
||||
}
|
||||
|
@ -256,7 +256,7 @@ uint TaskScheduler::Add(Action func, void* param, int dueTime, int period, cstri
|
|||
Count++;
|
||||
|
||||
#if DEBUG
|
||||
debug_printf("%s::添加%d %s First=%dms Period=%dms 0x%p\r\n", Name, task->ID, name, dueTime, period, func);
|
||||
debug_printf("%s::Add%d %s First=%dms Period=%dms 0x%p\r\n", Name, task->ID, name, dueTime, period, func);
|
||||
#endif
|
||||
|
||||
return task->ID;
|
||||
|
@ -271,7 +271,7 @@ void TaskScheduler::Remove(uint taskid)
|
|||
auto task = (Task*)_Tasks[i];
|
||||
if(task->ID == taskid)
|
||||
{
|
||||
debug_printf("%s::删除%d %s 0x%p\r\n", Name, task->ID, task->Name, task->Callback);
|
||||
debug_printf("%s::Remove%d %s 0x%p\r\n", Name, task->ID, task->Name, task->Callback);
|
||||
// 清零ID,实现重用
|
||||
task->ID = 0;
|
||||
|
||||
|
|
|
@ -177,7 +177,7 @@ uint TSys::HeapBase() const
|
|||
// 栈顶,后面是初始化不清零区域
|
||||
uint TSys::StackTop() const
|
||||
{
|
||||
return SRAM_BASE + (RAMSize << 10) - 0x40;
|
||||
return SRAM_BASE + (RAMSize << 10) - 0x100;
|
||||
}
|
||||
|
||||
void TSys::SetStackTop(uint addr)
|
||||
|
|
Loading…
Reference in New Issue