A Scheme Interpreter for ARM Microcontrollers:
ChangeLog for Version 050
Changes from snapshot 00.0250:
-
This release supports 6 new boards:
the SAM3-H256, SAM7-P256, SAM9-L9261 and STM32-H107 from Olimex
and the TI-EvalBot and BeagleBoard-XM from Texas Instruments.
Support for the SAM7-P256 is a contribution from R. Dinn of MicroBus UK.
On the STM32-H107 the USB is not enabled due to time constraints.
For the TI-EvalBot, TI's errata (LM3S9B92 MCU) notes that the on-chip flash is less
durable than expected (maybe 100's of write cycle rather than 10,000) and should be
used with prudence (use an SD-card instead for user files).
For the SAM9-L9261, Samsung's datasheet (K9F4G08Uxx) for the on-board flash chip,
notes that the chip is not guaranteed defect free and that affected banks are marked
inside the chip.
However, Armpit Scheme does not check the related markings in this release and its (erase) command
erases them (in the 1MB of flash that the system uses).
It may be prudent to not use the (erase) command on this board, and/or to use alternative
means (eg. openocd) to check flash chip markings before use.
-
This release (050) introduces a new numbering scheme where the first two digits indicate
the year (05 for year 5) and the 3rd digit indicates the release number for that year
(here: 0).
-
In this release, code for the evaluator has been enhanced for size and performance.
A new macro, named evalsv1, is used for code clarity and shorter type tables are introduced.
-
The REP loop is now defined as a string of code (rather than an s-expression)
that is parsed and evaluated on startup.
-
A code-walkthrough has been applied around the use of the bytsetu and wrdst macros
to streamline the code where applicable.
-
The input and output port validation functions have been combined into a single function
(in armpit_ports.s) and i/o functions with port dispatch have been simplified accordingly
(eg. read, write, display in armpit_scheme_read_write.s).
-
Common pre-entry functions are now made available on the GLV and regent: has been
moved from mcu-specific files to armpit_scheme_r6rs_library.s.
-
A set of assembler macros has been introduced (in armpit_as_macros.s)
to remove some .word directives from code and
improve clarity: PFUNC, EPFUNC, SYNTAX, EPSYNTAX, SYMSIZE, VECSIZE, VU8SIZE.
-
On the OMAP3530/DM3730, basic i2c functionality has been added to allow communication
with the companion chip (eg. TWL4030) from which ADCs can be read.
This basic functionality is not interrupt-driven and does not enable i2c-based
multiprocessing.
-
On the OMAP3530/DM3730, a bug that prevented above-heap code to execute reliably
has been corrected by aligning above-heap code and data to the 64-byte size of
L2 cache lines.
-
On the STM32, a bug that prevented on-chip files to be erased reliably when a new
file of the same name was created, has beeen fixed by changing the invalid file
marker to binary zero (rather than the scheme integer zero).
-
On Cortex-M3 MCUs, a bug whereby interrupts 32-63 were not disbaled and re-enabled
over resumption of an interrupted garbage collection (label genism: in armpit_core.s)
has been corrected.
-
The table below summarizes some mcu-specific implementation choices:
1) Whether SD-card support is assembled into the distribution, along with connection
type (either: on-board connector, or SPI interface and CS pin)
(note: on LPC-H2214/94, connect P0.7 to 3.3 Volts);
2) the read buffer sizes configured in mcu-specifc header files (variable name: RBF_size)
(eg. 2KB means space for: 2048 - 4 = 2044 characters),
3) the status of in-core I2C support
(this is the high-level support, including interrupts, needed for
remote-execution oriented multi-processing. Note that for
the TINY-2131, LPC-H2103 and LPC-P1343, this support is not assembled into the distribution), and;
4) the boot override pin used to disable "boot"-file loading.
BOARD | SD-CARD | BUFFER SIZE | I2C SUPPORT | BOOT OVERRIDE |
LPC_H2103 | | 1 KB | yes | P0.3 |
TINY_2106 | | 2 KB | yes | P0.3 |
TINY_2131 | | 1 KB | yes | P0.3 |
TINY_2138 | | 2 KB | yes | P0.3 |
SFE_Logomatic1 | on-board (spi) | 2 KB | yes | P0.3 (Stop) |
SFE_Logomatic2 | on-board (spi) | 4 KB | yes | P0.3 (Stop) |
LPC_H2148 | | 4 KB | yes | P0.3 |
LCDDemo_2158 | | 4 KB | yes | P0.16 (Mode) |
SAM7_H256 | SPI0, CS=PA.10 | 2 KB | yes | PA3 |
SAM7_P256 | SPI0, CS=PA.10 | 2 KB | yes | PA19 (But1) |
STR_H711 | BSPI1, CS=P1.9 | 2 KB | yes | P0.3 |
LPC_H2214 | SPI0, CS=P0.20 | 16128 Bytes | yes | P0.3 |
LPC_H2294 | SPI0, CS=P0.20 | 16128 Bytes | yes | P0.3 |
LPC2478_STK | on-board (mci) | 28 KB | yes | P2.19 (But1) |
LPC_H2888 | | 128 KB | | P2.0 |
----- | ----- | ----- | ----- | ----- |
LPC_P1343 | | 1 KB | yes | P2.9 (But1) |
Blueboard_1768 | SPI0, CS=P0.16 | 4 KB | yes | P3.26 |
SAM3_H256 | SPI0, CS=PA.11 | 2 KB | yes | PA19 |
STM32_H103 | SPI1, CS=PA.8 | 1536 Bytes | yes | PA.0 (BUT) |
STM32_H107 | SPI1, CS=PA.8 | 2 KB | yes | PA.0 (WKUP) |
STM32_LCD | on-board (mci) | 2 KB | yes | PB.7 |
STM32_DT_Board | | 2 KB | yes | PC.9 (SW1) |
IDM_LM3S1958 | on-board (spi) | 2 KB | | PG3 |
EVB_LM3S1968 | | 2 KB | | PG3 (up) |
EVB_LM3S6965 | on-board (spi) | 2 KB | | PF1 (select) |
TI_EvalBot | on-board (spi) | 2 KB | | PD6 (SW1) |
----- | ----- | ----- | ----- | ----- |
STR91X_M | | 2 KB | yes | P0.3 |
CS_E9302 | on-board (spi) | 64 KB | | H4 (BUT) |
TCT_Hammer | on-board (spi) | 64 KB | | GPG3 (S1) |
SAM9_L9261 | on-board (spi) | 8 KB | yes | PA27 (BP3) |
----- | ----- | ----- | ----- | ----- |
TI_Beagle | on-board (mci) | 64 KB | | gpio_7 (USER) |
TI_Beagle_XM | on-board (mci) | 64 KB | | gpio_7 (USER) |
GMX_OVERO_TIDE | on-board (mci) | 64 KB | | gpio_14 (S2) |
Last updated January 14, 2012
bioe-hubert-at-sourceforge.net