ADAM2

From Fritz!Box
Jump to: navigation, search

AVM Wiki >> Lexikon >> ADAM2 @ whmf   -   IRC-Chat   -   hu nl it English
Community Modelle Zubehör Environment Konfiguration Shell-Befehle Software Freetz Lexikon Tipps+Tricks Bilder

Hardware System Netzwerk Dienste Telefonie Multimedia Automation Business Extras Sonstiges Todo

Contents

Begriff

ADAM2 ist ein Bootloader der eine Partition ganz am Anfang des Flash-EEPROM belegt. Die Größe dieser Partition variiert von 64kB bis 256kB und ist immer in der Variable mtd2 dimensioniert.

Geschichte

ADAM2 kam ursprünglich nur auf TI SoC-Systemen zum Einsatz. Er wurde 1996-2003 von Texas Instruments entwickelt, 2001-2003 über Telogy Networks, eine Firma die TI 1999 kaufte. ADAM2 wurde an viele Routerhersteller verstreut die jeweils ihren Teil hinzufügten. Daher gibt es viele variierende Implementierungen dieses Bootloaders, die jeweils die nicht von TI stammenden Besonderheiten eines jeden Gerätes handhaben. 2003 landete ADAM2 auch bei AVM um modifiziert 2004 in der ersten FRITZ!Box verkauft zu werden. FBsl Konsolen-Header:

ADAM2 Revision TI:0.18.01 AVM:$ProjectRevision: 1.20 $
(C) Copyright 1996-2003 Texas Instruments Inc. All Rights Reserved.
(C) Copyright 2003 Telogy Networks, Inc.
(C) Copyright 2003 AVM

Mit der Einführung des Kernel 2.6 wurde ADAM2 von AVM komplett überarbeitet, und man entschied sich ADAM2 in EVA umzutaufen, was eher als Späßchen zu sehen ist. Seitdem muss man ADAM2/EVA nebeneinander nennen obwohl es sich um einen weiterentwickelten aber nahezu funktionsgleichen Bootloader handelt. Um dieses Doppelnennungs-Problem hier nicht auch zum Doppellink-Problem zu machen wurden die beiden Dokumente ADAM2/EVA hier als ADAM2-Referenz zusammengefasst in der die AVM und EVA-Besonderheiten angemerkt werden.

Versionsschema

ADAM2:

ADAM2 enthält noch obige drei Copyright-Vermerke. Auch sind drei Versionssysteme integriert. Der TI-Teil 0.18.01 steht noch in der TI-Variable bootloaderVersion und bedeutet Texas Instruments Version 0.18, Telogy Networks Version 01 (es gab bisher mindestens 01-03, in der FRITZ!Box jedoch nur 01). Die Nachkommstellen der AVM-Version werden zwei- bis dreistellig in der AVM-Variable urlader-version eingetragen.

EVA:

Mit der Umbenennung in EVA entfernte AVM die TI / Telogy Copyright-Vermerke und änderte das Versionsschema. Die TI-Variable bootloaderVersion enthält seitdem eine 1.xxx Version wobei die 1 hardcoded für EVA steht. xxx ist die fortlaufende Versionsnummer zu der 1000 addiert wird um sie in der AVM-Variable urlader-version einzutragen. Dies erklärt auch warum der 1256te Compile eine bootloaderVersion 1.1256 und eine urlader-version 2256 hat.

Handbücher

TI hat kein Referenz-Handbuch zu ADAM2 veröffentlicht, Werke dritter gibt's aber einige. Diese beschreiben den bei anderen auf AR7 basierenden Routern anzutreffenden ADAM2 und nicht die AVM-Version, enthalten aber nützliche Infos.

Quelltext

  • Die Telogy Version 03 von 2003 (also vor [2003] und nach [03] AVM) hier zum Stöbern
  • Den gleichaltrigen Quelltext des /proc Interfaces auch zum Stöbern
  • Der Quelltext des aktuellen /proc Interfaces ist in tffs.ko zu finden.

Funktionen

Standard ADAM2-Funktionen am Beispiel des obigen AR7-Quelltextes:

ADAM2-Optionen die nicht in der FRITZ!Box vorkommen:

FRITZ!Box-spezifische Erweiterungen:

