Mikroprozessor Boards/SDIO-Board: Unterschied zwischen den Versionen

Aus
Wechseln zu: Navigation, Suche
(Dokumentation)
(Firmware)
 
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
[[File:Wichit-sd-02.jpg|right|thumb|200px|SDIO Board]]   
 
[[File:Wichit-sd-02.jpg|right|thumb|200px|SDIO Board]]   
[[File:6809kit-03.jpg|right|thumb|200px|6809 Kit]]  
+
[[File:6809kit-03.jpg|right|thumb|200px|6809 Kit + SDIO Board]]  
 
__NOTOC__
 
__NOTOC__
 
== SD-IO von Nils Eilers ==
 
== SD-IO von Nils Eilers ==
Zeile 27: Zeile 27:
  
 
'''<u>Update 1</u>:''' für die 30K Firmware braucht es eine ''Hardware Modifikation'' bestehend aus einem Draht (siehe Foto: A1 an Pin 4 des GAL).
 
'''<u>Update 1</u>:''' für die 30K Firmware braucht es eine ''Hardware Modifikation'' bestehend aus einem Draht (siehe Foto: A1 an Pin 4 des GAL).
 +
  
 
<br />
 
<br />
Der Lowlevel Zugriff auf die SD Karte ist in 6309 Assembler Implementiert. Darauf aufgesetzt ist das [http://elm-chan.org/fsw/ff/00index_e.html FAT-FS von Elm Chan]. Die FAT-FS kann man mit dem großartigen CMOC Compiler übersetzen. Es sind nur geringe Änderungen in der Datei FF.C notwendig, weil der vorliegende CMOC Probleme mit dem Operator ? hat.
+
=== Firmware ===
 +
 
 +
Der Lowlevel Zugriff auf die SD Karte ist in 6309 Assembler Implementiert (SD BIOS). Es liegt im ROM ab Adresse $F800 und belegt etwas weniger als 2KB. Der Zugriff erfolgt über eine Sprungtabelle ab $F800. Neben dem SD Card Code sind einige weitere Routinen enthalten für Zeitverzögerung (Delay_xx) und Terminal Ausgabe (PUTxxx, HEXnn, DUMPmmm ..). Der SD Card Teil beinhaltet SD Initialisierung (SDIOinit, SDIOstatus), SD lesen (SDIOreadCSD, SDIOreadCID, SDIOreadStatus, SDIOreadBlock, SDIOreadBlocks) und SD schreiben (SDIOwriteBlock, SDIOwriteBlocks).
 +
 
 +
Auf dem SD BIOS aufgesetzt wird das [http://elm-chan.org/fsw/ff/00index_e.html FAT-FS von Elm Chan]. Das FATFS kann man mit dem großartigen CMOC Compiler übersetzen. Es sind nur geringe Änderungen in der Datei FF.C notwendig, weil der vorliegende CMOC Probleme mit dem Operator ? hat.  
 +
 
 +
Das große Problem des mit CMOC übersetzte FATFS ist die Größe des Modul. Der CMOC produziert relativ großen Code. Wenn man alle Optionen des FATFS in der Datei ffconf.h aktiviert, dann braucht es 32KB und hat keinen Platz mehr im ROM. Die aktuelle Version v1.01 hat die allerwichtigsten Dinge aktiviert und belegt fast 22KB des ROM. Der Code hat auch eine Sprungtabelle ganz am Anfang an der Adresse $A000. Die Sprungtabelle ist aber auf CMOC Code ausgelegt und kann direkt von C Funktionen im RAM verwendet werden (siehe Beispiel Code). Dadurch wir der C Code im RAM sehr kompakt.
 +
 
 +
 
 +
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 +
Image:SDIO-Tera-02.png
 +
Image:SDIO-Tera-04.png
 +
Image:SDIO-Tera-05.png
 +
SDIO-Tera-06.png
 +
SDIO-firmware-01.png
 +
</gallery>
 +
 
 +
 
  
 +
* V1.00 - erste Version, FATFS nur lesen
 +
* V1.01 - FATFS lesen/schreiben, Datei löschen, Directory lesen, Dateiattribute setzen
  
 +
 +
Der nächste Schritt wäre die Implementierung von [https://nitros9.sourceforge.io/wiki/index.php/Main_Page NitrOS-9] statt der FATFS Sache. OS9 ist viel kompakter als FAT und eben für die Motorola 6809 optimiert.
  
 
<br />
 
<br />
 +
 
=== Dokumentation ===
 
=== Dokumentation ===
  
 
* [[Media:Wichit-sd-board-final.pdf|SDIO Platine von Nils Eilers (Schematic)]]
 
* [[Media:Wichit-sd-board-final.pdf|SDIO Platine von Nils Eilers (Schematic)]]
* [[Media:SDIO-Firmware 1.00.zip|Firmware v1.00 für SDIO Board von Nils Eilers + 6809 Board von Wichit Sirichote (30K patch + SDIO Bios)]]
+
* [[Media:SDIO-Firmware 1.01.zip|Firmware v1.01 für SDIO Board von Nils Eilers + 6809 Board von Wichit Sirichote (30K patch + SDIO Bios)]]
* [[Media:SDIO-Testcode 1.00.zip|Sample-Code v1.00 für Nils SDIO Platine ]]
+
* [[Media:Cmoc-win32 01.zip|Win-32 Toolchain - CMOC + Utilities: SREC2BIN, Gnu-MAKE]]
  
 
<br />
 
<br />
Zeile 49: Zeile 72:
 
* [http://elm-chan.org/docs/mmc/mmc_e.html SD Card Dokumentation von Elm Chan]
 
* [http://elm-chan.org/docs/mmc/mmc_e.html SD Card Dokumentation von Elm Chan]
 
* [http://elm-chan.org/fsw/ff/00index_e.html FAT Filesystem für Embedded Systems (Implementierung von Elm Chan]
 
* [http://elm-chan.org/fsw/ff/00index_e.html FAT Filesystem für Embedded Systems (Implementierung von Elm Chan]
 +
* [https://nitros9.sourceforge.io/wiki/index.php/Main_Page NitrOS-9 Wiki]
 
* [http://www.rjhcoding.com/avrc-sd-interface-3.php Interfacing an SD Card]
 
* [http://www.rjhcoding.com/avrc-sd-interface-3.php Interfacing an SD Card]
 
* [https://www.kampis-elektroecke.de/2018/11/avr-mit-einer-sd-karte-erweitern-teil-1/ SD Card Implementierung für AVR (Kampis Eletroecke)]
 
* [https://www.kampis-elektroecke.de/2018/11/avr-mit-einer-sd-karte-erweitern-teil-1/ SD Card Implementierung für AVR (Kampis Eletroecke)]
 
* [https://www.dharmanitech.com/2009/01/sd-card-interfacing-with-atmega8-fat32.html SD/SDHC Card Interfacing with ATmega8 /32 (FAT32 implementation)]
 
* [https://www.dharmanitech.com/2009/01/sd-card-interfacing-with-atmega8-fat32.html SD/SDHC Card Interfacing with ATmega8 /32 (FAT32 implementation)]
 
* [https://community.st.com/s/question/0D50X00009XkaGD/sdio-command-crc-error-on-acmd41 CRC Problem mit ACMD-41]
 
* [https://community.st.com/s/question/0D50X00009XkaGD/sdio-command-crc-error-on-acmd41 CRC Problem mit ACMD-41]

Aktuelle Version vom 26. Juni 2020, 19:07 Uhr

SDIO Board
6809 Kit + SDIO Board

SD-IO von Nils Eilers

Nils Eilers hat eine SD-Card Platine entwickelt für das 6309 Board von Wichit Sirichote. Die Platine wird über ein Flachbandkabel an den 40 poligen Erweiterungsport angeschlossen. Der 40 polige Erweiterungsport führt alle relevanten Signale der CPU heraus. Dazu gehört der ganze Adressbus (A0 bis A15) sowie der Datenbus und der Controlbus.

Das SD-IO Board von Nils Eilers enthält einen GAL für die Adressdekodierung und Clock Erzeugung für das SD Board. Dazu enthält es TTL für IO (D-FF + Input Driver) sowie einen Baustein für die Pegelanpassung zur SD Karte.



Die erste Version des SDIO war noch ein Prototyp auf Lochraster und am LCD Port angeschlossen.

Der Vorteil eines SD Boards am Erweiterungsport: das LCD Port ist wieder frei, man kann also SD Karte UND LCD Display zugleich betreiben.

Vielen Dank an Nils für das wunderschöne Board!


Update 1: für die 30K Firmware braucht es eine Hardware Modifikation bestehend aus einem Draht (siehe Foto: A1 an Pin 4 des GAL).



Firmware

Der Lowlevel Zugriff auf die SD Karte ist in 6309 Assembler Implementiert (SD BIOS). Es liegt im ROM ab Adresse $F800 und belegt etwas weniger als 2KB. Der Zugriff erfolgt über eine Sprungtabelle ab $F800. Neben dem SD Card Code sind einige weitere Routinen enthalten für Zeitverzögerung (Delay_xx) und Terminal Ausgabe (PUTxxx, HEXnn, DUMPmmm ..). Der SD Card Teil beinhaltet SD Initialisierung (SDIOinit, SDIOstatus), SD lesen (SDIOreadCSD, SDIOreadCID, SDIOreadStatus, SDIOreadBlock, SDIOreadBlocks) und SD schreiben (SDIOwriteBlock, SDIOwriteBlocks).

Auf dem SD BIOS aufgesetzt wird das FAT-FS von Elm Chan. Das FATFS kann man mit dem großartigen CMOC Compiler übersetzen. Es sind nur geringe Änderungen in der Datei FF.C notwendig, weil der vorliegende CMOC Probleme mit dem Operator ? hat.

Das große Problem des mit CMOC übersetzte FATFS ist die Größe des Modul. Der CMOC produziert relativ großen Code. Wenn man alle Optionen des FATFS in der Datei ffconf.h aktiviert, dann braucht es 32KB und hat keinen Platz mehr im ROM. Die aktuelle Version v1.01 hat die allerwichtigsten Dinge aktiviert und belegt fast 22KB des ROM. Der Code hat auch eine Sprungtabelle ganz am Anfang an der Adresse $A000. Die Sprungtabelle ist aber auf CMOC Code ausgelegt und kann direkt von C Funktionen im RAM verwendet werden (siehe Beispiel Code). Dadurch wir der C Code im RAM sehr kompakt.



  • V1.00 - erste Version, FATFS nur lesen
  • V1.01 - FATFS lesen/schreiben, Datei löschen, Directory lesen, Dateiattribute setzen


Der nächste Schritt wäre die Implementierung von NitrOS-9 statt der FATFS Sache. OS9 ist viel kompakter als FAT und eben für die Motorola 6809 optimiert.


Dokumentation


Links