[Gelöst] FW 6.50 für 7490 in Trunk rev. 13490 - keine Auswahlmöglichkeit

Die 64KB sind doch aber auch als BLOB schon ein Bereich, der in Abhängigkeit von seiner Adresse im Speicher unterschiedliche Pointer enthält. Ich weiß nicht, wieviele Ausrufungszeichen ich hinter diesen Satz setzen soll.

Entweder wir verstehen unter einem BLOB etwas vollkommen anderes oder Du willst einfach nicht verstehen, daß dieser Bereich andere Inhalte hat, wenn er an eine andere Adresse geladen wird.

Den "Abstecher" zu den Labor-Versionen verstehe ich nun wieder gar nicht mehr ... ich habe das nur als Beispiel angeführt, daß schon zwischen der letzten Release-Version und der Labor-Version bei mir sich die Adresse verschoben hat, wo dieser "config"-Bereich im Speicher landet.

Please do me a favor ... schreib deutlich und genau, was Du meinst. Offenbar reden wir immer weiter aneinander vorbei und ich weiß inzwischen auch nicht mehr, wie ich Dir die Idee ausreden soll, den gesamten 64 KB-Block als "binary large object" anzusehen, das man als "black box" behandeln könnte (das geht max. für den FDT, der sollte (vor dem Linken/Laden) relozierbar sein). Vielleicht kann das ja jemand anderes besser ...
 
Woher weißt Du denn, daß bei einem eigenen Kernel dieser Bereich auch wieder genau an der gleichen Adresse landet?

Wenn es der gleiche Kernel ist, brauchst Du kein "replace kernel" und ansonsten wird praktisch jede Änderung den Bereich mit einiger Sicherheit auch verschieben.

Da sollte es schon reichen, wenn ein LKM fest einkompiliert wird oder umgekehrt (Y vs. M) - alles, was da vor dem 64K-Block in das Datensegment eingebaut wird in der vmlinux.lds.S und eine variable Größe haben kann, verschiebt doch den Location-Pointer für die Anweisung, die dem Symbol __avm_kernel_config_start seine Adresse zuweist:
Code:
        /* writeable */
        __data_start = .;
        .data : {       /* Data */
                . = . + DATAOFFSET;             /* for CONFIG_MAPPED_KERNEL */

                INIT_TASK_DATA(THREAD_SIZE)
                NOSAVE_DATA
                CACHELINE_ALIGNED_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
                READ_MOSTLY_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT)
                DATA_DATA
                CONSTRUCTORS
                . = ALIGN(4 * 1024);
                __avm_kernel_config_start = .;
                . += 64 * 1024;
                __avm_kernel_config_end = .;
        }
Wie willst Du denn sicherstellen, daß der Bereich immer an derselben Adresse steht (das wäre dann die von mir erwähnte "absolute Adresse")?

Selbst wenn man den Bereich im eigenen Kernel irgendwo vor die variablen Daten verschiebt (müßte theoretisch sogar gehen), liegt er bei AVM hinter diesen Daten und damit stehen dort auch die Adressen für die Speicherung an dieser Stelle im Inhalt.

Die einzige (halbwegs realistische, aber für mich sinnlose) Idee könnte es sein, bei kleiner werdenden variablen Daten vor dem Block den dann doch an die Adresse zu schieben (nach oben geht, nach unten halt nicht), wo er bei AVM auch liegt.

Nun habe ich aber bisher eher selten die Forderung nach "replace kernel" gelesen, weil da etwas entfernt werden sollte (womit dann kleinere variable Daten plausibel wären) ... zumindest nicht bei der 7490 (oder anderen VR9-Boxen), wo schon das Übersetzen eines statisch gelinkten Kernel-Modules als LKM eher "fragwürdig" ist (zumindest unter Platzaspekten).

Fügst Du Daten hinzu (da reichen ggf. schon genügend Symbole für weitere Module, wenn solche Definitionen die 4K-Grenze verschieben sollten, an der __avm_kernel_config_start ausgerichtet ist), wird das eher in Richtung größerer Daten gehen und dem begegnest Du auch nicht mit "mehr Lücken" im Speicher.

BTW ... solange "DATAOFFSET" "0" ist (das sollte bei AVM auch der Fall sein, es wäre mir neu, daß bei FRITZ!Boxen das Datensegment im Kernel an einer festen Adresse beginnt), ist nicht einmal der Beginn des gesamten Datensegments an derselben Adresse garantiert, der hängt auch schon davon ab, wieviel Platz das davor liegende Textsegment für den Kernel braucht.

EDIT: Quatsch ... auch mit DATAOFFSET <> 0 ist das ja keine feste Adresse, da wird ja nur ein zusätzlicher Bereich "übersprungen" vom Location-Counter - langsam werde ich ganz wuschig. Mir fallen einfach auch keine besseren Erklärungen mehr ein - am Ende kommt bei mir so etwas wie die Idee auf, einfach "Das ist nun mal so, basta." zu schreiben. Wenn das dann jemand (begründet) in Zweifel ziehen will, bitte ... ich weiß im Moment wirklich nicht mehr weiter. Vielleicht sehe ja auch ich die ganze Geschichte vollkommen falsch - dann möge man mich eines Besseren belehren.
 
Zuletzt bearbeitet:
Selbst wenn einzelne Freetz-Nutzer vielleicht Module entfernen sollten aus der Konfiguration (wie gesagt, Speicherplatzprobleme dürften das bei VR9-Modellen eigentlich nicht sein, vielleicht bei einer 7360v1, aber die hat m.W. keine aktuelle Firmware), ist der normale Fall doch das Hinzufügen - von Kartenlesern bis zu CULs und von "iptables" bis zu NFS-Unterstützung. Wenn Du eine Lösung suchst, die für beides funktioniert, muß sie auch damit klarkommen, wenn der Kernel größer wird. Die Leute, die auch heute noch bei der 7490 das Entfernen diverser Firmware-Teile ausführen lassen (erst recht beim neuen Design) sind mit einiger Wahrscheinlichkeit eher "zu faul" für das Erstellen einer neuen Konfiguration und für das Hinterfragen des Sinns alter Einstellungen - ich lese das immer wieder, daß sie das schon seit der 7270 so machen und da ergab das wegen des knappen Flash-Speichers auch noch wirklich Sinn. Bei genug freiem Speicher handelt man sich bloß schwer zu diagnostizierende Probleme ein, wenn man ohne wirkliche Not Teile der AVM-Firmware entfernen läßt. Wenn man die nicht benutzt, bringt es für die Performance auch keinen Vorteil, wenn sie nicht vorhanden sind ... aber wehe, man braucht dann Teile davon (tr069fwupdate für das Laden von Plugins) doch irgendwann. Solange Du keinen Datenträger mit den erwähnten Dateisystemen verwendest, werden die Treiber selbst bei AVM nicht geladen ... ist der Platz im Dateisystem bei Dir so knapp, daß die Einsparung dort tatsächlich etwas bringt? Im Kernel dürfte das < 1 KB gesamt sparen - so rein aus dem Bauch heraus, weil eigentlich nur ein paar Symbole wegfallen. Aber zurück zur AVM-Konfiguration ...

-
Üsch schwör ... wenn es einfach durch Auslesen und Einbinden an derselben Adresse (zuverlässig) funktionieren würde, hätte ich das zumindest als Möglichkeit erwähnt - ich sehe nicht, wie das gehen sollte.

Manchmal kann ich auch nicht so richtig erkennen, wo es sich um eine Idee, eine Meinung oder eine Frage handelt ... das liegt auch ein ganz klein wenig daran, daß Du beim Satzbau auch "etwas schusselig" bist und man sich ab und an (und häufiger als das "Wegdenken" von Tippfehlern, die passieren jedem) den Sinn auch mal zusammenreimen muß. Das ist auch kein Beinbruch ... aber eben die Ursache für so manches Mißverständniss. Ist ja auch meinerseits nicht böse gemeint ... ich verzweifelte halt mehr und mehr, weil wir (für mein Empfinden) immer mehr aneinander vorbei geschrieben haben.
 
