*/\r
\r
OUTPUT_ARCH("33FJ256GP710")\r
-EXTERN(__resetPRI)\r
-EXTERN(__resetALT)\r
+CRT0_STARTUP(crt0_standard.o)\r
+CRT1_STARTUP(crt1_standard.o)\r
\r
+OPTIONAL(-lp33FJ256GP710)\r
\r
/*\r
** Memory Regions\r
*/\r
MEMORY\r
{\r
- data (a!xr) : ORIGIN = 0x800, LENGTH = 0x7800\r
- reset : ORIGIN = 0x0, LENGTH = 0x4\r
- ivt : ORIGIN = 0x4, LENGTH = 0xFC\r
- aivt : ORIGIN = 0x104, LENGTH = 0xFC\r
- program (xr) : ORIGIN = 0x200, LENGTH = 0x2AA00\r
- FBS : ORIGIN = 0xF80000, LENGTH = 0x2\r
- FSS : ORIGIN = 0xF80002, LENGTH = 0x2\r
- FGS : ORIGIN = 0xF80004, LENGTH = 0x2\r
- FOSCSEL : ORIGIN = 0xF80006, LENGTH = 0x2\r
- FOSC : ORIGIN = 0xF80008, LENGTH = 0x2\r
- FWDT : ORIGIN = 0xF8000A, LENGTH = 0x2\r
- FPOR : ORIGIN = 0xF8000C, LENGTH = 0x2\r
- CONFIG3 : ORIGIN = 0xF8000E, LENGTH = 0x2\r
- FUID0 : ORIGIN = 0xF80010, LENGTH = 0x2\r
- FUID1 : ORIGIN = 0xF80012, LENGTH = 0x2\r
- FUID2 : ORIGIN = 0xF80014, LENGTH = 0x2\r
- FUID3 : ORIGIN = 0xF80016, LENGTH = 0x2\r
+ data (a!xr) : ORIGIN = 0x800, LENGTH = 0x7800\r
+ reset : ORIGIN = 0x0, LENGTH = 0x4\r
+ ivt : ORIGIN = 0x4, LENGTH = 0xFC\r
+ aivt : ORIGIN = 0x104, LENGTH = 0xFC\r
+ program (xr) : ORIGIN = 0x200, LENGTH = 0x2AA00\r
+ FBS : ORIGIN = 0xF80000, LENGTH = 0x2\r
+ FSS : ORIGIN = 0xF80002, LENGTH = 0x2\r
+ FGS : ORIGIN = 0xF80004, LENGTH = 0x2\r
+ FOSCSEL : ORIGIN = 0xF80006, LENGTH = 0x2\r
+ FOSC : ORIGIN = 0xF80008, LENGTH = 0x2\r
+ FWDT : ORIGIN = 0xF8000A, LENGTH = 0x2\r
+ FPOR : ORIGIN = 0xF8000C, LENGTH = 0x2\r
+ FICD : ORIGIN = 0xF8000E, LENGTH = 0x2\r
+ FUID0 : ORIGIN = 0xF80010, LENGTH = 0x2\r
+ FUID1 : ORIGIN = 0xF80012, LENGTH = 0x2\r
+ FUID2 : ORIGIN = 0xF80014, LENGTH = 0x2\r
+ FUID3 : ORIGIN = 0xF80016, LENGTH = 0x2\r
}\r
+\r
+__FBS = 0xF80000;\r
+__FSS = 0xF80002;\r
+__FGS = 0xF80004;\r
+__FOSCSEL = 0xF80006;\r
+__FOSC = 0xF80008;\r
+__FWDT = 0xF8000A;\r
+__FPOR = 0xF8000C;\r
+__FICD = 0xF8000E;\r
+__FUID0 = 0xF80010;\r
+__FUID1 = 0xF80012;\r
+__FUID2 = 0xF80014;\r
+__FUID3 = 0xF80016;\r
+\r
__IVT_BASE = 0x4;\r
__AIVT_BASE = 0x104;\r
__DATA_BASE = 0x800;\r
\r
/*\r
** User Code and Library Code\r
+ **\r
+ ** This section must not be assigned to __CODE_BASE,\r
+ ** because CodeGuard(tm) sections may be located there.\r
+ **\r
+ ** Note that input sections *(.text) are not mapped here.\r
+ ** The best-fit allocator locates them, so that .text\r
+ ** may flow around PSV sections as needed.\r
*/\r
- .text __CODE_BASE :\r
+ .text :\r
{\r
+ *(.init);\r
+ *(.user_init);\r
*(.handle);\r
*(.libc) *(.libm) *(.libdsp); /* keep together in this order */\r
*(.lib*);\r
- *(.text);\r
} >program\r
\r
\r
+ /*\r
+ ** User-Defined Section in Program Memory\r
+ **\r
+ ** note: can specify an address using\r
+ ** the following syntax:\r
+ **\r
+ ** usercode 0x1234 :\r
+ ** {\r
+ ** *(usercode);\r
+ ** } >program\r
+ */\r
+ usercode :\r
+ {\r
+ *(usercode);\r
+ } >program\r
+\r
+\r
+ /*\r
+ ** User-Defined Constants in Program Memory\r
+ **\r
+ ** For PSV type sections, the Load Memory Address (LMA)\r
+ ** should be specified as follows:\r
+ **\r
+ ** userconst : AT(0x1234)\r
+ ** {\r
+ ** *(userconst);\r
+ ** } >program\r
+ **\r
+ ** Note that mapping PSV sections in linker scripts\r
+ ** is not generally recommended.\r
+ **\r
+ ** Because of page alignment restrictions, memory is\r
+ ** often used more efficiently when PSV sections\r
+ ** do not appear in the linker script.\r
+ **\r
+ ** For more information on memory allocation,\r
+ ** please refer to chapter 10, 'Linker Processing'\r
+ ** in the Assembler, Linker manual (DS51317).\r
+ */\r
+\r
+\r
/*\r
** Configuration Words\r
*/\r
{ *(__FWDT.sec) } >FWDT\r
__FPOR :\r
{ *(__FPOR.sec) } >FPOR\r
+ __FICD :\r
+ { *(__FICD.sec) } >FICD\r
__FUID0 :\r
{ *(__FUID0.sec) } >FUID0\r
__FUID1 :\r
ABSOLUTE(__DefaultInterrupt));\r
LONG( DEFINED(__U2ErrInterrupt) ? ABSOLUTE(__U2ErrInterrupt) :\r
ABSOLUTE(__DefaultInterrupt));\r
- LONG( DEFINED(__Interrupt68) ? ABSOLUTE(__Interrupt68) :\r
+ LONG( DEFINED(__Interrupt67) ? ABSOLUTE(__Interrupt67) :\r
ABSOLUTE(__DefaultInterrupt));\r
LONG( DEFINED(__DMA6Interrupt) ? ABSOLUTE(__DMA6Interrupt) :\r
ABSOLUTE(__DefaultInterrupt));\r
LONG( DEFINED(__AltU2ErrInterrupt) ? ABSOLUTE(__AltU2ErrInterrupt) :\r
(DEFINED(__U2ErrInterrupt) ? ABSOLUTE(__U2ErrInterrupt) :\r
ABSOLUTE(__DefaultInterrupt)));\r
- LONG( DEFINED(__AltInterrupt68) ? ABSOLUTE(__AltInterrupt68) :\r
- (DEFINED(__Interrupt68) ? ABSOLUTE(__Interrupt68) :\r
+ LONG( DEFINED(__AltInterrupt67) ? ABSOLUTE(__AltInterrupt67) :\r
+ (DEFINED(__Interrupt67) ? ABSOLUTE(__Interrupt67) :\r
ABSOLUTE(__DefaultInterrupt)));\r
LONG( DEFINED(__AltDMA6Interrupt) ? ABSOLUTE(__AltDMA6Interrupt) :\r
(DEFINED(__DMA6Interrupt) ? ABSOLUTE(__DMA6Interrupt) :\r
_OC8CONbits = 0x1AE;\r
I2C1RCV = 0x200;\r
_I2C1RCV = 0x200;\r
+ I2CRCV = 0x200;\r
+_I2CRCV = 0x200;\r
I2C1TRN = 0x202;\r
_I2C1TRN = 0x202;\r
+ I2CTRN = 0x202;\r
+_I2CTRN = 0x202;\r
I2C1BRG = 0x204;\r
_I2C1BRG = 0x204;\r
I2C1CON = 0x206;\r
_I2C1CON = 0x206;\r
_I2C1CONbits = 0x206;\r
+ I2CCON = 0x206;\r
+_I2CCON = 0x206;\r
I2C1STAT = 0x208;\r
_I2C1STAT = 0x208;\r
_I2C1STATbits = 0x208;\r
+ I2CSTAT = 0x208;\r
+_I2CSTAT = 0x208;\r
I2C1ADD = 0x20A;\r
_I2C1ADD = 0x20A;\r
+ I2CADD = 0x20A;\r
+_I2CADD = 0x20A;\r
I2C1MSK = 0x20C;\r
_I2C1MSK = 0x20C;\r
I2C2RCV = 0x210;\r
_LATGbits = 0x2E8;\r
ADC1BUF0 = 0x300;\r
_ADC1BUF0 = 0x300;\r
+ ADCBUF0 = 0x300;\r
+_ADCBUF0 = 0x300;\r
AD1CON1 = 0x320;\r
_AD1CON1 = 0x320;\r
_AD1CON1bits = 0x320;\r
AD1PCFGL = 0x32C;\r
_AD1PCFGL = 0x32C;\r
_AD1PCFGLbits = 0x32C;\r
+ ADPCFG = 0x32C;\r
+_ADPCFG = 0x32C;\r
AD1CSSH = 0x32E;\r
_AD1CSSH = 0x32E;\r
_AD1CSSHbits = 0x32E;\r
OSCCON = 0x742;\r
_OSCCON = 0x742;\r
_OSCCONbits = 0x742;\r
+ OSCCONL = 0x742;\r
+_OSCCONL = 0x742;\r
+ OSCCONH = 0x743;\r
+_OSCCONH = 0x743;\r
CLKDIV = 0x744;\r
_CLKDIV = 0x744;\r
_CLKDIVbits = 0x744;\r
PMD3 = 0x774;\r
_PMD3 = 0x774;\r
_PMD3bits = 0x774;\r
+/*\r
+** ======= Base Addresses for Various Peripherals ======\r
+*/\r
+\r
+ IC1 = 0x140;\r
+_IC1 = 0x140;\r
+ IC2 = 0x144;\r
+_IC2 = 0x144;\r
+ IC3 = 0x148;\r
+_IC3 = 0x148;\r
+ IC4 = 0x14C;\r
+_IC4 = 0x14C;\r
+ IC5 = 0x150;\r
+_IC5 = 0x150;\r
+ IC6 = 0x154;\r
+_IC6 = 0x154;\r
+ IC7 = 0x158;\r
+_IC7 = 0x158;\r
+ IC8 = 0x15C;\r
+_IC8 = 0x15C;\r
+ OC1 = 0x180;\r
+_OC1 = 0x180;\r
+ OC2 = 0x186;\r
+_OC2 = 0x186;\r
+ OC3 = 0x18C;\r
+_OC3 = 0x18C;\r
+ OC4 = 0x192;\r
+_OC4 = 0x192;\r
+ OC5 = 0x198;\r
+_OC5 = 0x198;\r
+ OC6 = 0x19E;\r
+_OC6 = 0x19E;\r
+ OC7 = 0x1A4;\r
+_OC7 = 0x1A4;\r
+ OC8 = 0x1AA;\r
+_OC8 = 0x1AA;\r
+ SPI1 = 0x240;\r
+_SPI1 = 0x240;\r
+ SPI2 = 0x260;\r
+_SPI2 = 0x260;\r
+ UART1 = 0x220;\r
+_UART1 = 0x220;\r
+ UART2 = 0x230;\r
+_UART2 = 0x230;\r