I²C-EEprom mit Treiber für Peripheriekarten am K1-Bus ----------------------------------------------------- Draft Version 0.05 Date 2008-12-21 Chunked Data ------------ Das EEprom wird in Daten-Chunks organisiert: 1 Byte BTYPE Blocktyp 1 Byte BLEN Blocklänge: Länge der folgenden Nutzdaten [1 Byte] BLENL LSB zu BLEN, wenn BLEN ≥ %11000000 n Bytes DATA BLEN Bytes Nutzdaten Das EEprom startet mit Block "0" (Basisinformationen), danach kommen Block "1" bis "9" mit druckbaren Informationen, danach "A"- und "B"-Blöcke mit Bytecode und als End-Marker der Block "Z". Vordefinierten Blocks --------------------- BTYPE "1" bis "9" müssen in dieser Reihenfolge kommen. Danach beliebig gemischt Codeblöcke usw.. BTYPE "1" kann mehrfach vorkommen, wenn mehrere Devices installiert werden. Blöcke gleichen Typs können, soweit sinnvoll, mehrfach vorkommen. Beschreibende Texte sollten selbsterklärend sein. Mehrfach vorkommende beschreibende Texte sollten in der Reihenfolge short-verbose-file-URI folgen. * = Pflichtblock BTYPE Beispiel Bedeutung ----------- ------------------------------- --------------------- * "0" (..) Basisinformationen (Bitfelder s.u.) * "1" "hd" Device Name, as installed into /dev * "2" "PupsiCard" Card Name * "3" "1.0a" Version * max. 4-stellig "2008-12-24 18:30" "4" "CF-Card Adapter" Beschreibung "5" "Kio " Developer Name or Email "6" "MyCompany" Manufacturer Name or URI "7" "Copyright (c) MyCompany 2008" Copyright Message "8" "CC-BY" License Message "License: http://www..." "9" "Help: /dev/hd/help" Help Message "Forum: http://..." "A" (..) Bytecode (Load+Install) "B" (..) Bytecode (Load+Execute) * "Z" End-Marker; benötigt kein BLEN-Feld. Chunks $00 .. $5F (z.B. Großbuchstaben) sind reserviert. Chunks $60 .. $7F (z.B. Kleinbuchstaben) sind zur freien Verwendung durch den jeweiligen Treiber. Block "0" - Basisinformationen ------------------------------ Bytes Wert / Bedeutung ------ ---------------------------- 1 Byte BTYPE "0" = Blocktyp 1 Byte BLEN Blocklänge. Der Block darf hinten um $00-Bytes gekürzt werden! Damit kann die Spezifikation des Blocks später noch erweitert werden. 1 Byte Device Class: bit.0 1 = Input Device bit.1 1 = Output Device bit.2 1 = Serial i/o bit.3 1 = Block i/o (addressable) bit.4 1 = (potential) Controlling Terminal bit.5 1 = Mass Storage Device (with File System) bit.6 1 = Human Interface Device (Keyboard, Mouse, Joystick) bit.7 1 = Video Device 1 Byte Device Class ctd.: bit.0 1 = Audio Device bit.1 1 = Keyboard bit.2 1 = Pointer Device bit.3 1 = Security Device bit++ reserved. set to 0 1 Byte Requirements: bit.0 1 = requires A4 + A5 bit.1 1 = requires 16-Bit Bus bit.2 1 = has additional i2c bus devices bit.3 1 = requires writing to i2c bus (may be required even for ACK bit only!) bit.4 1 = generates interrupts bit.5 1 = bit.6 1 = bit.7 1 = Der Block darf hinten um $00-Bytes gekürzt werden!