This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Errors and Problems of HOLDING-UP tasks

------------------------------------------------------------------------------------------------------------------------------------------------------------

/*
*  If HOLD_AUTO_START is included in Procursors of Compile Options, a task_id and a particular Task Processor
*  should be particularly designed for the hold-up period
*/
#ifdef HOLD_AUTO_START

extern void Wizard_1_HandleKeys( byte shift, byte keys );
extern void Holding_Up_Init( byte task_id );
extern UINT16 Wizard_1_Holding_Up(byte task_id,UINT16 events );

#endif

------------------------------------------------------------------------------------------------------------------------------------------------------------------

This is what I've added in Wizard_1.h*(GenericApp.h), for a HOLDING-UP task.

*Here, GenericApp  is given another name, Wizard_1. All of my modification is made in CoordinatorEB

Both of  task_id and  the "particular"  Task Processor  for HOLDING-UP period  are specified in Wizard_1.c( GenericApp.c) .

QUESTION 1:  So this"particular"  Task Processor cannot share (call) any functions  with other task processors (even if there're no collisions) ? 

Besides, I also add the following line into OSAL_Wizard_1.c

                                 osalTaskAdd( Holding_Up_Init, Wizard_1_Holding_Up, OSAL_TASK_PRIORITY_LOW);

and a compile error is indicated. (I'm sure THIS LINE is THE ONLY CAUSE of error ,since everything's fine again if only it was deleted.)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Error[e16]: Segment XDATA_I (size: 0x52f align: 0) is too long for segment definition. At least 0x16 more bytes needed. The problem occurred while 
processing the segment placement command "-Z(XDATA)XDATA_N,XDATA_Z,XDATA_I=_XDATA_START-_XDATA_END", where at the moment of 
placement the available memory ranges were "XDATA:f9e7-feff"
....
   Reserved ranges relevant to this placement:
   XDATA:e000-e007      XDATA_AN
   XDATA:e008-e307      XSTACK
   XDATA:e308-feff      XDATA_Z
   BIT:0-7               BREG
   BIT:80-97           SFR_AN
   BIT:a0-af            SFR_AN
   BIT:b8-c7            SFR_AN
   BIT:d8-df            SFR_AN
   BIT:e8-ef            SFR_AN
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Q2: Why does this error happen?

Q3: Is cross-layer-talk possible  during the holding-up period(use AF to transfer messages) ?