If you like BoxMatrix then please contribute Supportdata, Supportdata2, Firmware and/or Hardware (get in touch).
My metamonk@yahoo.com is not reachable by me since years. Please use hippie2000@webnmail.de instead.
Property:EVA
BoxMatrix >> Lexicon >> FRITZ-Terms >> EVA | @ BoxMatrix - IRC-Chat - Translate: de es fr it nl pl |
News | Selectors | Models | Accessories | Components | Environment | Config | Commands | System | Webif | Software | Develop | Lexicon | Community | Project | Media |
Computer | FRITZ | I18N | Telephony | Smarthome | Internet | Protocols | Multimedia | Formats | Hardware | Software | Research |
Term
Term: | EVA | Wiki | Freetz | IPPF | whmf | AVM | Web |
Short for: | Let me know! | ||||||
Location: | Lexicon >> FRITZ-Terms | ||||||
Weblinks: | |||||||
Description: | Proprietary Bootloader by AVM, successor of ADAM2 |
Goto: FRITZ!OS - Features - Compression - Versions - Multi-EVA - Environment - Config - Weblinks - SMW-Browser
Details
EVA is a proprietary Bootloader developed from scratch by AVM. It is the backward compatible successor of ADAM2.
FRITZ!OS
This article covers the AVM developed EVA, for the predecessor by TI see the ADAM2 article.
Features
Features of EVA:
- All ADAM2 Features
- New Version System
- New Config Section
- Support for LZMA Kernel Compression
- Support for NAND-Flash and Serial-Flash
- Ports to dozens of MIPS, ARM and X86 SoCs
- Improved TinyFTP server
- Improved EVA-Shell
Compression
EVA was developed when the AR7 Kernel was ported to version 2.6, which increased the Kernel size by approx. 35%.
Since Flash space was very limited back then better compression methods were needed. AVM decided to use LZMA.
ADAM2 did not directly support any Kernel compression at all, see the Compression section of its article.
The decompressor had to be prepended to the compressed Kernel, a workaround which wasted partition space.
LZMA compresses way better and AVM decided to implement the decompressor in EVA, so Kernels now can be plain LZMA.
A good example is the FRITZ!Box Fon, which was introduced with Kernel 2.4, and later updated to Kernel 2.6.
Fw 04.27 was the last zimage
compressed 2.4 Kernel, fw 4.30 came with LZMA Kernel 2.6 and an EVA urlader.image.
Kernel 2.4 compiles to 1,454,080 bytes, zimage
compressed 675,072 bytes including the prepended decompressor.
Kernel 2.6 compiles to 2,064,518 bytes, LZMA compressed 666,880 bytes with no need for a prepended decompressor.
Early EVA still fitted in the 64 KB ADAM2 partition, including LZMA decompressor, so AVM did the core upgrade at no cost.
However, some Kernel-Modules reside in filesystem, some of which are huge:
- tiatm.ko - 144,156 -> 145,376 bytes
- kdsldmod.ko - 675,212 -> 774,816 bytes
- isdn_fbox.ko - 656,704 -> 539,092 bytes
- capi.ko - 35,100 -> <builtin>
- capidrv.ko - 43,428 -> <builtin>
- capifs.ko - 9,192 -> <builtin>
- avalanche_usb.ko - <builtin> -> 62,732 bytes
- userman_mod.ko - <zero> -> 48,545 bytes
- total: 1,563,792 -> 1,570,561
Also here the Kernel upgrade sums up to zero cost. Together with all improvements the LZMA compressed squashfs filesystem
only grew by 11% from 2,740,232 to 3,047,432 bytes. Complete FRITZ!OS only grew by 8.8%. Well done AVM!
Versions
Excerpt from the FRITZ!Box 7490 boot log captured by the Serial-Console:
(AVM) EVA Revision: 1.1964 Version: 2964 (C) Copyright 2005 AVM Date: Nov 27 2013 Time: 14:33:10 (1) 3 0x0-0x740D
ADAM2 Revision always was 0.18.01, so AVM decided to start EVA with Revision 1.x, with x being a counter which never
increases the leading 1. The 1,x value is stored in the bootloaderVersion variable, x + 1000 in urlader-version.
From the Shell:
# grep -e bootloader -e urlader -e prompt /proc/sys/urlader/environment bootloaderVersion 1.1964 prompt Eva_AVM urlader-version 2964
The values of these 3 variables differ for ADAM2.
In recent models AVM stopped using the urlader-version variable. Example from a 7530ac:
# grep -e bootloader -e urlader -e prompt /proc/sys/urlader/environment bootloaderVersion 1.11581 prompt Eva_AVM
For some of these models the minor number of the bootloaderVersion jumped above 10.000, see this comparison.
This appears to be a symbol for a special type of EVA or the presence of a wrapper for Multi-EVA:
Multi-EVA
There's now a separate Multi-EVA article.
Environment
All ADAM2 and all EVA bootloaders before 1.163
were developed by model and had compiled in model specific defaults.
With EVA 1.163
AVM merged all EVA code and splitted model inependent and model specific builtin defaults.
This is research in progress and may be partially or completely wrong.
Collected from EVA probes 1.153/2031, 1.174/7150, more to come:
Compiled in model independent:
reserved 00:04:0E:FF:FF:00# removed in 1.174 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:06bluetooth 00:04:0E:FF:FF:07# removed in 1.174 my_ipaddress 192.168.178.1 autoload yes modetty0 38400,n,8,1,hw modetty1 38400,n,8,1,hw bootserport tty0 prompt Eva_AVM SerialNumber 0000000000000000 bootloaderVersion 1.153 # build parameter urlader-version 1153 # build parameter
Computed at runtime:
cpufrequency 150000000 # gathered platform specific req_fullrate_freq 125000000 # gathered platform specific sysfrequency 125000000 # gathered platform specific firstfreeaddress 0x946AE450 # pointer to end of EVA in RAM
Model specific computed from the Config section:
mtd0 0x90000000,0x90000000 mtd1 0x90010000,0x903C0000 mtd2 0x90000000,0x90010000 mtd3 0x903C0000,0x903E0000 mtd4 0x903E0000,0x90400000 memsize 0x01000000 flashsize 0x00400000
Model specific variables from the Config section:
# Present in 1.153 probe: HWRevision 113 ProductID Fritz_Box_2031 usb_device_id 0x3702 usb_revision_id 0x0200 usb_device_name USB DSL Device usb_manufacturer_name AVM annex B # Additionally in 1.174 probe: SerialNumber 0000000000000000 reserved <empty> bluetooth <empty> usb_rndis_mac 00:1A:4F:* usb_board_mac 00:1A:4F:* macdsl 00:1A:4F:* macwlan 00:04:0E:* macb 00:1A:4F:* maca 00:1A:4F:*
....
Never clear the TFFS partitions even if 1000 postings and tools recommend it. It always was a stupid messup!
Using the same MAC addresses everywhere is as stupid as opening an unprotected WLAN because of clearing the key.
Config
EVA introduces a Config structure located at 0x580 - 0x97C, which contains parameters which are unique for this very device.
Version 2
Offset | L | Description | Example 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 (unused) | 0x00000000 |
0x5B0 | 4 | cpufrequency (unused) | 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 to end of structure | 0x90000670 |
0x5F0 | 4 | Pointer to first variable value | 0x9000096A => "00:1A:4F:MM:AA:CC" + 0x00 |
0x5F4 | 4 | Pointer to first variable name | 0x90000969 => "maca" + 0x00 |
... | ... | ... | ... |
... | 4 | End of Pointer-List | 0x00000000 |
... | 4 | Padding to 64-bit boundary if required | 0x00000000 |
... | ... | End of structure | "wlan_cal" + 0x00 + "03E6,0006,..." + 0x00 + 0xFF ... |
Version 3
6490 uses ...
Weblinks
- Wehavemorefun ADAM2/EVA article (archived, german, mainly by me)
- Freetz ADAM2/EVA article (german, in depth info by me)
- OpenWRT EVA article