Has anyone any ideas how to make variables use this ram space. I have latest Keil tools.
See the answers in the Knowledgebase, for example: http://www.keil.com/support/docs/2021.htm
Yup, i've tried that but if you are using the supplied START_MX.a51 and select ESMM=1 then there are 2 segments, the user class HDATA_EDATA and a segment EDATA which contains the stack, both of which have the same address range but different bases. Surely what i need to do is to use the EDATA Segment, but have not worked out how to do it.
Sorry, I do not understand your problem. You can adjust the stack size in the START_MX.A51 file. Why does this EDATA segment causes problems? You should still be able to locate other classes into the same area.
I want to arrange the EDATA space without having to resort to Assembler. When I compile my project, with this user class segment defined and ESMM=1 i get the following:-
BASE START END USED MEMORY CLASS
000000H 000000H 0006FFH 000168H XDATA
000000H 000000H 0006FFH HDATA
7F0000H 7F0000H 7F04FFH 000100H EDATA
000000H 800000H 817FFFH ECODE
000000H 800000H 817FFFH HCONST
000000H 7F0100H 7F04FFH 00035DH HDATA_EDATA
800000H 800000H 80FFFFH 002666H CODE
7F0000H 7F0000H 7F007FH 00001DH DATA
7F0020H.0 7F0020H.0 7F002FH.7 000001H.1 BIT
I have DATA, EDATA and HDATA_EDATA and stack all in the same address space so need to move starts etc. about to remove any overlaps. I just need to know how to do it. I was expecting the tools to do this for me (as it claims support for this device!!) and that was why there was an EDATA segment.
please ignore previous. If you look in the right place in the map file, it does sort it out.
View all questions in Keil forum