Proper Use of p2_init()

Each sample application contains a p2_init() function that gets called before uC/OS-II starts. Since not all OS services are available, only the following operations are permitted in p2_init():

  • Initialize global variables - e.g. by direct assignment or by using C functions such as memcpy, or memset.
  • Create semaphores - e.g. calling OSSemCreate() or OSMutexCreate().
  • Initialize tasks - e.g. calling OSTaskCreateExt()OSTaskNameSet().
  • Install callbacks. 

Some things you should not do:

  • Call other OS functions
  • Print to the CLI
  • Interact with peripherals or the filesystem
  • Make other API calls

Operations not permitted in p2_init() need to be done in your tasks before the while(1) loop. If Task A requires Task B to do something, then a semaphore should be used to provide synchronization.