Aktualisierung

Wenn der Bootloader zerstört wird ist eine Box nicht mehr erreichbar, diesen Zustand nennt man im Jargon gebrickt, die Box ist nur noch vom versierten Techniker über EJTAG zu retten und ansonsten wertlos. Daher ändert ein Update den Bootloader nur wenn es unbedingt sein muss. Dies war bei der Umstrukturierung der Partitionierung früher Modelle nötig und wird seitdem nicht mehr gemacht. Jenseits dieser Uraltmodelle hat eine Box also ihr Leben lang die selbe Urladerversion wie bei der Auslieferung. Auch eine Recovery ersetzt den Bootloader nur im Notfall, wenn dessen Checksumme nicht mehr stimmt.

Solch ein umstrukturierendes Update erkennt man daran dass das Firmware-Image ein urlader.image enthält, gab es danach weitere Updates enthalten sie dieses Image nicht mehr. AVM bewahrt dann das umstrukturierende Update zusätzlich auf und verweist darauf als Zwischenupdate. Dieses muss man dann zuerst einspielen damit das Folgeupdate funktioniert. Dies betrifft nur sehr wenige und sehr alte Modelle, ist aber wissenswert. Neben dem urlader.image mit ADAM2/EVA liegt noch eine urlader.config bei, die den Umgang mit Variablen aus dem Urlader-Environment regelt, sowie die Update-Programme urlader.setconfig24 und urlader.setconfig26 für die beiden verwendeten Kernel-Generationeen.

Environment

Eine der Hauptaufgaben von ADAM2 ist die Verwaltung des Urlader-Environments, eine wichtige und vom Linux-System unabhängige Sammlung von Einstellungen in Form von Variablen. Obwohl das Urlader-Environment als eine Einheit betrachtet werden kann entspringen die darin enthaltenen Daten verschiedenen Quellen:

Diese Komponenten zusammen stellen das Urlader-Environment dar. Die ADAM2-internen Defaults sind fest einkompiliert und unveränderbar. Die Serialisierung wird im Werk durchgeführt und besteht aus nicht mehr reproduzierbaren Daten. Ihr Verlust kann nicht durch eine Recovery gerettet werden. Diese Daten sind auch nicht beim Sichern der Konfiguration in der Export-Datei enthalten.

WIP - Diese Angaben sind der aktuelle Stand der Recherche und werden sich wahrscheinlich noch ändern!

Urlader-Konfig

Im EVA Bootloader gibt es einen 1020 Bytes großen Konfigbereich (von Offset 0x580 bis exclusive 0x97C) in dem die grundlegende Konfiguration der Box eingefroren ist. Am Anfang dieses Breichs befindet sich eine Struktur die aus einer Reihe von 32-bit Werten im Endian des verwendeten SoC besteht. Sie ist nur gültig wenn der erste Eintrag die Version 0x00000002 enthält. An diesem Eintrag lässt sich auch direkt der Endian des Bootloaders ermitteln.

Die Struktur enthält die RAM- und Flashgröße, Einstellungen für den Memory Controller (EMIF), die Größen der über ADAM2 erreichbaren MTD Partitionen sowie eine mit 0x00000000 terminierte Pointertabelle auf die Strings des in ADAM2 gesicherten Teils des Urlader-Environments. Der verbleibende Bereich wird von oben nach unten mit den Strings der Variablen gefüllt. Der Sonderfall wlan_cal gefolgt vom Kalibrierwert bei Generation 7170 wird immer am Strukturende eingetragen. Der ungenutzte Bereich bis zu den Variablen ist gelöscht also mit 0xFF gefüllt.

Bei einer deutschen 7170 werden im Urlader-Konfigbereich die Variablen wlan_cal, maca, macb, macwlan, macdsl, usb_board_mac, usb_rndis_mac, bluetooth (leer), reserved (leer), HWRevision, ProductID, SerialNumber, usb_device_id, usb_revision_id, usb_manufacturer_name und annex gespeichert. Ein leerer Variablenwert bedeutet "Fallback auf Default".

Wenn EVA nicht ab Werk installiert ist, sondern per Update auf die Box kommt, wird die Urlader-Konfiguration beim Update mit dem Programm urlader.setconfig24 oder urlader.setconfig26 erzeugt. Die Datei urlader.config im Firmware-Image enthält eine Liste mit Environment-Variablen, die dabei "eingefroren" werden sollen.

