« Previous - Version 13/44 (diff) - Next » - Current version
Anthony Rowe, 06/27/2007 05:21 pm


= Error Handling =

Nano-RK uses the convention that system calls return -1 upon error and 1 upon success.

NRK_OK 1

NRK_ERROR -1

'''_nrk_errno_set(NRK_ERRNO error_code)'''

This function should be used by user defined system calls to set an error number.

'''uint8_t nrk_errno_get()'''

Once a function returns failure (-1), this function can be used to get a more descriptive error code.

'''Kernel Errors'''

*NRK ERROR: ERROR_MESSAGE

''task_id'' is the ID of the task that caused the error. 0 means the kernel had an internal error.

  • "Task Stack Overflow" * The canary value in the identified task was over written. Try making the task stack size larger.
  • "Reserve Error in Scheduler"
  • "Task Reserve Violated" * Increase the reservation for the task, or disable a task reserve by setting it to 0
  • "Scheduler Missed Wakeup"
  • "Duplicated Task ID" * There is a problem with the way the tasks are being configured
  • "Unexpected Restart"
  • "Idle or Kernel Stack Overflow"
  • "Extra Task started, is nrk_cfg.h ok?" * Most likely NRK_MAX_TASKS in nrk_cfg.h needs to be larger
  • "Low Voltage"
  • "Unhandled Interrupt Vector"
  • "Timer Overflow" * This is likely a problem in the kernel. It can happen if the fuses get cleared such that the ASYNC clock is now operating differently. It can also happen if _NRK_SLEEP_WAKEUP_TIME in [http://www.nanork.org:8000/nano-RK/browser/nano-RK/src/kernel/include/nrk_cpu.h nrk_cpu.h] is set too low.
  • "Device Driver Error"
  • "Failed to create Signal"
  • "Failed to create Semaphore" * An internal OS related operation failed to create a semaphore. This is probably because ''NRK_MAX_RESOURCE_CNT'' needs to be increased for some functionality the application is trying to use.
  • "Kernel function not implemented"
  • "UNKOWN"