- finish documentation for the following flash drivers:
   - avr
-  - ecosflash
   - pic32mx
   - ocl
   - str9xpec
 
 @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.
 
+++ /dev/null
-#####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
-
 
+++ /dev/null
-/*
-#####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:
 
+++ /dev/null
-/*
-#####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 <string.h>
-#define _FLASH_PRIVATE_
-#include <cyg/io/flash.h>
-
-
-
-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 ((addr<flash_info.start)||(addr>flash_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);
-}
 
+++ /dev/null
-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)
 
+++ /dev/null
-Some of these binaries are build & linked using eCos.
-
-For source for the flash drivers, see:
-
-http://ecos.sourceware.org/
-
 
        at91sam7.c \
        avrf.c \
        cfi.c \
-       ecos.c \
        em357.c \
        faux.c \
        lpc2000.c \
 
 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;
        &stm32f2x_flash,
        &stm32lx_flash,
        &tms470_flash,
-       &ecosflash_flash,
        &ocl_flash,
        &pic32mx_flash,
        &avr_flash,
 
+++ /dev/null
-/***************************************************************************
- *   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 <target/embeddedice.h>
-#include <target/algorithm.h>
-#include <target/image.h>
-
-#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 <base> <size> <chip_width> <bus_width> <target#> <driverPath>
- */
-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
-};
 
         * Directory layout:
         * bin\openocd.exe
         * lib\openocd
-        * event\at91eb40a_reset.cfg
-        * target\at91eb40a.cfg
         */
        {
                char strExePath[MAX_PATH];
 
        avr32_regs.h
 
 ocddatadir = $(pkglibdir)
-nobase_dist_ocddata_DATA = ecos/at91eb40a.elf
+nobase_dist_ocddata_DATA =
 
 MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
 
 
 #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.
 
                <td>Expected output</td>
                <td>Pass/Fail</td>
        </tr>
-       <tr>
-               <td><a name="FLA001"/>FLA001</td>
-               <td>Fill in!</td>
-               <td>Fill in!</td>
-               <td>Flash probe</td>
-               <td>Reset init is working</td>
-               <td>On the telnet interface:<br>
-                       <code>  > flash probe 0</code>
-               </td>
-               <td>The command should execute without error. The output should state the name of the flash and the starting address. An example of output:<br>
-                       <code>flash 'ecosflash' found at 0x01000000</code>
-               </td>
-               <td>PASS/FAIL</td>
-       </tr>
        <tr>
                <td><a name="FLA002"/>FLA002</td>
                <td>Fill in!</td>