Add lm32 cpu and milkymist port
[mw/micromonitor-lm32.git] / umon_ports / milkymist / config.h
1 #define CPU_BE
2 #define PLATFORM_NAME  "Milkymist One"
3 #define CPU_NAME       "LatticeMico32"
4
5 #define FREQUENCY_HZ (100*1000000)
6
7 /* LOOPS_PER_SECOND:
8  * Approximately the size of a loop that will cause a 1-second delay.
9  * This value can be adjusted by using the "sleep -c" command.
10  */
11 #define LOOPS_PER_SECOND        (FREQUENCY_HZ / 10)
12 #define TIMER_TICKS_PER_MSEC (FREQUENCY_HZ / 1000)
13
14 /* PRE_TFSAUTOBOOT_HOOK():
15  * This is a port-specific function that will be called just prior to
16  * uMon running any/each autobootable file (not including monrc).
17 #define PRE_TFSAUTOBOOT_HOOK()  func()
18  */
19
20 /* PRE_COMMANDLOOP_HOOK():
21  * This is a port-specific function that will be called just before
22  * MicroMonitor turns over control to the endless command processing
23  * loop in start() (start.c).
24 #define PRE_COMMANDLOOP_HOOK()  func()
25  */
26
27 /* If a watchdog macro is needed, this is how you do it
28  * (using target specific code in the macro of course)...
29  * The remoteWatchDog() call is only needed if your appliation
30  * will override the monitor's watchdog macro.  If that isn't
31  * needed, then that logic can be omitted from the macro.
32
33 #define WATCHDOG_MACRO                                                                          \
34         {                                                                                                               \
35                 extern void (*remoteWatchDog)(void);                            \
36                 if (remoteWatchDog) {                                                           \
37                         remoteWatchdog()                                                                \
38                 }                                                                                                       \
39                 else {                                                                                          \
40                         *(unsigned long *)0xff000000 |= 0x00100000;             \
41                         *(unsigned long *)0xff000000 &= ~0x00100000;    \
42                 }
43         }
44  *
45  */
46
47 /* If the ENET_LINK_IS_UP macro is defined as some function, then
48  * that function will be called every half second for some number of
49  * ticks.  The default tick count is set by the definition of
50  * LINKUP_TICK_MAX also defined in that file.  This can be overridden
51  * here if necessary.  Refer to the function EthernetWaitforLinkup() in
52  * ethernet.c (umon_main/target/common/ethernet.c) for complete details.
53  *
54  * The function defined by ENET_LINK_IS_UP (shown below as phy_linkup())
55  * is assumed to return 1 if the link is up; else 0. 
56  *
57 #define ENET_LINK_IS_UP phy_linkup
58 #define LINKUP_TICK_MAX 10
59  *
60  * The purpose of this is to provide a common way to wait for the up-state
61  * of the link prior to allowing other commands to execute from uMon at
62  * startup.
63  */
64
65
66 /* Flash bank configuration:
67  * Basic information needed to configure the flash driver.
68  * Fill in port specific values here.
69  */
70 #define SINGLE_FLASH_DEVICE
71 #define FLASH_COPY_TO_RAM               1
72 #define FLASH_BANK0_BASE_ADDR   0x00000000
73 #define FLASH_PROTECT_RANGE     "0-2"
74 #define FLASH_BANK0_WIDTH       2
75 #define FLASH_BANK0_SIZE        0x2000000
76 #define FLASH_LARGEST_SECTOR    0x20000
77 #define FLASH_TIMEOUT           10000000
78 #define FLASH_NUM_SECTORS       256
79
80 /* If there is a need to have the range of protected sectors locked (and
81  * the flash device driver supports it), then enable this macro...
82 #define LOCK_FLASH_PROTECT_RANGE
83  */
84 //#define APPRAMBASE_OVERRIDE 0x40000000
85
86 #define DEFAULT_ETHERADD "01:02:03:04:05:06"
87
88 /* TFS definitions:
89  * Values that configure the flash space that is allocated to TFS.
90  * Fill in port specific values here.
91  */
92 #define TFSSPARESIZE                    FLASH_LARGEST_SECTOR
93 #define TFSSTART                        (FLASH_BANK0_BASE_ADDR+0x80000)
94 #define TFSEND                          0x01FDFFFF
95 #define TFSSPARE                        (TFSEND+1)
96 #define TFSSECTORCOUNT                  ((TFSSPARE-TFSSTART)/0x20000)
97 #define TFS_EBIN_ELF                    1
98 #define TFS_VERBOSE_STARTUP             1
99 #define TFS_ALTDEVTBL_BASE              &alt_tfsdevtbl_base
100
101 /* FLASHRAM Parameters (not required):
102  * Primarily used for configuring TFS on battery-backed RAM.
103  * For a simple (volatile) RAM-based TFS device, use the
104  * "tfs ramdev" command.
105  *
106  * Define a block of RAM space to be used as a TFS-device.
107  * This is a block of RAM that TFS is fooled into treating like flash.
108  * It essentially provides a RAM-based file-storage area.
109  */
110 //#define FLASHRAM_BASE                 0x380000
111
112 #ifdef FLASHRAM_BASE
113 # define FLASHRAM_END                   0x3fffff
114 # define FLASHRAM_SECTORSIZE    0x010000
115 # define FLASHRAM_SPARESIZE             FLASHRAM_SECTORSIZE
116 # define FLASHRAM_SECTORCOUNT   8
117 # define FLASHRAM_BANKNUM               1
118 # define FLASHBANKS                             2
119 #else
120 # define FLASHBANKS                             1
121 #endif
122
123 /* ALLOCSIZE:
124  * Specify the size of the memory block (in monitor space) that
125  * is to be allocated to malloc in the monitor.  Note that this
126  * size can be dynamically increased using the heap command at
127  * runtime.
128  */
129 #define ALLOCSIZE               (64*1024)
130
131 /* MONSTACKSIZE:
132  * The amount of space allocated to the monitor's stack.
133  */
134 #define MONSTACKSIZE    (8*1024)
135
136 /* INCLUDE_XXX Macros:
137  * Set/clear the appropriate macros depending on what you want
138  * to configure in your system.  The sanity of this list is tested
139  * through the inclusion of "inc_check.h" at the bottom of this list...
140  * When starting a port, set all but INCLUDE_MALLOC, INCLUDE_SHELLVARS,
141  * INCLUDE_MEMCMDS and INCLUDE_XMODEM to zero.  Then in small steps
142  * enable the following major features in the following order:
143  *
144  *      INCLUDE_FLASH to test the flash device drivers.
145  *      INCLUDE_TFS* to overlay TFS onto the flash. 
146  *  INCLUDE_ETHERNET, INCLUDE_TFTP to turn the ethernet interface.
147  *
148  * All other INCLUDE_XXX macros can be enabled as needed and for the
149  * most part, they're hardware independent.
150  * Note that for building a very small footprint, INCLUDE_MALLOC and
151  * INCLUDE_SHELLVARS can be disabled.
152  */
153                                                                 
154 #define INCLUDE_MALLOC                  1
155 #define INCLUDE_MEMCMDS         1
156 #define INCLUDE_SHELLVARS               1
157 #define INCLUDE_XMODEM          1
158 #define INCLUDE_EDIT            1
159 #define INCLUDE_DISASSEMBLER    0
160 #define INCLUDE_UNZIP           1
161 #define INCLUDE_ETHERNET        1
162 #define INCLUDE_ICMP                    1
163 #define INCLUDE_TFTP            1
164 #define INCLUDE_TFS             1
165 #define INCLUDE_FLASH           1
166 #define INCLUDE_LINEEDIT        1
167 #define INCLUDE_DHCPBOOT        1
168 #define INCLUDE_TFSAPI          1
169 #define INCLUDE_TFSSYMTBL       1
170 #define INCLUDE_TFSSCRIPT       1
171 #define INCLUDE_TFSCLI          1
172 #define INCLUDE_EE              1
173 #define INCLUDE_GDB             0
174 #define INCLUDE_STRACE          0
175 #define INCLUDE_CAST            0
176 #define INCLUDE_STRUCT          0
177 #define INCLUDE_REDIRECT        1
178 #define INCLUDE_QUICKMEMCPY     0
179 #define INCLUDE_PROFILER        0
180 #define INCLUDE_BBC             0
181 #define INCLUDE_MEMTRACE        0
182 #define INCLUDE_STOREMAC        0
183 #define INCLUDE_VERBOSEHELP     1
184 #define INCLUDE_HWTMR               0
185 #define INCLUDE_PORTCMD             0
186 #define INCLUDE_USRLVL              0
187 #define INCLUDE_FBI             1
188 #define INCLUDE_PS2KBD          1
189
190 /* Some fine tuning (if needed)...
191  * If these #defines are not in config.h, they default to '1' in
192  * various other include files within uMon source; hence, they're
193  * really only useful if you need to turn off ('0') the specific
194  * facility or block of code.
195  */
196 #define INCLUDE_TFTPSRVR                0
197 #define INCLUDE_ETHERVERBOSE    1
198 #define INCLUDE_MONCMD                  0
199
200 #include "inc_check.h"