Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SQUIRREL3 mbed sqbind-0_99
README.txt@0:6f55c7651ccc, 2014-12-16 (annotated)
- Committer:
- jhnwkmn
- Date:
- Tue Dec 16 12:54:53 2014 +0000
- Revision:
- 0:6f55c7651ccc
Added README.txt;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| jhnwkmn | 0:6f55c7651ccc | 1 | Squirrel for FRDM-K64F |
| jhnwkmn | 0:6f55c7651ccc | 2 | ====================== |
| jhnwkmn | 0:6f55c7651ccc | 3 | This is an *experimental* port of the Squirrel interpreter to the mbed |
| jhnwkmn | 0:6f55c7651ccc | 4 | platform, in particular FRDM-K64F. Experimental means that that the port |
| jhnwkmn | 0:6f55c7651ccc | 5 | is of POC quality, so don't expect to be able to switch over to Squirrel |
| jhnwkmn | 0:6f55c7651ccc | 6 | just yet. |
| jhnwkmn | 0:6f55c7651ccc | 7 | |
| jhnwkmn | 0:6f55c7651ccc | 8 | That said, it can already be used for trying things out interractively |
| jhnwkmn | 0:6f55c7651ccc | 9 | from a prompt. |
| jhnwkmn | 0:6f55c7651ccc | 10 | |
| jhnwkmn | 0:6f55c7651ccc | 11 | For more information about the Squirrel language, please consult the |
| jhnwkmn | 0:6f55c7651ccc | 12 | official site http://www.squirrel-lang.org/. There is also useful |
| jhnwkmn | 0:6f55c7651ccc | 13 | Squirrel information at the Electric Imp site |
| jhnwkmn | 0:6f55c7651ccc | 14 | (https://electricimp.com/docs/squirrel/learningsquirrel/). Squirrel |
| jhnwkmn | 0:6f55c7651ccc | 15 | is the "native" language of Electric Imp. |
| jhnwkmn | 0:6f55c7651ccc | 16 | |
| jhnwkmn | 0:6f55c7651ccc | 17 | In addition to the interpreter itself, a few core components of mbed |
| jhnwkmn | 0:6f55c7651ccc | 18 | has also been made available: |
| jhnwkmn | 0:6f55c7651ccc | 19 | |
| jhnwkmn | 0:6f55c7651ccc | 20 | DigitalIn |
| jhnwkmn | 0:6f55c7651ccc | 21 | DigitalOut |
| jhnwkmn | 0:6f55c7651ccc | 22 | DigitalInOut |
| jhnwkmn | 0:6f55c7651ccc | 23 | PwmOut |
| jhnwkmn | 0:6f55c7651ccc | 24 | Ticker |
| jhnwkmn | 0:6f55c7651ccc | 25 | Timeout |
| jhnwkmn | 0:6f55c7651ccc | 26 | Timer |
| jhnwkmn | 0:6f55c7651ccc | 27 | |
| jhnwkmn | 0:6f55c7651ccc | 28 | The provided functionality is a subset of the corresponding native |
| jhnwkmn | 0:6f55c7651ccc | 29 | mbed components. |
| jhnwkmn | 0:6f55c7651ccc | 30 | |
| jhnwkmn | 0:6f55c7651ccc | 31 | Examine the components in sqmbed/src to see what functionality is |
| jhnwkmn | 0:6f55c7651ccc | 32 | available. |
| jhnwkmn | 0:6f55c7651ccc | 33 | |
| jhnwkmn | 0:6f55c7651ccc | 34 | |
| jhnwkmn | 0:6f55c7651ccc | 35 | In addition, InterruptIn is also supported. However, interrupts are |
| jhnwkmn | 0:6f55c7651ccc | 36 | *not* delivered as they occur, but they are queued and delivered when |
| jhnwkmn | 0:6f55c7651ccc | 37 | it is safe to do so from the point of view of the Squirrel interpreter. |
| jhnwkmn | 0:6f55c7651ccc | 38 | In practice this means that they are not delivered from interrupt |
| jhnwkmn | 0:6f55c7651ccc | 39 | context and that there are no restrictions what can be done in the |
| jhnwkmn | 0:6f55c7651ccc | 40 | handler. |
| jhnwkmn | 0:6f55c7651ccc | 41 | |
| jhnwkmn | 0:6f55c7651ccc | 42 | Source structure |
| jhnwkmn | 0:6f55c7651ccc | 43 | ---------------- |
| jhnwkmn | 0:6f55c7651ccc | 44 | +sqbind-0_099 Utility library that makes binding easier. |
| jhnwkmn | 0:6f55c7651ccc | 45 | +sqk64f k64f-specific code (interrupt handling) |
| jhnwkmn | 0:6f55c7651ccc | 46 | +sqmbed Generic mbed extensions for Squirrel. |
| jhnwkmn | 0:6f55c7651ccc | 47 | +SQUIRREL3 The Squirrel virtual machine. |
| jhnwkmn | 0:6f55c7651ccc | 48 | |
| jhnwkmn | 0:6f55c7651ccc | 49 | PuTTY Configuration |
| jhnwkmn | 0:6f55c7651ccc | 50 | ------------------- |
| jhnwkmn | 0:6f55c7651ccc | 51 | Default terminal settings, but for |
| jhnwkmn | 0:6f55c7651ccc | 52 | [X] Implicit CR in every LF |
| jhnwkmn | 0:6f55c7651ccc | 53 | |
| jhnwkmn | 0:6f55c7651ccc | 54 | Local echo: |
| jhnwkmn | 0:6f55c7651ccc | 55 | (o) Force on |
| jhnwkmn | 0:6f55c7651ccc | 56 | |
| jhnwkmn | 0:6f55c7651ccc | 57 | Local line editing: |
| jhnwkmn | 0:6f55c7651ccc | 58 | (o) Force on |
| jhnwkmn | 0:6f55c7651ccc | 59 | |
| jhnwkmn | 0:6f55c7651ccc | 60 | |
| jhnwkmn | 0:6f55c7651ccc | 61 | Trying Out |
| jhnwkmn | 0:6f55c7651ccc | 62 | ========== |
| jhnwkmn | 0:6f55c7651ccc | 63 | - Build in the web-ide. |
| jhnwkmn | 0:6f55c7651ccc | 64 | - Flash the .bin file. |
| jhnwkmn | 0:6f55c7651ccc | 65 | - Start Putty. |
| jhnwkmn | 0:6f55c7651ccc | 66 | - Press reset on the board. |
| jhnwkmn | 0:6f55c7651ccc | 67 | |
| jhnwkmn | 0:6f55c7651ccc | 68 | You should be greeted with: |
| jhnwkmn | 0:6f55c7651ccc | 69 | |
| jhnwkmn | 0:6f55c7651ccc | 70 | Squirrel 3.0.6 stable Copyright (C) 2003-2014 Alberto Demichelis (32 bits) |
| jhnwkmn | 0:6f55c7651ccc | 71 | |
| jhnwkmn | 0:6f55c7651ccc | 72 | sq> |
| jhnwkmn | 0:6f55c7651ccc | 73 | |
| jhnwkmn | 0:6f55c7651ccc | 74 | Then try the usual Hello World. |
| jhnwkmn | 0:6f55c7651ccc | 75 | |
| jhnwkmn | 0:6f55c7651ccc | 76 | sq>print("Hello World\n"); |
| jhnwkmn | 0:6f55c7651ccc | 77 | Hello, World |
| jhnwkmn | 0:6f55c7651ccc | 78 | |
| jhnwkmn | 0:6f55c7651ccc | 79 | sq> |
| jhnwkmn | 0:6f55c7651ccc | 80 | |
| jhnwkmn | 0:6f55c7651ccc | 81 | Let's try turning the led on and off. |
| jhnwkmn | 0:6f55c7651ccc | 82 | |
| jhnwkmn | 0:6f55c7651ccc | 83 | sq>::led<-DigitalOut(LED1); |
| jhnwkmn | 0:6f55c7651ccc | 84 | |
| jhnwkmn | 0:6f55c7651ccc | 85 | sq>led.write(0); |
| jhnwkmn | 0:6f55c7651ccc | 86 | |
| jhnwkmn | 0:6f55c7651ccc | 87 | sq>led.write(1); |
| jhnwkmn | 0:6f55c7651ccc | 88 | |
| jhnwkmn | 0:6f55c7651ccc | 89 | sq> |
| jhnwkmn | 0:6f55c7651ccc | 90 | |
| jhnwkmn | 0:6f55c7651ccc | 91 | Let's inform when button SW2 is pressed. |
| jhnwkmn | 0:6f55c7651ccc | 92 | |
| jhnwkmn | 0:6f55c7651ccc | 93 | sq>::i<-InterruptIn(SW2); |
| jhnwkmn | 0:6f55c7651ccc | 94 | |
| jhnwkmn | 0:6f55c7651ccc | 95 | sq>function buttonPressed() { print("Button pressed\n"); } |
| jhnwkmn | 0:6f55c7651ccc | 96 | |
| jhnwkmn | 0:6f55c7651ccc | 97 | sq>buttonPressed(); |
| jhnwkmn | 0:6f55c7651ccc | 98 | Button pressed |
| jhnwkmn | 0:6f55c7651ccc | 99 | |
| jhnwkmn | 0:6f55c7651ccc | 100 | sq>i.rise(buttonPressed); |
| jhnwkmn | 0:6f55c7651ccc | 101 | |
| jhnwkmn | 0:6f55c7651ccc | 102 | sq>while (true) {} |
| jhnwkmn | 0:6f55c7651ccc | 103 | Button pressed |
| jhnwkmn | 0:6f55c7651ccc | 104 | Button pressed |
| jhnwkmn | 0:6f55c7651ccc | 105 | Button pressed |
| jhnwkmn | 0:6f55c7651ccc | 106 | |
| jhnwkmn | 0:6f55c7651ccc | 107 | Note that in order for the interrupts to work, the interpreter needs to be |
| jhnwkmn | 0:6f55c7651ccc | 108 | running. That it won't be, while waiting for input at the prompt ("sq>"). |
| jhnwkmn | 0:6f55c7651ccc | 109 | |
| jhnwkmn | 0:6f55c7651ccc | 110 | Contact |
| jhnwkmn | 0:6f55c7651ccc | 111 | ======= |
| jhnwkmn | 0:6f55c7651ccc | 112 | Feel free to contact me in case you have questions: johan.wikman@iki.fi |
| jhnwkmn | 0:6f55c7651ccc | 113 | |
| jhnwkmn | 0:6f55c7651ccc | 114 |