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.
I would like to know what is meant by a physical address (let say a LCD display at address 0x8000) and how can I access the device. Is it just the chip select that is hardwired to that address? Then how is the compiler working ? Also I have tried to access a RAM (external RAM) but does not work. My program works fine with internal RAM, is it just a compiler setting (uvision2). I have tried with the PRAGMA LARGE but no success. Thanks for help
What processor are you using? "what is meant by a physical address (let say a LCD display [sic] at address 0x8000)" coming out of your processor, you have a data bus and an address bus. The physical address of a memory-mapped peripheral is the value (or range of values) on the address bus which causes it to start reading from and/or writing to the data bus. so, if your LCD is at address 0x8000, then this value on the address bus will cause it to start responding to the data bus; eg, receiving data to be displayed. "Is it just the chip select that is hardwired to that address?" Usually, you will have some address decoding logic; this will "recognise" the value (eg 0x8000) on the adress bus and activate the Chip Select when it sees this value. "Also I have tried to access a RAM (external RAM) but does not work." Are you sure that the hardware is all configured correctly? Don't forget that the 8051 has separate address spaces for CODE and XDATA "My program works fine with internal RAM, is it just a compiler setting (uvision2)." It's certainly not a Compiler setting; With the Triscend E5, the only effect of setting the uVision External RAM options seems to be to allow the Linker to warn when it overflows! Most likely, you will need to change you hardware configuration to use external RAM (possibly by setting some registers in your startup code). You need to talk to your hardware designer/supplier about this. "I have tried with the PRAGMA LARGE but no success." Irrelevant; that just sets the default memory space where the compiler will put variables; you have to get that external RAM working as suggested above!