I'm trying to use the updater_F02x.c file and project to load my firmware and reset to run it. But the part I'm using is c8051f120.h. I understand the 02 code should work with the 120. I understand to place the code at a specific memory address you use these parameters during link: CODE(1000H, ?PR?MAIN?UPDATER_F02X(1000H)) I want to place this updater code very high in memory, about 4k below 128k, which would be bank 3, addr EFFF. How do I place it at bank 3, addr EFFF. Do I simply forget about the banks and specify the address as if there were no banks, as so? CODE(1F000H, ?PR?MAIN?UPDATER_F02X(1F000H)) I'm new at this kind of thing and would appreciate a response that takes this into consideration. BTW, I am using the Cygnal IDE and it crashes like very 10 minutes. Very annoying!
The classic 8051 archtiecture (used in the Cygnal parts) is limited to 64KB address space. The address extension for the Cygnal devices is done with code banking. See also: http://www.keil.com/support/docs/2441.htm Therefore you need to use the LX51 SEGEMNTS directive with the Bx: address prefix or the BL51 directive BANK0 .. BANK31 to locate specific segments into code banks. More information can be found in the Ax51 Assembler/Utilities User's Guide (A51.PDF), Chapter 9.
I read it. I tried the BANKx thing. I can put main() in say BANK3. But I want the WHOLE program, not just segments. How do I get the entire thing up there? I am using BL51.
View all questions in Keil forum