Hi,
I am working on porting Mynewt RTOS on nucleo-l55ze (Cortex-m33) board,and
able to build blinky and load.but led will blink only once and observed the
issue that is unhandled interrupt/exception generated while context
switching between main task to idle task,that's why proper execution is not
happening.
*I need some help on why such a undefined exception occurred or code
crashes ?*
following are steps followed:
*step 1 :Initial loading of .elf works fine*
Reading symbols from
bin/targets/nucleo-l552ze_slinky/app/apps/blinky/blinky.elf...
HAL_GetTick () at
repos/apache-mynewt-core/hw/mcu/stm/stm32_common/src/hal_system.c:47
47 {
target halted due to debug-request, current mode: Thread
xPSR: 0xf9000000 pc: 0x080001f4 msp: 0x20018000
(gdb) load
Loading section .text, size 0x3d34 lma 0x8010020
Loading section .ARM.exidx, size 0x18 lma 0x8013d54
Loading section .data, size 0x60 lma 0x8013d6c
Start address 0x8010214, load size 15788
Transfer rate: 20 KB/sec, 5262 bytes/write.
(gdb) b main
Breakpoint 1 at 0x80103ac: file apps/blinky/src/main.c, line 46.
(gdb) b os_idle_task
Breakpoint 2 at 0x801086c: file
repos/apache-mynewt-core/kernel/os/src/os.c, line 87.
(gdb) b os_default_irq_asm
Breakpoint 3 at 0x801181a: file
repos/apache-mynewt-core/kernel/os/src/arch/cortex_m33/m33/HAL_CM33.s, line
256.
(gdb) c
Continuing.


*step 2 :Execution of main.c also working fine while execute once and led
blinks for single time*
 int
main(int argc, char **argv)
{
    int rc;
#ifdef ARCH_sim
    mcu_sim_parse_args(argc, argv);
#endif
    sysinit();
    g_led_pin = LED_BLINK_PIN;
    hal_gpio_init_out(g_led_pin, 1);
    while (1) {
        ++g_task1_loops;
        /* Wait one second */
        os_time_delay(OS_TICKS_PER_SEC);
        /* Toggle the LED */
        hal_gpio_toggle(g_led_pin);
    }
    assert(0);
    return rc;
}

*step 3 :when context switched to os_idle_task it get proper address and
control goes to os_idle_task*
void
os_idle_task(void *arg)
{
    os_sr_t sr;
    os_time_t now;
    os_time_t iticks, sticks, cticks;
    os_time_t sanity_last;
    os_time_t sanity_itvl_ticks;
    sanity_itvl_ticks = (MYNEWT_VAL(SANITY_INTERVAL) * OS_TICKS_PER_SEC) /
1000;
    sanity_last = 0;
printf("hello\n");
    hal_watchdog_tickle();
#if MYNEWT_VAL(OS_WATCHDOG_MONITOR)
    os_cputime_timer_stop(&os_wdog_monitor);
    os_cputime_timer_relative(&os_wdog_monitor, OS_WDOG_MONITOR_TMO);
#endif
    while (1) {
;;;
following is the assembly instruction inside os_idle_task that execute and
code crash ,
void
os_idle_task(void *arg)
{
 *801086c:       b5f8            push    {r3, r4, r5, r6, r7, lr}*
  ...
after executing above instruction code control goes to default irq
instruction shown in step 4
*step 4:but instead of entering into os_idle_task execution some exception
generate and control goes to*
        TST     LR,#4
        ITE     EQ
        MRSEQ   R3,MSP
        MRSNE   R3,PSP
        PUSH    {R3-R11,LR}
        MOV     R0, SP
        BL      os_default_irq

Below are some link for reference which include all file and dependency
used for development,
compiler related file :
https://github.com/apache/mynewt-core/tree/master/compiler/arm-none-eabi-m33
cortex-m33 related compilation file :
https://github.com/apache/mynewt-core/tree/master/kernel/os/include/os/arch/cortex_m33/os
MCU Package(HAL, Low-Layer APIs and CMSIS) file :
https://www.st.com/en/embedded-software/stm32cubel5.html

-- 






This
message contains confidential information and is intended only 
for the
individual(s) named. If you are not the intended
recipient, you are 
notified that disclosing, copying, distributing or taking any
action in 
reliance on the contents of this mail and attached file/s is strictly

prohibited. Please notify the
sender immediately and delete this e-mail 
from your system. E-mail transmission
cannot be guaranteed to be secured or 
error-free as information could be
intercepted, corrupted, lost, destroyed, 
arrive late or incomplete, or contain
viruses. The sender therefore does 
not accept liability for any errors or
omissions in the contents of this 
message, which arise as a result of e-mail
transmission.

Reply via email to