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
, ormemset
. - Create semaphores - e.g. calling
OSSemCreate()
orOSMutexCreate()
. - 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.