Ein wichtiger Hinweis für alle, die keine "Zulassung zur Teilnahme am Amateurfunkdienst" bzw. "Genehmigung zum Errichten und Betreiben von Amateurfunkstellen" (umgangssprachlich: Amateurfunklizenz) haben: Die modifizierten Geräte dürfen nur von berechtigten Personen auf den dem Amateurfunkdienst zugewiesenen Frequenzen betrieben werden (siehe Amateurfunkgesetz)!
News
24.11.2008: SC5BOS V1.1 veröffentlicht
10.11.2008: Dokumentation und erste Hardware für das DV-Modem
18.04.2006: Spam-Schutz: keine Klar-Text-EMail-Adressen mehr auf "digisolutions.de" (Javascript nötig).
28.04.2005: TelLoader 1.2 mit Unterstützung der EON-Flashroms (neues SCxBOS nötig).
Als unbedarfter Leser und Informatik-Interessierter fragte sich der Autor Anfang 2002, wiso man bei einem Gerät (hier das Siemens C5) dessen Digitalteil vollständig entfernt und eine andere Platine aufwendig einsetzt, obwohl doch auch der neue Controller auf der eingesetzten Platine programmiert werden musste. Jedoch merke der Autor schnell, das dies nicht ohne Grund geschah:
Zum original Digitalteil des C5 gehört ein ASIC-Baustein mit der Bezeichnung EP200. Zu diesem zentralen Baustein gibt es keine Entwicklungsunterlagen, jedoch die Aussage, das dieser Baustein fehlerhaft arbeitet und diese Fehlfunktionen per Software ausgeglichen werden müssen. Ebenfalls eine entscheidende Rolle spielt der Motorola DSP 56001 (in den letzten C5: 56002). Es ist keine simple Aufgabe Software für einen Signalprozessor zu entwickeln. Auch der Autor hat bisher nur ein paar Erfahrungen mit einem AD2181 (EZlite-Kit).
Der Grund sich dennoch für die Entwicklung von solcher Software zu begeistern liegt zu einem in der Herausforderung dieses bewerkstelligen zu können, zum anderen in dem Gedanken, damit etwas für den Amateurfunk getan zu haben. Auch ist die Kombination Controller - DSP ein leistungsfähiges Gespann, dessen Potential hoffentlich bald nutzbar gemacht wird.
Ziele
Bei diesen Projekten geht es vorrangig darum, kostengünstig und mit minimalem Aufwand aus einem alten C-Netz-Telefon einen FM-Amateurfunktranceiver für das 70cm Band (430-440 MHz) zu bauen. Eine sehr detaillierte Anleitung zu einem C5-Umbau stellt DL6INT (Uwe Henning) unter
zur Verfügung. Leider erfordert der Umbau des C5 nach dieser Anleitung einigen Aufwand in der Realisierung. Da der Autor Informatik studiert hat, und sich hobbymäßig mit Amateurfunk beschäftigt, kam er auf die Idee ein kleines Betriebssystem für das C5 zu entwickeln. Dieses Vorhaben wurde durch die Veröffentlichung einiger Details des C5-Software-Innenlebens durch DB1OTM (Thomas Müller) unter
unterstützt. Es entstand eine Zusammenarbeit, die auf einen gegenseitigen Informationsaustausch beruhte. Basis der Entwicklung ist übrigens die von DB1OTM disassemblierte Originalsoftware, die einige Fragen beantwortet, jedoch 10mal so viele Neue aufwirft.
Inzwischen existiert neben C5Demo eine leistungsfähige Phonie-Software (C5 SUP), mit der auch PacketRadio-Betrieb über ein externes Modem möglich ist. Die einfache Demonstrationssoftware "C5Demo", die der Autor mit Quelltext zur Verfügung stellt, demonstiert wie dass C5 als Phonie-Gerät eingesetzt werden kann. Die erste Version von C5Demo war dabei das Ergebnis einens einzigen Wochenendes. Sie beschränkt sich auf die notwendigen Funktionen eines Funkgerätes und zeigt, das ein reines Assembler-Projekt nicht kompliziert sein muß.
Beschreibung der Softwareprojekte
Alle Telefone verfügen über einen x86-kompatiblen Microcontroller (µC) (NEC V25 bzw. V40). Die NEC Vxx sind softwarekompatibel zu einem i80186 und besitzen zusätzlich noch erweiterte Befehle. Ansonsten sind beide klassische Controller (keine CPU) mit UART, Ports, DMA etc.). Software kann deshalb mit "alten" PC-Assemblern und Compilern erstellt werden. Das C3, C4 und das C5 haben neben dem µC noch einen DSP 56001 von Motorola onboard. Dieser ist über das Host-Interface und der "glue logic" (EP200 im C5) mit dem µC verbunden.
Der Autor hat die hier vorgestellte Software mit dem A86-Assembler und dem jloc-Linker erstellt. Der A86-Assembler kennt ein paar der zusätzlichen NEC-Befehle (leider nicht alle) und verfügt über eine simples Segmentierungs-System. Der jloc-Linker wertet die von A86 erstellte OBJ-Datei aus und erzeugt mit Hilfe einer Kontrolldatei ein binäres Image des Programmes. Als "Entwicklungsumgebung" diente der Ultraedit (http://www.ultraedit.com/), der Syntaxhighlighting und das Einbinden von Programmen (hier z.B. make) beherrscht. Leider ist dieses Programm Shareware, dessen Registrierung mit $35 noch human ausfällt.
SC3, SC4, SC5BOS und PP5BOS
Das Projekt "SC5BOS" beschäftigt sich mit der Betriebssystementwicklung für das alte C-Netztelefon Siemens C5. Für die anderen Mobiltelefone heißt das Betriebssystem entsprechend SC3BOS, SC4BOS order PP5BOS (für die Telefone Siemens C3, C4 und Philips Porty). Diese sind "softwarekompatibel" mitentwickelt.
Neben der Softwareentwicklung konnte sich der Autor auch nicht um Hardwareentwicklung drücken. Um das Telefon mit dem PC zu Verbinden, wurde ein serieller Pegelwandler (TTL <-> RS232) benötigt. Neben dem seriellen Anschluss ist leider auch ein Programmiergerät erforderlich gewesen, um einen leeren Flash-Baustein mit der Software zu beschreiben. Erst mit dem programmierten Flash konnte erstmalig "eigene" Software ins Telefon gelangen. Als Flash verwendet der Autor den PLCC32-Typ 29F040 der Firmen AMD, TI und Hyundai. Alternativ einsetzbar sind auch die Typen 29F002TC / BC und 29F010. In jedem Fall muss das Original-ROM aus dem Telefon entfernt und ein mit dem BOS-Betriebssystem programmierter Baustein eingesetzt werden.
.
Simple User Program - SUP
Das SUP ist ein inzwischen gut ausgestattetes Bedienprogramm, das für die 3 Telefone C3, C4, C5 eine gemeinsame Source-Basis benutzt. Nur das Philips Porty hat ein extra SUP.Das "Simple User Program" wurde ursprünglich aus C5Demo V1.1 entwickelt. Die Funkgerätesoftware hat inzwischen folgende allgemeine Eigenschaften:
Frequenz von 430-440 MHz in 12,5/25/50/100kHz Schritten abstimmbar + Schnelltaste
Volume und Squelch in je 32 Schritte abstimmbar (Balken)
S-Meter-Anzeige in echten S-Stufen + Balkenanzeige (immer sichtbar)
Bandgrenzen-Check beim PTT-Taste drücken ("TX-Error")
Ruftton 1750Hz und DTMF-Töne
digitale Preemphasis und Deemphasis
digital einstellbare Mikrofonverstärkung
Aktivierung Lautsprecher beim Auflegen bzw. Stummschaltung beim Abheben + Schnelltaste
Einblenden der AD-Werte für Temperatur und RSSI ein/abschaltbar
Bedienung durch PC (über PCP) incl. Senden
Windows-Software, die wärend der Enwicklung entstand
Der (alte) C5MemoryLoader
Der gute alte C5 Memory Loader:
Er wird sicher bald durch das komfortablere Tool "C5Loader" ersetzt werden. Die Aufgabe dieses Programmes war es schnell und einfach Software ins C5 zu bekommen...
...aber auch einen "Rumpf" für Testzwecke (hier die Steuerung von "C5Test") zur Verfügung zu haben.
PCP-Server
Dieses "winzige" Tool ist die Schnittstelle von den Windows-Programmen zum C5. Es stellt einen OLE-Server dar, der 2 Sendeprozeduren und ein OnReceive-Event besitzt. Es ist somit sehr wichtig.
PCP-Memory-Viewer
Mit dem PCP MemoryViewer hat der Autor sich ein kompfortables Werkzeug geschaffen, um in das Innenleben des C5 zu schauen. Da ein Debugging-Modul immer noch nicht fertiggestellt ist, diente dieses Programm neben einem digitalem Speicherozsilloskop in erster Linie der Überprüfung von Daten.
Ein paar Stichpunkte zur Funktionalität:
Auslesen der Speicherbeschreibung aus dem Gerät
Anlegen von Sub-Blöcken und weiteren Blöcken durch wenige Klicks
Einlesen einer (binären) Datei in einen BLock
Einfache Operationen wie blockweises AND, OR, XOR
Überschreiben von 7 oder 8bit ASCII-Mustern
Überschreiben mit bitalternierenden Muster
Darstellung
Hexadezimal, Dezimal, ASCII
8bit, 16bit, 24bit (DSP), 32bit entweder little oder big Endian
bei Dezimal: Vorzeichenbehaftete Darstellung möglich
Rückübertragen eines Blockes zum Gerät (falls Gerät mitspielt)
Umfang wächst ständig...
PCP-Message-Viewer
Diese simple Software stellt legentlich Textmeldungen, die das C5 sendet, dar. Jedoch war auch diese Software sehr Hilfrich bei der Entwicklung.
Übrigens:
Alle Windows-Programme wurden mit Delphi5 geschrieben.
Softwareentwicklung
Die Software SC5BOS ist nicht das einige was im Laufe der Entwicklungsarbeit entstand. Neben SC5BOS sind eine Reihe von Testprogrammen, die im C5 ausführbar sind entstanden. Dazu zählen u.a. FlashWRT, DSPTest, C5Demo, I2Ctest und C5Test. Letzteres wird weiterentwickelt, da die anderen Programme ihre (Test-) Aufgabe erfüllt haben. Neben C5Demo, das Programmierern als "Auschauungsobjekt" für eigene Projekte dienen soll, entstand vor kurzem C5 Simple User Program (C5-SUP). Diese Software wird ständig weiterentwickelt und stellt eine Bediensoftware dar, die kommerziellen Funkgeräten in nichts nachsteht. Einige Features in Kurzform:
C5 kann komplett per PC gesteuert werden
neue Software wird einfach bei geschlossenem Gerät ins C5 übertragen
selbst SC5BOS ist so updatefähig
mehrere Dienste können parallel laufen (z.B. PacketRadio + Debugger + Bediensoftware)
PacketRadio wird ohne Modem möglich sein (1k2 sicher, 9k6 muss überprüft werden)
Entwickler brauchen sich nur noch um die eigentliche Aufgabe des Programms kümmern, den Rest erledigt dann SC5BOS (I/O, Tastenabfrage etc.)
Unweigerlich entstand auch PC (Windows-) Software: Diese unter Delphi5 geschriebenen Tools sind für die Kommunikation mit dem C5 (oder "kompatiblen" Geräten) gedacht. Kern der Kommunikation ist ein als PCP (Packet Communication Protocol) bezeichnetes Übertragungsprotokoll. Es spezifiziert eine auf Paketen aufgebaute Kommunikation zwischen 2 Geräten (hier C5 und PC). Die Fähigkeiten der Windows-Software in Kurzform:
OLE-Server für die Kommunikation (PCP) über eine serielle (Standard-) Schnittstelle-
Einsehen vom C5 RAM und ROM per PCPMemoryViewer
Ausgabe von Textmeldungen des C5 per PCPMessageViewer
Übertragen und ausführen von Programmen im C5 per C5MemoryLoader
Steuern von C5Test (noch im C5MemoryLoader)
Beschreiben des Flash-ROM per PCPMemoryViewer
(Diese Software wird in einem extra Dokument behandelt.)
Der eigentlicher Kern der Entwicklung - SC5BOS - wird neben der kompletten Umbaubeschreibung in SC5BOSDevelop (PDF) beschrieben. Ebenso sind auch alle relevanten Entwickungsergebnisse zusammengefasst.
Alle Funktionen des SC5BOS werden analog dem guten alten DOS per Soft-Interrupt aufgerufen. Der Autor ist sich jedoch bewußt, das der intern mit 4,032MHz getacktete NEC-Controller kein "Rennpferd" ist und im Gegensatz zu einer modernen Atmel-CPU (wie im Umbau von Uwe Henning) recht gemächlich macht (mit unter 20Takte pro Befehl). Dennoch lohnt sich unserer Meinung nach der Umbau "durch Software". Folgende Gründe sprechen dafür:
Der Umbau ist weniger arbeitsintensiv (es werden genau genau 5 Bauteile entfernt: Duplexer, beide Sendefilter, Ind. an Sendefilter, ROM)
Neue Software kann bei geschlossenem Gerät per ser. Schnittstelle eingespielt werden.
der MotorolaDSP wartet geradezu auf 1k2-PacketRadio, DTMF und ähnliche Aufgaben.
Datenfunk wie PR oder Funkruf ist ohne Modem möglich (bei entsprechender DSP-Software, (welche Modifikationen oder Baugruffen für 9k6 / 19k2 PacketRadio wird noch geprüft).
Das Funkgerät ist über einen PC, Palm, Psion oder PocketPC fernsteuerbar dank der ser. Schnittstelle.
Im Flash ist Platz für mehrere Programme und große Datenbestände (EU-Relais-Standorte etc.).
dank DSP sind kompfortable Rauschunterdrückungssysteme und eine digitale VOX machbar.
Mittlerweile wurde die Version 0.9e fertiggestellt.
Einige Features in Kurzform:
Programme/Daten werden seriell mit 57k6Baud zum/vom Gerät übertragen.
Die Übertragung erfolgt mit eimem einfachen Paketprotokoll, das pro Paket 256Byte Nutzdaten enthalten kann und mit einer Prüfsumme abgesichert ist.
Unterschiedliche Dienste können parrallel im C5 laufen und auf bis zu 10 Ports unabhänig mit der entsprechenden Software auf dem PC interagieren (z.B. PaketRadio+Gerätesteuerung+Debugging)
Auf PC-Seite existiert Windows-Software, die per OLE diese Kommunikationsports zur Verfügung stellt.
Entwickler können Software zu Testzwecken innerhalb von Sekunden ins C5-Ram laden (max. 30KByte frei) und dort ausfüren (ein Debug-Modul fürs C5 fehlt leider noch)
SC5BOS ist komplett in Assembler geschrieben und nur 8KByte groß (beansprucht letzte 16KByte im Flash).
SC5BOS implementiert die Kommunikation mit dem Bedienteil, mit dem PC und mit den I²C-Bus im C5.
SC5BOS kümmert sich um den Watchdog, das Handling der ON/Off-Taste und der Auswertung und Weiterreichung der Tastenbetätigungen am Hörer.
Ein Bootloader-Programm, welches sich über den Hörer bedienen lässt, kann aktiviert werden.
NEU! Die Initialisierung des Combo1 und der DSP-Hostschnittstelle erfolgen im SC5BOS, DSP-Programme können per API-Funktion in den DSP geladen werden.
Auszüge aus der Dokumentation (SC5BOS)
Lastenheft SC5BOS
das SC5BOS soll in einem 16Kbyte großen geschützten Sektor des Flash-Roms Platz finden
es initialiesiert die nötige Hardware, die für eine Programmierung des Flash-Bausteins nötig ist
dazu zählen:
Prozessorregister
externe serielle Schnittstelle (57600baud, 8N1)
Interrupt-Vektortabelle
es soll ein einfaches Kommunikationsprotokoll implementiert sein, das eine sichere Datenübertragung gewährleistet. Daher ist eine CRC16 wünschenswert.
Der Telefonhörer soll bereits Meldungen ausgeben können
Über die Tastatur des Hörers sind im Bootloader Informationen abrufbar und Testfunktionen ausführbar.
darunter fallen:
Versionsausgabe
CRC16 des Flashbausteins
Flash löschen (bis auf SC5BOS)
Test der Seriellen Schnittstelle 0 (für ext. Kommunikation wichtig)
Einstellen der Übertragungsparameter, abweichend vom Standart (z.B. 9600baud).
Speichertest
Stacktest (Größe anzeigen)
der Funktionsumfang ist einfach zu erweitern
Über das Kommunikationsprotokoll kann ein Programm in den Speicher geladen und ausgeführt werden.
Über das Kommunikationsprotokoll kann ein Programm in den Flash geschrieben werden.
Über das Kommunikationsprotokoll kann ein beliebiger Datenblock in den Flash geschrieben werden.
Über ein API werden Basisfunktionen den Anwendungsprogrammen zugänglich gemacht.
Eintreffende Daten sind über eine Event-Schnittstelle dem laufenden Programm zu übergeben.
...
Konzeptdokumentation SC5BOS
Das SC5BOS ist in dem Flash in einem kleinen Block am oberen Aderessende untergebracht. Die für den Einsatz im C5 in Frage kommenden Flashtypen (z. B. 29F002TC, 29F040) besitzen einen 16Kbyte-Sektor (29F002TC) oder einen 64Kbyte-Sektor (29F040) am oberen Aderessende. Da Sektoren in einem externen Programmiergerät komplett gegen Überschreiben geschützt werden können, kann ein solch geschütztes SC5BOS-Flash auf fest ins C5 eingelötet werden. Da jedoch wichtige Aufgaben wie die komplette serielle Kommunikation vom SC5-API gekapselt werden (müssen), ist jedoch erst einmal ein gesockelter Flash mit ungeschützten SC5BOS vorzusehen. Bei Bedarf kann hier das gesamte Inhalt neugeschrieben werden, was jedoch kritische Momente erfordert (Bootloaderprogramm nur noch im SRAM)!
...
Betriebssystemerfordernisse:
Einfaches Multitasking über den Timer2 (10ms-Systick)
Application Interface (API) über Softints (ähnlich MSDOS) mit Parameterübergabe in den Registern
integrierter Bootloader
Funktionen:
Kopiert bei Bedarf Programmiersoftware vom Flash ins SRAM und springt dorthin
PCP: Abfrage ob Update (Externe serielle Schnittstelle - ExtCOM)
PCP: Wenn Update -> Flash paketweise neu beschreiben
PCP: Sonst Test, ob Benutzerprogramm (SC5PRG) im Flash geladen ist
PCP: Programme in SRAM laden und ausführen
PCP: Aktivierung bei laufender Anwendersoftware über die Externe serielle Schnittstelle (ExtCOM) möglich.
Unterteilung
Bootloader (BL) als Bestandteil des SC5OS
Application Interface (API) als Bestandteil des SC5BOS
Signalisierung über Soft-Interrupts (Handler) durch das SC5BOS
C5-Programm (SC5PRG)
Texte und Funktionen, Menü, Ser. IO etc.
...
technische Beschreibung des SC5BOS
Funktionen und Fähigkeiten des SC5BOS-Bootloaders
Nach dem Drücken des Einschaltknopfes am C5 springt der Prozessor den Reset-Vektor (0FFFF0h) an. An ihm befindet sich ein far-jump, der auf eine Reset-Routine zeigt. In dieser Routine werden alle wichtigen Speicherbereiche und benötigte Peripherie initialisiert und eine Startmeldung (Licht, 3xBeep) zum Hörer geschickt. Danach sucht das Programm an den 64k-Segmentanfängen im Flash nach der Kennung "SC5PRG". Die Flash-Größe wird über eine Datenspiegelung detektiert (Daten spiegeln sich beim 256K-Modell). Findet der Bootloader eine Kennung, so führt er das Programm, das dort abgelegt ist aus. Ansonsten wird eine einfaches Not-Programm gestartet, das dem Benutzer ein Update der Software erleichtern soll.
Kommunikationsprotokoll
Für eine geordnete Kommunikation über die externe serielle Schnittstelle ist das SC5BOS verantwortlich. Es ist ein rudimentäres Kommunikationsprotokoll implementiert, das auf PingPong-Paket-Transfer basiert. Das Protokoll stellt 10 Ports (eigene Kanäle auf der seriellen Leitung) zu Verfügung, von denen 2 vom SC5BOS benutzt werden. 5 Ports sind so genannte well-known-ports, deren Funktion bekannt und hier dokumentiert ist.