Proper Use of p2_init()

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.