diff --git a/TODO b/TODO index aa2277c1a..8aac15759 100644 --- a/TODO +++ b/TODO @@ -214,7 +214,6 @@ https://lists.berlios.de/pipermail/openocd-development/2009-October/011506.html - finish documentation for the following flash drivers: - avr - - ecosflash - pic32mx - ocl - str9xpec diff --git a/doc/openocd.texi b/doc/openocd.texi index 323136f37..0f24f859f 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -4654,13 +4654,6 @@ The AVR 8-bit microcontrollers from Atmel integrate flash memory. @comment - defines mass_erase ... pointless given flash_erase_address @end deffn -@deffn {Flash Driver} ecosflash -@emph{No idea what this is...} -The @var{ecosflash} driver defines one mandatory parameter, -the name of a modules of target code which is downloaded -and executed. -@end deffn - @deffn {Flash Driver} lpc2000 Most members of the LPC1700 and LPC2000 microcontroller families from NXP include internal flash and use Cortex-M3 (LPC1700) or ARM7TDMI (LPC2000) cores. diff --git a/ecosflash/Makefile b/ecosflash/Makefile deleted file mode 100644 index 8a879ad5b..000000000 --- a/ecosflash/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -#####ECOSGPLCOPYRIGHTBEGIN#### -## ------------------------------------------- -## This file is part of eCos, the Embedded Configurable Operating System. -## Copyright (C) 2008 Øyvind Harboe -## -## eCos is free software; you can redistribute it and/or modify it under -## the terms of the GNU General Public License as published by the Free -## Software Foundation; either version 2 or (at your option) any later version. -## -## eCos is distributed in the hope that it will be useful, but WITHOUT ANY -## WARRANTY; without even the implied warranty of MERCHANTABILITY or -## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -## for more details. -## -## You should have received a copy of the GNU General Public License along -## with eCos; if not, write to the Free Software Foundation, Inc., -## 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. -## -## As a special exception, if other files instantiate templates or use macros -## or inline functions from this file, or you compile this file and link it -## with other works to produce a work based on this file, this file does not -## by itself cause the resulting work to be covered by the GNU General Public -## License. However the source code for this file must still be made available -## in accordance with section (3) of the GNU General Public License. -## -## This exception does not invalidate any other reasons why a work based on -## this file might be covered by the GNU General Public License. -## ------------------------------------------- -#####ECOSGPLCOPYRIGHTEND#### - -# Create OpenOCD eCos flash driver -# Syntax: make INSTALL_DIR=ecosinstalldir OUTPUT=outputname - -include $(INSTALL_DIR)/include/pkgconf/ecos.mak - -all: - $(ECOS_COMMAND_PREFIX)gcc $(ECOS_GLOBAL_CFLAGS) $(ECOS_GLOBAL_LDFLAGS) -g -o debug_$(OUTPUT).elf -nostdlib flash.S flash.c -Wl,--gc-sections -I$(INSTALL_DIR)/include -Wl,$(INSTALL_DIR)/lib/libtarget.a -Wl,-Map,flash.map - cp debug_$(OUTPUT).elf $(OUTPUT).elf - $(ECOS_COMMAND_PREFIX)strip $(OUTPUT).elf - echo Flash driver $(OUTPUT).elf - diff --git a/ecosflash/debug_at91eb40a.elf b/ecosflash/debug_at91eb40a.elf deleted file mode 100755 index 0bada05a8..000000000 Binary files a/ecosflash/debug_at91eb40a.elf and /dev/null differ diff --git a/ecosflash/flash.S b/ecosflash/flash.S deleted file mode 100644 index b6e6fccb8..000000000 --- a/ecosflash/flash.S +++ /dev/null @@ -1,90 +0,0 @@ -/* -#####ECOSGPLCOPYRIGHTBEGIN#### -## ------------------------------------------- -## This file is part of eCos, the Embedded Configurable Operating System. -## Copyright (C) 2008 Øyvind Harboe -## -## eCos is free software; you can redistribute it and/or modify it under -## the terms of the GNU General Public License as published by the Free -## Software Foundation; either version 2 or (at your option) any later version. -## -## eCos is distributed in the hope that it will be useful, but WITHOUT ANY -## WARRANTY; without even the implied warranty of MERCHANTABILITY or -## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -## for more details. -## -## You should have received a copy of the GNU General Public License along -## with eCos; if not, write to the Free Software Foundation, Inc., -## 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. -## -## As a special exception, if other files instantiate templates or use macros -## or inline functions from this file, or you compile this file and link it -## with other works to produce a work based on this file, this file does not -## by itself cause the resulting work to be covered by the GNU General Public -## License. However the source code for this file must still be made available -## in accordance with section (3) of the GNU General Public License. -## -## This exception does not invalidate any other reasons why a work based on -## this file might be covered by the GNU General Public License. -## ------------------------------------------- -#####ECOSGPLCOPYRIGHTEND#### -*/ - -/* - Jump table for flash driver - - Registers in ARM callling convention is to place args in registers - starting at r0. - - So for: - - void foo(int a, int b, int c). - - a=r0 - b=r1 - c=r2 - - -*/ - .global _stack_base - .global _stack_start - .global _workarea - .global _start - .global _start_bss_clear -_start: - // offset=0 - // int erase(void *address, int len) - ldr sp,=_stack_start - bl erase - nop // Stop CPU here using hw breakpoint - - // offset=0xc - // int program(void *buffer, void *address, int len) - ldr sp,=_stack_start - bl program - nop // Stop CPU here using hw breakpoint - - // offset=0x18 - ldr r0,=_workarea - nop // Stop CPU here using hw breakpoint - - // offset=0x20 - // int init() - returns error message if the flash chip can't be detected - ldr sp,=_stack_start - bl init - nop // Stop CPU here using hw breakpoint - - .section ".bss" - .balign 4 -_stack_base: - .rept 4096 - .byte 0 - .endr -_stack_start: - .balign 4 -_workarea: - .rept 8192 - .byte 0 - .endr - // NB!!! we clear bss while the stack is in use, so we start BSS clearing here !!! :-) -_start_bss_clear: diff --git a/ecosflash/flash.c b/ecosflash/flash.c deleted file mode 100644 index c8ac353f4..000000000 --- a/ecosflash/flash.c +++ /dev/null @@ -1,104 +0,0 @@ -/* -#####ECOSGPLCOPYRIGHTBEGIN#### -## ------------------------------------------- -## This file is part of eCos, the Embedded Configurable Operating System. -## Copyright (C) 2008 Øyvind Harboe -## -## eCos is free software; you can redistribute it and/or modify it under -## the terms of the GNU General Public License as published by the Free -## Software Foundation; either version 2 or (at your option) any later version. -## -## eCos is distributed in the hope that it will be useful, but WITHOUT ANY -## WARRANTY; without even the implied warranty of MERCHANTABILITY or -## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -## for more details. -## -## You should have received a copy of the GNU General Public License along -## with eCos; if not, write to the Free Software Foundation, Inc., -## 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. -## -## As a special exception, if other files instantiate templates or use macros -## or inline functions from this file, or you compile this file and link it -## with other works to produce a work based on this file, this file does not -## by itself cause the resulting work to be covered by the GNU General Public -## License. However the source code for this file must still be made available -## in accordance with section (3) of the GNU General Public License. -## -## This exception does not invalidate any other reasons why a work based on -## this file might be covered by the GNU General Public License. -## ------------------------------------------- -#####ECOSGPLCOPYRIGHTEND#### -*/ - -#include -#define _FLASH_PRIVATE_ -#include - - - -int myprintf(char *format, ...) -{ - return 0; -} - -extern char _start_bss_clear; -extern char __bss_end__; - -int init() -{ - // set up runtime environment - char *t; - for (t=&_start_bss_clear; t<&__bss_end__; t++) - { - *t=0; - } - return flash_init((_printf *)&myprintf); - -} - - -int checkFlash(void *addr, int len) -{ - // Return error for illegal addresses - if ((addrflash_info.end)) - return FLASH_ERR_INVALID; - if ((((cyg_uint8 *)addr)+len)>(cyg_uint8 *)flash_info.end) - return FLASH_ERR_INVALID; - return FLASH_ERR_OK; -} - - -int erase(void *address, int len) -{ - int retval; - void *failAddress; - - retval=checkFlash(address, len); - if (retval!=0) - return retval; - - retval=init(); - if (retval!=0) - return retval; - return flash_erase(address, len, &failAddress); -} - - - -extern char _end; - -// Data follows immediately after program, long word aligned. -int program(void *buffer, void *address, int len) -{ - int retval; - void *failAddress; - retval=checkFlash(address, len); - if (retval!=0) - return retval; - - retval=init(); - if (retval!=0) - return retval; - //int flash_program(void *_addr, void *_data, int len, void **err_addr) - return flash_program(address, buffer, len, &failAddress); -} diff --git a/ecosflash/flash.map b/ecosflash/flash.map deleted file mode 100644 index d47258b7e..000000000 --- a/ecosflash/flash.map +++ /dev/null @@ -1,390 +0,0 @@ -Archive member included because of file (symbol) - -/tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o (flash_init) -/tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) (flash_hwr_init) -/tmp/ecosboard/ecos/install/lib/libtarget.a(infra_memcpy.o) - /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) (memcpy) -/tmp/ecosboard/ecos/install/lib/libtarget.a(language_c_libc_string_memcmp.o) - /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) (memcmp) - -Memory Configuration - -Name Origin Length Attributes -*default* 0x00000000 0xffffffff - -Linker script and memory map - -LOAD /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/cccPBW5f.o -LOAD /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o -LOAD /tmp/ecosboard/ecos/install/lib/libtarget.a - 0x00008000 PROVIDE (__executable_start, 0x8000) - 0x00008000 . = 0x8000 - -.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.dyn - *(.rel.init) - *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) - *(.rel.fini) - *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) - *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) - *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) - *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) - *(.rel.ctors) - *(.rel.dtors) - *(.rel.got) - *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) - -.rela.dyn - *(.rela.init) - *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) - *(.rela.fini) - *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) - *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) - *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) - *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) - *(.rela.ctors) - *(.rela.dtors) - *(.rela.got) - *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) - -.rel.plt - *(.rel.plt) - -.rela.plt - *(.rela.plt) - -.init - *(.init) - -.plt - *(.plt) - -.text 0x00008000 0x6f8 - *(.text .stub .text.* .gnu.linkonce.t.*) - .text 0x00008000 0x34 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/cccPBW5f.o - 0x00008000 _start - .text.myprintf - 0x00008034 0x10 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o - 0x00008034 myprintf - .text.init 0x00008044 0x50 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o - 0x00008044 init - .text.erase 0x00008094 0xc0 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o - 0x00008094 erase - .text.program 0x00008154 0xc8 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o - 0x00008154 program - .text.flash_init - 0x0000821c 0x6c /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - 0x0000821c flash_init - .text.flash_dev_query - 0x00008288 0x20 /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - 0x00008288 flash_dev_query - .text.flash_erase - 0x000082a8 0x140 /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - 0x000082a8 flash_erase - .text.flash_program - 0x000083e8 0x154 /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - 0x000083e8 flash_program - .text.flash_hwr_init - 0x0000853c 0xa4 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - 0x0000853c flash_hwr_init - .text.flash_hwr_map_error - 0x000085e0 0x4 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - 0x000085e0 flash_hwr_map_error - .text.__memcmp - 0x000085e4 0x114 /tmp/ecosboard/ecos/install/lib/libtarget.a(language_c_libc_string_memcmp.o) - 0x000085e4 memcmp - 0x000085e4 __memcmp - *(.gnu.warning) - *(.glue_7t) - *(.glue_7) - -.2ram.flash_query - 0x000086f8 0x54 - .2ram.flash_query - 0x000086f8 0x54 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - 0x000086f8 flash_query - -.2ram.flash_erase_block - 0x0000874c 0x230 - .2ram.flash_erase_block - 0x0000874c 0x230 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - 0x0000874c flash_erase_block - -.2ram.flash_program_buf - 0x0000897c 0xe8 - .2ram.flash_program_buf - 0x0000897c 0xe8 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - 0x0000897c flash_program_buf - -.fini - *(.fini) - 0x00008a64 PROVIDE (__etext, .) - 0x00008a64 PROVIDE (_etext, .) - 0x00008a64 PROVIDE (etext, .) - -.rodata 0x00008a64 0x318 - *(.rodata .rodata.* .gnu.linkonce.r.*) - .rodata.str1.4 - 0x00008a64 0x1fb /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - 0x1fc (size before relaxing) - *fill* 0x00008c5f 0x1 00 - .rodata.supported_devices - 0x00008c60 0x11c /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - -.rodata1 - *(.rodata1) - -.eh_frame_hdr - *(.eh_frame_hdr) - 0x00008e7c . = (ALIGN (0x100) + (. & 0xff)) - 0x00008e7c . = ALIGN (0x4) - 0x00008e7c PROVIDE (__preinit_array_start, .) - -.preinit_array - *(.preinit_array) - 0x00008e7c PROVIDE (__preinit_array_end, .) - 0x00008e7c PROVIDE (__init_array_start, .) - -.init_array - *(.init_array) - 0x00008e7c PROVIDE (__init_array_end, .) - 0x00008e7c PROVIDE (__fini_array_start, .) - -.fini_array - *(.fini_array) - 0x00008e7c PROVIDE (__fini_array_end, .) - -.data 0x00008e7c 0x0 - 0x00008e7c __data_start = . - *(.data .data.* .gnu.linkonce.d.*) - -.data1 - *(.data1) - -.tdata - *(.tdata .tdata.* .gnu.linkonce.td.*) - -.tbss - *(.tbss .tbss.* .gnu.linkonce.tb.*) - *(.tcommon) - -.eh_frame - *(.eh_frame) - -.gcc_except_table - *(.gcc_except_table) - -.dynamic - *(.dynamic) - -.ctors - *crtbegin*.o(.ctors) - *(EXCLUDE_FILE(*crtend*.o) .ctors) - *(SORT(.ctors.*)) - *(.ctors) - -.dtors - *crtbegin*.o(.dtors) - *(EXCLUDE_FILE(*crtend*.o) .dtors) - *(SORT(.dtors.*)) - *(.dtors) - -.jcr - *(.jcr) - -.got - *(.got.plt) - *(.got) - 0x00008e7c _edata = . - 0x00008e7c PROVIDE (edata, .) - 0x00008e7c __bss_start = . - 0x00008e7c __bss_start__ = . - -.bss 0x00008e7c 0x3024 - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - .bss 0x00008e7c 0x3000 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/cccPBW5f.o - 0x00008e7c _stack_base - 0x0000be7c _start_bss_clear - 0x00009e7c _workarea - 0x00009e7c _stack_start - .bss.flash_info - 0x0000be7c 0x20 /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - 0x0000be7c flash_info - .bss.flash_dev_info - 0x0000be9c 0x4 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - *(COMMON) - 0x0000bea0 . = ALIGN (0x4) - 0x0000bea0 . = ALIGN (0x4) - 0x0000bea0 _end = . - 0x0000bea0 _bss_end__ = . - 0x0000bea0 __bss_end__ = . - 0x0000bea0 __end__ = . - 0x0000bea0 PROVIDE (end, .) - -.stab - *(.stab) - -.stabstr - *(.stabstr) - -.stab.excl - *(.stab.excl) - -.stab.exclstr - *(.stab.exclstr) - -.stab.index - *(.stab.index) - -.stab.indexstr - *(.stab.indexstr) - -.comment - *(.comment) - -.debug - *(.debug) - -.line - *(.line) - -.debug_srcinfo - *(.debug_srcinfo) - -.debug_sfnames - *(.debug_sfnames) - -.debug_aranges 0x00000000 0x170 - *(.debug_aranges) - .debug_aranges - 0x00000000 0x20 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/cccPBW5f.o - .debug_aranges - 0x00000020 0x48 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o - .debug_aranges - 0x00000068 0x68 /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - .debug_aranges - 0x000000d0 0x50 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - .debug_aranges - 0x00000120 0x28 /tmp/ecosboard/ecos/install/lib/libtarget.a(infra_memcpy.o) - .debug_aranges - 0x00000148 0x28 /tmp/ecosboard/ecos/install/lib/libtarget.a(language_c_libc_string_memcmp.o) - -.debug_pubnames - 0x00000000 0x1e5 - *(.debug_pubnames) - .debug_pubnames - 0x00000000 0x4d /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o - .debug_pubnames - 0x0000004d 0xca /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - .debug_pubnames - 0x00000117 0x91 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - .debug_pubnames - 0x000001a8 0x1e /tmp/ecosboard/ecos/install/lib/libtarget.a(infra_memcpy.o) - .debug_pubnames - 0x000001c6 0x1f /tmp/ecosboard/ecos/install/lib/libtarget.a(language_c_libc_string_memcmp.o) - -.debug_info 0x00000000 0x1122 - *(.debug_info .gnu.linkonce.wi.*) - .debug_info 0x00000000 0x6e /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/cccPBW5f.o - .debug_info 0x0000006e 0x322 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o - .debug_info 0x00000390 0x4f6 /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - .debug_info 0x00000886 0x5b2 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - .debug_info 0x00000e38 0x1c7 /tmp/ecosboard/ecos/install/lib/libtarget.a(infra_memcpy.o) - .debug_info 0x00000fff 0x123 /tmp/ecosboard/ecos/install/lib/libtarget.a(language_c_libc_string_memcmp.o) - -.debug_abbrev 0x00000000 0x67c - *(.debug_abbrev) - .debug_abbrev 0x00000000 0x14 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/cccPBW5f.o - .debug_abbrev 0x00000014 0x17d /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o - .debug_abbrev 0x00000191 0x15f /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - .debug_abbrev 0x000002f0 0x238 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - .debug_abbrev 0x00000528 0xb4 /tmp/ecosboard/ecos/install/lib/libtarget.a(infra_memcpy.o) - .debug_abbrev 0x000005dc 0xa0 /tmp/ecosboard/ecos/install/lib/libtarget.a(language_c_libc_string_memcmp.o) - -.debug_line 0x00000000 0x8de - *(.debug_line) - .debug_line 0x00000000 0x3e /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/cccPBW5f.o - .debug_line 0x0000003e 0xf6 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o - .debug_line 0x00000134 0x255 /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - .debug_line 0x00000389 0x287 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - .debug_line 0x00000610 0x16c /tmp/ecosboard/ecos/install/lib/libtarget.a(infra_memcpy.o) - .debug_line 0x0000077c 0x162 /tmp/ecosboard/ecos/install/lib/libtarget.a(language_c_libc_string_memcmp.o) - -.debug_frame 0x00000000 0x2c0 - *(.debug_frame) - .debug_frame 0x00000000 0xa4 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o - .debug_frame 0x000000a4 0x110 /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - .debug_frame 0x000001b4 0xac /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - .debug_frame 0x00000260 0x38 /tmp/ecosboard/ecos/install/lib/libtarget.a(infra_memcpy.o) - .debug_frame 0x00000298 0x28 /tmp/ecosboard/ecos/install/lib/libtarget.a(language_c_libc_string_memcmp.o) - -.debug_str 0x00000000 0x508 - *(.debug_str) - .debug_str 0x00000000 0x131 /ecos-c/DOCUME~1/oyvind/LOCALS~1/Temp/ccM8Ftqt.o - 0x191 (size before relaxing) - .debug_str 0x00000131 0x152 /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - 0x24e (size before relaxing) - .debug_str 0x00000283 0x194 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - 0x2c5 (size before relaxing) - .debug_str 0x00000417 0x7e /tmp/ecosboard/ecos/install/lib/libtarget.a(infra_memcpy.o) - 0x11e (size before relaxing) - .debug_str 0x00000495 0x73 /tmp/ecosboard/ecos/install/lib/libtarget.a(language_c_libc_string_memcmp.o) - 0x119 (size before relaxing) - -.debug_loc - *(.debug_loc) - -.debug_macinfo - *(.debug_macinfo) - -.debug_weaknames - *(.debug_weaknames) - -.debug_funcnames - *(.debug_funcnames) - -.debug_typenames - *(.debug_typenames) - -.debug_varnames - *(.debug_varnames) - -.stack 0x00080000 0x0 - 0x00080000 _stack = . - *(.stack) - -.note.gnu.arm.ident - *(.note.gnu.arm.ident) - -/DISCARD/ - *(.note.GNU-stack) -OUTPUT(debug_eb40a.elf elf32-littlearm) - -.debug_ranges 0x00000000 0xb8 - .debug_ranges 0x00000000 0x18 /tmp/ecosboard/ecos/install/lib/libtarget.a(io_flash_flash.o) - .debug_ranges 0x00000018 0x48 /tmp/ecosboard/ecos/install/lib/libtarget.a(devs_flash_arm_eb40a_eb40a_flash.o) - .debug_ranges 0x00000060 0x30 /tmp/ecosboard/ecos/install/lib/libtarget.a(infra_memcpy.o) - .debug_ranges 0x00000090 0x28 /tmp/ecosboard/ecos/install/lib/libtarget.a(language_c_libc_string_memcmp.o) diff --git a/ecosflash/notes.txt b/ecosflash/notes.txt deleted file mode 100644 index bf456bbce..000000000 --- a/ecosflash/notes.txt +++ /dev/null @@ -1,6 +0,0 @@ -Some of these binaries are build & linked using eCos. - -For source for the flash drivers, see: - -http://ecos.sourceware.org/ - diff --git a/src/flash/nor/Makefile.am b/src/flash/nor/Makefile.am index d5832ca27..0b219a9b9 100644 --- a/src/flash/nor/Makefile.am +++ b/src/flash/nor/Makefile.am @@ -13,7 +13,6 @@ NOR_DRIVERS = \ at91sam7.c \ avrf.c \ cfi.c \ - ecos.c \ em357.c \ faux.c \ lpc2000.c \ diff --git a/src/flash/nor/drivers.c b/src/flash/nor/drivers.c index 06de0c664..746b55b8f 100644 --- a/src/flash/nor/drivers.c +++ b/src/flash/nor/drivers.c @@ -37,7 +37,6 @@ extern struct flash_driver stm32f1x_flash; extern struct flash_driver stm32f2x_flash; extern struct flash_driver stm32lx_flash; extern struct flash_driver tms470_flash; -extern struct flash_driver ecosflash_flash; extern struct flash_driver ocl_flash; extern struct flash_driver pic32mx_flash; extern struct flash_driver avr_flash; @@ -69,7 +68,6 @@ static struct flash_driver *flash_drivers[] = { &stm32f2x_flash, &stm32lx_flash, &tms470_flash, - &ecosflash_flash, &ocl_flash, &pic32mx_flash, &avr_flash, diff --git a/src/flash/nor/ecos.c b/src/flash/nor/ecos.c deleted file mode 100644 index c7458596a..000000000 --- a/src/flash/nor/ecos.c +++ /dev/null @@ -1,425 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2007,2008 Øyvind Harboe * - * oyvind.harboe@zylin.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "imp.h" -#include -#include -#include - -#if 0 -static uint32_t ecosflash_get_flash_status(struct flash_bank *bank); -static void ecosflash_set_flash_mode(struct flash_bank *bank, int mode); -static uint32_t ecosflash_wait_status_busy(struct flash_bank *bank, uint32_t waitbits, int timeout); -static int ecosflash_handle_gpnvm_command(struct command_context *cmd_ctx, - char *cmd, char **args, int argc); -#endif - -struct ecosflash_flash_bank { - struct target *target; - struct working_area *write_algorithm; - struct working_area *erase_check_algorithm; - char *driverPath; - uint32_t start_address; -}; - -static const int sectorSize = 0x10000; - -char *flash_errmsg(int err); - -#ifndef __ECOS -#define FLASH_ERR_OK 0x00 /* No error - operation complete */ -#define FLASH_ERR_INVALID 0x01 /* Invalid FLASH address */ -#define FLASH_ERR_ERASE 0x02 /* Error trying to erase */ -#define FLASH_ERR_LOCK 0x03 /* Error trying to lock/unlock */ -#define FLASH_ERR_PROGRAM 0x04 /* Error trying to program */ -#define FLASH_ERR_PROTOCOL 0x05 /* Generic error */ -#define FLASH_ERR_PROTECT 0x06 /* Device/region is write-protected */ -#define FLASH_ERR_NOT_INIT 0x07 /* FLASH info not yet initialized */ -#define FLASH_ERR_HWR 0x08 /* Hardware (configuration?) problem */ -#define FLASH_ERR_ERASE_SUSPEND 0x09 /* Device is in erase suspend mode */ -#define FLASH_ERR_PROGRAM_SUSPEND 0x0a /* Device is in in program suspend mode */ -#define FLASH_ERR_DRV_VERIFY 0x0b /* Driver failed to verify data */ -#define FLASH_ERR_DRV_TIMEOUT 0x0c /* Driver timed out waiting for device */ -#define FLASH_ERR_DRV_WRONG_PART 0x0d /* Driver does not support device */ -#define FLASH_ERR_LOW_VOLTAGE 0x0e /* Not enough juice to complete job */ - -char *flash_errmsg(int err) -{ - switch (err) { - case FLASH_ERR_OK: - return "No error - operation complete"; - case FLASH_ERR_ERASE_SUSPEND: - return "Device is in erase suspend state"; - case FLASH_ERR_PROGRAM_SUSPEND: - return "Device is in program suspend state"; - case FLASH_ERR_INVALID: - return "Invalid FLASH address"; - case FLASH_ERR_ERASE: - return "Error trying to erase"; - case FLASH_ERR_LOCK: - return "Error trying to lock/unlock"; - case FLASH_ERR_PROGRAM: - return "Error trying to program"; - case FLASH_ERR_PROTOCOL: - return "Generic error"; - case FLASH_ERR_PROTECT: - return "Device/region is write-protected"; - case FLASH_ERR_NOT_INIT: - return "FLASH sub-system not initialized"; - case FLASH_ERR_DRV_VERIFY: - return "Data verify failed after operation"; - case FLASH_ERR_DRV_TIMEOUT: - return "Driver timed out waiting for device"; - case FLASH_ERR_DRV_WRONG_PART: - return "Driver does not support device"; - case FLASH_ERR_LOW_VOLTAGE: - return "Device reports low voltage"; - default: - return "Unknown error"; - } -} -#endif - -/* flash bank ecosflash - */ -FLASH_BANK_COMMAND_HANDLER(ecosflash_flash_bank_command) -{ - struct ecosflash_flash_bank *info; - - if (CMD_ARGC < 7) - return ERROR_COMMAND_SYNTAX_ERROR; - - info = malloc(sizeof(struct ecosflash_flash_bank)); - if (info == NULL) { - LOG_ERROR("no memory for flash bank info"); - exit(-1); - } - bank->driver_priv = info; - info->driverPath = strdup(CMD_ARGV[6]); - - /* eCos flash sector sizes are not exposed to OpenOCD, use 0x10000 as - * a way to improve impedance match between OpenOCD and eCos flash - * driver. - */ - int i = 0; - uint32_t offset = 0; - bank->num_sectors = bank->size/sectorSize; - bank->sectors = malloc(sizeof(struct flash_sector) * bank->num_sectors); - for (i = 0; i < bank->num_sectors; i++) { - bank->sectors[i].offset = offset; - bank->sectors[i].size = sectorSize; - offset += bank->sectors[i].size; - bank->sectors[i].is_erased = -1; - bank->sectors[i].is_protected = 0; - } - - info->target = get_target(CMD_ARGV[5]); - if (info->target == NULL) { - LOG_ERROR("target '%s' not defined", CMD_ARGV[5]); - return ERROR_FAIL; - } - return ERROR_OK; -} - -static int loadDriver(struct ecosflash_flash_bank *info) -{ - size_t buf_cnt; - size_t image_size; - struct image image; - - image.base_address_set = 0; - image.start_address_set = 0; - struct target *target = info->target; - int retval; - - retval = image_open(&image, info->driverPath, NULL); - if (retval != ERROR_OK) - return retval; - - info->start_address = image.start_address; - - image_size = 0x0; - int i; - for (i = 0; i < image.num_sections; i++) { - void *buffer = malloc(image.sections[i].size); - retval = image_read_section(&image, i, 0x0, image.sections[i].size, buffer, &buf_cnt); - if (retval != ERROR_OK) { - free(buffer); - image_close(&image); - return retval; - } - target_write_buffer(target, image.sections[i].base_address, buf_cnt, buffer); - image_size += buf_cnt; - LOG_DEBUG("%zu bytes written at address 0x%8.8" PRIx32 "", - buf_cnt, image.sections[i].base_address); - - free(buffer); - } - - image_close(&image); - - return ERROR_OK; -} - -static int const OFFSET_ERASE; -static int const OFFSET_ERASE_SIZE = 0x8; -static int const OFFSET_FLASH = 0xc; -static int const OFFSET_FLASH_SIZE = 0x8; -static int const OFFSET_GET_WORKAREA = 0x18; -static int const OFFSET_GET_WORKAREA_SIZE = 0x4; - -static int runCode(struct ecosflash_flash_bank *info, - uint32_t codeStart, uint32_t codeStop, uint32_t r0, uint32_t r1, uint32_t r2, - uint32_t *result, - /* timeout in ms */ - int timeout) -{ - struct target *target = info->target; - - struct reg_param reg_params[3]; - struct arm_algorithm armv4_5_info; - armv4_5_info.common_magic = ARM_COMMON_MAGIC; - armv4_5_info.core_mode = ARM_MODE_SVC; - armv4_5_info.core_state = ARM_STATE_ARM; - - init_reg_param(®_params[0], "r0", 32, PARAM_IN_OUT); - init_reg_param(®_params[1], "r1", 32, PARAM_OUT); - init_reg_param(®_params[2], "r2", 32, PARAM_OUT); - - buf_set_u32(reg_params[0].value, 0, 32, r0); - buf_set_u32(reg_params[1].value, 0, 32, r1); - buf_set_u32(reg_params[2].value, 0, 32, r2); - - int retval = target_run_algorithm(target, 0, NULL, 3, reg_params, - codeStart, codeStop, timeout, &armv4_5_info); - if (retval != ERROR_OK) { - LOG_ERROR("error executing eCos flash algorithm"); - return retval; - } - - *result = buf_get_u32(reg_params[0].value, 0, 32); - - destroy_reg_param(®_params[0]); - destroy_reg_param(®_params[1]); - destroy_reg_param(®_params[2]); - - return ERROR_OK; -} - -static int eCosBoard_erase(struct ecosflash_flash_bank *info, uint32_t address, uint32_t len) -{ - int retval; - int timeout = (len / 20480 + 1) * 1000; /*asume 20 KB/s*/ - - retval = loadDriver(info); - if (retval != ERROR_OK) - return retval; - - uint32_t flashErr; - retval = runCode(info, - info->start_address + OFFSET_ERASE, - info->start_address + OFFSET_ERASE + OFFSET_ERASE_SIZE, - address, - len, - 0, - &flashErr, - timeout - ); - if (retval != ERROR_OK) - return retval; - - if (flashErr != 0x0) { - LOG_ERROR("Flash erase failed with %d (%s)", (int)flashErr, flash_errmsg(flashErr)); - return ERROR_FAIL; - } - - return ERROR_OK; -} - -static int eCosBoard_flash(struct ecosflash_flash_bank *info, - void *data, - uint32_t address, - uint32_t len) -{ - struct target *target = info->target; - const int chunk = 8192; - int retval = ERROR_OK; - int timeout = (chunk / 20480 + 1) * 1000; /*asume 20 KB/s + 1 second*/ - - retval = loadDriver(info); - if (retval != ERROR_OK) - return retval; - - uint32_t buffer; - retval = runCode(info, - info->start_address + OFFSET_GET_WORKAREA, - info->start_address + OFFSET_GET_WORKAREA + OFFSET_GET_WORKAREA_SIZE, - 0, - 0, - 0, - &buffer, - 1000); - if (retval != ERROR_OK) - return retval; - - - uint32_t i; - for (i = 0; i < len; i += chunk) { - int t = len-i; - if (t > chunk) - t = chunk; - - retval = target_write_buffer(target, buffer, t, ((uint8_t *)data) + i); - if (retval != ERROR_OK) - return retval; - - uint32_t flashErr; - retval = runCode(info, - info->start_address + OFFSET_FLASH, - info->start_address + OFFSET_FLASH + OFFSET_FLASH_SIZE, - buffer, - address + i, - t, - &flashErr, - timeout); - if (retval != ERROR_OK) - return retval; - - if (flashErr != 0x0) { - LOG_ERROR("Flash prog failed with %d (%s)", (int)flashErr, - flash_errmsg(flashErr)); - return ERROR_FAIL; - } - } - return ERROR_OK; -} - -static int ecosflash_probe(struct flash_bank *bank) -{ - return ERROR_OK; -} - -#if 0 -static void command(struct flash_bank *bank, uint8_t cmd, uint8_t *cmd_buf) -{ - struct ecosflash_flash_bank *info = bank->driver_priv; - int i; - - if (info->target->endianness == TARGET_LITTLE_ENDIAN) { - for (i = bank->bus_width; i > 0; i--) - *cmd_buf++ = (i & (bank->chip_width - 1)) ? 0x0 : cmd; - } else { - for (i = 1; i <= bank->bus_width; i++) - *cmd_buf++ = (i & (bank->chip_width - 1)) ? 0x0 : cmd; - } -} -#endif - -#if 0 -static uint32_t ecosflash_address(struct flash_bank *bank, uint32_t address) -{ - uint32_t retval = 0; - switch (bank->bus_width) { - case 4: - retval = address & 0xfffffffc; - case 2: - retval = address & 0xfffffffe; - case 1: - retval = address; - } - - return retval + bank->base; -} -#endif - -static int ecosflash_erase(struct flash_bank *bank, int first, int last) -{ - struct flash_bank *c = bank; - struct ecosflash_flash_bank *info = bank->driver_priv; - return eCosBoard_erase(info, c->base + first*sectorSize, sectorSize*(last-first + 1)); -} - -static int ecosflash_protect(struct flash_bank *bank, int set, int first, int last) -{ - return ERROR_OK; -} - -static int ecosflash_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, - uint32_t count) -{ - struct ecosflash_flash_bank *info = bank->driver_priv; - struct flash_bank *c = bank; - return eCosBoard_flash(info, buffer, c->base + offset, count); -} - -static int ecosflash_protect_check(struct flash_bank *bank) -{ - return ERROR_OK; -} - -static int ecosflash_info(struct flash_bank *bank, char *buf, int buf_size) -{ - struct ecosflash_flash_bank *info = bank->driver_priv; - snprintf(buf, buf_size, "eCos flash driver: %s", info->driverPath); - return ERROR_OK; -} - -#if 0 -static uint32_t ecosflash_get_flash_status(struct flash_bank *bank) -{ - return ERROR_OK; -} - -static void ecosflash_set_flash_mode(struct flash_bank *bank, int mode) -{ - -} - -static uint32_t ecosflash_wait_status_busy(struct flash_bank *bank, uint32_t waitbits, int timeout) -{ - return ERROR_OK; -} - -static int ecosflash_handle_gpnvm_command(struct command_context *cmd_ctx, - char *cmd, - char **args, - int argc) -{ - return ERROR_OK; -} -#endif - -struct flash_driver ecosflash_flash = { - .name = "ecosflash", - .flash_bank_command = ecosflash_flash_bank_command, - .erase = ecosflash_erase, - .protect = ecosflash_protect, - .write = ecosflash_write, - .read = default_flash_read, - .probe = ecosflash_probe, - .auto_probe = ecosflash_probe, - .erase_check = default_flash_blank_check, - .protect_check = ecosflash_protect_check, - .info = ecosflash_info -}; diff --git a/src/helper/options.c b/src/helper/options.c index e31066d79..98cd634bc 100644 --- a/src/helper/options.c +++ b/src/helper/options.c @@ -60,8 +60,6 @@ static void add_default_dirs(void) * Directory layout: * bin\openocd.exe * lib\openocd - * event\at91eb40a_reset.cfg - * target\at91eb40a.cfg */ { char strExePath[MAX_PATH]; diff --git a/src/target/Makefile.am b/src/target/Makefile.am index b98aacc08..19100c721 100644 --- a/src/target/Makefile.am +++ b/src/target/Makefile.am @@ -165,6 +165,6 @@ noinst_HEADERS = \ avr32_regs.h ocddatadir = $(pkglibdir) -nobase_dist_ocddata_DATA = ecos/at91eb40a.elf +nobase_dist_ocddata_DATA = MAINTAINERCLEANFILES = $(srcdir)/Makefile.in diff --git a/src/target/ecos/at91eb40a.elf b/src/target/ecos/at91eb40a.elf deleted file mode 100644 index 451657a5a..000000000 Binary files a/src/target/ecos/at91eb40a.elf and /dev/null differ diff --git a/tcl/board/at91eb40a.cfg b/tcl/board/at91eb40a.cfg index 8b0587316..d8a82a59d 100644 --- a/tcl/board/at91eb40a.cfg +++ b/tcl/board/at91eb40a.cfg @@ -45,7 +45,7 @@ arm7_9 dcc_downloads enable #flash driver set _FLASHNAME $_CHIPNAME.flash -flash bank $_FLASHNAME ecosflash 0x01000000 0x200000 2 2 $_TARGETNAME ecos/at91eb40a.elf +flash bank $_FLASHNAME cfi 0x01000000 0x200000 2 2 $_TARGETNAME # required for usable performance. Used for lots of # other things than flash programming. diff --git a/testing/testcases.html b/testing/testcases.html index a3d65b918..a151e9f68 100644 --- a/testing/testcases.html +++ b/testing/testcases.html @@ -484,20 +484,6 @@ Note: these tests are not designed to test/debug the target, but to test functio Expected output Pass/Fail - - FLA001 - Fill in! - Fill in! - Flash probe - Reset init is working - On the telnet interface:
- > flash probe 0 - - The command should execute without error. The output should state the name of the flash and the starting address. An example of output:
- flash 'ecosflash' found at 0x01000000 - - PASS/FAIL -
FLA002 Fill in!