BL51: FATAL ERROR L220 (INVALID INPUT MODULE) W/TRISCEND E5
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.
Last Reviewed: Monday, October 23, 2006
of your data.