root/trunk/tools/lpc21isp/lpcprog.h

Revision 566, 4.4 KB (checked in by goodea, 4 months ago)

Update lpc21isp

Line 
1/******************************************************************************
2
3Project:           Portable command line ISP for Philips LPC2000 family
4                   and Analog Devices ADUC70xx
5
6Filename:          lpcprog.h
7
8Compiler:          Microsoft VC 6/7, GCC Cygwin, GCC Linux, GCC ARM ELF
9
10Author:            Martin Maurer (Martin.Maurer@clibb.de)
11
12Copyright:         (c) Martin Maurer 2003-2008, All rights reserved
13Portions Copyright (c) by Aeolus Development 2004 http://www.aeolusdevelopment.com
14
15    This file is part of lpc21isp.
16
17    lpc21isp is free software: you can redistribute it and/or modify
18    it under the terms of the GNU Lesser General Public License as published by
19    the Free Software Foundation, either version 3 of the License, or
20    any later version.
21
22    lpc21isp is distributed in the hope that it will be useful,
23    but WITHOUT ANY WARRANTY; without even the implied warranty of
24    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25    GNU Lesser General Public License for more details.
26
27    You should have received a copy of the GNU Lesser General Public License
28    and GNU General Public License along with lpc21isp.
29    If not, see <http://www.gnu.org/licenses/>.
30*/
31
32/* LPC_RAMSTART, LPC_RAMBASE
33*
34* Used in PhilipsDownload() to decide whether to Flash code or just place in in RAM
35* (works for .hex files only)
36*
37* LPC_RAMSTART - the Physical start address of the SRAM
38* LPC_RAMBASE  - the base address where downloading starts.
39*                Note that any code in the .hex file that resides in 0x4000,0000 ~ 0x4000,0200
40*                will _not_ be written to the LPCs SRAM.
41*                This is due to the fact that 0x4000,0040 - 0x4000,0200 is used by the bootrom.
42*                Any interrupt vectors must be copied to 0x4000,0000 and remapped to 0x0000,0000
43*                by the startup code.
44*/
45#define LPC_RAMSTART    0x40000000L
46#define LPC_RAMBASE     0x40000200L
47
48/* Return values used by PhilipsDownload(): reserving all values from 0x1000 to 0x1FFF */
49
50#define NO_ANSWER_WDT       0x1000
51#define NO_ANSWER_QM        0x1001
52#define NO_ANSWER_SYNC      0x1002
53#define NO_ANSWER_OSC       0x1003
54#define NO_ANSWER_RBV       0x1004
55#define NO_ANSWER_RPID      0x1005
56#define ERROR_WRITE_DATA    0x1006
57#define ERROR_WRITE_CRC     0x1007
58#define ERROR_WRITE_CRC2    0x1008
59#define PROGRAM_TOO_LARGE   0x1009
60
61#define USER_ABORT_SYNC     0x100A   /* User aborted synchronisation process */
62
63#define UNLOCK_ERROR        0x1100   /* return value is 0x1100 + philips ISP returned value (0 to 255) */
64#define WRONG_ANSWER_PREP   0x1200   /* return value is 0x1200 + philips ISP returned value (0 to 255) */
65#define WRONG_ANSWER_ERAS   0x1300   /* return value is 0x1300 + philips ISP returned value (0 to 255) */
66#define WRONG_ANSWER_WRIT   0x1400   /* return value is 0x1400 + philips ISP returned value (0 to 255) */
67#define WRONG_ANSWER_PREP2  0x1500   /* return value is 0x1500 + philips ISP returned value (0 to 255) */
68#define WRONG_ANSWER_COPY   0x1600   /* return value is 0x1600 + philips ISP returned value (0 to 255) */
69#define FAILED_RUN          0x1700   /* return value is 0x1700 + philips ISP returned value (0 to 255) */
70
71#ifndef WIN32
72#define LPC_BSL_PIN        13
73#define LPC_RESET_PIN    47
74#define LPC_RESET(in)    NAsetGPIOpin(LPC_RESET_PIN, (in))
75#define LPC_BSL(in)        NAsetGPIOpin(LPC_BSL_PIN, (in))
76#endif
77
78
79/* LPC_FLASHMASK
80*
81* LPC_FLASHMASK - bitmask to define the maximum size of the Filesize to download.
82*                 LoadFile() will check any new segment address record (03) or extended linear
83*                 address record (04) to see if the addressed 64 kByte data block still falls
84*                 in the max. flash size.
85*                 LoadFile() will not load any files that are larger than this size.
86*/
87#define LPC_FLASHMASK  0xFFC00000 /* 22 bits = 4 MB */
88
89typedef struct
90{
91    unsigned long id;
92    unsigned Product;
93    unsigned FlashSize;     /* in kiB, for informational purposes only */
94    unsigned RAMSize;       /* in kiB, for informational purposes only */
95    unsigned FlashSectors;  /* total number of sectors */
96    unsigned MaxCopySize;   /* maximum size that can be copied to Flash in a single command */
97    const unsigned int *SectorTable; /* pointer to a sector table with constant the sector sizes */
98} LPC_DEVICE_TYPE;
99
100int PhilipsDownload(ISP_ENVIRONMENT *IspEnvironment);
Note: See TracBrowser for help on using the browser.