We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello, I have the following problem with code banking. I am programming a C8051F124. For security reason I want to put CRC checksums at the end of bank 3. My program is going to be bigger than 32k, so I need to use bank 1 and 2. I looked at the code banking tutorial for Keil at Cygnal, an in fact it worked fine. But when I try to do the same with my actual firmware. I integrated the same configuration files (L51_BANK.A51, STARTUP.A51) in my program and located a function into bank 1. But now there is a warning: "Warning L19: COMMON CODE SEGMENTS LOCATED AT BANKED AREA". Ususally this should mean my firmware is too big for common area. But this cannot be, because when I put the function into bank 0 everything is fine and no error warning about the program size appears. Unfortunately my firmware is not quite stable when putting it on more than a bank. I am actually using the A51, C51 and BL51 tools. I also tried Ax51, Cx51 and Lx51, but the linker fails and puts out the message: "FATAL ERROR L204: INVALID KEYWORD POS 1510 [...]\STARTUP.OBJ" which means that the copied Startup file is not accepted by the Linker. So my question is: does anyone know how to solve my linking problem? Why do I have this strange warning message? The second problem I have is how to integrate the CRC checksums. With Cygnal IDE I can put data of a HEX-file into two banks. But when I want to use 3, is there a more practical way to load the HEX-file up to the flash besides splitting the code into pieces? Thanks for your help in advance, Markus Koenig