Topic : LX-51 does not generate correct addresses in Flash & Locked mode

Forum : 8051

Original Post
Post Information Post
February 21, 2008 - 11:53am

Hello All,

I have a problem with LX-51 linker. My RIDE version is 06.10.19, Build:BN737-51. My target is Temic 87C51RB2.

1- My application consists of two part a-) ROM part, and b-) Flash part
1- I have linked my application together with the boot part in Flash mode (Non-Locked). It works fine.
2- After having the final version, I linked my application in Flash mode and Locked. But it doesn't work. The problem is the following:

Program starts and ROM part initializes the hardware and then tries to jump to Flash part. For this purpose it uses ?FLASH?TABLE_00?. However it goes to a wrong address in this table. Table has the following values: 0x114D: 0x2, 0x114E: xx, 0x114F: xx, 0x1150: 0x2, 0x1151: xx, 0x1152: xx (xx stands for don't care). From the boot part it goes to the address 0x1150, but the correct address is 0x114D. For this reason my program collapses. I hope someone can help me. Thanks in advance.

Post Information Post
February 22, 2008 - 10:51am

I am not sure to understand your problem. Anyway, the most common issue with the FLASH mode is the following:

The RC51 libraries are relocated in the ROM (locked) part. The functions of these libraries are grouped in a few segments.
When modifying the FLASH part, you FLASH program could required an additional library function. But the linker will the add this function in the existing ROM segment that will be bigger.

At the moment, LX51 does not handle properly this case. There are two workarounds:
1. Before locking, you can specify ALL the function from the library you could need in the future - even those that are useless for the first version -
2. If it is too late... you have to find which function has been added by the new FLASH part. Then you will have to add it specifically in the FLASH part. Contact me by email and I could help you if you are not successful.