Hi, I have a simple application such as a microcontroller having internal ROM, an ext. RAM placed from 0x8000-0xEFFF, and an EPROM placed from 0x0000 - 0x1FFF. The EPROM is purposed to hold only display messages defined in the c code such as char const xdata Message[] ="Hello"; I don't want to have any other code in that EPROM. I want besides the genarated program code to have a separate HEX file for these messages ready for the EPROM. For example in format HEX-80. How am I to configure the settings using uVison? I have read the artıcles and the thread: http://www.keil.com/forum/docs/thread2074.asp Also, all related threads or similar. However, I haven't understood: am I able to use XCONST type constants in an external memory and genarate a HEX file only containing them without having a code Banking? So far some of my setings are as follow: Checked boxes: OPTIONS-Device-Use Extended Linker(LX51) instead of BL51 OPTIONS-Target-Use On Chip ROM(0x0-0xFFFF) OPTIONS-Target-Off-chip Xdata Memory 0x8000 size 0x7000 OPTIONS-C51-Misc Controls: XCROM OPTIONS-LX51 Locate-Use Memory Layout from Target Dialog checked User Classes: XCONST (X:0x0000-X:0x3FFF) Thanks in advance for your concern! BR Oktay
If you don't want to turn on Code Banking, I don't think there's any way you can get the IDE to directly create more than one HEX file from a single project. So you'd have to write a small batch script to do the gymnastics to split the single object file delivered by the project into two hex files, involving two invocations of OHx51. Once you have that script, you may want to add it to the "programs to run after build" of the project (Options->Output).
Hi Hans-Bernhard, Thanks for your quick reply and concern! Obviously it is better to have the code Banking rather than having a risky batch process. :) I just could't understand how to have a code Banking and place the constants defined as const xdata in a Bank. I don't want the processor to access to them with MOVC command. I want to have them accessed by MOVX. Also, do I need to include all the required LIB files such as XBANKING etc.? Basicaly, I didn't find a clarifying example on a simple application like this for C51. Could you help/guid me on this? Thanks in advance! Best regards Oktay
"I just could't understand how to have a code Banking and place the constants defined as const xdata in a Bank." 1. As previously mentioned, remove he 'xdata' - just put 'const' 2. Forget about Code banking; that is something completely different, and not relevant here. "do I need to include all the required LIB files such as XBANKING etc.?" No, you don't.