User Tools

Site Tools


doc:hardware:soc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
doc:hardware:soc [2013/07/13 08:32]
lorema
doc:hardware:soc [2016/03/06 11:27] (current)
theoradicus add unsupported SoCs
Line 1: Line 1:
 +====== SoC (System on a Chip) ======
 +There is the perpetual endeavor of making the Linux kernel work on possibly any piece of hardware available. A part of this work takes place inside of projects like OpenWrt, but also inside of the companies that design, manufacture or vend the hardware respectively products based upon it. More or less of this work sooner or later ends gets mainlined, i.e. the code becomes part of the mainline Linux kernel.
 +
 +Whereas of today we take it for granted to have wireless functionality as a convenience everywhere around us, in the beginning, it was a royal PITA. The IEEE 802.11 family of standards fired the imagination of what could be realized with it, BUT the available [[wp>​Device driver|driver]]s for the Linux kernel were poorly written, lacked features or were non-existent. This is actually still true for some of the wireless hardware sold on the market. No matter how fantastic or potent it may be, its Linux drivers don't offer much.
 +
 +From its foundation on OpenWrt has been focusing on CPE hardware such as routers or NAS, and much dedication was invested to support IEEE 802.11 as extensively as possible. Given that the initial hardware, the Linksys WRT54G, was sold about 400,000 times in the first months, it is safe to assume that the work done by the OpenWrt project had an impact.
 +
 +===== Companies =====
 +Most SoC manufacturers license a (soft or hard) [[doc:​hardware:​cpu#​IP core|IP core]] for a certain [[doc:​hardware:​cpu|CPU]] design from a licensor like MIPS or ARM, then combine this with other (self-developed or licensed) (soft or hard) [[doc:​hardware:​cpu#​IP core|IP cores]] for DSP-, wireless-, VoIP-, Sound-, Switch-, etc-functionality and commission the manufacturing of Chips at some semiconductor foundry. These Chips, SoCs, are acquired by different manufacturers of Routers. The latter design [[wp>​Printed circuit board|PCB]]s for whatever purpose and solder the purchased chips (SoC, RAM, Flash) onto them.
 +
 +^ Company ​                     ^  CPU                        ^^^^  IP for [[wp>​Mixed-signal integrated circuit]] ​ ^^^^^^^
 +^ :::                          ^  Intruction set license for   ​^^^ ​ own IP  ^ wired ^^^ optical ^ wireless ^^^
 +^ :::                          ^ [[wp>​MIPS architecture|MIPS]] ^ [[wp>ARM architecture|ARM]] ^ [[wp>​Power Architecture]] ^ other ^ Ethernet ^ DSL ^ DOCSIS ^ ? ^ 802.11 ^ [[wp>​WiMAX]] ^ [[wp>LTE (telecommunication)|LTE]] ^
 +| [[wp>​Broadcom]] ​             | MIPS32, MIPS64 | ARMv6, ARMv7, ARMv8          |     ​| ​                     |  ✔  |  ✔  |  ✔  |     ​| ​ ✔  |     ​| ​    |
 +| [[wp>​Marvell]] ​ (Intel) ​     |                | ARMv5 (XScale, Sheeva), ARMv6, ARMv7   ​| ​    ​| ​                     |  ✔  |     ​| ​    ​| ​    ​| ​ ✔  |     ​| ​    |
 +| [[wp>​Qualcomm]] (Atheros, ZyDAS) | MIPS32 | ARMv5, ARMv6, ARMv7  |     | Ubicom32, Ubicom64 ​  ​| ​ ✔  |     ​| ​    ​| ​    ​| ​ ✔  |     ​| ​    |
 +| [[wp>​MediaTek]] (Ralink) ​    | MIPS32 ​   | ARMv5, ARMv6, ARMv7  |     ​| ​                     |  ✔  |  ✔  |     ​| ​    ​| ​ ✔  |     ​| ​    |
 +| [[wp>​Lantiq]] (Infineon, Texas Instruments) ​              | MIPS32 ​      ​| ​                      ​| ​    ​| ​                     |  ✔  |  ✔  |     ​| ​    ​| ​ ✔  |     ​| ​    |
 +| [[wp>​Samsung]] ​              ​| ​               | ARMv4, ARMv5, ARMv6, ARMv7 |     ​| ​                ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Texas Instuments]] ​     |                | ARMv5, ARMv6, ARMv7   ​| ​    | TMS320 ​                ​| ​ ✔  |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Ikanos]] (Conexant, Analog Devices) | MIPS32, Lexra | ARMv5, ARMv6      |     ​| ​                     |     ​| ​ ✔  |     ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Realtek]] ​              | Lexra, MIPS32 ​         |                       ​| ​    ​| ​                     |  ✔  |  ✔  |     ​| ​    ​| ​ ✔  |     ​| ​    |
 +| [[wp>​Intel]] (Digital Equipment Corporation) (Texas Instruments)| ​  | ARMv4  (StrongARM),​ ARMv5 (XScale), ARMv6          |     | x86, x86-64, IA-64      |  ✔  |     ​| ​ ✔  |     ​| ​ ✔  |     ​| ​    |
 +| [[wp>​Advanced Micro Devices|AMD]] ​ | MIPS32, MIPS64 | ARMv8? ​      ​| ​    | x86, x86-64 ​         |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Apple]] ​                ​| ​               | ARMv7                 ​| ​    ​| ​                     |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[ wp>​Cavium Networks]] ​     | MIPS32, MIPS64 | ARMv4      |     ​| ​                     |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Vitesse Semiconductor]] |                |                       ​| ​    ​| ​                     |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Applied Micro Circuits Corporation]] |   | ARMv8            |  ✔  |                      |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Maxim Integrated]] ​     |                |                       ​| ​    ​| ​                     |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Freescale Semiconductor]] |              | ARMv5, ARMv6, ARMv7  |  ✔  | [[wp>​Motorola 68000]] |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Allwinner Technology]] ​  ​| ​              | ARMv5, ARMv7     ​| ​    ​| ​                     |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Renesas Electronics]] ​  | MIPS64 ​        | ARMv7          |     ​| ​   [[wp>​SuperH]] ,​[[wp>​M32R]] ​         |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Sony]] ​                | MIPS?           ​| ​                      ​| ​ ✔  |                      |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +| [[wp>​Toshiba]] ​             | MIPS?           ​| ​                      ​| ​    ​| ​                     |     ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    ​| ​    |
 +
 +
 +  * [[http://​www.amd.com/​us/​press-releases/​Pages/​Press_Release_20175.aspx|2002-04-29:​ AMD Adopts MIPS Technologies’ 64-BIT Architecture]]
 +
 +
 +==== Examples of devices with an exotic SoC ====
 +
 +  * Cavium CNS1202: [[toh/​cisco/​rvs4000_v2|Cisco RVS4000 v2]]
 +  * Mindspeed Comcerto-SoC:​ [[toh/​zyxel/​nbg5715|ZyXEL NBG5715]]
 +  * Qualcomm Ubicom32: [[toh/​d-link/​dir-657|D-Link DIR-657 HD Media Router 1000]]
 +  * Conexant/​Ikanos CX94610-11Z:​ [[toh/​xavi/​xavi_7968|Xavi 7968]]
 +  * Freescale MPC85xx PowerQUICC III P1014@800MHz [[toh/​tp-link/​tl-wdr4900|TP-Link TL-WDR4900 v1, v1.3]]
 +
 +===== Linux support =====
 +Now that we have an overview over the companies that own/license semiconductor IP, let's have a look of the available support of their products in the **mainline Linux kernel** or in the **OpenWrt Linux kernel**. We don't much care about the Android Linux kernel or about heavily modified (and outdated) Linux kernels.
 +
 +TODO
 +
 +For mainlined Linux kernel-drivers for the 
 +  * IEEE 802.3 (Ethernet) cf. ?
 +    * E.g. [[https://​forum.openwrt.org/​viewtopic.php?​id=17370|BCM63xx codebase with GPL'd Ethernet and USB support]] proves, that sometimes FOSS drivers for Ethernet NICs are not available.
 +  * IEEE 802.11 cf. [[wp>​Comparison of open-source wireless drivers]] and [[http://​wireless.kernel.org/​en/​users/​Drivers]]
 +  * DSL is a Layer1 protocol; as Layer2 protocol usually [[wp>​Asynchronous Transfer Mode|ATM]] is employed. Cf. [[wp>​PPPoE#​How_PPPoE_fits_in_the_DSL_Internet_access_architecture|PPPoEoA vs. PPPoE to PPPoA]]. Long story short, we require support for ATM in the Linux kernel:
 +    * [[https://​git.kernel.org/​cgit/​linux/​kernel/​git/​stable/​linux-stable.git/​tree/​net/​atm/​Kconfig|/​net/​atm/​Kconfig]]
 +    * [[https://​git.kernel.org/​cgit/​linux/​kernel/​git/​stable/​linux-stable.git/​tree/​Documentation/​networking/​atm.txt|Documentation/​atm.txt]]
 +  * For the Lantiq xDSL support cf. [[doc/​hardware/​soc/​soc.lantiq]]. Any better sources?
 +  * FOSS support for the Broadcom DSL-IP does not exist.
 +  * FOSS support for the Ikanos/​Conexant DSL-IP does not exist.
 +
 +
 +===== Platforms =====
 +Each different OpenWrt **[[https://​dev.openwrt.org/​wiki/​platforms|platform]]** represents a set of hardware that share certain common features, such as being part of the same family of [[wp>​System-on-a-chip|SoC]]s. Depending on the semiconductor company that designs the SoC, a SoC-family can consist entirely of IP blocks that are all well-supported,​ maybe already mainlined. But it can also contain IP blocks, for that only raggedly written, feature-poor code exists, that would never be mainlined. Or IP blocks that are completely unsupported by the Linux kernel.
 +
 +==== Qualcomm Atheros ====
 +
 +=== ar5xxx ===
 +Qualcomm Atheros AR5xxx boards (Atheros brand) /* In 2011, Atheros became a subsidiary of Qualcomm operating under the name [[wp>​Qualcomm Atheros]] */
 +  * -> [[doc/​hardware/​soc/​soc.qualcomm.ar5xxx]]
 +
 +=== ar71xx ===
 +Qualcomm Atheros AR7xxx, AR9xxx and QCA9xxx boards ​
 +  * -> [[doc/​hardware/​soc/​soc.qualcomm.ar71xx]]
 +
 +=== ipq806x ===
 +  * -> [[doc/​hardware/​soc/​soc.qualcomm.ipq806x]]
 +
 +=== msm ===
 +  * not supported / removed from Linux in [[http://​git.kernel.org/​cgit/​linux/​kernel/​git/​torvalds/​linux.git/​commit/​arch/​arm/​mach-msm?​id=c0c89fafa289ea241ba3fb22d6f583f8089a719e|March 2015]]
 +
 +==== Lantiq / Infineon ====
 +
 +=== adm5120 ===
 +Infineon/​ADMtek ADM5120
 +  * -> [[doc/​hardware/​soc/​soc.adm5120]]
 +
 +=== adm8668 ===
 +Infineon WildPass ADM8668
 +  * -> [[doc/​hardware/​soc/​soc.adm8668]]
 +
 +=== Lantiq ===
 +XWAY, XRX200 SoCs with ADSL2+ and VDLS2 support in OpenWrt.
 +  * -> [[doc/​hardware/​soc/​soc.lantiq]]
 +
 +==== MediaTek / Ralink ====
 +  * In OpenWrt, all MediaTek/​Ralink SoCs are merged under the target ''​ramips'',​ see [[doc:​hardware:​soc:​soc.ralink|MediaTek-Ralink ramips]]
 +  * [[doc/​hardware/​soc/​soc.mediatek]]
 +
 +==== Broadcom ====
 +=== brcm47xx ===
 +Broadcom 47xx boards ​
 +  * -> [[doc/​hardware/​soc/​soc.broadcom.bcm47xx]]
 +
 +=== bcm63xx ===
 +Broadcom 6338, 6345, 6348, 6358, 6361, 6368, 63168 among other SoCs. Working with **no driver for the on-board DSL/VoIP**
 +  * -> [[doc/​hardware/​soc/​soc.broadcom.bcm63xx]]
 +
 +=== bcm33xx ===
 +Minimal support for some of these SoCs.
 +  * -> [[doc/​hardware/​soc/​soc.broadcom.bcm33xx]]
 +
 +=== brcm2708 (= Raspberry Pi) ===
 +  * OpenWrt support is WIP
 +  * no, there are NO FOSS Linux drivers for the GPU. There is merely an open source wrapper for the closed source GPU driver
 +
 +=== bcm53xx ===
 +ARM-based bcm53xx and ARM-based bcm47xx SoCs:
 +  *  -> [[doc/​hardware/​soc/​soc.broadcom.bcm53xx]]
 +
 +==== Ikanos ====
 +=== Conexant/​Ikanos Solos-W ===
 +Boards based on the CX94610 SoCs.
 +  * -> [[toh:​xavi:​xavi_7968]]
 +  * -> [[:​oldwiki:​openwrtdocs:​hardware:​linksys/​wag54g2]]
 +
 +==== Marvell ====
 +=== orion ===
 +Marvell MV88F**5**18x/​MV88F528x
 +  * ->​[[doc:​hardware:​soc:​soc.marvell]]
 +=== kirkwood ===
 +Marvell MV88F**6**1xx/​MV88F62xx
 +  * ->​[[doc:​hardware:​soc:​soc.marvell]]
 +=== mvebu ===
 +Marvell Armada XP/370
 +  * ->​[[doc:​hardware:​soc:​soc.marvell]]
 +
 +==== Moschip ====
 +=== mcs814x ===
 +Only 2 known devices (supported).
 +[[toh/​devolo/​dlan-usb-extender|Devolo dLAN USB Extender]]
 +
 +
 +==== Freescale ====
 +
 +=== mpc52xx ===
 +Freescale MPC52xx
 +  * ->​[[doc:​hardware:​soc:​soc.freescale.mpc]]
 +
 +=== mpc83xx ===
 +Freescale MPC83xx
 +  * ->​[[doc:​hardware:​soc:​soc.freescale.mpc]]
 +
 +=== mpc85xx ===
 +Freescale MPC8xx
 +  * ->​[[doc:​hardware:​soc:​soc.freescale.mpc]]
 +
 +=== imx21 ===
 +  * broken: https://​dev.openwrt.org/​changeset/​35487
 +
 +=== imx23 ===
 +Freescale i.MX23 series
 +  * ->​[[doc:​hardware:​soc:​soc.freescale.imx]]
 +
 +=== imx6 ===
 +Freescale i.MX6 series
 +  * ->​[[doc:​hardware:​soc:​soc.freescale.imx]]
 +
 +==== Oxford / PLXTECH / Avago ====
 +=== oxnas ===
 +Oxford Semi OX82x / PLXTECH NAS782x
 +  * ->​[[.:​soc:​soc.oxnas]]
 +
 +===== Unsupported SoCs =====
 +
 +Realtek RTL8196C is unsupported,​ see [[https://​forum.openwrt.org/​viewtopic.php?​id=31551]]
 +
 +Ubicom is not supported
 +
 +QCA msm arch was removed from Linux mainline and is unsupported.
 +