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
Hi Andrew, Thanks a lot! For me the required clue was RANGE( X:0xE000-X:0xFFFF ). It hadn't worked before for me because I used it as RANGE( 0xE000-0xFFFF ). Yesterday, I found out that if I don't specify ?XC?LCD(X:0x0) the Debugger error keeps coming. When I specified it like ?XC?LCD(0x0) it gave me SEGMENT errors. In the documents' examples for such directives, the memory ranges are specified such as (0x1000 - 0x2FFF) etc. without putting the memory descriptor X:, C:, I:. This solved my problem! However, I do insist that in my case using const or const xdata doesn't differ :-) They are compiled and mapped in the same way. Thank you for your time and help to resolve my problem! Best regards, Oktay Pehlivanoglu