Open HassanMH01 opened 8 months ago
Hi, It seems that you have broken the stack:
STACKSIZE
parameter of the task.maybe you should track the stack usage through the svc handler.
You can init the stack zone during task init, with the PAINT_STACK
parameter (in CPU->OS
):
CPU blink {
OS config {
PAINT_STACK = TRUE;
(see tpl_init_context
in tpl_machine_cortex.c
).
Regards
Mik
yes, it's in my implementation and still have this error problem starts from here in tpl_os_os_kernel.c line 123: ` IF_NO_EXTENDED_ERROR(result) {
/*
* Sync barrier at start of tpl_start_os_service.
*/
tpl_sync_barrier(&tpl_start_count_0, &tpl_startos_sync_lock);
application_mode[core_id] = mode;
application_mode = mode;
tpl_init_os(mode);
tpl_enable_counters();
/*
* Call the startup hook. According to the spec, it should be called
* after the os is initialized and before the scheduler is running
*/
CALL_STARTUP_HOOK()
/*
* Call the OS Application startup hooks if needed
*/
CALL_OSAPPLICATION_STARTUP_HOOKS()
/*
* Sync barrier just before starting the scheduling.
*/
tpl_sync_barrier(&tpl_start_count_1, &tpl_startos_sync_lock);
/*
* Call tpl_start_scheduling to elect the highest priority task
* if such a task exists.
*/
tpl_start_scheduling(CORE_ID_OR_NOTHING(core_id));
SWITCH_CONTEXT_NOSAVE(core_id)
}
PROCESS_ERROR(result)
/* unlock the kernel */
UNLOCK_KERNEL()
}
as
result = 0x07
It doesn't seem like a question :/
I don't know how to resolve such a bug
Hello.
If you get result == 7
(7
means E_OS_STATE
) in tpl_start_os_service
, it means you are calling StartOS
a second time from a task. If you do not do that then it means initialized global/static variables are not initialized correctly.
E_OS_STATE
is returned if the current state of the OS is not OS_INIT
. Trace execution within tpl_current_os_state
to see what state is returned.
Ok, I've passed this error and now I encounter a situation in tpl_os_timeobj_kernel with time object
As it's not a valid location it goes hardfault
Function parameter time_obj is passed from and this object has this values
Hi, Have you updated the link script for your specific target? It seems that there is a problem with memory locations. regards,
Yes goil template files are updated with Flash, RAM and stack size
It seems that time_obj does not refer to a correct memory location. Valid RAM is most of the time 0x20xxxxxx, but pointers are in 0x0100xxxx… Maybe you have to track the time objs? and that the double linked list is correct. regards
I'm porting trampoline os to tiva c target "tm4c123gh6pm", have written required files for porting and now debugging, processor goes into hard fault after this assembly line which could be found in tpl_invoque.s in line 108:
after branching from this assembly line which could be found in tpl_sc_handler.s in line 286: /*-------------------------------------------------------------------------
any information to help?