Man könnte doch auch entsprechend dieser Adresse im Blob die Pointer aktualisieren
Warum erinnert mich das jetzt an eine "relocation", wie sie ein Linker machen würde?
 
Nicht blöd, aber am Ende (behaupte ich mal) viel aufwändiger als das Generieren der passenden Datei, die dann einfach in ein Object-File übersetzt werden kann, was wieder vom Linker (bzw. später vom Loader) genau in dieser Form "verarbeitet" wird.

Du bist doch nun schon etwas vorwärts gekommen, warum jetzt die Rolle rückwärts?

Hast Du mal den FDT aus dem Speicher mit dem Ergebnis des Aufrufs von "dtc" für die Datei der 7490 verglichen? Ist das eine 1:1-Kopie?

Falls Du keine eigene Toolchain hast, die Dir die dtb-Dateien erzeugt, hier ist die Base64-kodierte Datei für die 7490 (5174 Byte):
Code:
I2luY2x1ZGUgPGxpbnV4L2F2bV9od19jb25maWdfZGVmLmg+CiNpbmNsdWRlIDxhc20vbWFjaC1s
YW50aXEvY29tbW9uL2lmeF9ncGlvX2RlZi5oPgojaW5jbHVkZSAidnI5LmR0c2kiCgovIHsKCWF2
bS1ody1yZXZpc2lvbnsKCQljb21wYXRpYmxlID0gImF2bSxhdm1faHdfcmV2aXNpb24iOwoJCXJl
dmlzaW9uID0gIjE4NSI7Cgl9OwoJYXZtLWdwaW97CgkJY29tcGF0aWJsZSA9ICJhdm0sYXZtX2dw
aW9fZ2VuZXJpYyI7CgkJZ3Bpb19hdm1fbGVkX3Bvd2VyewoJCQl2YWx1ZSA9IDw0NT47CgkJCXBh
cmFtID0gPEFWTV9ERUZfSFdfUEFSQU1fR1BJT19PVVRfQUNUSVZFX0xPVz47CgkJCWNvbmZpZyA9
IDxJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0RJUl9PVVQgSUZYX0dQSU9fSU9DVExfUElOX0NP
TkZJR19BTFRTRUwwX0NMRUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMV9DTEVB
UiBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX09VVFBVVF9TRVQ+OwoJCQltb2R1bGVfaWQgPSA8
REVGX0lGWF9HUElPX01PRFVMRV9MRUQ+OwoJCX07CgkJZ3Bpb19hdm1fbGVkX2ludGVybmV0ewoJ
CQl2YWx1ZSA9IDw0Nz47CgkJCXBhcmFtID0gPEFWTV9ERUZfSFdfUEFSQU1fR1BJT19PVVRfQUNU
SVZFX0xPVz47CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0RJUl9PVVQg
SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwwX0NMRUFSIElGWF9HUElPX0lPQ1RMX1BJ
Tl9DT05GSUdfQUxUU0VMMV9DTEVBUiBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX09VVFBVVF9T
RVQ+OwoJCQltb2R1bGVfaWQgPSA8REVGX0lGWF9HUElPX01PRFVMRV9MRUQ+OwoJCX07CgkJZ3Bp
b19hdm1fbGVkX2Zlc3RuZXR6ewoJCQl2YWx1ZSA9IDwzNj47CgkJCXBhcmFtID0gPEFWTV9ERUZf
SFdfUEFSQU1fR1BJT19PVVRfQUNUSVZFX0xPVz47CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NU
TF9QSU5fQ09ORklHX0RJUl9PVVQgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwwX0NM
RUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMV9DTEVBUiBJRlhfR1BJT19JT0NU
TF9QSU5fQ09ORklHX09VVFBVVF9TRVQ+OwoJCQltb2R1bGVfaWQgPSA8REVGX0lGWF9HUElPX01P
RFVMRV9MRUQ+OwoJCX07CgkJZ3Bpb19hdm1fbGVkX3dsYW57CgkJCXZhbHVlID0gPDM1PjsKCQkJ
cGFyYW0gPSA8QVZNX0RFRl9IV19QQVJBTV9HUElPX09VVF9BQ1RJVkVfTE9XPjsKCQkJY29uZmln
ID0gPElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfRElSX09VVCBJRlhfR1BJT19JT0NUTF9QSU5f
Q09ORklHX0FMVFNFTDBfQ0xFQVIgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwxX0NM
RUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfT1VUUFVUX1NFVD47CgkJCW1vZHVsZV9pZCA9
IDxERUZfSUZYX0dQSU9fTU9EVUxFX0xFRD47CgkJfTsKCQlncGlvX2F2bV9sZWRfaW5mb3sKCQkJ
dmFsdWUgPSA8MzM+OwoJCQlwYXJhbSA9IDxBVk1fREVGX0hXX1BBUkFNX0dQSU9fT1VUX0FDVElW
RV9MT1c+OwoJCQljb25maWcgPSA8SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19ESVJfT1VUIElG
WF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMF9DTEVBUiBJRlhfR1BJT19JT0NUTF9QSU5f
Q09ORklHX0FMVFNFTDFfQ0xFQVIgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19PVVRQVVRfU0VU
PjsKCQkJbW9kdWxlX2lkID0gPERFRl9JRlhfR1BJT19NT0RVTEVfTEVEPjsKCQl9OwoJCWdwaW9f
YXZtX2xlZF9pbmZvX3JlZHsKCQkJdmFsdWUgPSA8NDY+OwoJCQlwYXJhbSA9IDxBVk1fREVGX0hX
X1BBUkFNX0dQSU9fT1VUX0FDVElWRV9MT1c+OwoJCQljb25maWcgPSA8SUZYX0dQSU9fSU9DVExf
UElOX0NPTkZJR19ESVJfT1VUIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMF9DTEVB
UiBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfQ0xFQVIgSUZYX0dQSU9fSU9DVExf
UElOX0NPTkZJR19PVVRQVVRfU0VUPjsKCQkJbW9kdWxlX2lkID0gPERFRl9JRlhfR1BJT19NT0RV
TEVfTEVEPjsKCQl9OwoJCWdwaW9fYXZtX2J1dHRvbl9kZWN0ewoJCQl2YWx1ZSA9IDwxPjsKCQkJ
cGFyYW0gPSA8QVZNX0RFRl9IV19QQVJBTV9HUElPX0lOX0FDVElWRV9MT1c+OwoJCQljb25maWcg
PSA8SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19ESVJfSU4gSUZYX0dQSU9fSU9DVExfUElOX0NP
TkZJR19BTFRTRUwwX1NFVCBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfQ0xFQVI+
OwoJCQltb2R1bGVfaWQgPSA8REVGX0lGWF9HUElPX01PRFVMRV9MRUQ+OwoJCX07CgkJZ3Bpb19h
dm1fYnV0dG9uX3dsYW57CgkJCXZhbHVlID0gPDI5PjsKCQkJcGFyYW0gPSA8QVZNX0RFRl9IV19Q
QVJBTV9HUElPX0lOX0FDVElWRV9MT1c+OwoJCQljb25maWcgPSA8SUZYX0dQSU9fSU9DVExfUElO
X0NPTkZJR19ESVJfSU4gSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwwX1NFVCBJRlhf
R1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfU0VUPjsKCQkJbW9kdWxlX2lkID0gPERFRl9J
RlhfR1BJT19NT0RVTEVfTEVEPjsKCQl9OwoJCWdwaW9fYXZtX2RlY3RfcmVzZXR7CgkJCXZhbHVl
ID0gPDMwPjsKCQkJcGFyYW0gPSA8QVZNX0RFRl9IV19QQVJBTV9HUElPX09VVF9BQ1RJVkVfTE9X
PjsKCQkJY29uZmlnID0gPElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfRElSX09VVCBJRlhfR1BJ
T19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDBfQ0xFQVIgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJ
R19BTFRTRUwxX0NMRUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfT0RfU0VUPjsKCQkJbW9k
dWxlX2lkID0gPERFRl9JRlhfR1BJT19NT0RVTEVfUElHTEVUPjsKCQl9OwoJCWdwaW9fYXZtX2Rl
Y3RfdWFydF9yeHsKCQkJdmFsdWUgPSA8MTE+OwoJCQlwYXJhbSA9IDxBVk1fREVGX0hXX1BBUkFN
X05PX1BBUkFNPjsKCQkJY29uZmlnID0gPElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfRElSX0lO
IElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMF9TRVQgSUZYX0dQSU9fSU9DVExfUElO
X0NPTkZJR19BTFRTRUwxX0NMRUFSPjsKCQkJbW9kdWxlX2lkID0gPERFRl9JRlhfR1BJT19NT0RV
TEVfUElHTEVUPjsKCQl9OwoJCWdwaW9fYXZtX2RlY3RfdWFydF90eHsKCQkJdmFsdWUgPSA8MTI+
OwoJCQlwYXJhbSA9IDxBVk1fREVGX0hXX1BBUkFNX05PX1BBUkFNPjsKCQkJY29uZmlnID0gPElG
WF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfRElSX09VVCBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklH
X0FMVFNFTDBfU0VUIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMV9DTEVBUiBJRlhf
R1BJT19JT0NUTF9QSU5fQ09ORklHX09EX1NFVD47CgkJCW1vZHVsZV9pZCA9IDxERUZfSUZYX0dQ
SU9fTU9EVUxFX1BJR0xFVD47CgkJfTsKCQlncGlvX2F2bV9waWdsZXRfbm9lbWlmX3Byb2d7CgkJ
CXZhbHVlID0gPDE1PjsKCQkJcGFyYW0gPSA8QVZNX0RFRl9IV19QQVJBTV9OT19QQVJBTT47CgkJ
CWNvbmZpZyA9IDxJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0RJUl9PVVQgSUZYX0dQSU9fSU9D
VExfUElOX0NPTkZJR19BTFRTRUwwX0NMRUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxU
U0VMMV9DTEVBUiBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX09EX1NFVD47CgkJCW1vZHVsZV9p
ZCA9IDxERUZfSUZYX0dQSU9fTU9EVUxFX0ZQR0E+OwoJCX07CgkJZ3Bpb19hdm1fcGlnbGV0X25v
ZW1pZl9jbGt7CgkJCXZhbHVlID0gPDI4PjsKCQkJcGFyYW0gPSA8QVZNX0RFRl9IV19QQVJBTV9H
UElPX09VVF9BQ1RJVkVfSElHSD47CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NUTF9QSU5fQ09O
RklHX0RJUl9PVVQgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwwX0NMRUFSIElGWF9H
UElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMV9DTEVBUiBJRlhfR1BJT19JT0NUTF9QSU5fQ09O
RklHX09EX1NFVD47CgkJCW1vZHVsZV9pZCA9IDxERUZfSUZYX0dQSU9fTU9EVUxFX0ZQR0E+OwoJ
CX07CgkJZ3Bpb19hdm1fcGlnbGV0X25vZW1pZl9kYXRhewoJCQl2YWx1ZSA9IDwyMD47CgkJCXBh
cmFtID0gPEFWTV9ERUZfSFdfUEFSQU1fTk9fUEFSQU0+OwoJCQljb25maWcgPSA8SUZYX0dQSU9f
SU9DVExfUElOX0NPTkZJR19ESVJfT1VUIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VM
MF9DTEVBUiBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfQ0xFQVIgSUZYX0dQSU9f
SU9DVExfUElOX0NPTkZJR19PRF9TRVQ+OwoJCQltb2R1bGVfaWQgPSA8REVGX0lGWF9HUElPX01P
RFVMRV9GUEdBPjsKCQl9OwoJCWdwaW9fYXZtX3BpZ2xldF9ub2VtaWZfZG9uZXsKCQkJdmFsdWUg
PSA8MTk+OwoJCQlwYXJhbSA9IDxBVk1fREVGX0hXX1BBUkFNX0dQSU9fSU5fQUNUSVZFX0xPVz47
CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0RJUl9JTiBJRlhfR1BJT19J
T0NUTF9QSU5fQ09ORklHX0FMVFNFTDBfQ0xFQVIgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19B
TFRTRUwxX0NMRUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfUFVERU5fU0VUPjsKCQkJbW9k
dWxlX2lkID0gPERFRl9JRlhfR1BJT19NT0RVTEVfRlBHQT47CgkJfTsKCQlncGlvX2F2bV9waWds
ZXRfbm9lbWlmX2ZwZ2Fva3sKCQkJdmFsdWUgPSA8OD47CgkJCXBhcmFtID0gPEFWTV9ERUZfSFdf
UEFSQU1fR1BJT19JTl9BQ1RJVkVfSElHSD47CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NUTF9Q
SU5fQ09ORklHX0RJUl9JTiBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDBfQ0xFQVIg
SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwxX0NMRUFSPjsKCQkJbW9kdWxlX2lkID0g
PERFRl9JRlhfR1BJT19NT0RVTEVfRlBHQT47CgkJfTsKCQlncGlvX2F2bV9waWdsZXRfZGVjdF9p
bnsKCQkJdmFsdWUgPSA8OT47CgkJCXBhcmFtID0gPEFWTV9ERUZfSFdfUEFSQU1fR1BJT19JTl9B
Q1RJVkVfTE9XPjsKCQkJY29uZmlnID0gPElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfRElSX0lO
IElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMF9TRVQgSUZYX0dQSU9fSU9DVExfUElO
X0NPTkZJR19BTFRTRUwxX1NFVD47CgkJCW1vZHVsZV9pZCA9IDxERUZfSUZYX0dQSU9fTU9EVUxF
X0ZQR0E+OwoJCX07CgkJZ3Bpb19hdm1fcGlnbGV0X2Nsb2Nrb3V0ewoJCQl2YWx1ZSA9IDw3PjsK
CQkJcGFyYW0gPSA8QVZNX0RFRl9IV19QQVJBTV9HUElPX0lOX0FDVElWRV9MT1c+OwoJCQljb25m
aWcgPSA8SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19ESVJfT1VUIElGWF9HUElPX0lPQ1RMX1BJ
Tl9DT05GSUdfQUxUU0VMMF9TRVQgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwxX0NM
RUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfT0RfU0VUPjsKCQkJbW9kdWxlX2lkID0gPERF
Rl9JRlhfR1BJT19NT0RVTEVfRlBHQT47CgkJfTsKCQlncGlvX2F2bV90ZG1fZnNjewoJCQl2YWx1
ZSA9IDwwPjsKCQkJcGFyYW0gPSA8QVZNX0RFRl9IV19QQVJBTV9OT19QQVJBTT47CgkJCWNvbmZp
ZyA9IDxJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0RJUl9JTiBJRlhfR1BJT19JT0NUTF9QSU5f
Q09ORklHX0FMVFNFTDBfQ0xFQVIgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwxX0NM
RUFSPjsKCQkJbW9kdWxlX2lkID0gPERFRl9JRlhfR1BJT19NT0RVTEVfVERNQ0hFQ0s+OwoJCX07
CgkJZ3Bpb19hdm1fdGRtX2RjbHsKCQkJdmFsdWUgPSA8NDA+OwoJCQlwYXJhbSA9IDxBVk1fREVG
X0hXX1BBUkFNX05PX1BBUkFNPjsKCQkJY29uZmlnID0gPElGWF9HUElPX0lPQ1RMX1BJTl9DT05G
SUdfRElSX0lOIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMF9DTEVBUiBJRlhfR1BJ
T19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfQ0xFQVI+OwoJCQltb2R1bGVfaWQgPSA8REVGX0lG
WF9HUElPX01PRFVMRV9URE1DSEVDSz47CgkJfTsKCQlncGlvX2F2bV9wY21saW5rX2ZzY3sKCQkJ
dmFsdWUgPSA8MD47CgkJCXBhcmFtID0gPEFWTV9ERUZfSFdfUEFSQU1fTk9fUEFSQU0+OwoJCQlj
b25maWcgPSA8SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19ESVJfSU4gSUZYX0dQSU9fSU9DVExf
UElOX0NPTkZJR19BTFRTRUwwX1NFVCBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFf
U0VUIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfUFVEU0VMX1NFVCBJRlhfR1BJT19JT0NUTF9Q
SU5fQ09ORklHX1BVREVOX1NFVD47CgkJCW1vZHVsZV9pZCA9IDxERUZfSUZYX0dQSU9fTU9EVUxF
X1BDTUxJTks+OwoJCX07CgkJZ3Bpb19hdm1fcGNtbGlua19kb3sKCQkJdmFsdWUgPSA8MjU+OwoJ
CQlwYXJhbSA9IDxBVk1fREVGX0hXX1BBUkFNX0dQSU9fT1VUX0FDVElWRV9MT1c+OwoJCQljb25m
aWcgPSA8SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19ESVJfT1VUIElGWF9HUElPX0lPQ1RMX1BJ
Tl9DT05GSUdfQUxUU0VMMF9TRVQgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwxX0NM
RUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfT0RfU0VUPjsKCQkJbW9kdWxlX2lkID0gPERF
Rl9JRlhfR1BJT19NT0RVTEVfUENNTElOSz47CgkJfTsKCQlncGlvX2F2bV9wY21saW5rX2RpewoJ
CQl2YWx1ZSA9IDw0MT47CgkJCXBhcmFtID0gPEFWTV9ERUZfSFdfUEFSQU1fTk9fUEFSQU0+OwoJ
CQljb25maWcgPSA8SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19ESVJfSU4gSUZYX0dQSU9fSU9D
VExfUElOX0NPTkZJR19BTFRTRUwwX0NMRUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxU
U0VMMV9TRVQgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19QVURTRUxfU0VUIElGWF9HUElPX0lP
Q1RMX1BJTl9DT05GSUdfUFVERU5fU0VUPjsKCQkJbW9kdWxlX2lkID0gPERFRl9JRlhfR1BJT19N
T0RVTEVfUENNTElOSz47CgkJfTsKCQlncGlvX2F2bV9wY21saW5rX2RjbHsKCQkJdmFsdWUgPSA8
NDA+OwoJCQlwYXJhbSA9IDxBVk1fREVGX0hXX1BBUkFNX05PX1BBUkFNPjsKCQkJY29uZmlnID0g
PElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfRElSX0lOIElGWF9HUElPX0lPQ1RMX1BJTl9DT05G
SUdfQUxUU0VMMF9DTEVBUiBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfU0VUIElG
WF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfUFVEU0VMX1NFVCBJRlhfR1BJT19JT0NUTF9QSU5fQ09O
RklHX1BVREVOX1NFVD47CgkJCW1vZHVsZV9pZCA9IDxERUZfSUZYX0dQSU9fTU9EVUxFX1BDTUxJ
Tks+OwoJCX07CgkJZ3Bpb19hdm1fc3BpX2Nsa3sKCQkJdmFsdWUgPSA8MTg+OwoJCQlwYXJhbSA9
IDxBVk1fREVGX0hXX1BBUkFNX05PX1BBUkFNPjsKCQkJY29uZmlnID0gPElGWF9HUElPX0lPQ1RM
X1BJTl9DT05GSUdfRElSX09VVCBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDBfU0VU
IElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMV9DTEVBUiBJRlhfR1BJT19JT0NUTF9Q
SU5fQ09ORklHX09EX1NFVD47CgkJCW1vZHVsZV9pZCA9IDxERUZfSUZYX0dQSU9fTU9EVUxFX1NT
Qz47CgkJfTsKCQlncGlvX2F2bV9zcGlfZG97CgkJCXZhbHVlID0gPDE3PjsKCQkJcGFyYW0gPSA8
QVZNX0RFRl9IV19QQVJBTV9OT19QQVJBTT47CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NUTF9Q
SU5fQ09ORklHX0RJUl9PVVQgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwwX1NFVCBJ
RlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfQ0xFQVIgSUZYX0dQSU9fSU9DVExfUElO
X0NPTkZJR19PRF9TRVQ+OwoJCQltb2R1bGVfaWQgPSA8REVGX0lGWF9HUElPX01PRFVMRV9TU0M+
OwoJCX07CgkJZ3Bpb19hdm1fc3BpX2RpewoJCQl2YWx1ZSA9IDwxNj47CgkJCXBhcmFtID0gPEFW
TV9ERUZfSFdfUEFSQU1fTk9fUEFSQU0+OwoJCQljb25maWcgPSA8SUZYX0dQSU9fSU9DVExfUElO
X0NPTkZJR19ESVJfSU4gSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwwX1NFVCBJRlhf
R1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfQ0xFQVI+OwoJCQltb2R1bGVfaWQgPSA8REVG
X0lGWF9HUElPX01PRFVMRV9TU0M+OwoJCX07CgkJZ3Bpb19hdm1fc3BpX2ZsYXNoX2NzewoJCQl2
YWx1ZSA9IDwxMD47CgkJCXBhcmFtID0gPEFWTV9ERUZfSFdfUEFSQU1fR1BJT19PVVRfQUNUSVZF
X0hJR0g+OwoJCQljb25maWcgPSA8SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19ESVJfT1VUIElG
WF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMF9DTEVBUiBJRlhfR1BJT19JT0NUTF9QSU5f
Q09ORklHX0FMVFNFTDFfU0VUIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfT0RfU0VUPjsKCQkJ
bW9kdWxlX2lkID0gPERFRl9JRlhfR1BJT19NT0RVTEVfU1BJX0ZMQVNIPjsKCQl9OwoJCWdwaW9f
YXZtX25hbmRfYWxlewoJCQl2YWx1ZSA9IDwxMz47CgkJCXBhcmFtID0gPEFWTV9ERUZfSFdfUEFS
QU1fR1BJT19PVVRfQUNUSVZFX0xPVz47CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NUTF9QSU5f
Q09ORklHX0RJUl9PVVQgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwwX1NFVCBJRlhf
R1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfQ0xFQVI+OwoJCQltb2R1bGVfaWQgPSA8REVG
X0lGWF9HUElPX01PRFVMRV9OQU5EPjsKCQl9OwoJCWdwaW9fYXZtX25hbmRfY2xlewoJCQl2YWx1
ZSA9IDwyND47CgkJCXBhcmFtID0gPEFWTV9ERUZfSFdfUEFSQU1fR1BJT19PVVRfQUNUSVZFX0xP
Vz47CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0RJUl9PVVQgSUZYX0dQ
SU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwwX1NFVCBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklH
X0FMVFNFTDFfQ0xFQVI+OwoJCQltb2R1bGVfaWQgPSA8REVGX0lGWF9HUElPX01PRFVMRV9OQU5E
PjsKCQl9OwoJCWdwaW9fYXZtX25hbmRfcmR7CgkJCXZhbHVlID0gPDQ5PjsKCQkJcGFyYW0gPSA8
QVZNX0RFRl9IV19QQVJBTV9HUElPX09VVF9BQ1RJVkVfTE9XPjsKCQkJY29uZmlnID0gPElGWF9H
UElPX0lPQ1RMX1BJTl9DT05GSUdfRElSX09VVCBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FM
VFNFTDBfU0VUIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMV9DTEVBUj47CgkJCW1v
ZHVsZV9pZCA9IDxERUZfSUZYX0dQSU9fTU9EVUxFX05BTkQ+OwoJCX07CgkJZ3Bpb19hdm1fbmFu
ZF9yZF9ieXsKCQkJdmFsdWUgPSA8NDg+OwoJCQlwYXJhbSA9IDxBVk1fREVGX0hXX1BBUkFNX0dQ
SU9fSU5fQUNUSVZFX0xPVz47CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklH
X0RJUl9JTiBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDBfU0VUIElGWF9HUElPX0lP
Q1RMX1BJTl9DT05GSUdfQUxUU0VMMV9DTEVBUj47CgkJCW1vZHVsZV9pZCA9IDxERUZfSUZYX0dQ
SU9fTU9EVUxFX05BTkQ+OwoJCX07CgkJZ3Bpb19hdm1fbmFuZF9jczF7CgkJCXZhbHVlID0gPDIz
PjsKCQkJcGFyYW0gPSA8QVZNX0RFRl9IV19QQVJBTV9HUElPX09VVF9BQ1RJVkVfTE9XPjsKCQkJ
Y29uZmlnID0gPElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfRElSX09VVCBJRlhfR1BJT19JT0NU
TF9QSU5fQ09ORklHX0FMVFNFTDBfU0VUIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VM
MV9DTEVBUj47CgkJCW1vZHVsZV9pZCA9IDxERUZfSUZYX0dQSU9fTU9EVUxFX05BTkQ+OwoJCX07
CgkJZ3Bpb191c2JfcG93ZXJfZW5hYmxlewoJCQl2YWx1ZSA9IDwxND47CgkJCXBhcmFtID0gPEFW
TV9ERUZfSFdfUEFSQU1fR1BJT19PVVRfQUNUSVZFX0hJR0g+OwoJCQljb25maWcgPSA8SUZYX0dQ
SU9fSU9DVExfUElOX0NPTkZJR19ESVJfT1VUIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxU
U0VMMF9DTEVBUiBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfQ0xFQVIgSUZYX0dQ
SU9fSU9DVExfUElOX0NPTkZJR19PRF9TRVQ+OwoJCQltb2R1bGVfaWQgPSA8REVGX0lGWF9HUElP
X01PRFVMRV9VU0IgREVGX0lGWF9HUElPX01PRFVMRV9FQVJMWV9SRUdJU1RFUj47CgkJfTsKCQln
cGlvX2F2bV9leHRwaHlfMjVtaHp7CgkJCXZhbHVlID0gPDM+OwoJCQlwYXJhbSA9IDxBVk1fREVG
X0hXX1BBUkFNX05PX1BBUkFNPjsKCQkJY29uZmlnID0gPElGWF9HUElPX0lPQ1RMX1BJTl9DT05G
SUdfRElSX0lOIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMF9TRVQgSUZYX0dQSU9f
SU9DVExfUElOX0NPTkZJR19BTFRTRUwxX0NMRUFSPjsKCQkJbW9kdWxlX2lkID0gPERFRl9JRlhf
R1BJT19NT0RVTEVfRVhUUEhZXzI1TUhaX0NMT0NLPjsKCQl9OwoJCWdwaW9fYXZtX2V4dHBoeTFf
cmVzZXR7CgkJCXZhbHVlID0gPDMyPjsKCQkJcGFyYW0gPSA8QVZNX0RFRl9IV19QQVJBTV9HUElP
X09VVF9BQ1RJVkVfTE9XPjsKCQkJY29uZmlnID0gPElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdf
RElSX09VVCBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDBfQ0xFQVIgSUZYX0dQSU9f
SU9DVExfUElOX0NPTkZJR19BTFRTRUwxX0NMRUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdf
T0RfU0VUPjsKCQkJbW9kdWxlX2lkID0gPERFRl9JRlhfR1BJT19NT0RVTEVfRVhUUEhZX1JFU0VU
PjsKCQl9OwoJCWdwaW9fYXZtX2V4dHBoeTJfcmVzZXR7CgkJCXZhbHVlID0gPDQ0PjsKCQkJcGFy
YW0gPSA8QVZNX0RFRl9IV19QQVJBTV9HUElPX09VVF9BQ1RJVkVfTE9XPjsKCQkJY29uZmlnID0g
PElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfRElSX09VVCBJRlhfR1BJT19JT0NUTF9QSU5fQ09O
RklHX0FMVFNFTDBfQ0xFQVIgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwxX0NMRUFS
IElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfT0RfU0VUPjsKCQkJbW9kdWxlX2lkID0gPERFRl9J
RlhfR1BJT19NT0RVTEVfRVhUUEhZX1JFU0VUPjsKCQl9OwoJCWdwaW9fYXZtX2V4dHBoeV9pbnR7
CgkJCXZhbHVlID0gPDM5PjsKCQkJcGFyYW0gPSA8QVZNX0RFRl9IV19QQVJBTV9OT19QQVJBTT47
CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0RJUl9JTiBJRlhfR1BJT19J
T0NUTF9QSU5fQ09ORklHX0FMVFNFTDBfQ0xFQVIgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19B
TFRTRUwxX1NFVD47CgkJCW1vZHVsZV9pZCA9IDxERUZfSUZYX0dQSU9fTU9EVUxFX0VYVFBIWV9J
TlQ+OwoJCX07CgkJZ3Bpb19hdm1fbWlpX21kaW97CgkJCXZhbHVlID0gPDQyPjsKCQkJcGFyYW0g
PSA8QVZNX0RFRl9IV19QQVJBTV9OT19QQVJBTT47CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NU
TF9QSU5fQ09ORklHX0RJUl9PVVQgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwwX1NF
VCBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfQ0xFQVI+OwoJCQltb2R1bGVfaWQg
PSA8REVGX0lGWF9HUElPX01PRFVMRV9FWFRQSFlfTURJTz47CgkJfTsKCQlncGlvX2F2bV9taWlf
bWRjewoJCQl2YWx1ZSA9IDw0Mz47CgkJCXBhcmFtID0gPEFWTV9ERUZfSFdfUEFSQU1fTk9fUEFS
QU0+OwoJCQljb25maWcgPSA8SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19ESVJfT1VUIElGWF9H
UElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMF9TRVQgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJ
R19BTFRTRUwxX0NMRUFSPjsKCQkJbW9kdWxlX2lkID0gPERFRl9JRlhfR1BJT19NT0RVTEVfRVhU
UEhZX01ESU8+OwoJCX07CgkJZ3Bpb19hdm1fcGNpZV9yZXNldDB7CgkJCXZhbHVlID0gPDIxPjsK
CQkJcGFyYW0gPSA8QVZNX0RFRl9IV19QQVJBTV9HUElPX09VVF9BQ1RJVkVfTE9XPjsKCQkJY29u
ZmlnID0gPElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfRElSX09VVCBJRlhfR1BJT19JT0NUTF9Q
SU5fQ09ORklHX0FMVFNFTDBfQ0xFQVIgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwx
X0NMRUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfT0RfU0VUPjsKCQkJbW9kdWxlX2lkID0g
PERFRl9JRlhfR1BJT19NT0RVTEVfUENJRT47CgkJfTsKCQlncGlvX2F2bV9wY2llX2NoaXBfcmVz
ZXQwewoJCQl2YWx1ZSA9IDwyMj47CgkJCXBhcmFtID0gPEFWTV9ERUZfSFdfUEFSQU1fR1BJT19P
VVRfQUNUSVZFX0xPVz47CgkJCWNvbmZpZyA9IDxJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0RJ
Ul9PVVQgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwwX0NMRUFSIElGWF9HUElPX0lP
Q1RMX1BJTl9DT05GSUdfQUxUU0VMMV9DTEVBUiBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX09E
X1NFVCBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX1BVRFNFTF9TRVQ+OwoJCQltb2R1bGVfaWQg
PSA8REVGX0lGWF9HUElPX01PRFVMRV9QQ0lFPjsKCQl9OwoJCWdwaW9fYXZtX29mZmxvYWRfd2Fz
cF93YWtldXB7CgkJCXZhbHVlID0gPDU+OwoJCQlwYXJhbSA9IDxBVk1fREVGX0hXX1BBUkFNX0dQ
SU9fT1VUX0FDVElWRV9ISUdIPjsKCQkJY29uZmlnID0gPElGWF9HUElPX0lPQ1RMX1BJTl9DT05G
SUdfRElSX09VVCBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDBfQ0xFQVIgSUZYX0dQ
SU9fSU9DVExfUElOX0NPTkZJR19BTFRTRUwxX0NMRUFSIElGWF9HUElPX0lPQ1RMX1BJTl9DT05G
SUdfT0RfU0VUIElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfUFVEU0VMX1NFVD47CgkJCW1vZHVs
ZV9pZCA9IDxERUZfSUZYX0dQSU9fTU9EVUxFX1dMQU5fT0ZGTE9BRF9XQVNQX1JFU0VUPjsKCQl9
OwoJCWdwaW9fYXZtX29mZmxvYWRfd2FzcF9yZXNldHsKCQkJdmFsdWUgPSA8MzQ+OwoJCQlwYXJh
bSA9IDxBVk1fREVGX0hXX1BBUkFNX0dQSU9fT1VUX0FDVElWRV9MT1c+OwoJCQljb25maWcgPSA8
SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19ESVJfT1VUIElGWF9HUElPX0lPQ1RMX1BJTl9DT05G
SUdfQUxUU0VMMF9DTEVBUiBJRlhfR1BJT19JT0NUTF9QSU5fQ09ORklHX0FMVFNFTDFfQ0xFQVIg
SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19PRF9TRVQgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJ
R19QVURTRUxfU0VUPjsKCQkJbW9kdWxlX2lkID0gPERFRl9JRlhfR1BJT19NT0RVTEVfV0xBTl9P
RkZMT0FEX1dBU1BfUkVTRVQ+OwoJCX07CgkJZ3Bpb19hdm1fb2ZmbG9hZF9zY3Jwbl91YXJ0ewoJ
CQl2YWx1ZSA9IDwzMT47CgkJCXBhcmFtID0gPEFWTV9ERUZfSFdfUEFSQU1fR1BJT19PVVRfQUNU
SVZFX0hJR0g+OwoJCQljb25maWcgPSA8SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19ESVJfT1VU
IElGWF9HUElPX0lPQ1RMX1BJTl9DT05GSUdfQUxUU0VMMF9DTEVBUiBJRlhfR1BJT19JT0NUTF9Q
SU5fQ09ORklHX0FMVFNFTDFfQ0xFQVIgSUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19PRF9TRVQg
SUZYX0dQSU9fSU9DVExfUElOX0NPTkZJR19QVURTRUxfU0VUPjsKCQkJbW9kdWxlX2lkID0gPERF
Rl9JRlhfR1BJT19NT0RVTEVfV0xBTl9PRkZMT0FEX1NDUlBOX1VBUlQ+OwoJCX07CgkJZ3Bpb19h
dm1fYm9vdF9zZWwzewoJCQl2YWx1ZSA9IDw0PjsKCQkJcGFyYW0gPSA8QVZNX0RFRl9IV19QQVJB
TV9HUElPX0lOX0FDVElWRV9ISUdIPjsKCQl9OwoJfTsKfTsK
(direkt aus der Session kopiert, daher nicht als Anhang ... einfach rauskopieren und dekodieren lassen)

