Embedded controller: Difference between revisions
m (→Background: fixups) |
No edit summary |
||
(39 intermediate revisions by 15 users not shown) | |||
Line 1: | Line 1: | ||
⚫ | |||
{{Translations}} |
{{Translations}} |
||
⚫ | |||
{{Olpcboxtop}} |
|||
{{OBX source dev|projects/openec}} |
|||
{{Olpcboxbottom}} |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
The [[Hardware#XO_Laptop|XO-1 laptop]] uses a small micro-controller, an ENE KB3700 ([[Media:KB3700-ds-01.pdf|Datasheet]]), to control the battery charging operation and perform other tasks associated with starting and stopping the laptop. |
|||
⚫ | |||
This Embedded Controller (EC) consists of a 8051 micro-controller, a dedicated LPC interface to communicate with the processor, and an SPI Flash ROM interface. The SPI Flash ROM supports two code segments, and a table of [[Manufacturing Data]]. The EC supports the Boot Hub Protocol, allowing the XO's main processor to boot from one of the code segments in the SPI Flash. |
|||
The EC hardware consists of the ENE KB3700 ([[Image:KB3700-ds-01.pdf]]), which has a 8051 microprocessor at it's core. We have chosen to impliment the firmware in C, using [[SDCC]] as our compiler. Efforts are also under way to have CamelForth, a Forth implimentation for the 8051, run on the KB3700. |
|||
⚫ | |||
The need for an open implementation is due to the fact that the actual EC has some flakiness in the recovery process.(among many other things). |
|||
An example of a bug of the old EC can be found in {{ticket|477}} |
|||
⚫ | |||
The KB3700 also communicates with the Maxim [http://www.maxim-ic.com/quick_view2.cfm/qv_pk/5104 DS2756] battery fuel gauge IC within the battery pack, via the [http://en.wikipedia.org/wiki/1-Wire 1-wire] Dallas protocol. [[Media:DS2756.pdf|DS2756 data sheet]]. |
|||
== Background == |
|||
=== ec-status === |
|||
⚫ | The EC, |
||
⚫ | |||
The KB3700 also communicates with the DS2657 (The battery charger) via the 1 wire Dallas protocol. |
|||
⚫ | |||
Running the ec-dump script give us valuable data about internals of the EC, being the [[EC_Register_Settings]]. |
|||
The procedure to run '''ec-dump''' over internet in a wireless connection is: |
The procedure to run '''ec-dump''' over internet in a wireless connection is: |
||
Line 33: | Line 25: | ||
ok to-file u:\ec-dump fload http:\\18.85.2.147\~joel\ec-dump.fth |
ok to-file u:\ec-dump fload http:\\18.85.2.147\~joel\ec-dump.fth |
||
== Source and Licensing == |
|||
For doing some of the ec work you might need the sdkit tools (sdkit permits that forth runs over linux) and also some other openfirmware code like |
|||
[http://dev.laptop.org/~wmb/spiflash.dic spiflash.dic] |
|||
The firmware running on the XO-1's EC, while heavily modified and supported by OLPC, was originally written by two different companies. OLPC had no success convincing those companies to open source their code. |
|||
=== Compiling from the host === |
|||
first you have to git-clone the open ec code, then inside the openec file make |
|||
⚫ | |||
make -f Makefile.gcc |
|||
The XO-1.75 and XO-4 embedded controller firmware is open source. See [[Firmware]]. |
|||
== Skeleton C implementation== |
|||
⚫ | |||
*battery.c Skeleton for battery handling with the Embedded Controller (key) |
|||
⚫ | |||
*fs_entry.c Trampoline for a bankswitching routine |
|||
*Makefile.gcc Makefile per gcc |
|||
*port_0x6c.c host communication routines for the EC of the OLPC |
|||
*states.h Debugging state machine header |
|||
*uart.h Handle serial IO on the EC |
|||
*watchdog.h Handle watchdog of the EC |
|||
*battery.h Skeleton for battery handling with the Embedded Controller (key) |
|||
*ds2756.c Handle Maxim/Dallas DS2756 |
|||
*kb3700.h kb3700.h - header file for ENE KB3700 Keyboard Controler |
|||
*matrix_3x3.c Routines to handle 3x3 matrix within the OLPC project |
|||
*port_0x6c.h Host communication routines for the EC of the OLPC |
|||
*timer.c Timer routines for the Embedded Controller of the OLPC project |
|||
*unused_irq.c Safe IRQ stubs for unused IRQ |
|||
*build.c Keeps version related info |
|||
*ds2756.h Handle Maxim/Dallas DS2756 |
|||
*main.c Skeleton for the Embedded Controller of the OLPC project |
|||
*matrix_3x3.h Routines to handle 3x3 matrix within the OLPC project |
|||
*sfr_rw.c reading/writing mcs-51 sfr (special function registers) |
|||
*timer.h Timer routines for the Embedded Controler of the OLPC project |
|||
*unused_irq.h safe IRQ stubs for unused IRQ |
|||
*compiler.h SDCC compiler |
|||
*failsafe Failsafe Code. |
|||
*Makefile SDCC Makefile |
|||
*openec.ctl |
|||
*states.c Debugging state machine header |
|||
*uart.c handle serial IO on the EC |
|||
*watchdog.c Watchdog of the EC |
|||
*[[XO_Full_Reset|Rebooting the Embedded Controller in a laptop]] |
|||
= Actual development = |
|||
*[[Media:KB3700-ds-01.pdf|ENE KB3700 Datasheet]] |
|||
* See other articles in [[:Category:EC]] |
|||
All the work is going to be in the git repository [http://dev.laptop.org/git.do?p=projects/openec;a=summary OpenEC] |
|||
To get this code in your machine please do: |
|||
git-clone git://dev.laptop.org/projects/openec |
|||
''For info check [[Importing_your_project]]'' |
|||
== Desired Features == |
|||
* Failsafe Code |
|||
* Easy debugging |
|||
* Forth/C implementation. |
|||
* GCC compilable. |
|||
⚫ | |||
* Testing |
|||
==Mail list== |
|||
* http://lists.laptop.org/listinfo/openec |
|||
⚫ | |||
[[Category:Developers]] |
|||
[[Category:EC]] |
[[Category:EC]] |
||
⚫ |
Latest revision as of 04:05, 13 August 2013
Introduction
The XO-1 laptop uses a small micro-controller, an ENE KB3700 (Datasheet), to control the battery charging operation and perform other tasks associated with starting and stopping the laptop.
This Embedded Controller (EC) consists of a 8051 micro-controller, a dedicated LPC interface to communicate with the processor, and an SPI Flash ROM interface. The SPI Flash ROM supports two code segments, and a table of Manufacturing Data. The EC supports the Boot Hub Protocol, allowing the XO's main processor to boot from one of the code segments in the SPI Flash.
Details
The EC, implemented as a KB3700, has a paramount importance in controlling the XO when the CPU is not active. To do so, the KB3700 communicates with the CPU via the EC protocol over a physical LPC interface. For more information, see the Ec specification.
The KB3700 also communicates with the Maxim DS2756 battery fuel gauge IC within the battery pack, via the 1-wire Dallas protocol. DS2756 data sheet.
ec-status
One can deduce part of the internal state of the EC using ec-dump.fth under Open Firmware. Running the ec-dump script gives us valuable data about internals of the EC, being the EC Register Settings.
The procedure to run ec-dump over internet in a wireless connection is:
ok wifi media lab 802.11 *change it to your name AP ok fl http:\\18.85.2.147\~joel\ec-dump.fth *change to your AP IP direction
Running ec-dump over internet and saving the file in a USB key:
ok wifi media lab 802.11 *change it to your name AP ok fload http:\\18.85.2.147\~rafael\to-file.fth ok to-file u:\ec-dump fload http:\\18.85.2.147\~joel\ec-dump.fth
Source and Licensing
The firmware running on the XO-1's EC, while heavily modified and supported by OLPC, was originally written by two different companies. OLPC had no success convincing those companies to open source their code.
The OLPC community did work on OpenEC, an Open Source implementation of the XO-1's Embedded Controller firmware. It reached an early stage and was not functional.
The XO-1.75 and XO-4 embedded controller firmware is open source. See Firmware.
Related Documentation
- Rebooting the Embedded Controller in a laptop
- ENE KB3700 Datasheet
- See other articles in Category:EC