Added comfiguration for Majenko SDXL board.
DIP and Pinguino-micro boards removed - nobody uses these. Deleted unused linker scripts.
This commit is contained in:
3
Makefile
3
Makefile
@@ -24,12 +24,11 @@ DUINOMITE = sys/pic32/duinomite/DUINOMITE
|
|||||||
DUINOMITEUART = sys/pic32/duinomite-uart/DUINOMITE-UART
|
DUINOMITEUART = sys/pic32/duinomite-uart/DUINOMITE-UART
|
||||||
DUINOMITEE = sys/pic32/duinomite-e/DUINOMITE-E
|
DUINOMITEE = sys/pic32/duinomite-e/DUINOMITE-E
|
||||||
DUINOMITEEUART = sys/pic32/duinomite-e-uart/DUINOMITE-E-UART
|
DUINOMITEEUART = sys/pic32/duinomite-e-uart/DUINOMITE-E-UART
|
||||||
PINGUINO = sys/pic32/pinguino-micro/PINGUINO-MICRO
|
|
||||||
DIP = sys/pic32/dip/DIP
|
|
||||||
BAREMETAL = sys/pic32/baremetal/BAREMETAL
|
BAREMETAL = sys/pic32/baremetal/BAREMETAL
|
||||||
RETROONE = sys/pic32/retroone/RETROONE
|
RETROONE = sys/pic32/retroone/RETROONE
|
||||||
FUBARINO = sys/pic32/fubarino/FUBARINO
|
FUBARINO = sys/pic32/fubarino/FUBARINO
|
||||||
FUBARINOBIG = sys/pic32/fubarino/FUBARINO-UART2CONS-UART1-SRAMC
|
FUBARINOBIG = sys/pic32/fubarino/FUBARINO-UART2CONS-UART1-SRAMC
|
||||||
|
SDXL = sys/pic32/sdxl/SDXL
|
||||||
MMBMX7 = sys/pic32/mmb-mx7/MMB-MX7
|
MMBMX7 = sys/pic32/mmb-mx7/MMB-MX7
|
||||||
|
|
||||||
# Select target board
|
# Select target board
|
||||||
|
|||||||
@@ -45,8 +45,6 @@ TARGET = $(DUINOMITE) # for the Duinomite board with USB console
|
|||||||
TARGET = $(DUINOMITEUART) # for the Duinomite board with UART console
|
TARGET = $(DUINOMITEUART) # for the Duinomite board with UART console
|
||||||
TARGET = $(DUINOMITEE) # for the Duinomite E board with USB console
|
TARGET = $(DUINOMITEE) # for the Duinomite E board with USB console
|
||||||
TARGET = $(DUINOMITEEUART) # for the Duinomite E board with UART console
|
TARGET = $(DUINOMITEEUART) # for the Duinomite E board with UART console
|
||||||
TARGET = $(PINGUINO) # for the Pinguino-Micro board
|
|
||||||
TARGET = $(DIP) # for the DIP board
|
|
||||||
TARGET = $(BAREMETAL) # Bare PIC32 chip on a breakout board
|
TARGET = $(BAREMETAL) # Bare PIC32 chip on a breakout board
|
||||||
TARGET = $(FUBARINO) # Fubarino SD board
|
TARGET = $(FUBARINO) # Fubarino SD board
|
||||||
TARGET = $(FUBARINOBIG) # Fubarino SD board with 8MB SRAM RAMDISK
|
TARGET = $(FUBARINOBIG) # Fubarino SD board with 8MB SRAM RAMDISK
|
||||||
@@ -163,4 +161,3 @@ For building under Ubuntu you need the following packages installed:
|
|||||||
```shell
|
```shell
|
||||||
$ sudo apt-get install byacc libelf-dev
|
$ sudo apt-get install byacc libelf-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,134 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d005000, LENGTH = 492K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 0x62C0
|
|
||||||
u0area (rw!x): ORIGIN = 0x800062C0, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80006EC0, LENGTH = 3K
|
|
||||||
keram (rwx) : ORIGIN = 0x80007AC0, LENGTH = 0x540
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
_keram_start = ORIGIN(keram);
|
|
||||||
_keram_end = ORIGIN(keram) + LENGTH(keram);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* RAM functions go at the end of our stack and heap allocation.
|
|
||||||
* Alignment of 2K required by the boundary register (BMXDKPBA).
|
|
||||||
*/
|
|
||||||
.ramfunc : AT (LOADADDR (.data) + SIZEOF (.data))
|
|
||||||
{
|
|
||||||
_ramfunc_begin = . ;
|
|
||||||
*(.ramfunc .ramfunc.*)
|
|
||||||
. = ALIGN(4) ;
|
|
||||||
_ramfunc_end = . ;
|
|
||||||
} >keram
|
|
||||||
_ramfunc_image_begin = LOADADDR(.ramfunc) ;
|
|
||||||
_ramfunc_length = SIZEOF(.ramfunc) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d005000, LENGTH = 492K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
# Programs that live in subdirectories, and have makefiles of their own.
|
# Programs that live in subdirectories, and have makefiles of their own.
|
||||||
#
|
#
|
||||||
SUBDIR = baremetal dip duinomite duinomite-uart duinomite-e \
|
SUBDIR = baremetal duinomite duinomite-uart duinomite-e \
|
||||||
duinomite-e-uart explorer16 max32 max32-eth maximite \
|
duinomite-e-uart explorer16 max32 max32-eth maximite \
|
||||||
meb pinguino-micro starter-kit ubw32 ubw32-uart \
|
meb starter-kit sdxl ubw32 ubw32-uart \
|
||||||
ubw32-uart-sdram baremetal fubarino mmb-mx7 maximite-color \
|
ubw32-uart-sdram baremetal fubarino mmb-mx7 maximite-color \
|
||||||
32mxsdram-uart picadillo
|
32mxsdram-uart picadillo
|
||||||
|
|
||||||
|
|||||||
1
sys/pic32/baremetal/.gitignore
vendored
1
sys/pic32/baremetal/.gitignore
vendored
@@ -3,6 +3,7 @@
|
|||||||
.oldversion
|
.oldversion
|
||||||
machine
|
machine
|
||||||
sys
|
sys
|
||||||
|
boot.bin
|
||||||
unix.bin
|
unix.bin
|
||||||
unix.map
|
unix.map
|
||||||
usbboot.map
|
usbboot.map
|
||||||
|
|||||||
@@ -1,186 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
devcfg (r) : ORIGIN = 0x9fc02ff0, LENGTH = 16
|
|
||||||
|
|
||||||
/* flash (rx) : ORIGIN = 0x9d005000, LENGTH = 492K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 24K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006000, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80006C00, LENGTH = 3K
|
|
||||||
keram (rwx) : ORIGIN = 0x80007800, LENGTH = 2K*/
|
|
||||||
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 512K
|
|
||||||
exception_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x1000
|
|
||||||
kseg0_boot_mem (rx) : ORIGIN = 0x9FC00000, LENGTH = 12K-16
|
|
||||||
kseg1_boot_mem (rx) : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
/* Read-only sections, merged into text segment: */
|
|
||||||
. = 0x0000;
|
|
||||||
.interp : { *(.interp) }
|
|
||||||
.hash : { *(.hash) }
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
.dynstr : { *(.dynstr) }
|
|
||||||
.gnu.version : { *(.gnu.version) }
|
|
||||||
.gnu.version_d : { *(.gnu.version_d) }
|
|
||||||
.gnu.version_r : { *(.gnu.version_r) }
|
|
||||||
.rel.init : { *(.rel.init) }
|
|
||||||
.rela.init : { *(.rela.init) }
|
|
||||||
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
|
||||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
|
||||||
.rel.fini : { *(.rel.fini) }
|
|
||||||
.rela.fini : { *(.rela.fini) }
|
|
||||||
.rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
|
|
||||||
.rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
|
|
||||||
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
|
||||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
|
||||||
.rel.ctors : { *(.rel.ctors) }
|
|
||||||
.rela.ctors : { *(.rela.ctors) }
|
|
||||||
.rel.dtors : { *(.rel.dtors) }
|
|
||||||
.rela.dtors : { *(.rela.dtors) }
|
|
||||||
.rel.got : { *(.rel.got) }
|
|
||||||
.rela.got : { *(.rela.got) }
|
|
||||||
.rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
|
|
||||||
.rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
|
|
||||||
.rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
|
|
||||||
.rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
|
|
||||||
.rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
|
|
||||||
.rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
|
|
||||||
.rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
|
|
||||||
.rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
|
|
||||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
|
|
||||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
|
|
||||||
.rel.plt : { *(.rel.plt) }
|
|
||||||
.rela.plt : { *(.rela.plt) }
|
|
||||||
.plt : { *(.plt) }
|
|
||||||
|
|
||||||
.boot :
|
|
||||||
{
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
} > kseg0_boot_mem
|
|
||||||
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > kseg0_program_mem
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We have only 32k RAM on MC-24, so no need for 0x8000 offset. */
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
/* Device configuration. */
|
|
||||||
.config :
|
|
||||||
{
|
|
||||||
*(.config3)
|
|
||||||
*(.config2)
|
|
||||||
*(.config1)
|
|
||||||
*(.config0)
|
|
||||||
} > devcfg
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* RAM functions go at the end of our stack and heap allocation.
|
|
||||||
* Alignment of 2K required by the boundary register (BMXDKPBA).
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
.ramfunc : AT (LOADADDR (.data) + SIZEOF (.data))
|
|
||||||
{
|
|
||||||
_ramfunc_begin = . ;
|
|
||||||
*(.ramfunc .ramfunc.*)
|
|
||||||
. = ALIGN(4) ;
|
|
||||||
_ramfunc_end = . ;
|
|
||||||
} >keram
|
|
||||||
_ramfunc_image_begin = LOADADDR(.ramfunc) ;
|
|
||||||
_ramfunc_length = SIZEOF(.ramfunc) ;
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Linker script for PIC32 bootloader.
|
* Linker script for PIC32 bootloader.
|
||||||
*/
|
*/
|
||||||
OUTPUT_FORMAT("elf32-tradlittlemips")
|
OUTPUT_FORMAT("elf32-littlemips")
|
||||||
OUTPUT_ARCH(mips)
|
OUTPUT_ARCH(mips)
|
||||||
ENTRY(_start)
|
ENTRY(_start)
|
||||||
MEMORY
|
MEMORY
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ DEFS += -DBUS_KHZ=80000
|
|||||||
# Ethernet/USB Starter Kit with I/O Expansion board
|
# Ethernet/USB Starter Kit with I/O Expansion board
|
||||||
# =================================================
|
# =================================================
|
||||||
#
|
#
|
||||||
#LDSCRIPT = ../strater-kit/using-bootloader.ld
|
#LDSCRIPT = ../cfg/bootloader.ld
|
||||||
|
|
||||||
# Console on USB
|
# Console on USB
|
||||||
# For Windows, use the driver: http://www.schmalzhaus.com/UBW32/FW/UBW32inf.zip
|
# For Windows, use the driver: http://www.schmalzhaus.com/UBW32/FW/UBW32inf.zip
|
||||||
@@ -39,7 +39,7 @@ DEFS += -DUSB_NUM_STRING_DESCRIPTORS=3 -DUSB_MAX_EP_NUMBER=3
|
|||||||
# UBW32 board
|
# UBW32 board
|
||||||
# ===========
|
# ===========
|
||||||
#
|
#
|
||||||
LDSCRIPT = ../ubw32/using-bootloader.ld
|
LDSCRIPT = ../cfg/bootloader-ubw32.ld
|
||||||
|
|
||||||
# SD/MMC card driver on SPI1
|
# SD/MMC card driver on SPI1
|
||||||
# /CS0 at pin A9 (and optional /CS1 at pin A10)
|
# /CS0 at pin A9 (and optional /CS1 at pin A10)
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
/*
|
||||||
|
* Standalone test of SD card driver.
|
||||||
|
* Broken since rdisk implemented.
|
||||||
|
*/
|
||||||
#include "param.h"
|
#include "param.h"
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "systm.h"
|
#include "systm.h"
|
||||||
@@ -9,7 +13,7 @@
|
|||||||
size_t physmem; /* total amount of physical memory */
|
size_t physmem; /* total amount of physical memory */
|
||||||
u_int swapstart, nswap; /* start and size of swap space */
|
u_int swapstart, nswap; /* start and size of swap space */
|
||||||
|
|
||||||
const struct linesw linesw[] = { { 0 } };
|
//const struct linesw linesw[] = { { 0 } };
|
||||||
int nldisp = 1;
|
int nldisp = 1;
|
||||||
|
|
||||||
char data [SECTSIZE * 2];
|
char data [SECTSIZE * 2];
|
||||||
@@ -17,6 +21,8 @@ char data [SECTSIZE * 2];
|
|||||||
extern int card_size (int unit, unsigned *nsectors);
|
extern int card_size (int unit, unsigned *nsectors);
|
||||||
extern int card_read (int unit, unsigned offset, char *data, unsigned bcount);
|
extern int card_read (int unit, unsigned offset, char *data, unsigned bcount);
|
||||||
extern int card_write (int unit, unsigned offset, char *data, unsigned bcount);
|
extern int card_write (int unit, unsigned offset, char *data, unsigned bcount);
|
||||||
|
extern void sd_preinit(int unit);
|
||||||
|
extern void usbintr (int chan);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fill_sector (p, byte0, byte1)
|
fill_sector (p, byte0, byte1)
|
||||||
@@ -143,9 +149,7 @@ getcmd:
|
|||||||
case '\n': case '\r':
|
case '\n': case '\r':
|
||||||
break;
|
break;
|
||||||
case '1':
|
case '1':
|
||||||
if (sdopen (0, 0, 0) == 0) {
|
sd_preinit(0);
|
||||||
printf ("Card initialized successfully.\n");
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case '2':
|
case '2':
|
||||||
if (card_size (0, &nsectors))
|
if (card_size (0, &nsectors))
|
||||||
@@ -345,10 +349,9 @@ void
|
|||||||
exception (frame) /* exception.c */
|
exception (frame) /* exception.c */
|
||||||
int *frame;
|
int *frame;
|
||||||
{
|
{
|
||||||
unsigned c, irq, status, cause;
|
unsigned c, irq, cause;
|
||||||
|
|
||||||
led_control (LED_KERNEL, 1);
|
led_control (LED_KERNEL, 1);
|
||||||
status = frame [FRAME_STATUS];
|
|
||||||
cause = mips_read_c0_register (C0_CAUSE, 0);
|
cause = mips_read_c0_register (C0_CAUSE, 0);
|
||||||
|
|
||||||
if ((cause & CA_EXC_CODE) != CA_Int) {
|
if ((cause & CA_EXC_CODE) != CA_Int) {
|
||||||
@@ -380,11 +383,13 @@ exception (frame) /* exception.c */
|
|||||||
} while ((int) (c - mips_read_c0_register (C0_COUNT, 0)) < 0);
|
} while ((int) (c - mips_read_c0_register (C0_COUNT, 0)) < 0);
|
||||||
|
|
||||||
IFSCLR(0) = 1 << PIC32_IRQ_CT;
|
IFSCLR(0) = 1 << PIC32_IRQ_CT;
|
||||||
|
|
||||||
|
int status = frame [FRAME_STATUS];
|
||||||
hardclock ((caddr_t) frame [FRAME_PC], status);
|
hardclock ((caddr_t) frame [FRAME_PC], status);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONSOLE_USB
|
#ifdef CONSOLE_USB
|
||||||
/* Poll USB on every timer tick. */
|
/* Poll USB on every timer tick. */
|
||||||
cnintr (0);
|
usbintr (0);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
#if defined(CONSOLE_UART1) || defined(CONSOLE_UART2) || \
|
#if defined(CONSOLE_UART1) || defined(CONSOLE_UART2) || \
|
||||||
@@ -408,13 +413,13 @@ defined(CONSOLE_UART5) || defined(CONSOLE_UART6)
|
|||||||
#if CONSOLE_UART6
|
#if CONSOLE_UART6
|
||||||
case PIC32_VECT_U6: /* UART6 */
|
case PIC32_VECT_U6: /* UART6 */
|
||||||
#endif
|
#endif
|
||||||
cnintr (0);
|
uartintr(makedev(UART_MAJOR,0));
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONSOLE_USB
|
#ifdef CONSOLE_USB
|
||||||
case PIC32_VECT_USB: /* USB */
|
case PIC32_VECT_USB: /* USB */
|
||||||
IFSCLR(1) = 1 << (PIC32_IRQ_USB - 32);
|
IFSCLR(1) = 1 << (PIC32_IRQ_USB - 32);
|
||||||
cnintr (0);
|
usbintr (0);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
#
|
|
||||||
# eflightworks DIP board
|
|
||||||
# ======================
|
|
||||||
#
|
|
||||||
# Console on USB
|
|
||||||
# For Windows, use the driver: http://www.schmalzhaus.com/UBW32/FW/UBW32inf.zip
|
|
||||||
|
|
||||||
core pic32mx7
|
|
||||||
mapping generic
|
|
||||||
linker bare
|
|
||||||
|
|
||||||
device kernel led=E5
|
|
||||||
|
|
||||||
device console device=ttyUSB0 led=E6
|
|
||||||
device uartusb
|
|
||||||
|
|
||||||
device rdisk led=E4 swap=E7
|
|
||||||
device sd0 port=3 cs=D4
|
|
||||||
|
|
||||||
device gpio
|
|
||||||
|
|
||||||
device bootloader button=D6 jump=0x9d000000 led=E7 invled2=E6 clear=E4 clear2=E5
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
BUILDPATH = ../../../tools/configsys/../../sys/pic32
|
|
||||||
H = ../../../tools/configsys/../../sys/include
|
|
||||||
M = ../../../tools/configsys/../../sys/pic32
|
|
||||||
S = ../../../tools/configsys/../../sys/kernel
|
|
||||||
|
|
||||||
vpath %.c $(M):$(S)
|
|
||||||
vpath %.S $(M):$(S)
|
|
||||||
|
|
||||||
KERNOBJ += clock.o cons.o devsw.o exception.o exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o gpio.o init_main.o init_sysent.o kern_clock.o kern_descrip.o kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o kern_subr.o kern_synch.o kern_sysctl.o kern_time.o machdep.o mem.o rd_sd.o rdisk.o signal.o spi_bus.o startup.o subr_prf.o subr_rmap.o swap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o syscalls.o sysctl.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o usb_device.o usb_function_cdc.o usb_uart.o vers.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o
|
|
||||||
EXTRA_TARGETS = bootloader
|
|
||||||
|
|
||||||
DEFS += -DBL_BUTTON_PIN=6
|
|
||||||
DEFS += -DBL_BUTTON_PORT=TRISD
|
|
||||||
DEFS += -DBL_CLEAR2_PIN=5
|
|
||||||
DEFS += -DBL_CLEAR2_PORT=TRISE
|
|
||||||
DEFS += -DBL_CLEAR_PIN=4
|
|
||||||
DEFS += -DBL_CLEAR_PORT=TRISE
|
|
||||||
DEFS += -DBL_LED2_INVERT
|
|
||||||
DEFS += -DBL_LED2_PIN=6
|
|
||||||
DEFS += -DBL_LED2_PORT=TRISE
|
|
||||||
DEFS += -DBL_LED_PIN=7
|
|
||||||
DEFS += -DBL_LED_PORT=TRISE
|
|
||||||
DEFS += -DBUS_DIV=1
|
|
||||||
DEFS += -DBUS_KHZ='CPU_KHZ/BUS_DIV'
|
|
||||||
DEFS += -DCONSOLE_DEVICE=ttyUSB0
|
|
||||||
DEFS += -DCPU_IDIV=2
|
|
||||||
DEFS += -DCPU_KHZ='((CRYSTAL*1000)/CPU_IDIV*CPU_MUL/CPU_ODIV)'
|
|
||||||
DEFS += -DCPU_MUL=20
|
|
||||||
DEFS += -DCPU_ODIV=1
|
|
||||||
DEFS += -DCRYSTAL=8
|
|
||||||
DEFS += -DDC0_DEBUG=DEVCFG0_DEBUG_DISABLED
|
|
||||||
DEFS += -DDC0_ICE=0
|
|
||||||
DEFS += -DDC1_CKM=0
|
|
||||||
DEFS += -DDC1_CKS=0
|
|
||||||
DEFS += -DDC1_FNOSC=DEVCFG1_FNOSC_PRIPLL
|
|
||||||
DEFS += -DDC1_IESO=DEVCFG1_IESO
|
|
||||||
DEFS += -DDC1_OSCIOFNC=0
|
|
||||||
DEFS += -DDC1_PBDIV=DEVCFG1_FPBDIV_1
|
|
||||||
DEFS += -DDC1_POSCMOD=DEVCFG1_POSCMOD_HS
|
|
||||||
DEFS += -DDC1_SOSC=0
|
|
||||||
DEFS += -DDC1_WDTEN=0
|
|
||||||
DEFS += -DDC1_WDTPS=DEVCFG1_WDTPS_1
|
|
||||||
DEFS += -DDC2_PLLIDIV=DEVCFG2_FPLLIDIV_2
|
|
||||||
DEFS += -DDC2_PLLMUL=DEVCFG2_FPLLMUL_20
|
|
||||||
DEFS += -DDC2_PLLODIV=DEVCFG2_FPLLODIV_1
|
|
||||||
DEFS += -DDC2_UPLL=0
|
|
||||||
DEFS += -DDC2_UPLLIDIV=DEVCFG2_UPLLIDIV_2
|
|
||||||
DEFS += -DDC3_CAN=DEVCFG3_FCANIO
|
|
||||||
DEFS += -DDC3_ETH=DEVCFG3_FETHIO
|
|
||||||
DEFS += -DDC3_MII=DEVCFG3_FMIIEN
|
|
||||||
DEFS += -DDC3_SRS=DEVCFG3_FSRSSEL_7
|
|
||||||
DEFS += -DDC3_USBID=DEVCFG3_FUSBIDIO
|
|
||||||
DEFS += -DDC3_USERID=0xffff
|
|
||||||
DEFS += -DDC3_VBUSON=DEVCFG3_FVBUSONIO
|
|
||||||
DEFS += -DEXEC_AOUT
|
|
||||||
DEFS += -DEXEC_ELF
|
|
||||||
DEFS += -DEXEC_SCRIPT
|
|
||||||
DEFS += -DFLASH_JUMP=0x9d000000
|
|
||||||
DEFS += -DGPIO_ENABLED=YES
|
|
||||||
DEFS += -DHID_FEATURE_REPORT_BYTES=2
|
|
||||||
DEFS += -DHID_INPUT_REPORT_BYTES=2
|
|
||||||
DEFS += -DHID_INT_IN_EP_SIZE=64
|
|
||||||
DEFS += -DHID_INT_OUT_EP_SIZE=64
|
|
||||||
DEFS += -DHID_OUTPUT_REPORT_BYTES=2
|
|
||||||
DEFS += -DHID_RPT01_SIZE=29
|
|
||||||
DEFS += -DKERNEL
|
|
||||||
DEFS += -DLED_DISK_PIN=4
|
|
||||||
DEFS += -DLED_DISK_PORT=TRISE
|
|
||||||
DEFS += -DLED_KERNEL_PIN=5
|
|
||||||
DEFS += -DLED_KERNEL_PORT=TRISE
|
|
||||||
DEFS += -DLED_SWAP_PIN=7
|
|
||||||
DEFS += -DLED_SWAP_PORT=TRISE
|
|
||||||
DEFS += -DLED_TTY_PIN=6
|
|
||||||
DEFS += -DLED_TTY_PORT=TRISE
|
|
||||||
DEFS += -DPIC32MX7
|
|
||||||
DEFS += -DSD0_CS_PIN=4
|
|
||||||
DEFS += -DSD0_CS_PORT=TRISD
|
|
||||||
DEFS += -DSD0_PORT=3
|
|
||||||
DEFS += -DUARTUSB_ENABLED=YES
|
|
||||||
DEFS += -DUCB_METER
|
|
||||||
DEFS += -DUSB_EP0_BUFF_SIZE=8
|
|
||||||
DEFS += -DUSB_MAX_EP_NUMBER=3
|
|
||||||
DEFS += -DUSB_NUM_STRING_DESCRIPTORS=3
|
|
||||||
|
|
||||||
|
|
||||||
LDSCRIPT = ../../../tools/configsys/../../sys/pic32/cfg/bare.ld
|
|
||||||
|
|
||||||
CONFIG = DIP
|
|
||||||
CONFIGPATH = ../../../tools/configsys
|
|
||||||
|
|
||||||
include ../../../tools/configsys/../../sys/pic32/kernel-post.mk
|
|
||||||
@@ -1,162 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
devcfg (r) : ORIGIN = 0x9fc02ff0, LENGTH = 16
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 512K
|
|
||||||
exception_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x1000
|
|
||||||
kseg0_boot_mem (rx) : ORIGIN = 0x9FC00000, LENGTH = 12K-16
|
|
||||||
kseg1_boot_mem (rx) : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
/* Read-only sections, merged into text segment: */
|
|
||||||
. = 0x0000;
|
|
||||||
.interp : { *(.interp) }
|
|
||||||
.hash : { *(.hash) }
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
.dynstr : { *(.dynstr) }
|
|
||||||
.gnu.version : { *(.gnu.version) }
|
|
||||||
.gnu.version_d : { *(.gnu.version_d) }
|
|
||||||
.gnu.version_r : { *(.gnu.version_r) }
|
|
||||||
.rel.init : { *(.rel.init) }
|
|
||||||
.rela.init : { *(.rela.init) }
|
|
||||||
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
|
||||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
|
||||||
.rel.fini : { *(.rel.fini) }
|
|
||||||
.rela.fini : { *(.rela.fini) }
|
|
||||||
.rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
|
|
||||||
.rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
|
|
||||||
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
|
||||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
|
||||||
.rel.ctors : { *(.rel.ctors) }
|
|
||||||
.rela.ctors : { *(.rela.ctors) }
|
|
||||||
.rel.dtors : { *(.rel.dtors) }
|
|
||||||
.rela.dtors : { *(.rela.dtors) }
|
|
||||||
.rel.got : { *(.rel.got) }
|
|
||||||
.rela.got : { *(.rela.got) }
|
|
||||||
.rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
|
|
||||||
.rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
|
|
||||||
.rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
|
|
||||||
.rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
|
|
||||||
.rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
|
|
||||||
.rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
|
|
||||||
.rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
|
|
||||||
.rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
|
|
||||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
|
|
||||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
|
|
||||||
.rel.plt : { *(.rel.plt) }
|
|
||||||
.rela.plt : { *(.rela.plt) }
|
|
||||||
.plt : { *(.plt) }
|
|
||||||
|
|
||||||
.boot :
|
|
||||||
{
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
} > kseg0_boot_mem
|
|
||||||
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > kseg0_program_mem
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We have only 32k RAM on MC-24, so no need for 0x8000 offset. */
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
/* Device configuration. */
|
|
||||||
.config :
|
|
||||||
{
|
|
||||||
*(.config3)
|
|
||||||
*(.config2)
|
|
||||||
*(.config1)
|
|
||||||
*(.config0)
|
|
||||||
} > devcfg
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* Chip configuration.
|
|
||||||
*/
|
|
||||||
#include "machine/pic32mx.h"
|
|
||||||
|
|
||||||
PIC32_DEVCFG (
|
|
||||||
DEVCFG0_DEBUG_ENABLED | /* ICE debugger disabled */
|
|
||||||
DEVCFG0_ICESEL, /* Use PGC1/PGD1 */
|
|
||||||
|
|
||||||
DEVCFG1_FNOSC_PRIPLL | /* Primary oscillator with PLL */
|
|
||||||
DEVCFG1_POSCMOD_HS | /* HS oscillator */
|
|
||||||
DEVCFG1_OSCIOFNC | /* CLKO output active */
|
|
||||||
DEVCFG1_FPBDIV_1 | /* Peripheral bus clock = SYSCLK/1 */
|
|
||||||
DEVCFG1_FCKM_DISABLE | /* Fail-safe clock monitor disable */
|
|
||||||
DEVCFG1_FCKS_DISABLE | /* Clock switching disable */
|
|
||||||
DEVCFG1_WDTPS_1024, /* Watchdog postscale = 1/1024 */
|
|
||||||
|
|
||||||
DEVCFG2_FPLLIDIV_2 | /* PLL divider = 1/2 */
|
|
||||||
DEVCFG2_FPLLMUL_20 | /* PLL multiplier = 20x */
|
|
||||||
DEVCFG2_UPLLIDIV_2 | /* USB PLL divider = 1/2 */
|
|
||||||
DEVCFG2_FPLLODIV_1, /* PLL postscaler = 1/1 */
|
|
||||||
|
|
||||||
DEVCFG3_USERID(0xffff) | /* User-defined ID */
|
|
||||||
DEVCFG3_FSRSSEL_7 | /* Assign irq priority 7 to shadow set */
|
|
||||||
DEVCFG3_FETHIO); /* Default Ethernet i/o pins */
|
|
||||||
@@ -1,114 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d000000, LENGTH = 512K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00000, LENGTH = 0
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x1000
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d003000, LENGTH = 492K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d003000, LENGTH = 492K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,162 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
devcfg (r) : ORIGIN = 0x9fc02ff0, LENGTH = 16
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 512K
|
|
||||||
exception_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x1000
|
|
||||||
kseg0_boot_mem (rx) : ORIGIN = 0x9FC00000, LENGTH = 12K-16
|
|
||||||
kseg1_boot_mem (rx) : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
/* Read-only sections, merged into text segment: */
|
|
||||||
. = 0x0000;
|
|
||||||
.interp : { *(.interp) }
|
|
||||||
.hash : { *(.hash) }
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
.dynstr : { *(.dynstr) }
|
|
||||||
.gnu.version : { *(.gnu.version) }
|
|
||||||
.gnu.version_d : { *(.gnu.version_d) }
|
|
||||||
.gnu.version_r : { *(.gnu.version_r) }
|
|
||||||
.rel.init : { *(.rel.init) }
|
|
||||||
.rela.init : { *(.rela.init) }
|
|
||||||
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
|
||||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
|
||||||
.rel.fini : { *(.rel.fini) }
|
|
||||||
.rela.fini : { *(.rela.fini) }
|
|
||||||
.rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
|
|
||||||
.rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
|
|
||||||
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
|
||||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
|
||||||
.rel.ctors : { *(.rel.ctors) }
|
|
||||||
.rela.ctors : { *(.rela.ctors) }
|
|
||||||
.rel.dtors : { *(.rel.dtors) }
|
|
||||||
.rela.dtors : { *(.rela.dtors) }
|
|
||||||
.rel.got : { *(.rel.got) }
|
|
||||||
.rela.got : { *(.rela.got) }
|
|
||||||
.rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
|
|
||||||
.rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
|
|
||||||
.rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
|
|
||||||
.rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
|
|
||||||
.rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
|
|
||||||
.rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
|
|
||||||
.rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
|
|
||||||
.rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
|
|
||||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
|
|
||||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
|
|
||||||
.rel.plt : { *(.rel.plt) }
|
|
||||||
.rela.plt : { *(.rela.plt) }
|
|
||||||
.plt : { *(.plt) }
|
|
||||||
|
|
||||||
.boot :
|
|
||||||
{
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
} > kseg0_boot_mem
|
|
||||||
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > kseg0_program_mem
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We have only 32k RAM on MC-24, so no need for 0x8000 offset. */
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
/* Device configuration. */
|
|
||||||
.config :
|
|
||||||
{
|
|
||||||
*(.config3)
|
|
||||||
*(.config2)
|
|
||||||
*(.config1)
|
|
||||||
*(.config0)
|
|
||||||
} > devcfg
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
}
|
|
||||||
@@ -1,114 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using RetroBSD bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d000000, LENGTH = 512K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00000, LENGTH = 0x1000
|
|
||||||
exception_mem : ORIGIN = 0x9FC00000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d000000, LENGTH = 512K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d000000, LENGTH = 512K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d003000, LENGTH = 512K-12K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,114 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using RetroBSD bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d000000, LENGTH = 512K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00000, LENGTH = 0x1000
|
|
||||||
exception_mem : ORIGIN = 0x9FC00000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
#
|
|
||||||
# Pinguino-micro board
|
|
||||||
# ====================
|
|
||||||
#
|
|
||||||
# Console on USB
|
|
||||||
# For Windows, use the driver: http://www.schmalzhaus.com/UBW32/FW/UBW32inf.zip
|
|
||||||
|
|
||||||
core pic32mx7
|
|
||||||
linker bootloader-ubw32
|
|
||||||
mapping generic
|
|
||||||
|
|
||||||
device kernel invled=D1
|
|
||||||
|
|
||||||
device console device=ttyUSB0
|
|
||||||
device uartusb
|
|
||||||
|
|
||||||
device sd0 port=2 cs=B13
|
|
||||||
device gpio
|
|
||||||
device adc
|
|
||||||
|
|
||||||
device bootloader button=E7 led=E3 user=0x1d005000
|
|
||||||
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d005000, LENGTH = 492K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -62,7 +62,7 @@ include ../gcc-config.mk
|
|||||||
|
|
||||||
CC = $(GCCPREFIX)gcc -EL -g -mips32r2
|
CC = $(GCCPREFIX)gcc -EL -g -mips32r2
|
||||||
CC += -nostdinc -fno-builtin -Werror -Wall -fno-dwarf2-cfi-asm
|
CC += -nostdinc -fno-builtin -Werror -Wall -fno-dwarf2-cfi-asm
|
||||||
LDFLAGS += -nostdlib -T bare-metal.ld -Wl,-Map=unix.map
|
LDFLAGS += -nostdlib -T ../cfg/bare.ld -Wl,-Map=unix.map
|
||||||
SIZE = $(GCCPREFIX)size
|
SIZE = $(GCCPREFIX)size
|
||||||
OBJDUMP = $(GCCPREFIX)objdump
|
OBJDUMP = $(GCCPREFIX)objdump
|
||||||
OBJCOPY = $(GCCPREFIX)objcopy
|
OBJCOPY = $(GCCPREFIX)objcopy
|
||||||
@@ -81,7 +81,7 @@ KERNOBJ += init_main.o init_sysent.o kern_clock.o \
|
|||||||
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o \
|
kern_subr.o kern_synch.o kern_sysctl.o kern_time.o \
|
||||||
subr_log.o subr_prf.o subr_rmap.o \
|
subr_log.o subr_prf.o subr_rmap.o \
|
||||||
sys_generic.o sys_inode.o syscalls.o \
|
sys_generic.o sys_inode.o syscalls.o \
|
||||||
sys_pipe.o sys_process.o tty.o \
|
sys_pipe.o sys_process.o tty.o exec_conf.o exec_subr.o \
|
||||||
tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o \
|
||||||
ufs_bmap.o ufs_dsort.o ufs_fio.o \
|
ufs_bmap.o ufs_dsort.o ufs_fio.o \
|
||||||
ufs_inode.o ufs_mount.o ufs_namei.o ufs_subr.o \
|
ufs_inode.o ufs_mount.o ufs_namei.o ufs_subr.o \
|
||||||
@@ -89,7 +89,7 @@ KERNOBJ += init_main.o init_sysent.o kern_clock.o \
|
|||||||
vm_sched.o vm_swap.o vm_swp.o kern_glob.o swap.o spi_bus.o
|
vm_sched.o vm_swap.o vm_swp.o kern_glob.o swap.o spi_bus.o
|
||||||
|
|
||||||
# Drivers.
|
# Drivers.
|
||||||
KERNOBJ += sd.o
|
KERNOBJ += rd_sd.o rdisk.o
|
||||||
|
|
||||||
# Configuration-dependent files.
|
# Configuration-dependent files.
|
||||||
KERNOBJ += vers.o devcfg.o
|
KERNOBJ += vers.o devcfg.o
|
||||||
@@ -119,7 +119,7 @@ sys:
|
|||||||
machine:
|
machine:
|
||||||
ln -s .. $@
|
ln -s .. $@
|
||||||
|
|
||||||
unix.elf: $(KERNOBJ) bare-metal.ld
|
unix.elf: $(KERNOBJ) ../cfg/bare.ld
|
||||||
$(CC) $(LDFLAGS) $(KERNOBJ) -o $@
|
$(CC) $(LDFLAGS) $(KERNOBJ) -o $@
|
||||||
chmod -x $@
|
chmod -x $@
|
||||||
$(OBJDUMP) -d -S $@ > unix.dis
|
$(OBJDUMP) -d -S $@ > unix.dis
|
||||||
|
|||||||
@@ -1,162 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
devcfg (r) : ORIGIN = 0x9fc02ff0, LENGTH = 16
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 512K
|
|
||||||
exception_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x1000
|
|
||||||
kseg0_boot_mem (rx) : ORIGIN = 0x9FC00000, LENGTH = 12K-16
|
|
||||||
kseg1_boot_mem (rx) : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
/* Read-only sections, merged into text segment: */
|
|
||||||
. = 0x0000;
|
|
||||||
.interp : { *(.interp) }
|
|
||||||
.hash : { *(.hash) }
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
.dynstr : { *(.dynstr) }
|
|
||||||
.gnu.version : { *(.gnu.version) }
|
|
||||||
.gnu.version_d : { *(.gnu.version_d) }
|
|
||||||
.gnu.version_r : { *(.gnu.version_r) }
|
|
||||||
.rel.init : { *(.rel.init) }
|
|
||||||
.rela.init : { *(.rela.init) }
|
|
||||||
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
|
||||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
|
||||||
.rel.fini : { *(.rel.fini) }
|
|
||||||
.rela.fini : { *(.rela.fini) }
|
|
||||||
.rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
|
|
||||||
.rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
|
|
||||||
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
|
||||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
|
||||||
.rel.ctors : { *(.rel.ctors) }
|
|
||||||
.rela.ctors : { *(.rela.ctors) }
|
|
||||||
.rel.dtors : { *(.rel.dtors) }
|
|
||||||
.rela.dtors : { *(.rela.dtors) }
|
|
||||||
.rel.got : { *(.rel.got) }
|
|
||||||
.rela.got : { *(.rela.got) }
|
|
||||||
.rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
|
|
||||||
.rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
|
|
||||||
.rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
|
|
||||||
.rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
|
|
||||||
.rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
|
|
||||||
.rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
|
|
||||||
.rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
|
|
||||||
.rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
|
|
||||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
|
|
||||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
|
|
||||||
.rel.plt : { *(.rel.plt) }
|
|
||||||
.rela.plt : { *(.rela.plt) }
|
|
||||||
.plt : { *(.plt) }
|
|
||||||
|
|
||||||
.boot :
|
|
||||||
{
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
} > kseg0_boot_mem
|
|
||||||
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > kseg0_program_mem
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We have only 32k RAM on MC-24, so no need for 0x8000 offset. */
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
/* Device configuration. */
|
|
||||||
.config :
|
|
||||||
{
|
|
||||||
*(.config3)
|
|
||||||
*(.config2)
|
|
||||||
*(.config1)
|
|
||||||
*(.config0)
|
|
||||||
} > devcfg
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
}
|
|
||||||
9
sys/pic32/sdxl/.gitignore
vendored
Normal file
9
sys/pic32/sdxl/.gitignore
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
.compileversion
|
||||||
|
.deps/
|
||||||
|
.oldversion
|
||||||
|
machine
|
||||||
|
sys
|
||||||
|
unix.bin
|
||||||
|
unix.map
|
||||||
|
usbboot.map
|
||||||
|
vers.c
|
||||||
@@ -6,19 +6,15 @@ S = ../../../tools/configsys/../../sys/kernel
|
|||||||
vpath %.c $(M):$(S)
|
vpath %.c $(M):$(S)
|
||||||
vpath %.S $(M):$(S)
|
vpath %.S $(M):$(S)
|
||||||
|
|
||||||
KERNOBJ += adc.o clock.o cons.o devsw.o exception.o exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o gpio.o init_main.o init_sysent.o kern_clock.o kern_descrip.o kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o kern_subr.o kern_synch.o kern_sysctl.o kern_time.o machdep.o mem.o rd_sd.o rdisk.o signal.o spi_bus.o startup.o subr_prf.o subr_rmap.o swap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o syscalls.o sysctl.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o usb_device.o usb_function_cdc.o usb_uart.o vers.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o
|
KERNOBJ += adc.o clock.o cons.o devcfg.o devsw.o exception.o exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o glcd.o gpio.o init_main.o init_sysent.o kern_clock.o kern_descrip.o kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o kern_subr.o kern_synch.o kern_sysctl.o kern_time.o machdep.o mem.o oc.o rd_sd.o rdisk.o signal.o spi_bus.o startup.o subr_prf.o subr_rmap.o swap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o syscalls.o sysctl.o tty.o tty_subr.o tty_tty.o ufs_alloc.o ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o usb_device.o usb_function_cdc.o usb_uart.o vers.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o
|
||||||
EXTRA_TARGETS = bootloader
|
EXTRA_TARGETS =
|
||||||
|
|
||||||
DEFS += -DADC_ENABLED=YES
|
DEFS += -DADC_ENABLED=YES
|
||||||
DEFS += -DBL_BUTTON_PIN=7
|
|
||||||
DEFS += -DBL_BUTTON_PORT=TRISE
|
|
||||||
DEFS += -DBL_LED_PIN=3
|
|
||||||
DEFS += -DBL_LED_PORT=TRISE
|
|
||||||
DEFS += -DBUS_DIV=1
|
DEFS += -DBUS_DIV=1
|
||||||
DEFS += -DBUS_KHZ='CPU_KHZ/BUS_DIV'
|
DEFS += -DBUS_KHZ=80000
|
||||||
DEFS += -DCONSOLE_DEVICE=ttyUSB0
|
DEFS += -DCONSOLE_DEVICE=ttyUSB0
|
||||||
DEFS += -DCPU_IDIV=2
|
DEFS += -DCPU_IDIV=2
|
||||||
DEFS += -DCPU_KHZ='((CRYSTAL*1000)/CPU_IDIV*CPU_MUL/CPU_ODIV)'
|
DEFS += -DCPU_KHZ=80000
|
||||||
DEFS += -DCPU_MUL=20
|
DEFS += -DCPU_MUL=20
|
||||||
DEFS += -DCPU_ODIV=1
|
DEFS += -DCPU_ODIV=1
|
||||||
DEFS += -DCRYSTAL=8
|
DEFS += -DCRYSTAL=8
|
||||||
@@ -49,32 +45,25 @@ DEFS += -DDC3_VBUSON=DEVCFG3_FVBUSONIO
|
|||||||
DEFS += -DEXEC_AOUT
|
DEFS += -DEXEC_AOUT
|
||||||
DEFS += -DEXEC_ELF
|
DEFS += -DEXEC_ELF
|
||||||
DEFS += -DEXEC_SCRIPT
|
DEFS += -DEXEC_SCRIPT
|
||||||
DEFS += -DFLASH_USER=0x1d005000
|
DEFS += -DGLCD_ENABLED=YES
|
||||||
DEFS += -DGPIO_ENABLED=YES
|
DEFS += -DGPIO_ENABLED=YES
|
||||||
DEFS += -DHID_FEATURE_REPORT_BYTES=2
|
|
||||||
DEFS += -DHID_INPUT_REPORT_BYTES=2
|
|
||||||
DEFS += -DHID_INT_IN_EP_SIZE=64
|
|
||||||
DEFS += -DHID_INT_OUT_EP_SIZE=64
|
|
||||||
DEFS += -DHID_OUTPUT_REPORT_BYTES=2
|
|
||||||
DEFS += -DHID_RPT01_SIZE=29
|
|
||||||
DEFS += -DKERNEL
|
DEFS += -DKERNEL
|
||||||
DEFS += -DLED_KERNEL_INVERT=YES
|
DEFS += -DLED_KERNEL_PIN=7
|
||||||
DEFS += -DLED_KERNEL_PIN=1
|
DEFS += -DLED_KERNEL_PORT=TRISE
|
||||||
DEFS += -DLED_KERNEL_PORT=TRISD
|
DEFS += -DOC_ENABLED=YES
|
||||||
DEFS += -DPIC32MX7
|
DEFS += -DPIC32MX7
|
||||||
DEFS += -DSD0_CS_PIN=13
|
DEFS += -DSD0_CS_PIN=9
|
||||||
DEFS += -DSD0_CS_PORT=TRISB
|
DEFS += -DSD0_CS_PORT=TRISG
|
||||||
DEFS += -DSD0_PORT=2
|
DEFS += -DSD0_PORT=2
|
||||||
DEFS += -DUARTUSB_ENABLED=YES
|
DEFS += -DUARTUSB_ENABLED=YES
|
||||||
DEFS += -DUCB_METER
|
DEFS += -DUCB_METER
|
||||||
DEFS += -DUSB_EP0_BUFF_SIZE=8
|
|
||||||
DEFS += -DUSB_MAX_EP_NUMBER=3
|
DEFS += -DUSB_MAX_EP_NUMBER=3
|
||||||
DEFS += -DUSB_NUM_STRING_DESCRIPTORS=3
|
DEFS += -DUSB_NUM_STRING_DESCRIPTORS=3
|
||||||
|
|
||||||
|
|
||||||
LDSCRIPT = ../../../tools/configsys/../../sys/pic32/cfg/bootloader-ubw32.ld
|
LDSCRIPT = ../../../tools/configsys/../../sys/pic32/cfg/bootloader-max32.ld
|
||||||
|
|
||||||
CONFIG = PINGUINO-MICRO
|
CONFIG = SDXL
|
||||||
CONFIGPATH = ../../../tools/configsys
|
CONFIGPATH = ../../../tools/configsys
|
||||||
|
|
||||||
include ../../../tools/configsys/../../sys/pic32/kernel-post.mk
|
include ../../../tools/configsys/../../sys/pic32/kernel-post.mk
|
||||||
16
sys/pic32/sdxl/SDXL
Normal file
16
sys/pic32/sdxl/SDXL
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Configuration file for Majenko SDXL board.
|
||||||
|
# Ardiuno-compatible bootloader.
|
||||||
|
# LED at pin E7 (label 23).
|
||||||
|
|
||||||
|
core pic32mx7
|
||||||
|
mapping fubarino
|
||||||
|
linker bootloader-max32
|
||||||
|
|
||||||
|
device kernel led=23 cpu_khz=80000 bus_khz=80000
|
||||||
|
device console device=ttyUSB0
|
||||||
|
device uartusb
|
||||||
|
device sd0 port=2 cs=SS
|
||||||
|
device adc
|
||||||
|
device glcd
|
||||||
|
device oc
|
||||||
|
device gpio
|
||||||
@@ -122,7 +122,7 @@ int spidev_ioctl (dev_t dev, u_int cmd, caddr_t addr, int flag)
|
|||||||
static unsigned volatile *const tris[8] = {
|
static unsigned volatile *const tris[8] = {
|
||||||
0, &TRISA,&TRISB,&TRISC,&TRISD,&TRISE,&TRISF,&TRISG,
|
0, &TRISA,&TRISB,&TRISC,&TRISD,&TRISE,&TRISF,&TRISG,
|
||||||
};
|
};
|
||||||
int mask, portnum;
|
int portnum;
|
||||||
|
|
||||||
//PRINTDBG ("spi%d: ioctl (cmd=%08x, addr=%08x)\n", channel+1, cmd, addr);
|
//PRINTDBG ("spi%d: ioctl (cmd=%08x, addr=%08x)\n", channel+1, cmd, addr);
|
||||||
if (channel >= NSPI)
|
if (channel >= NSPI)
|
||||||
@@ -151,11 +151,12 @@ int spidev_ioctl (dev_t dev, u_int cmd, caddr_t addr, int flag)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case SPICTL_SETSELPIN: /* set select pin */
|
case SPICTL_SETSELPIN: /* set select pin */
|
||||||
mask = 1 << ((unsigned int) addr & 15);
|
|
||||||
portnum = ((unsigned int) addr >> 8) & 7;
|
portnum = ((unsigned int) addr >> 8) & 7;
|
||||||
if (! portnum)
|
if (! portnum)
|
||||||
return 0;
|
return 0;
|
||||||
spi_set_cspin(spi_fd[channel], (unsigned int *)tris[((unsigned int) addr >> 8) & 7], (unsigned int) addr & 15);
|
spi_set_cspin(spi_fd[channel],
|
||||||
|
(unsigned int *)tris[portnum],
|
||||||
|
(unsigned int) addr & 15);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case SPICTL_IO8(0): /* transfer n*8 bits */
|
case SPICTL_IO8(0): /* transfer n*8 bits */
|
||||||
|
|||||||
@@ -1,114 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using RetroBSD bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d000000, LENGTH = 512K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00000, LENGTH = 0x1000
|
|
||||||
exception_mem : ORIGIN = 0x9FC00000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d005000, LENGTH = 492K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 0x62C0
|
|
||||||
u0area (rw!x): ORIGIN = 0x800062C0, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80006EC0, LENGTH = 3K
|
|
||||||
keram (rwx) : ORIGIN = 0x80007AC0, LENGTH = 0x540
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
_keram_start = ORIGIN(keram);
|
|
||||||
_keram_end = ORIGIN(keram) + LENGTH(keram);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* RAM functions go at the end of our stack and heap allocation.
|
|
||||||
* Alignment of 2K required by the boundary register (BMXDKPBA).
|
|
||||||
*/
|
|
||||||
.ramfunc : AT (LOADADDR (.data) + SIZEOF (.data))
|
|
||||||
{
|
|
||||||
_ramfunc_begin = . ;
|
|
||||||
*(.ramfunc .ramfunc.*)
|
|
||||||
. = ALIGN(4) ;
|
|
||||||
_ramfunc_end = . ;
|
|
||||||
} >keram
|
|
||||||
_ramfunc_image_begin = LOADADDR(.ramfunc) ;
|
|
||||||
_ramfunc_length = SIZEOF(.ramfunc) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d005000, LENGTH = 492K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d005000, LENGTH = 492K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linker script for PIC32 firmware using HID bootloader.
|
|
||||||
*/
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips",
|
|
||||||
"elf32-littlemips")
|
|
||||||
OUTPUT_ARCH(mips)
|
|
||||||
ENTRY(_reset_vector_)
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
flash (rx) : ORIGIN = 0x9d005000, LENGTH = 492K
|
|
||||||
ram (rw!x): ORIGIN = 0x80000000, LENGTH = 26K
|
|
||||||
u0area (rw!x): ORIGIN = 0x80006800, LENGTH = 3K
|
|
||||||
uarea (rw!x): ORIGIN = 0x80007400, LENGTH = 3K
|
|
||||||
|
|
||||||
/* Required by Microchip C32 linker */
|
|
||||||
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
|
|
||||||
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
|
|
||||||
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
|
|
||||||
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
|
|
||||||
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
|
|
||||||
}
|
|
||||||
|
|
||||||
/* higher address of the user mode stack */
|
|
||||||
u0 = ORIGIN(u0area);
|
|
||||||
u = ORIGIN(uarea);
|
|
||||||
u_end = ORIGIN(uarea) + LENGTH(uarea);
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.text ORIGIN(flash) :
|
|
||||||
{
|
|
||||||
/* Exception handlers. */
|
|
||||||
*(.exception)
|
|
||||||
. = 0x1000;
|
|
||||||
/* Execution starts here. */
|
|
||||||
*(.startup)
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.glue_7t) *(.glue_7)
|
|
||||||
__rodata_start = . ;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.* .rel.dyn)
|
|
||||||
*(.dinit)
|
|
||||||
/* Align here to ensure that the .text section ends on word boundary. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
_etext = .;
|
|
||||||
} > flash
|
|
||||||
|
|
||||||
/* Start data (internal SRAM). */
|
|
||||||
.data : AT (ADDR (.text) + SIZEOF (.text))
|
|
||||||
{
|
|
||||||
__data_start = . ;
|
|
||||||
_gp = .; /* We use only 32k RAM for kernel, so no need for 0x8000 offset. */
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
*(.eh_frame)
|
|
||||||
_edata = .;
|
|
||||||
} > ram
|
|
||||||
|
|
||||||
.bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
*(.dynbss)
|
|
||||||
*(.sbss .sbss.*)
|
|
||||||
*(.scommon)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN (32 / 8);
|
|
||||||
} > ram
|
|
||||||
__bss_end = . ;
|
|
||||||
_end = .;
|
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
}
|
|
||||||
@@ -103,7 +103,7 @@ typedef union __attribute__ ((packed))
|
|||||||
unsigned long Length3;
|
unsigned long Length3;
|
||||||
unsigned char Type4; // End of sections list indicator goes here, fill with 0xFF.
|
unsigned char Type4; // End of sections list indicator goes here, fill with 0xFF.
|
||||||
unsigned char ExtraPadBytes[33];
|
unsigned char ExtraPadBytes[33];
|
||||||
};
|
} query;
|
||||||
} packet_t;
|
} packet_t;
|
||||||
|
|
||||||
static packet_t send; // 64-byte send buffer (EP1 IN to the PC)
|
static packet_t send; // 64-byte send buffer (EP1 IN to the PC)
|
||||||
@@ -469,13 +469,13 @@ static int handle_packet()
|
|||||||
// Prepare a response packet, which lets the PC software know
|
// Prepare a response packet, which lets the PC software know
|
||||||
// about the memory ranges of this device.
|
// about the memory ranges of this device.
|
||||||
memzero (&send, PACKET_SIZE);
|
memzero (&send, PACKET_SIZE);
|
||||||
send.Command = QUERY_DEVICE;
|
send.query.Command = QUERY_DEVICE;
|
||||||
send.PacketDataFieldSize = REQUEST_SIZE;
|
send.query.PacketDataFieldSize = REQUEST_SIZE;
|
||||||
send.DeviceFamily = 3; /* PIC32 */
|
send.query.DeviceFamily = 3; /* PIC32 */
|
||||||
send.Type1 = 1; /* 'program' memory type */
|
send.query.Type1 = 1; /* 'program' memory type */
|
||||||
send.Address1 = FLASH_USER;
|
send.query.Address1 = FLASH_USER;
|
||||||
send.Length1 = FLASH_BASE + BMXPFMSZ - FLASH_USER;
|
send.query.Length1 = FLASH_BASE + BMXPFMSZ - FLASH_USER;
|
||||||
send.Type2 = 0xFF; /* end of list */
|
send.query.Type2 = 0xFF; /* end of list */
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case UNLOCK_CONFIG:
|
case UNLOCK_CONFIG:
|
||||||
@@ -509,8 +509,7 @@ static int handle_packet()
|
|||||||
|
|
||||||
// Data field is right justified.
|
// Data field is right justified.
|
||||||
// Need to put it in the buffer left justified.
|
// Need to put it in the buffer left justified.
|
||||||
buf [buf_index++] =
|
buf [buf_index++] = receive.Data [index];
|
||||||
receive.Data [(REQUEST_SIZE - receive.Size) / sizeof(unsigned) + i];
|
|
||||||
base_address += sizeof(unsigned);
|
base_address += sizeof(unsigned);
|
||||||
if (buf_index == REQUEST_SIZE / sizeof(unsigned)) {
|
if (buf_index == REQUEST_SIZE / sizeof(unsigned)) {
|
||||||
write_flash_block();
|
write_flash_block();
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ static void cn_rx (int c)
|
|||||||
|
|
||||||
if ((tp->t_state & TS_ISOPEN) == 0)
|
if ((tp->t_state & TS_ISOPEN) == 0)
|
||||||
return;
|
return;
|
||||||
ttinput (c, tp);
|
ttyinput (c, tp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user