|ARM Technical Support Knowledge Articles|
Applies to: BL51 Code-banking Linker/Locator
Information in this article applies to:
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?
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.
You may download the corrected L51_BANK.A51 from the attachments section or you may manually change the ?B_MODE definition value to 1.
Request the files attached to this knowledgebase article.
Article last edited on: 2006-10-23 15:05:51
Did you find this article helpful? Yes No
How can we improve this article?