Wenn der BLOB tatsächlich 1:1 an der Stelle steht, wohin der Pointer für tag=0x05 zeigt, dann ist doch das "Einsammeln" eigentlich schon durch.

Dann würde ich mir ein passendes Assembler-Makro definieren, bei dem man die Module-Einträge in der Liste einfach als Name und Größe der Reihe nach angeben kann, dann wird das nicht so kompliziert mit dem Zusammenbau an unterschiedlichen Stellen (man sollte bei einem Makro den Speicherort zwischen den Listeneinträgen und den Zeichenketten mit den Namen über "sub-sections" umschalten können für die Gruppierung).

Wenn ich nicht auch erst suchen und testen müßte, würde ich auch einen Vorschlag für so ein Makro machen ... aber das sollte mit etwas Suchen (u.a. bei StackOverflow) eigentlich machbar sein, auch wenn man kein MIPS-ASM-Guru ist. Es geht ja auch nicht darum, irgendwelchen Code zu schreiben (man muß also keine Mnemonics kennen), es sind ausschließlich Datendefinitionen für Strings und Int32-Werte.

Das Ganze (also Module-Liste, Versions-Info und eine passende Referenz auf den FDT - der sollte sich eigentlich gleich als binäre Datei dazulinken lassen, den muß man nicht in ein char-Array o.ä. umwandeln ... immer vorausgesetzt, die Datei oben stimmt mit dem Hauptspeicherinhalt überein) dann in ein gesondertes File ausgeben und dieses anstelle des einfachen Platzhalters für die 64 KB in die vmlinux.lds.S per .include einbinden ... das wäre in etwa das (nagele mich nicht auf einzelne Schritte fest, ich müßte auch erst nach konkreter Syntax usw. suchen), was ich mir vorstellen würde (und wie es m.E. auch bei AVM irgendwie laufen müßte). Wobei ich bei AVM eher vermute, daß die irgendwo in ihren eigenen Closed-Source-Modulen eine Variable für den voraussichtlichen Platzbedarf im KSEG0 haben werden und dann anstelle des absoluten Integerwertes in der Quelldatei bestimmt eine Referenz auf diese Variable enthalten ist - die Module sollten ja eigentlich bereits fertig vorliegen, wenn der Kernel gelinkt wird.
 
