ARM Technical Support Knowledge Articles

FATAL ERROR L220 (INVALID INPUT MODULE) W/TRISCEND E5

Applies to: BL51 Code-banking Linker/Locator

Answer


Information in this article applies to:


QUESTION

I'm developing a code banking application for the Triscend E5 and am using Triscend's special L51_BANK.A51 file that comes with Triscend FastChip 2.3.0.

When I use the Triscend L51_BANK.A51file, the BL51 linker generates the following Fatal Error.:

FATAL ERROR L220: INVALID INPUT MODULE
MODULE:  C:\KEIL\C51\LIB\C51L.LIB (-----)

Consequently, my target can't be created. What do I need to do in order to eliminate this Fatal Error?

ANSWER

The Triscend's L51_BANK.A51 code banking file defines the wrong ?B_MODE value (Bank Mode). In the Triscend-supplied file, it is defined as 4 (user-provided bank switch code) but it should be defined as 1 since it is a variation of the XDATA-based banking mode.

When ?B_MODE is defined as 4, the linker makes assumptions about segment names and combines the JMP TABLE with a different segment which causes the AJMP instructions that are generated in the JMP TABLE to be out of place. This causes the linker error you received.

RESOLUTION

You may download the corrected L51_BANK.A51 from the attachments section or you may manually change the ?B_MODE definition value to 1.

MORE INFORMATION

SEE ALSO

ATTACHED FILES

Request the files attached to this knowledgebase article.

Article last edited on: 2006-10-23 15:05:51

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