OpenEC

From OLPC
Revision as of 15:18, 3 November 2007 by Frief (talk | contribs) (Updated to match current status)
Jump to navigation Jump to search

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

ENE KB3700 Datasheet

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