This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

os_initialized has already equaled to 1

hi, in rt_CMSIS.c, os_initialized is defined in it

uint8_t os_initialized; // Kernel Initialized flag

when exectures osKernelInitialize(), this function called svcKernelInitialize(), the os_initialized has equaled to 1, so the RTX is not initialized. What's the problem?

osStatus svcKernelInitialize (void) {
  int ret;

  if (!os_initialized) {

    // Init Thread Stack Memory (must be 8-byte aligned)
    if ((uint32_t)os_stack_mem & 7) return osErrorNoMemory;
    ret = rt_init_mem(os_stack_mem, os_stack_sz);
    if (ret != 0) return osErrorNoMemory;

    rt_sys_init();                              // RTX System Initialization
  }

  os_tsk.run->prio = 255;                       // Highest priority

  if (!os_initialized) {
    // Create OS Timers resources (Message Queue & Thread)
    osMessageQId_osTimerMessageQ = svcMessageCreate (&os_messageQ_def_osTimerMessageQ, NULL);
    osThreadId_osTimerThread = svcThreadCreate(&os_thread_def_osTimerThread, NULL);
  }

  sysThreadError(osOK);

  os_initialized = 1;
  os_running = 0;

  return osOK;
}

0