Offset Länge Bedeutung Bsp. 7170 #1153
0x580 4 Magic/Version/Endian 0x00000002
0x584 4 EMIF+0x04 - AsyncWaitCycleCR 0x40000080
0x588 4 EMIF+0x08 - SDRAMBankCR 0x00006021
0x58C 4 EMIF+0x0C - SDRAMRefreshCR 0x000003D5
0x590 4 EMIF+0x20 - SDRAMTimingReg 0x02215818
0x594 4 EMIF+0x10 - AsyncBankCR0 0x0C46E211
0x598 4 EMIF+0x14 - AsyncBankCR1 0x10908700
0x59C 4 EMIF+0x18 - AsyncBankCR2 0x05A62D34
0x5A0 4 EMIF+0x1C - AsyncBankCR3 0x05A62D36
0x5A4 4 memsize 0x02000000
0x5A8 4 flashsize 0x00800000
0x5AC 4 sysfrequency (ungenutzt) 0x00000000
0x5B0 4 cpufrequency (ungenutzt) 0x00000000
0x5B4 4 mtd0 start 0x90000000
0x5B8 4 mtd0 length 0x00000000
0x5BC 4 mtd1 start 0x90010000
0x5C0 4 mtd1 length 0x00770000
0x5C4 4 mtd2 start 0x90000000
0x5C8 4 mtd2 length 0x00010000
0x5CC 4 mtd3 start 0x90780000
0x5D0 4 mtd3 length 0x00040000
0x5D4 4 mtd4 start 0x907C0000
0x5D8 4 mtd4 length 0x00040000
0x5DC 4 mtd5 start 0x00000000
0x5E0 4 mtd5 length 0x00000000
0x5E4 4 feature_low 0x0000001B
0x5E8 4 feature_high 0x00000000
0x5EC 4 Pointer auf Strukturende 0x90000670
0x5F0 4 Pointer auf 1. Variablen-Wert 0x9000096A => "00:1A:4F:MM:AA:CC" + 0x00
0x5F4 4 Pointer auf 1. Variablen-Namen 0x90000969 => "maca" + 0x00
... ... ... ...
... 4 Ende der Pointer-Liste 0x00000000
... 4 ggf. Padding auf 64bit 0x00000000
... ... Strukturende "wlan_cal" + 0x00 + "03E6,0006,..." + 0x00 + 0xFF ...

Urlader-Defaults

In allen ADAM2 Bootloadern befinden sich fest einkompilierte Defaults für einige wichtige Urlader-Variablen. Diese treten in Kraft wenn das Environment zerstört oder gelöscht wurde und keine Urlader-Konfig vorhanden ist oder der jeweilige Wert darin leer ist. Bei älteren Bootloadern ist dies die einzige Quelle das Urlader-Environment nach Löschen der TFFS-Partitionen zu rekonstruieren. Die meisten Defaults sind geräteübergreifend gleich. In der folgenden Tabelle sind gerätespezifische Defaults fett markiert.

Variable 7170 #1153
reserved 00:04:0E:FF:FF:00
maca 00:04:0E:FF:FF:01
macb 00:04:0E:FF:FF:02
macwlan 00:04:0E:FF:FF:03
macdsl 00:04:0E:FF:FF:04
usb_board_mac 00:04:0E:FF:FF:05
usb_rndis_mac 00:04:0E:FF:FF:06
bluetooth 00:04:0E:FF:FF:07
SerialNumber 0000000000000000
prompt Eva_AVM
bootserport tty0
modetty0 38400,n,8,1,hw
modetty1 38400,n,8,1,hw
autoload yes
HWRevision 94
my_ipaddress 192.168.178.1
ProductID Fritz_Box_7170
usb_device_id 0x3D00
usb_revision_id 0x0200
usb_device_name USB DSL Device
usb_manufacturer_name AVM
annex B

Artikel zum Thema

Siehe auch

Firmware: (109)

Links

  • PSBboot ist ein Nachfolger von TI, der einige ADAM2-Schwächen adressiert. Auf der FRITZ!Box wird er nicht genutzt.