OpenEC: Difference between revisions
RafaelOrtiz (talk | contribs) |
(Updated to match current status) |
||
Line 1: | Line 1: | ||
This page is a placeholder for all information regarding the open source implementation of the XO-1's Embedded Controller (EC). |
|||
=Email List= |
=Email List= |
||
http://lists.laptop.org/listinfo/openec |
http://lists.laptop.org/listinfo/openec |
||
Line 11: | Line 9: | ||
== OpenEc firmware project == |
== OpenEc firmware project == |
||
openec is an effort for an open implementation of the firmware on the EC. |
openec is an effort for an open implementation of the firmware on the [[Embedded_controller|EC]]. |
||
It currently is in an early stage and not functional yet. |
It currently is in an early stage and not functional yet. |
||
Downloading openec to an XO '''might damage the XO''', please do not do |
Downloading openec to an XO '''might damage the XO''', please do not do |
||
Line 74: | Line 72: | ||
=== Files of the C implementation === |
=== Files of the C implementation === |
||
adc.c handle the ADC on the EC |
|||
battery.c Skeleton for battery handling with the Embedded Controller (key) |
battery.c Skeleton for battery handling with the Embedded Controller (key) |
||
build.c Keeps version related info |
build.c Keeps version related info |
||
compiler.h include file to allow compiling with SDCC and GCC |
compiler.h include file to allow compiling with SDCC and GCC |
||
Doxyfile Control file for Source Documentation tool Doxygen |
Doxyfile Control file for Source Documentation tool Doxygen |
||
ds2756.c Handle Maxim/Dallas DS2756 |
ds2756.c Handle Maxim/Dallas DS2756 battery fuel gauge IC |
||
flash.c access the flash on the EC (0x00000..0xFffff) |
|||
failsafe/ Failsafe Code |
|||
fs_entry.c Trampoline for a bankswitching routine |
fs_entry.c Trampoline for a bankswitching routine |
||
idle.c Idle mode |
|||
kb3700.h |
kb3700.h header file for ENE KB3700 Keyboard Controler |
||
led.c handle LEDs |
|||
main.c Skeleton for the Embedded Controller of the OLPC project |
main.c Skeleton for the Embedded Controller of the OLPC project |
||
manufacturing.c Access manufacturing data |
|||
Makefile.gcc Makefile for compiling with GCC |
Makefile.gcc Makefile for compiling with GCC |
||
Makefile SDCC Makefile |
Makefile SDCC Makefile |
||
matrix_3x3.c Routines to handle 3x3 matrix within the OLPC project |
matrix_3x3.c Routines to handle 3x3 matrix within the OLPC project |
||
monitor.c Monitor program |
|||
openec.ctl Control file for D52 disassembler |
openec.ctl Control file for D52 disassembler |
||
port_0x6c.c host communication routines for the EC of the OLPC |
port_0x6c.c host communication routines for the EC of the OLPC |
||
Line 91: | Line 94: | ||
sfr_rw.c reading/writing mcs-51 sfr (special function registers) |
sfr_rw.c reading/writing mcs-51 sfr (special function registers) |
||
states.c Helps debugging state machines |
states.c Helps debugging state machines |
||
temperture.c Temperture reading and interpolation |
|||
timer.c Timer routines for the Embedded Controller of the OLPC project |
timer.c Timer routines for the Embedded Controller of the OLPC project |
||
uart.c handle serial IO on the EC |
uart.c handle serial IO on the EC |
||
Line 98: | Line 102: | ||
=== Status === |
=== Status === |
||
Timer IRQ functional, blinks LEDs, decodes cursor keys, |
|||
uart |
uart functional, dumps registers outputs (ec-dump.fth like), |
||
outputs status of internal state machines, reads temperature sensor, |
|||
on boot and cursor key press, outputs status of internal |
|||
reads and outputs [[manufacturing data]] (B1), actively uses idle mode, |
|||
state machines onto serial line. |
|||
reads and outputs data of the one-wire battery fuel gauge IC. |
|||
Includes a monitor program that allows to read/write xdata Special Function |
|||
Registers. |
|||
Reacts on Power button but does not power up the XO yet. |
Reacts on Power button but does not power up the XO yet. |
||
Line 111: | Line 118: | ||
* Failsafe Code |
* Failsafe Code |
||
* Easy debugging |
* Easy debugging |
||
* GCC compilable. |
* GCC compilable (nice to have). |
||
=== To Do === |
=== To Do === |
Revision as of 15:18, 3 November 2007
Email List
http://lists.laptop.org/listinfo/openec
openec@lists.laptop.org
Git Tree
http://dev.laptop.org/git?p=projects/openec;a=summary
OpenEc firmware project
openec is an effort for an open implementation of the firmware on the EC. It currently is in an early stage and not functional yet. Downloading openec to an XO might damage the XO, please do not do so unless you know what you are doing.
Tools for OpenEc
- git
- source revision tool
- sdcc
- Compiler sdcc 2.7.0 or later (needed) http://sdcc.sf.net (Compiler which generates the binary for the EC)
- gcc
- Compiler (optional for openec) the source is currently also compilable with GCC
- doxygen
- Source documentation tool (optional), http://www.doxygen.org
- LaTeX
- text tool (optional), needed if a pdf version of the documentation should be generated. A html version of the source documentation can be generated without LaTeX
- Srecord
- srecord (needed), http://srecord.sf.net, handling of hex (etc.) files (Version 1.36)
- Make
- (needed), GNU make, should be there anyway.
- D52
- Disassembler (optional), http://www.8052.com/users/disasm/ , generates disassembled file openec.d52
- Download software
- spiflash.dic (needed), see http://lists.laptop.org/pipermail/openec/2007-August/000061.html . Forth software to download the EC firmware to the target. Be sure to backup the complete firmware (including manufacturing data) first
- Hardware adapter
- serial adapter (needed) http://wiki.laptop.org/go/Image:Serial_adapter.jpg Hardware adapter to download to target. Connects to CN24 and an RS232 null-modem cable (an additional oscillator is needed (66MHz(?) to CN24,Pin5)). Additional instructions are at SPI FLASH Recovery. (The instructions there address recovery of the complete flash)
- Jumpers
- 2 jumpers for Recovery Mode jumper block (see above)
- Null modem cable
- (needed) to connect the serial adapter to a serial port
- Serial port
- (needed) Not all new PC and very few notebooks still have a serial port (an USB to serial adapter might be additionally needed then)
- Terminal Software
- minicom (recommended). Needed to see or capture debugging output. Parameters 115kBaud, 8N1, no handshake - other terminal programs can be used too.
Related Documentation
http://sdcc.sourceforge.net/doc/sdccman.pdf
Mailing List
Getting the source
The source is in the git repository OpenEC and can be browsed online there.
To get this code onto your machine please change to a newly created directory and do:
git-clone git://dev.laptop.org/projects/openec
Compiling on the host for the EC
If the necessary tools are installed it is a simple "make" inside the openec directory:
make
Listing files and a binary file currently named openec.do_not_use.bin are generated. (Intentionally no more details here about how to proceed:)
Compiling on the host for the host
Run make with an additional argument inside the openec directory:
make -f Makefile.gcc
you can then run
./openec.gcc | less
there. The EC specific hardware is not present on the host, so openec.gcc will be of limited use. Running openec.gcc on the host does not endanger the host:)
Files of the C implementation
adc.c handle the ADC on the EC battery.c Skeleton for battery handling with the Embedded Controller (key) build.c Keeps version related info compiler.h include file to allow compiling with SDCC and GCC Doxyfile Control file for Source Documentation tool Doxygen ds2756.c Handle Maxim/Dallas DS2756 battery fuel gauge IC flash.c access the flash on the EC (0x00000..0xFffff) fs_entry.c Trampoline for a bankswitching routine idle.c Idle mode kb3700.h header file for ENE KB3700 Keyboard Controler led.c handle LEDs main.c Skeleton for the Embedded Controller of the OLPC project manufacturing.c Access manufacturing data Makefile.gcc Makefile for compiling with GCC Makefile SDCC Makefile matrix_3x3.c Routines to handle 3x3 matrix within the OLPC project monitor.c Monitor program openec.ctl Control file for D52 disassembler port_0x6c.c host communication routines for the EC of the OLPC sfr_dump.c dump register settings sfr_rw.c reading/writing mcs-51 sfr (special function registers) states.c Helps debugging state machines temperture.c Temperture reading and interpolation timer.c Timer routines for the Embedded Controller of the OLPC project uart.c handle serial IO on the EC unused_irq.c Safe IRQ stubs for unused IRQ watchdog.c Watchdog of the EC
Status
Timer IRQ functional, blinks LEDs, decodes cursor keys, uart functional, dumps registers outputs (ec-dump.fth like), outputs status of internal state machines, reads temperature sensor, reads and outputs manufacturing data (B1), actively uses idle mode, reads and outputs data of the one-wire battery fuel gauge IC. Includes a monitor program that allows to read/write xdata Special Function Registers. Reacts on Power button but does not power up the XO yet.
Status is tested on B1 but yet to be confirmed for others. Confirmed for B2
Desired Features
- Failsafe Code
- Easy debugging
- GCC compilable (nice to have).
To Do
- lots