我在MC9S12XDP512上做应用开发,当应用程序编译时出现错误,提示如下:Out
of allocation space in segment RAM at address 0x2D61
开发的这个应用程序在MC9S12DP512&UC/OS-II上运行是没问题的,在s12x上面怎么就有问题
了呢?MC9S12XDP512的RAM空间是32k而MC9S12DP512的RAM空间是14k,我想在MC9S12DP512上可以运行的在MC9S12XDP512也应该没问题的,请问问题出在哪里?请版主帮忙解决,谢谢了了!作者: freescale_bjut 时间: 2008-3-4 09:35
您说的是不是prm文件啊,这个文件中S12和S12X的定义区别如下:
请问具体应该怎么修改才能解决这个问题呢?谢谢!
mc9s12dp512的prm文件中segment定义如下:
SEGMENTS /* Here all RAM/ROM areas of the device are listed. Used in PLACEMENT
below. */
/* Register space */
/* IO_SEG = PAGED 0x0000 TO 0x03FF; intentionally not defined
*/
/* EPROM */
EEPROM = READ_ONLY 0x0400 TO 0x07FF;
/* RAM */
RAM = READ_WRITE 0x0800 TO 0x3FFF;
/* non-paged FLASHs */
ROM_4000 = READ_ONLY 0x4000 TO 0x7FFF;
ROM_C000 = READ_ONLY 0xC000 TO 0xFEFF;
/* VECTORS = READ_ONLY 0xFF00 TO 0xFFFF; intentionally not
defined:
used for VECTOR commands below */
//OSVECTORS = READ_ONLY 0xFF8C TO 0xFFFF; /* OSEK interrupt
vectors (use your vector.o) */
/* paged FLASH: 0x8000 TO 0xBFFF; addressed through PPAGE
*/
PAGE_20 = READ_ONLY 0x208000 TO 0x20BFFF;
PAGE_21 = READ_ONLY 0x218000 TO 0x21BFFF;
PAGE_22 = READ_ONLY 0x228000 TO 0x22BFFF;
PAGE_23 = READ_ONLY 0x238000 TO 0x23BFFF;
PAGE_24 = READ_ONLY 0x248000 TO 0x24BFFF;
PAGE_25 = READ_ONLY 0x258000 TO 0x25BFFF;
PAGE_26 = READ_ONLY 0x268000 TO 0x26BFFF;
PAGE_27 = READ_ONLY 0x278000 TO 0x27BFFF;
PAGE_28 = READ_ONLY 0x288000 TO 0x28BFFF;
PAGE_29 = READ_ONLY 0x298000 TO 0x29BFFF;
PAGE_2A = READ_ONLY 0x2A8000 TO 0x2ABFFF;
PAGE_2B = READ_ONLY 0x2B8000 TO 0x2BBFFF;
PAGE_2C = READ_ONLY 0x2C8000 TO 0x2CBFFF;
PAGE_2D = READ_ONLY 0x2D8000 TO 0x2DBFFF;
PAGE_2E = READ_ONLY 0x2E8000 TO 0x2EBFFF;
PAGE_2F = READ_ONLY 0x2F8000 TO 0x2FBFFF;
PAGE_30 = READ_ONLY 0x308000 TO 0x30BFFF;
PAGE_31 = READ_ONLY 0x318000 TO 0x31BFFF;
PAGE_32 = READ_ONLY 0x328000 TO 0x32BFFF;
PAGE_33 = READ_ONLY 0x338000 TO 0x33BFFF;
PAGE_34 = READ_ONLY 0x348000 TO 0x34BFFF;
PAGE_35 = READ_ONLY 0x358000 TO 0x35BFFF;
PAGE_36 = READ_ONLY 0x368000 TO 0x36BFFF;
PAGE_37 = READ_ONLY 0x378000 TO 0x37BFFF;
PAGE_38 = READ_ONLY 0x388000 TO 0x38BFFF;
PAGE_39 = READ_ONLY 0x398000 TO 0x39BFFF;
PAGE_3A = READ_ONLY 0x3A8000 TO 0x3ABFFF;
PAGE_3B = READ_ONLY 0x3B8000 TO 0x3BBFFF;
PAGE_3C = READ_ONLY 0x3C8000 TO 0x3CBFFF;
PAGE_3D = READ_ONLY 0x3D8000 TO 0x3DBFFF;
/* PAGE_3E = READ_ONLY 0x3E8000 TO 0x3EBFFF; not used: equivalent to
ROM_4000 */
/* PAGE_3F = READ_ONLY 0x3F8000 TO 0x3FBEFF; not used: equivalent to
ROM_C000 */
END
mc9s12xdp512的prm文件中segment定义如下:
SEGMENTS /* here all RAM/ROM areas of the device are listed. Used in PLACEMENT
below. All addresses are 'logical' */
/* Register space */
/* IO_SEG = PAGED 0x0000 TO 0x07FF; intentionally not defined
*/
/* non-paged EEPROM */
EEPROM = READ_ONLY 0x0C00 TO 0x0FFB;
/* non-paged RAM */
RAM = READ_WRITE 0x2000 TO 0x3FFF;
/* non-banked FLASH */
ROM_4000 = READ_ONLY 0x4000 TO 0x7FFF;
ROM_C000 = READ_ONLY 0xC000 TO 0xFEFF;
/* VECTORS = READ_ONLY 0xFF00 TO 0xFFFF; intentionally not
defined:
used for VECTOR commands below */
//OSVECTORS = READ_ONLY 0xFF10 TO 0xFFFF; /* OSEK interrupt
vectors
(use your vector.o) */
/* paged EEPROM 0x0800 TO 0x0BFF; addressed through EPAGE
*/
EEPROM_FC = READ_ONLY 0xFC0800 TO 0xFC0BFF;
EEPROM_FD = READ_ONLY 0xFD0800 TO 0xFD0BFF;
EEPROM_FE = READ_ONLY 0xFE0800 TO 0xFE0BFF;
/* EEPROM_FF = READ_ONLY 0xFF0800 TO 0xFF0BFF; intentionally not
defined:
equivalent to EEPROM */
/* paged RAM: 0x1000 TO 0x1FFF; addressed through RPAGE
*/
RAM_F8 = READ_WRITE 0xF81000 TO 0xF81FFF;
RAM_F9 = READ_WRITE 0xF91000 TO 0xF91FFF;
RAM_FA = READ_WRITE 0xFA1000 TO 0xFA1FFF;
RAM_FB = READ_WRITE 0xFB1000 TO 0xFB1FFF;
RAM_FC = READ_WRITE 0xFC1000 TO 0xFC1FFF;
RAM_FD = READ_WRITE 0xFD1000 TO 0xFD1FFF;
/* RAM_FE = READ_WRITE 0xFE1000 TO 0xFE1FFF; intentionally not
defined:
equivalent to RAM: 0x2000..0x2FFF */
/* RAM_FF = READ_WRITE 0xFF1000 TO 0xFF1FFF; intentionally not
defined:
equivalent to RAM: 0x3000..0x3FFF */
/* paged FLASH: 0x8000 TO 0xBFFF; addressed through PPAGE
*/
PAGE_E0 = READ_ONLY 0xE08000 TO 0xE0BFFF;
PAGE_E1 = READ_ONLY 0xE18000 TO 0xE1BFFF;
PAGE_E2 = READ_ONLY 0xE28000 TO 0xE2BFFF;
PAGE_E3 = READ_ONLY 0xE38000 TO 0xE3BFFF;
PAGE_E4 = READ_ONLY 0xE48000 TO 0xE4BFFF;
PAGE_E5 = READ_ONLY 0xE58000 TO 0xE5BFFF;
PAGE_E6 = READ_ONLY 0xE68000 TO 0xE6BFFF;
PAGE_E7 = READ_ONLY 0xE78000 TO 0xE7BFFF;
PAGE_E8 = READ_ONLY 0xE88000 TO 0xE8BFFF;
PAGE_E9 = READ_ONLY 0xE98000 TO 0xE9BFFF;
PAGE_EA = READ_ONLY 0xEA8000 TO 0xEABFFF;
PAGE_EB = READ_ONLY 0xEB8000 TO 0xEBBFFF;
PAGE_EC = READ_ONLY 0xEC8000 TO 0xECBFFF;
PAGE_ED = READ_ONLY 0xED8000 TO 0xEDBFFF;
PAGE_EE = READ_ONLY 0xEE8000 TO 0xEEBFFF;
PAGE_EF = READ_ONLY 0xEF8000 TO 0xEFBFFF;
PAGE_F0 = READ_ONLY 0xF08000 TO 0xF0BFFF;
PAGE_F1 = READ_ONLY 0xF18000 TO 0xF1BFFF;
PAGE_F2 = READ_ONLY 0xF28000 TO 0xF2BFFF;
PAGE_F3 = READ_ONLY 0xF38000 TO 0xF3BFFF;
PAGE_F4 = READ_ONLY 0xF48000 TO 0xF4BFFF;
PAGE_F5 = READ_ONLY 0xF58000 TO 0xF5BFFF;
PAGE_F6 = READ_ONLY 0xF68000 TO 0xF6BFFF;
PAGE_F7 = READ_ONLY 0xF78000 TO 0xF7BFFF;
PAGE_F8 = READ_ONLY 0xF88000 TO 0xF8BFFF;
PAGE_F9 = READ_ONLY 0xF98000 TO 0xF9BFFF;
PAGE_FA = READ_ONLY 0xFA8000 TO 0xFABFFF;
PAGE_FB = READ_ONLY 0xFB8000 TO 0xFBBFFF;
PAGE_FC = READ_ONLY 0xFC8000 TO 0xFCBFFF;
/* PAGE_FD = READ_ONLY 0xFD8000 TO 0xFDBFFF; intentionally not
defined:
equivalent to ROM_4000 */
PAGE_FE = READ_ONLY 0xFE8000 TO 0xFEBFFF;
/* PAGE_FF = READ_ONLY 0xFF8000 TO 0xFFBFFF; intentionally not
defined:
equivalent to ROM_C000 */
END