Habe ich mich vertan und die dts-Datei kopiert? Eigentlich sollte das die dtb-Datei sein und die ist dann eben das Ergebnis der "Übersetzung" der dts- und dtsi-Dateien im erwähnten Verzeichnis.

Sieht so aus, da müßtest Du dann aber auch schon bemerkt haben, daß die von mir (zur Kontrolle) angegebene Länge nicht stimmte.

Die binäre Datei ist dann diese:
Code:
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
Das sieht (mit den ganzen "A"s für NUL-Bereiche) dann auch viel plausibler aus, die Länge sollten immer noch die oben erwähnten 5174 Zeichen sein.
 
Warum sollte ich ... ist halt das Ergebnis der Übersetzung der dts-Datei (wo die dtsi-Datei "inkludiert" wird) - da die schon als Source vorhanden sind und ich hinter "fdtdump.c" ein Programm zum Auslesen unbekannter "device trees" vermuten würde, kam ich nie auf die Idee.

Ich verstehe aber das mit den 48 Byte davor und den 60314 Byte dahinter nicht ... wenn man sich den Speicheraufbau (schon in #284, also mit meiner Startadresse von 0x00848000) ansieht, dann ist das ja so aufgebaut:

1. Pointer auf das Array aus den _arm_kernel_config-Strukturen (4 Byte)

2. Alignment auf 16-Byte-Grenze (12 Byte)

3. Array mit der Liste, jeder Eintrag hat 8 Byte ==> 32 Byte gesamt, Ende also bei Offset 48 (0x30)

static struct _arm_kernel_config[] = {
{ .tag = avm_kernel_config_tags_modulememory, .config = &module_list }, /* 1st entry is of type "modulememory" => 1, config is pointer to "struct _kernel_modulmemory_config[]" */
{ .tag = avm_kernel_config_tags_version_info, .config = &version_info }, /* 2nd entry is of type "version_info" => 2, config is pointer to "struct _avm_kernel_version_info" */
{ .tag = avm_kernel_config_tags_device_tree_subrev_0, .config = &device_tree }, /* 3rd entry is of type "device_tree_subrev_0" => 5, config is pointer to "struct _avm_kernel_config_device_tree" */
{ .tag = avm_kernel_config_tags_last, .config = NULL } /* final entry, end of array */
};

4. Hier kommt jetzt der "device_tree" aus 3. und zwar dann unmittelbar hinter dem Array (ggf. mit Alignment auf 8, ist hier aber praktisch ein "nop").

5. Nach dem FDT (der ist dann bei Offset 0x1466 beendet) kommt das nächste Alignment (auf 8 oder 4, das Ergebnis ist dasselbe), damit ist die Adresse (bei meiner Version mit dem Start bei 0x00848000) dann die 0x00849468 und an dieser Stelle steht ja nach meinem Beitrag (#284) genau die Versions-Information.

6. Das ist eine Struktur mit direktem Inhalt (in 3. als "version_info" benannt), da stehen also 32 + 32 + 128 (= 192) Zeichen hintereinander, was dazu führt, daß die nächsten Daten an der Adresse 0x00849468 + 0x0C0 = 0x00849528 beginnen können und da steht auch genau die Liste der Module, auf die der erste Eintrag im Array aus Schritt 3 weiter oben beginnt.

7. Diese Liste (in 3. "module_list" genannt) geht jetzt (10. Code-Kasten in #284) bis zur Adresse 0x00849758 (das ist der letzte - leere - Eintrag) und damit beginnen weitere Daten 8 Byte dahinter an 0x00849760 - was (wundersamerweise) auch genau die Adresse ist, an der die erste Zeichenkette für den Namen "athlogger" beginnt.

8. Der letzte Module-Name steht dann an der Adresse 0x00849A90 - keine Ahnung, welcher das ist und wie lang der sein mag. Aber danach ist wohl dieser Bereich erst einmal beendet und dann erst kommt die Frage, ob bei AVM nach der letzten Zeichenkette (wenn ich Deine Liste nehme, ist das der Name "sch_cbq", wobei die Liste ja ganz deutlich nicht sortiert vorliegt und das damit nur geraten ist für meinen Kernel, ich sehe jetzt auch nicht nach) in dem verbleibenden Rest der 64 KB (das sind so um die "0x00849A90 + strlen(last_name) + 1 - 0x00848000" ===> rund(!) 0x1AA0 (dez. 6816) Byte, die da bisher belegt sind, also etwas mehr als 10% des reservierten Platzes) noch weitere Daten stehen. Ist das nicht der Fall, hast Du doch den kompletten Inhalt "zugeordnet" und man kann ihn (wenn man will sogar mit genau demselben Aufbau) auch nachbauen.
 
1. Ich habe nur nicht verstanden, warum Du die Daten als "48 Byte" und "60314 Byte" beschrieben hast, wenn Du doch schon viel besser wissen müßtest, wie der Bereich aufgebaut ist.

2. Wenn bei Dir hinter der String-Tabelle (ich nenne das jetzt mal so, ist halt ein Speicherbereich, wo Zeichenketten mit 32-Bit-Alignment für das erste Zeichen gespeichert werden) nur noch Nullen stehen, ist da offenbar nichts weiter in diesem Bereich abgelegt bei AVM.

3. Wo kommt denn (und vor allem in welchem Code, den suche ich ja genau, weil ich ihn in den AVM-Quellen nicht finden kann) da die Module-Liste zuerst? Oder meinst Du nur die Tatsache, daß die als erster Eintrag in dem Array mit den _avm_kernel_config-Strukturen steht? Das ist ja nur deren Adresse, die da zuerst steht ... da ist dann wohl nach "tag" sortiert, wobei die Reihenfolge wahrscheinlich wirklich egal ist (vor dem Ende-Marker jedenfalls) - ich habe m.W. keine Abhängigkeiten von einer Reihenfolge in init_avm_kernel_config() gesehen.

Dann sind doch jetzt die Informationen zum Aufbau soweit klar, daß man das Include-File beginnen könnte anstelle der Ausgabe nach STDOUT.
 
Ich passe aber im Moment (und würde das immer noch mit einem Assembler-Makro und eben auch in Assembler machen) ... ich schreibe gerade 6490-Bericht (nervt genug) und habe keine Zeit - auch wenn ich mich von ungeliebten Arbeiten gerne mal ablenken lasse für solche Antworten.
 
Ich habe das jetzt mal als Assembler-Programm (sind ja nur Datendefinitionen) realisiert ... aber der Einbau in den Freetz-Trunk ist mir dann doch zu aufwändig, selbst auf meinem Fork im GitHub. Wenn es am Ende unterschiedliche Vorstellungen geben sollte, wie man das in Freetz einbauen müßte, dann gibt es nur unnötige doppelte Arbeit ... daher überlasse ich das gleich den Leuten mit dem Schreibzugriff auf das Freetz-SVN.

Sollten Fragen auftauchen, stehe ich hier im Forum oder auch per E-Mail Rede und Antwort und diskutiere auch gerne aus, warum ich welche Entscheidung bei meinem Ansatz einer Lösung (es gibt garantiert auch andere denkbare Wege) getroffen habe.
 
Sourcen von 06.61 sind verfügbar, aber ich befürchte fast, dass sich nicht gebessert hat.
 
Nein, in diesem Punkt unterscheiden sich die Quellen für 06.60 und 06.61 (wo gibt es die überhaupt als Firmware, außer bei der 6490?) nicht wirklich.

Aber das Problem mit den fehlenden Definitionen bei AVM sollte sich inzwischen umgehen lassen ... für die Verwendung bei Freetz-Nutzern braucht es aber noch die Integration in den Build-Prozess.

Wobei das dann immer noch nicht heißt, daß ein eigener Kernel automatisch auch mit allem funktioniert - das ist dann auch nur die Grundlage, daß ein solcher erst einmal überhaupt startet und man weitere Probleme durch entsprechende Tests feststellen kann.
 
Neues OSS-Paket von gestern bei AVM: ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.62.tar.gz

Relevante Änderungen an den Kernel-Quellen für dieses Thema: keine

zwei Änderungen an der Kconfig - CAPI (eine neue Option) + Lantiq-USB (Kconfig jetzt inkludiert als drivers/usb/musb, da tauscht AVM die Quellen um Verzeichnis gegen den Lantiq-Treiber aus)

Code:
# diff -N -a -u -U 0 -r 06.60/linux-3.10/ 06.62/linux-3.10/ | grep -v "[+-]/\* pos" | grep -v "^[^+-]"
--- 06.60/linux-3.10/drivers/char/avm_new/avm_dist_event/avm_event_gen_types.h  2016-07-19 15:39:05.000000000 +0200
+++ 06.62/linux-3.10/drivers/char/avm_new/avm_dist_event/avm_event_gen_types.h  2016-11-09 10:33:26.000000000 +0100
--- 06.60/linux-3.10/drivers/char/avm_new/avm_event.h   2016-07-19 15:39:05.000000000 +0200
+++ 06.62/linux-3.10/drivers/char/avm_new/avm_event.h   2016-11-09 10:33:26.000000000 +0100
--- 06.60/linux-3.10/drivers/char/avm_new/Makefile      2016-07-19 15:39:05.000000000 +0200
+++ 06.62/linux-3.10/drivers/char/avm_new/Makefile      2016-11-09 10:33:26.000000000 +0100
-#           Di 19. Jul 15:39:05 CEST 2016
+#           Mi 9. Nov 10:33:26 CET 2016
--- 06.60/linux-3.10/drivers/char/ubik2/Kconfig 2010-03-05 11:04:06.000000000 +0100
+++ 06.62/linux-3.10/drivers/char/ubik2/Kconfig 2016-08-22 16:41:35.000000000 +0200
+config UBIK2_ISDNSTACK_ON_CPU
+    int
+       default 0
+
--- 06.60/linux-3.10/drivers/isdn/capi_codec/Makefile   2007-08-03 16:31:32.000000000 +0200
+++ 06.62/linux-3.10/drivers/isdn/capi_codec/Makefile   2016-11-09 10:33:27.000000000 +0100
+# auto generated file ./Makefile
+
+CAPI_CODEC_TOP=/home/gjungnitz/GU/7490/Version_33290_P15n2/GPL/RELEASE_KERNEL_vr9_build/kernel/linux-3.10/drivers/isdn/capi_codec
+
--- 06.60/linux-3.10/drivers/usb/Kconfig        2016-07-19 15:39:09.000000000 +0200
+++ 06.62/linux-3.10/drivers/usb/Kconfig        2013-10-07 09:50:10.000000000 +0200
-
+source "drivers/usb/musb/Kconfig"
--- 06.60/linux-3.10/include/linux/avm_event.h  2016-07-19 15:39:05.000000000 +0200
+++ 06.62/linux-3.10/include/linux/avm_event.h  2016-11-09 10:33:26.000000000 +0100
--- 06.60/linux-3.10/include/uapi/linux/avm_event.h     2016-07-19 15:39:05.000000000 +0200
+++ 06.62/linux-3.10/include/uapi/linux/avm_event.h     2016-11-09 10:33:26.000000000 +0100

Und das sind dann auch schon (fast) alle Änderungen, ich verstehe nicht so richtig, was dieses Paket eigentlich bringen soll - es gibt ja offiziell nicht einmal eine 06.62 für die 7490.
Code:
# for gf in 06.62/*.gz; do rm -r /tmp/dir1 /tmp/dir2; mkdir -p /tmp/dir1 /tmp/dir2; tar -C /tmp/dir1 -xzf $gf; tar -C /tmp/dir2 -xzf ${gf/62/60}; echo ==== Diff $gf ====; diff -ur /tmp/dir1 /tmp/dir2; echo ==== END ====; done
==== Diff 06.62/BSD-libflac.tar.gz ====
==== END ====
==== Diff 06.62/GPL-avmacllib2.tar.gz ====
==== END ====
==== Diff 06.62/GPL-bridge-utils.tar.gz ====
==== END ====
==== Diff 06.62/GPL-busybox.tar.gz ====
==== END ====
==== Diff 06.62/GPL-chrony.tar.gz ====
==== END ====
==== Diff 06.62/GPL-davfs2.tar.gz ====
==== END ====
==== Diff 06.62/GPL-ftpd.tar.gz ====
==== END ====
==== Diff 06.62/GPL-gcc.tar.gz ====
==== END ====
==== Diff 06.62/GPL-iproute2.tar.gz ====
==== END ====
==== Diff 06.62/GPL-lte_tools.tar.gz ====
==== END ====
==== Diff 06.62/GPL-ntfs.tar.gz ====
==== END ====
==== Diff 06.62/GPL-release_kernel.tar.gz ====
[...]
==== END ====
==== Diff 06.62/GPL-samba.tar.gz ====
==== END ====
==== Diff 06.62/GPL-usb_host_tools.tar.gz ====
==== END ====
==== Diff 06.62/GPL-wlan.tar.gz ====
==== END ====
==== Diff 06.62/LGPL-GPL-release_fon_tools.tar.gz ====
==== END ====
==== Diff 06.62/LGPL-GPL-release_target_tools.tar.gz ====
==== END ====
==== Diff 06.62/LGPL-libexif.tar.gz ====
==== END ====
==== Diff 06.62/LGPL-libosip.tar.gz ====
==== END ====
==== Diff 06.62/LGPL-multimedia_fon.tar.gz ====
diff: /tmp/dir1/ogg_vorbis/libvorbisidec/config.guess: No such file or directory
diff: /tmp/dir2/ogg_vorbis/libvorbisidec/config.guess: No such file or directory
diff: /tmp/dir1/ogg_vorbis/libvorbisidec/config.sub: No such file or directory
diff: /tmp/dir2/ogg_vorbis/libvorbisidec/config.sub: No such file or directory
diff: /tmp/dir1/ogg_vorbis/libvorbisidec/depcomp: No such file or directory
diff: /tmp/dir2/ogg_vorbis/libvorbisidec/depcomp: No such file or directory
diff: /tmp/dir1/ogg_vorbis/libvorbisidec/install-sh: No such file or directory
diff: /tmp/dir2/ogg_vorbis/libvorbisidec/install-sh: No such file or directory
diff: /tmp/dir1/ogg_vorbis/libvorbisidec/missing: No such file or directory
diff: /tmp/dir2/ogg_vorbis/libvorbisidec/missing: No such file or directory
==== END ====
==== Diff 06.62/LGPL-neon.tar.gz ====
==== END ====
==== Diff 06.62/ZLIB-libz.tar.gz ====
==== END ====
Die Unterschiede im Decoder-Paket sind "normal", das sind "dangling symlinks", weil da jemand Symlinks nach /usr/share/automake-1.11 eingepackt hat und die gibt es bei mir nicht.

Damit bleiben eigentlich nur die zwei geänderten Kconfig-Dateien übrig (wenn ich nichts übersehen habe, was auch möglich wäre), das ist irgendwie etwas schmal für so viel Aufwand und recht enttäuschend.

Ach so ... ich habe das bewußt gegen die 06.60 verglichen - das ist ja die offizielle Release-Version und gegen die 06.61 sieht es nicht anders aus. Das funktioniert auch, denn für den Kernel kriegt man dann natürlich auch Unterschiede a la:
Code:
--- /tmp/dir1/linux-3.10/drivers/char/avm_new/avm_dist_event/avm_event_gen_types.h      2016-10-06 16:47:34.000000000 +0200
+++ /tmp/dir2/linux-3.10/drivers/char/avm_new/avm_dist_event/avm_event_gen_types.h      2016-11-09 10:33:26.000000000 +0100
@@ -633,7 +633,7 @@
 char *get_enum_avm_event_internet_new_ip_param_sel_name (enum avm_event_internet_new_ip_param_sel value);
 char *get_enum_avm_event_powermanagment_remote_action_name (enum avm_event_powermanagment_remote_action value);
 char *get_enum_avm_event_tffs_call_type_name (enum avm_event_tffs_call_type value);
[COLOR="#B22222"]-/* pos 9550 (Thu Oct  6 16:47:34 2016) */
+/* pos 9550 (Wed Nov  9 10:33:26 2016) */[/COLOR]
 struct cpmac_port {
        uint8_t cable;
        uint8_t link;
@@ -643,13 +643,13 @@
        enum _avm_event_ethernet_speed maxspeed;
 } __attribute__((packed));

-/* pos 9550 (Thu Oct  6 16:47:34 2016) */
+/* pos 9550 (Wed Nov  9 10:33:26 2016) */
 struct avm_event_telephony_string {
        unsigned int length;
        unsigned char string[0];
 } __attribute__((packed));
[...]
die dann schon zu den Datumswerten der jeweiligen Pakete passen.
 
Zuletzt bearbeitet:
Hallo zusammen,
Ich habe mich schon durch die ganzen Seiten gelesen und irgendwie habe ich immer noch keine lösung gefunden. Oder es ist einfach schon zu spät heute.
Ich habe eine Fritzbox 7490 mit der Labor version 41986 die vorletzte also. Im changelog von Freetz steht das diese version bei trunk schon dabei ist. ABer immer wenn ich eine erstellen will bekomme ich die version für die 06.30 Version. Habe da schon überall geguckt.
SO langsam verzweifel ich. Ich hoffe mir kann vielleicht jemand helfen.
Wenn ihr sagt die Labor Version zu nutzen ist nicht so gut dann Akzeptiere ich auch die Stable version von AVM .

Danke für jede Hilfe
 
Die Frage ist aber auch nicht wirklich neu ... Laborversionen werden nur in der "Experten"-Einstellung angeboten.
 
Aber die normaler 6.60 Stable Firmware geht ?

wenn ich dies hier nutze :

Code:
[COLOR=#000000]svn checkout http://svn.freetz.org/branches/freetz-stable-2.0[/COLOR]
habe ich keine 7490 zur auswahl.

Wenn ich aber dies hier nutze ist das doch richtig?

Code:
svn checkout [URL]http://svn.freetz.org/trunk[/URL] freetz-trunk

Entschuldige die fragen aber ich bin Anfänger mit Freetz
 
Trunk ist schon richtig, nur noch bei "make menuconfig" die richtigen Einstellungen vornehmen.

Ansonsten steht das alles im Wiki und gerade als Anfänger sollte man da zuerst lesen.
 
Danke, das habe ich mir schon durchgelesen (ist wohl zu spät für so viel input), aber ich werde jetzt Pause machen und morgen Früh in aller Frische mit neuer Motivation weiter machen.
Ich danke dir recht Herzlich für die schnelle Hilfe vor allem um die Uhrzeit :)
Gute Nacht

Edit:

Ich habe es gefunden wie man es umstellt :D

Mein nächstes Problem ist das die Box beim Update anzeigt das es kein Offizielles Update ist.. Was muß ich da tun? da steht nur was von neustarten oder neues image einbinden und update starten.
 
Zuletzt bearbeitet:
Mein nächstes Problem ist das die Box beim Update anzeigt das es kein Offizielles Update ist.. Was muß ich da tun? da steht nur was von neustarten oder neues image einbinden und update starten.

Schau Dir mal http://www.ip-phone-forum.de/showthread.php?t=287059&p=2174521&viewfull=1#post2174521 an
da sollten die erforderlichen Skripte:
https://raw.githubusercontent.com/PeterPawn/YourFritz/master/eva_tools/image2ram
https://raw.githubusercontent.com/PeterPawn/YourFritz/master/eva_tools/eva_to_memory
erwähnt sein.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.