Embedded controller: Difference between revisions
(Add EC page.) |
|||
(25 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
[[File:Dell_latitude_cpi_a366xt_superio.jpg|thumb|right|SMSC FDC37N958FR]] | |||
[[File:Dell_latitude_c610_superio.jpg|thumb|right|SMSC LPC47N252]] | |||
The '''embedded controller''' is a small microcontroller typically used in laptops for various purposes. | The '''embedded controller''' is a small microcontroller typically used in laptops for various purposes. | ||
== Supported by coreboot == | |||
=== Renesas M3885/M3886 === | |||
These ECs are supported by coreboot. There are several versions, with flash and with mask ROMs. Only the flash versions are update-able. These ECs are Family 740 based. A development environment including compiler and simulator is available from Renesas. | |||
=== Other ECs === | |||
ECs are supportable if you either have | |||
* interface docs for the vendor supplied closed source EC firmware or | |||
* complete docs for the EC, and docs for the hardware it should control (backlight, battery charging, power sequencing of the mainboard) | |||
* open source EC firmware | |||
Some of the info (interface docs) can be reverse engineered to some degree, but that is very tedious. | |||
== Embedded controller table == | == Embedded controller table == | ||
Line 9: | Line 25: | ||
! align="left" | Type | ! align="left" | Type | ||
! align="left" | Architecture | ! align="left" | Architecture | ||
! align="left" | Datasheet(s) | ! align="left" | Datasheet(s) | ||
! align="left" | Comments | ! align="left" | Comments | ||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| ENE || KB910 || | | [http://www.ene.com.tw/en/index.asp ENE] || KB910 || EC || 8bit, 8051 core || ? || — | ||
|- bgcolor="#eeeeee" | |||
| [http://www.ene.com.tw/en/index.asp ENE] || KB926C || EC || 8bit, 8051 core || ? || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.ene.com.tw/en/index.asp ENE] || KB926D || EC || 8bit, 8051 core || ? || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.ene.com.tw/en/index.asp ENE] || KB3310 || EC || 8bit, 8051 core || ? || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.ene.com.tw/en/index.asp ENE] || KB3700 || EC || 8bit, 8051 core || [http://wiki.laptop.org/images/a/ab/KB3700-ds-01.pdf] || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.ene.com.tw/en/index.asp ENE] || [http://www.ene.com.tw/en/product_detail.asp?pid=366&id=2256 KB3910] || EC || 8bit, 8051 core || ? || — | |||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| ENE || | | [http://www.ene.com.tw/en/index.asp ENE] || [http://www.ene.com.tw/en/product_detail.asp?pid=366&id=2268 KB3920] || EC || 8bit, 8051 core || ? || — | ||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| ENE || | | [http://www.ene.com.tw/en/index.asp ENE] || [http://www.ene.com.tw/en/product_detail.asp?pid=366&id=2269 KB3925] || EC || 8bit, 8051 core || ? || — | ||
|- bgcolor="#eeeeee" | |||
| [http://www.ene.com.tw/en/index.asp ENE] || [http://www.ene.com.tw/en/product_detail.asp?pid=366&id=2270 KB3926] || EC || 8bit, 8051 core || ? || — | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| Fujitsu || MB90378 || | | [http://www.fujitsu.com Fujitsu] || MB90378 || EC || 16bit, F<sup>2</sup>MC-16LX family || [http://edevice.fujitsu.com/fj/DATASHEET/e-ds/e713740.pdf] || — | ||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| ITE || IT8510E || | | [http://www.ite.com.tw/EN/index.aspx ITE] || IT8500 || EC & Super I/O || ? || ? || Source: [http://gmb.viatech.com.cn/resource/downloads/VGTF-Autumn/ITE/ITE.pdf] | ||
|- bgcolor="#eeeeee" | |||
| [http://www.ite.com.tw/EN/index.aspx ITE] || IT8502E || EC & Super I/O || 8bit, 8032 core (8051 compatible) || on request || Source: [http://de.viatech.com/de/initiatives/spearhead/surfboard_c855/] [http://gmb.viatech.com/resource/jsp/PartnersSolutions/Partners/ITE/index.jsp] | |||
|- bgcolor="#eeeeee" | |||
| [http://www.ite.com.tw/EN/index.aspx ITE] || [http://www.ite.com.tw/EN/products_more.aspx?CategoryID=3&ID=6,79 IT8510E/TE/G] || EC & Super I/O || 8bit, 8032 core (8051 compatible) || on request || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.ite.com.tw/EN/index.aspx ITE] || [http://www.ite.com.tw/EN/products_more.aspx?CategoryID=3&ID=6,80 IT8511E/TE/G] || EC & Super I/O || 8bit, 8032 core (8051 compatible) || on request || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.ite.com.tw/EN/index.aspx ITE] || [http://www.ite.com.tw/EN/products_more.aspx?CategoryID=3&ID=6,81 IT8512E/F/G] || EC & Super I/O || 8bit, 8032 core (8051 compatible) || on request || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.ite.com.tw/EN/index.aspx ITE] || [http://www.ite.com.tw/EN/products_more.aspx?CategoryID=3&ID=6,82 IT8513E/F/G] || EC & Super I/O || 8bit, 8032 core (8051 compatible) || ? || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.ite.com.tw/EN/index.aspx ITE] || IT8516 || EC & Super I/O || ? || ? || Source: [http://gmb.viatech.com.cn/resource/downloads/VGTF-Autumn/ITE/ITE.pdf] | |||
|- bgcolor="#eeeeee" | |||
| [http://www.ite.com.tw/EN/index.aspx ITE] || [http://www.ite.com.tw/EN/products_more.aspx?CategoryID=3&ID=6,84 IT8301E] || External GPIO chip || ? || ? || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.nuvoton.com/ Nuvoton] || 87541V || EC || 16 bit, CR16B core || ? || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.nuvoton.com/ Nuvoton] || PC97551<sup>3</sup> || EC || 16 bit, CR16B core || ? || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.nuvoton.com/ Nuvoton] || [http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ComputerIC/ECAndNBKeyboardController/ECAndNBKeyboardController/W83L951DG_W83L951FG.htm W83L951DG/FG]<sup>4</sup> || EC || 8 bit, 8051 core || on request || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.nuvoton.com/ Nuvoton] || [http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ComputerIC/ECAndNBKeyboardController/ECAndNBKeyboardController/W83L951ADG_W83L951AFG.htm W83L951ADG/AFG]<sup>4</sup> || EC || 8 bit, 8051 core || on request || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.nuvoton.com/ Nuvoton] || [http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ComputerIC/ECAndNBKeyboardController/AdvancedEmbeddedController/WPC8769L.htm WPC8765L/WPC8769L]<sup>4</sup> || EC || 16 bit, ? core || ? || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.nuvoton.com/ Nuvoton] || [http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ComputerIC/ECAndNBKeyboardController/AdvancedEmbeddedController/WPC8763L.htm WPC8763L]<sup>4</sup> || EC || 16 bit, CR16CPlus core || ? || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.nuvoton.com/ Nuvoton] || [http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/ComputerIC/ECAndNBKeyboardController/AdvancedEmbeddedController/WPCE775x.htm WPCE775x]<sup>4</sup> || EC || 16 bit, CR16CPlus core || ? || — | |||
|- bgcolor="#eeeeee" | |||
| [http://www.nuvoton.com/ Nuvoton] || NPCE78nx || EC || ? || ? || — | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| Renesas || M38859<sup>1</sup> || | | [http://eu.renesas.com/ Renesas] || [http://eu.renesas.com/fmwk.jsp?cnt=3885_root.jsp&fp=/products/mpumcu/740_family/38000_740_series/3885_group/ M38859]<sup>1</sup> || EC || 8bit, 740 family || [http://documentation.renesas.com/eng/products/mpumcu/e3885g.pdf] || — | ||
|- bgcolor="#dddddd" | |||
| [http://eu.renesas.com/ Renesas] || [http://eu.renesas.com/fmwk.jsp?cnt=3886_root.jsp&fp=/products/mpumcu/740_family/38000_740_series/3886_group/ M38867M8A]<sup>1</sup> || EC || 8bit, 740 family || [http://documentation.renesas.com/eng/products/mpumcu/e3886g.pdf] || — | |||
|- bgcolor="#dddddd" | |||
| [http://eu.renesas.com/ Renesas] || [http://eu.renesas.com/fmwk.jsp?cnt=h8s2117_root.jsp&fp=/products/mpumcu/h8s_family/h8s2100_series/h8s2117_group H8S/2117R]<sup>2</sup> || EC || 16 bit, H8S family || ? || Source: [http://www.intelcommsalliance.com/kshowcase/view/view_item/4ddd1dbe78eb6b235cc4f07eabb79ae562ae690e] | |||
|- bgcolor="#dddddd" | |||
| [http://eu.renesas.com/ Renesas] || H8S/2161B<sup>2</sup> || EC || 16 bit, H8S family || ? || Source: [http://www.thinkwiki.org/wiki/Embedded_Controller_Chips], [http://www.thinkwiki.org/wiki/Embedded_Controller_Firmware], [http://forum.thinkpads.com/viewtopic.php?t=20958], [http://www.thinkwiki.org/wiki/Renesas_H8S/2161BV] | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| Renesas || | | [http://eu.renesas.com/ Renesas] || H8S/2169AV <sup>2</sup> || EC || 16 bit, H8S family || ? || Source: [http://www.thinkwiki.org/wiki/Embedded_Controller_Chips], [http://www.thinkwiki.org/wiki/Embedded_Controller_Firmware], [http://forum.thinkpads.com/viewtopic.php?t=20958] | ||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| Renesas || H8S 64F3169ATE10<sup>2</sup> || | | [http://eu.renesas.com/ Renesas] || H8S/64F3169ATE10<sup>2</sup> || EC || 16 bit, H8S family || ? || — | ||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" | ||
| NSC || PC87570 || | | [http://www.national.com NSC] || PC87570 || EC & Super I/O || ? || ? || — | ||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| SMSC || FDC37N958FR || | | [http://www.smsc.com/ SMSC] || FDC37N958FR || EC & Super I/O || ? || ? || — | ||
|- bgcolor="#dddddd" | |||
| [http://www.smsc.com/ SMSC] || LPC47N252 || EC & Super I/O || ? || ? || — | |||
|- bgcolor="#dddddd" | |||
| [http://www.smsc.com/ SMSC] || [http://www.smsc.com/index.php?tid=252&pid=173 MEC1308] || EC || 8bit, 8051 core || ? || — | |||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
| SMSC || | | [http://www.smsc.com/ SMSC] || [http://www.smsc.com/index.php?tid=252&pid=172 KBC1122/KBC1122P] || EC & Super I/O || 8bit, 8051 core || ? || — | ||
|- bgcolor="#eeeeee" | |||
| [http://www.sst.com/ SST] || [http://www.sst.com/about_sst/news/detail.dot?crumbTitle=NewsDetail&id=320 SST79LF008] || EC & Super I/O & BIOS flash || 8bit, 8051 core || ? || — | |||
|} | |} | ||
<sup>1</sup> Previously Mitsubishi, now Renesas. | <small> | ||
<sup>2</sup> Previously Hitachi, now Renesas. | <sup>1</sup> Previously Mitsubishi, now Renesas.<br /> | ||
<sup>2</sup> Previously Hitachi, now Renesas.<br /> | |||
<sup>3</sup> Previously National (NSC), then Winbond, now Nuvoton.<br /> | |||
<sup>4</sup> Previously Winbond, now Nuvoton.<br /> | |||
</small> | |||
== Resources == | |||
=== Chromebooks === | |||
* [https://chromium.googlesource.com/chromiumos/platform/ec/ The chromebooks EC firmware project] | |||
* Building the [[Chrome EC]] outside of the Chromium chroot | |||
=== ENE KB3310/KB3910/KB3920 === | |||
Very common ECs in netbooks are the KB3310, KB3910 and KB3920 from [http://www.ene.com.tw/en/index.asp ENE Technology]. The ENE ECs are 8051 based. | |||
The Quanta IL1 reference design seems to use ENE3310 controller. The q1d25i.rom was examined. The EC code is on 0xFFF00000 on One Mini A110. Its 64KB big HOLE0.ROM. | |||
More discussion and info on the ENE ECs: | |||
* [http://wiki.laptop.org/images/a/ab/KB3700-ds-01.pdf ENE KB3700 datasheet]. | |||
* [http://forum.eeeuser.com/viewtopic.php?pid=99076 eeeUser Discussion] | |||
* [http://code.google.com/p/eeetune/wiki/KBMemoryMap Memory map of ENE KB3310] | |||
* [https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/ 8051 simulator] | |||
* [http://dev.laptop.org/git?p=projects/olpcflash;a=blob;f=olpcflash.c;hb=HEAD OpenEC Firmware] | |||
* [http://wiki.laptop.org/go/OpenEC OpenEC Project] | |||
* [http://www.cagnulein.com/tmp/eee.c-20080812 Example code] that makes use of the KB3310's "Index IO" access functions. | |||
=== Renesas H8 === | |||
Some ECs are H8 based. | |||
* [http://www.gnuh8.org/ Port of the GNU compiler suite to the H8] | |||
* [http://wunderkis.de/h8-gcc/h8tools.tar.gz H8 bootloader] | |||
* [http://h8300-hms.sourceforge.net/ Sourceforge project for H8/300] | |||
== Toolchains == | |||
TODO | |||
{{PD-self}} | {{PD-self}} |
Latest revision as of 23:55, 15 January 2016
The embedded controller is a small microcontroller typically used in laptops for various purposes.
Supported by coreboot
Renesas M3885/M3886
These ECs are supported by coreboot. There are several versions, with flash and with mask ROMs. Only the flash versions are update-able. These ECs are Family 740 based. A development environment including compiler and simulator is available from Renesas.
Other ECs
ECs are supportable if you either have
- interface docs for the vendor supplied closed source EC firmware or
- complete docs for the EC, and docs for the hardware it should control (backlight, battery charging, power sequencing of the mainboard)
- open source EC firmware
Some of the info (interface docs) can be reverse engineered to some degree, but that is very tedious.
Embedded controller table
Vendor | Model | Type | Architecture | Datasheet(s) | Comments |
---|---|---|---|---|---|
ENE | KB910 | EC | 8bit, 8051 core | ? | — |
ENE | KB926C | EC | 8bit, 8051 core | ? | — |
ENE | KB926D | EC | 8bit, 8051 core | ? | — |
ENE | KB3310 | EC | 8bit, 8051 core | ? | — |
ENE | KB3700 | EC | 8bit, 8051 core | [1] | — |
ENE | KB3910 | EC | 8bit, 8051 core | ? | — |
ENE | KB3920 | EC | 8bit, 8051 core | ? | — |
ENE | KB3925 | EC | 8bit, 8051 core | ? | — |
ENE | KB3926 | EC | 8bit, 8051 core | ? | — |
Fujitsu | MB90378 | EC | 16bit, F2MC-16LX family | [2] | — |
ITE | IT8500 | EC & Super I/O | ? | ? | Source: [3] |
ITE | IT8502E | EC & Super I/O | 8bit, 8032 core (8051 compatible) | on request | Source: [4] [5] |
ITE | IT8510E/TE/G | EC & Super I/O | 8bit, 8032 core (8051 compatible) | on request | — |
ITE | IT8511E/TE/G | EC & Super I/O | 8bit, 8032 core (8051 compatible) | on request | — |
ITE | IT8512E/F/G | EC & Super I/O | 8bit, 8032 core (8051 compatible) | on request | — |
ITE | IT8513E/F/G | EC & Super I/O | 8bit, 8032 core (8051 compatible) | ? | — |
ITE | IT8516 | EC & Super I/O | ? | ? | Source: [6] |
ITE | IT8301E | External GPIO chip | ? | ? | — |
Nuvoton | 87541V | EC | 16 bit, CR16B core | ? | — |
Nuvoton | PC975513 | EC | 16 bit, CR16B core | ? | — |
Nuvoton | W83L951DG/FG4 | EC | 8 bit, 8051 core | on request | — |
Nuvoton | W83L951ADG/AFG4 | EC | 8 bit, 8051 core | on request | — |
Nuvoton | WPC8765L/WPC8769L4 | EC | 16 bit, ? core | ? | — |
Nuvoton | WPC8763L4 | EC | 16 bit, CR16CPlus core | ? | — |
Nuvoton | WPCE775x4 | EC | 16 bit, CR16CPlus core | ? | — |
Nuvoton | NPCE78nx | EC | ? | ? | — |
Renesas | M388591 | EC | 8bit, 740 family | [7] | — |
Renesas | M38867M8A1 | EC | 8bit, 740 family | [8] | — |
Renesas | H8S/2117R2 | EC | 16 bit, H8S family | ? | Source: [9] |
Renesas | H8S/2161B2 | EC | 16 bit, H8S family | ? | Source: [10], [11], [12], [13] |
Renesas | H8S/2169AV 2 | EC | 16 bit, H8S family | ? | Source: [14], [15], [16] |
Renesas | H8S/64F3169ATE102 | EC | 16 bit, H8S family | ? | — |
NSC | PC87570 | EC & Super I/O | ? | ? | — |
SMSC | FDC37N958FR | EC & Super I/O | ? | ? | — |
SMSC | LPC47N252 | EC & Super I/O | ? | ? | — |
SMSC | MEC1308 | EC | 8bit, 8051 core | ? | — |
SMSC | KBC1122/KBC1122P | EC & Super I/O | 8bit, 8051 core | ? | — |
SST | SST79LF008 | EC & Super I/O & BIOS flash | 8bit, 8051 core | ? | — |
1 Previously Mitsubishi, now Renesas.
2 Previously Hitachi, now Renesas.
3 Previously National (NSC), then Winbond, now Nuvoton.
4 Previously Winbond, now Nuvoton.
Resources
Chromebooks
- The chromebooks EC firmware project
- Building the Chrome EC outside of the Chromium chroot
ENE KB3310/KB3910/KB3920
Very common ECs in netbooks are the KB3310, KB3910 and KB3920 from ENE Technology. The ENE ECs are 8051 based.
The Quanta IL1 reference design seems to use ENE3310 controller. The q1d25i.rom was examined. The EC code is on 0xFFF00000 on One Mini A110. Its 64KB big HOLE0.ROM.
More discussion and info on the ENE ECs:
- ENE KB3700 datasheet.
- eeeUser Discussion
- Memory map of ENE KB3310
- 8051 simulator
- OpenEC Firmware
- OpenEC Project
- Example code that makes use of the KB3310's "Index IO" access functions.
Renesas H8
Some ECs are H8 based.
Toolchains
TODO
I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.
In case this is not legally possible: |