Keil™, An ARM® Company

Technical Support

RTX251: TASK WITH PRIORITY 3 REQUIRES REGISTERBANK


Information in this article applies to:

  • C251 Version 2.14
  • RTX251 Version 2.14

QUESTION

I'm using RTX251 and attempting to create a fast task using priority 3. According to the documentation, I don't need to specify a registerbank for this task.

void Blink1(void) _task_ BLINK1 _priority_ 3 {
while(1){
                LED1 = !LED1;
                os_wait (K_IVL,50, 0);
                }
}

When I compile and link my project, I receive the following linker error from L251:

*** ERROR L126: TASK WITH PRIORITY 3 CANNOT WORK WITH REGISTERBANK 0
    TASK:    ?PR?BLINK1?TEST
    TASKID:  1

If I change my task definition to the following:

void Blink1(void) _task_ BLINK1 _priority_ 3 using 1 {

the program crashes. What's going on? Is this a known problem?

ANSWER

This is a problem with the linker that ships with C251 V2.14. There is an updated linker that correctly links the fast task without the need for a registerbank definition.

See below for information on obtaining this updated linker. To install the updated linker, unzip it from the ZIP file and copy it to the \c251\bin directory.

ATTACHED FILES

Request the files attached to this knowledgebase article.

Last Reviewed: Saturday, May 28, 2005


Did this article provide the answer you needed?
 
Yes
No
Not Sure