From ed12a6521f2ad26ab7140d346bc10250cbf869e1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Harboe?= Date: Mon, 5 Mar 2012 21:23:20 +0100 Subject: [PATCH] flash: retire unused eCos flash driver MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit even the AT91EB40a's flash is covered by CFI and nobody ever submitted any other drivers based on eCos code. It's just possible that this idea was missing documentation and "marketing", but it's in git if somebody wants to resurrect it. Change-Id: I66449aa6e0997301f9d67f28098789bfc891d6e9 Signed-off-by: Øyvind Harboe Reviewed-on: http://openocd.zylin.com/502 Tested-by: jenkins Reviewed-by: Øyvind Harboe --- TODO | 1 - doc/openocd.texi | 7 - ecosflash/Makefile | 41 ---- ecosflash/debug_at91eb40a.elf | Bin 49447 -> 0 bytes ecosflash/flash.S | 90 ------- ecosflash/flash.c | 104 --------- ecosflash/flash.map | 390 ------------------------------- ecosflash/notes.txt | 6 - src/flash/nor/Makefile.am | 1 - src/flash/nor/drivers.c | 2 - src/flash/nor/ecos.c | 425 ---------------------------------- src/helper/options.c | 2 - src/target/Makefile.am | 2 +- src/target/ecos/at91eb40a.elf | Bin 36832 -> 0 bytes tcl/board/at91eb40a.cfg | 2 +- testing/testcases.html | 14 -- 16 files changed, 2 insertions(+), 1085 deletions(-) delete mode 100644 ecosflash/Makefile delete mode 100755 ecosflash/debug_at91eb40a.elf delete mode 100644 ecosflash/flash.S delete mode 100644 ecosflash/flash.c delete mode 100644 ecosflash/flash.map delete mode 100644 ecosflash/notes.txt delete mode 100644 src/flash/nor/ecos.c delete mode 100644 src/target/ecos/at91eb40a.elf diff --git a/TODO b/TODO index aa2277c1a0..8aac157591 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 323136f373..0f24f859f6 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 8a879ad5bc..0000000000 --- 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 0bada05a877466fe8ece89e4f2937458491ccb1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49447 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 KrXIw!j{gOqNeFBJ diff --git a/ecosflash/flash.S b/ecosflash/flash.S deleted file mode 100644 index b6e6fccb89..0000000000 --- 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 c8ac353f49..0000000000 --- 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 d47258b7ed..0000000000 --- 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 bf456bbce9..0000000000 --- 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 d5832ca275..0b219a9b9a 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 06de0c6646..746b55b8f1 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 c7458596ab..0000000000 --- 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 e31066d799..98cd634bc2 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 b98aacc08a..19100c721c 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 451657a5a506ab1f60981b8b3627288c8950bc8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36832 zcmeH~U2Ggz701u)ZWFWKxC3#)N-S{^DUDFy*cGf3DZ>w!_{o*v7hMy)Dq|zDbn0MzpmW*>BothYgcjgLbnuc(+~;_jEu{2Xqqk z`7xp-j}_)%_im@v1NqI6-yFo1qaSbB;dO=i)MAf!|2aC=*yvEL!CMVGo!Ha4#tx6S zH0&tYX@@=&b~EXN~nT67m3wW%PbrUKr_?3}4pZYkUY+hARB)&-e?7ozp$cW`%K zVqa!ge2G;dQ*!+ErSdXM*&aIh;eYUj)Ar7;h~_ z@=37Zee0P?$4 zjVg44-QT_kcGg8O>(e1O#pB+P+d4Y!^4Xf)AiH!gWHsSFU^RKM{)7H@u(_U|3&^<` zq}&T&_+_0;JKx9IUu#pp(JiI}{f=(KzGQ9C43~>#LaZ@M~;sPqMv;eMIN<@{ci(H)HvTv zcil1IZ!8VgE_%)ftBSRaehT&swa4RnMAj|b=}ojgZK%(AhCA&UwR7G!_-#OsaLV*Wwc(sf%T>Lcm~;in?lau-f`|E)qaKb8)ySMTt^OZokhMu zw;k$EU|)jz{RHeL%n5I)UO&sevF$c$>RCjsejBwLde}#*dIn_IzmJb`I^wdgsg-^x ze7C@3e!t@%xQBcI*ZJC%*AJWXY0PCDf5vqDH`1r{wah8~hIvXas2gZCeZ{88dU7gYvY%K5Vx}(00Jg_bWuel4_D1o(d;)ZfIrp#ARbMSp(W>w6a2H&AhWE}ko zu$do$4@X|`4(xXPjgMf=evsq$gHO-4N$+ZULZ`v&b(+vlsK@bnZh@|Ij@~s?ua}3O z1-hxLmg)Ti_r&#TA$?O5c)~WzCAm(wrs0$O6|d=AxDFo;6+>9``Z3)1&G4T4{T?tS zbt!0{IgfjL2Jr`jlDLdEaQOd^&k+2Us1HpC8c&U=jQfki^S5+tnI z+c7nSJnZ$~<9f+;68ruX+Ih;~!LsQ~!94Ec09bTXF9h?rkA5(j$G7L2HGy+H?eqA6 za{MY7TvZeL8W`|9uUnQA=eY%|W^fJ}s9z@Lu31&%JurQ%XVP0=8gZ*?3NaHgLog>f z7puqvFoVCiqjaB#7{<~7zA==nZ*%-Q*t1*=XM^rdvD$zaL)@YEL+%+rQJZb&Z@>+_ za}8hq2J)jed)t_C{GTH)knOlegLrnw)5D-vGRl3gytAw1`g(4$N70~!Mep9G{+K;d#+D7fb}rU@ zPeIQ;oR{lRcXzkiTh3PUYPeh+RS%cC9xgqqFpn~YfDG3&<>JwDc65z|%GwZRxr30| zlRsV<%Bym|R4m&SHBvmGju%Jl?9n{Y7mF%iE*HzHOBGA`a@H;s$J9`9v^0{pu}q&I zJDwdWN$YiHGQxIBDP4QC4@ z`JBoQ+xhY;K`<{DAffESC{~N(wmOl8Z(ubH*17OPnlia!z7o1$887h-HJ7Qz2Suc- zuy^Z(5pr+!Q5gP*R>!j{ETjJ`0^OBk6}xO_2dUf6KW|g_r%(dAhexuNV~3v`&zDdB z%S;&UhX=znTr1g#@WX@S!_-|a<`CJ`9sM0do_8ZJkhuTF(+XLRQT!evszz-feBlZF z-xqcCLG(>I{(psAe`AfirX1?_iX8uT=Vsv}(tMh7pIIZvzd5;~u&z8!xxR)RtKk0w zxOK!=#8&JcYRIvV?n_Zym5O}g_bgfq8mnl^ZL#puc$#*H@y@!q@eY<<`$Y56`Wkma LxzRO(O}T#p=vFk| diff --git a/tcl/board/at91eb40a.cfg b/tcl/board/at91eb40a.cfg index 8b05873168..d8a82a59de 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 a3d65b918d..a151e9f68d 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! -- 2.30.2