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'm using the XC164-µC with internal Ram at 0xC000-0xC7FF (DSRAM) & 0xF600-0xFDFF (DPRAM).
When I use 'standard' Target Layout Memory. I get a Linker Section NDATA(0xC000-0xC7FF,0xF600-0xFDFF) and I could use 4k (-Stacksize) for NEAR DATA.
If I would use more than 16kB for NCONST I select 32kB for ROM in NEAR MEMORY-Section(@Target-Layout).
In L166 LOCATE I get following line: DPPUSE (0=NDATA(0xC000 - 0xC7FF), 1=NCONST(0xC00000 - 0xC07FFF))
The DPRAM (0xF600-0xFDFF) is now not used for NEAR DATA!
How can I use this RAM also for NEAR DATA like in the case without DPPUSE?
ciao, Karl
Ps:The XC164-16CS claims that it has 8kB internal Data. But I only found 2kB DSRAM (0xC000-0xC7FF), 2kB DPRAM(0xF600-0xFDFF) and 2kB PSRAM (0xE00000-0xE007FF). Where are the remaining 2kB located?
If you are only using the internal RAM for the stack then I would not change from the default memory configuration as the DSRAM and SPRAM are located as NEAR using DPP3.
Perhaps there is a slight mistake in the Keil definition for the C164CS-16FF device as this should list 4KByte available for the SDRAM (0xC000 – 0xCFFF). The memory layout information is found in the System user's manual XC164 Memory Map (page 3-3).
What you can do is uncheck the option to use the on-chip XRAM and then define an External RAM memory starting at 0xC000 with a size of 0x1000. Don't worry about the external RAM as you are really using the internal memory (DSRAM).
Here is the listing from the map file for getting a 4Kbyte UserStack.
START STOP LENGTH TYPE RTYP ALIGN TGR GRP COMB CLASS SECTION NAME ================================================================ 00C000H 00CFFFH 001000H DATA REL WORD --- 1 PUBL NDATA ?C_USERSTACK 00F600H 00F61FH 000020H DATA REL WORD --- 1 PUBL NDATA ?C_USERSTACK1 00F620H 00F63FH 000020H DATA REL WORD --- 1 PUBL NDATA ?C_USERSTACK2
Hope that helps
What does DS(RAM), DP(RAM) and PS(RAM) stand for?
DS(RAM) is single cycle access Data Static RAM.
DP(RAM) is Dual Ported static RAM.
PS(RAM) is Program Static RAM.
You can only execute code out of PSRAM but all can be used for data accesses.