ARM Technical Support Knowledge Articles

TASK WITH PRIORITY 3 REQUIRES REGISTERBANK

Applies to: RTX251 Real-time Kernel

Answer


Information in this article applies to:


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.

Article last edited on: 2005-05-28 22:41:18

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential