###############################################
# Willkommen bei Holgi's großem ATMega-DOS ! #
###############################################
################################################################################
# Nachbau und Benutzung auf eigene Gefahr !
#
# Vor dem ersten Versuch folgende Dinge kontrollieren:
# Im makefile nachsehen welcher Prozessor eingestellt ist.
# Im makefile den Prozessortakt richtig einstellen (pro Projekt).
# In dosdefs.h das Medium (CF/SD/MMC) auswählen (pro Projekt).
# In dosdefs.h alle gewünschten DOS Routinen de-/aktivieren (pro Projekt).
################################################################################
################################################################################
# Warnung: DOS legt die Daten in Partitionstabelle,Bootsektor,Verzeichnissen
# und FAT im LITTLE ENDIAN Format ab. Wer z.B. KEIL C51 benutzt
# muss diese Daten beim lesen erst in BIG ENDIAN umrechnen.
# Beim schreiben muss wieder ins LITTLE ENDIAN Format umgerechnet
# werden, sonst kann DOS nichts mehr lesen.
# Das Programm arbeitet viel mit Strukturen. Die müssen BYTE aligned
# sein ! Unsigned int muss 16 Bit sein.
################################################################################
10.08.2007
Viel Spaß damit
[email protected]
http://www.holger-klabunde.de/index.html
Multi-File-System Version
Das Multi-File-System basiert auf einem ersten Vorschlag von
########
# QPEL #
########
Seinen richtigen Namen wollte er mir leider nicht nennen :(
Dieses ATMega-DOS ist nur für Prozessoren ab 2kB RAM (ATMega32 und größer)
geeignet. Mit AT90Sxxxx AVR's oder ATMega8, ATMega8515 arbeitet es nicht.
Auf einem ATMega32 können maximal 2 Dateien gleichzeitig geöffnet werden.
Dann muß aber der FAT-Buffer abgeschaltet werden ! Sonst reicht das RAM
nicht. Diese FAT Version ist deshalb nur für ATMega ab 4kB RAM sinnvoll.
Das sind z.B. ATMega64 oder ATMega128.
Mit dieser FAT Version ist es möglich mehrere Dateien gleichzeitig
zum lesen oder schreiben zu öffnen. Wie viele hängt vom freien RAM
Speicher ab. Die Anzahl maximal offener Dateien wird in dos.h über
die Konstante MAX_OPEN_FILE festgelegt.
In den Verzeichnissen mit den Testprogrammen findet man teilweise
eine Datei readme.txt . Dort ist so etwas wie eine Historie zu finden
wie sich die Schreib-/Lesezeiten von Version zu Version verbessert haben.
Die Messungen sind aber unverbindlich ! Sie hängen sehr stark vom
verwendeten Medium ab.
CompactFlash (CF) werden hier im 8 Bit Microcontroller Modus betrieben.
Die Ansteuerung hat nichts mit Festplatten zu tun. Die FAT-Routinen zum
lesen/schreiben von Dateien könnte man aber evtl. übernehmen.
Neu hinzugekommen sind Routinen für die Ansteuerung von MultiMedia- (MMC)
und SecureDigital- (SD) Cards im SPI Modus.
Alles was ab hier zu CF gesagt wird gilt auch für MMC/SD.
Und ein ganz wichtiger Tip: Halte die Kabel kurz ! Nicht mehr als 10cm.
Bei meiner MMC war bereits bei 18cm NICHTS mehr zu machen.
CF brauchen unbedingt Pullups am Datenport. Ohne interne Pullups vom
ATMega ging fast gar nichts. Bei langen Kabeln könnte es erforderlich
sein externe Pullups um 10k am Datenport anzuschliessen.
CF/MMC/SD können NICHT im laufenden Programm eingesteckt oder rausgezogen
werden ! Bitte die Schaltung deaktivieren bevor du das machst.
###################
# Zur Geschichte: #
###################
Ziel des Projektes war es moderne Speichermedien mit einem Microcontroller
zu lesen und zu schreiben weil ein 512kB Flash Eprom wie 29F040 manchmal
noch zu klein ist. Flash Eproms brauchen auch zu viele Pins für die
Ansteuerung. Die sind in der Schaltung oft nicht frei.
Außerdem sollte eine einfache Möglichkeit her die Daten auch mit dem PC zu
lesen oder zu schreiben. Also am besten ein FAT-Filesystem. Kann man mit
jedem billigen CF/MMC/SD-Reader lesen und schreiben.
Beim Microcontroller sollte möglichst kein externes RAM zum Einsatz
kommen. Das ist ganz gut gelungen. 1.2kB für ein Dateisystem ohne
FAT-Buffer und 1.7kB mit FAT-Buffer passt noch gut in einen ATMega32.
Programmspeicherbedarf mit ALLEN Funktionen bisher ca. 12kB (6k Worte).
Da die Routinen in C geschrieben sind dürfte es nicht all zu schwer
sein das ganze auch auf 8051 (dann externes RAM) oder anderen Micro-
controllern zum laufen zu bringen. PIC16F sind da leider keine gute
Wahl weil man wegen des RAM Bankings maximal 256 Byte RAM am Stück
bekommt. Das dürfte recht kompliziert werden.
Hier eine Übersicht welche Funktionen man zur Zeit benutzen kann
ohne das man sich erst in FAT-Dateisysteme einarbeiten muss. Von
den anderen Funktionen sollte man besser die Finger weglassen !
unsigned char GetDriveInformation(void);
unsigned char Fopen(char *name, unsigned char flag);
unsigned int Fread(unsigned char *buf, unsigned int numbytes, char fileid);
unsigned int Fwrite(unsigned char *buf, unsigned int numbytes, char fileid);
unsigned long Filelength(char fileid);
void Fflush(char fileid);
void Fclose(char fileid);
unsigned char Chdir(char *name);
unsigned char Mkdir(char *name);
unsigned char Remove(char *name);
unsigned char ReadFileRaw(char *name);
unsigned char FindName(char *name);
unsigned char Findfirst(void);
unsigned char Findnext(void);
unsigned char Rename(char *OldName, char *NewName);
unsigned char Fseek(long offset, unsigned char mode, char fileid);
Namen und Parameter sind so weit wie möglich an die DOS Funktionen
angelehnt die man auch vom PC her kennt. Es gibt allerdings
Unterschiede und Einschränkungen. Siehe unten.
Zuerst einmal: Was geht nicht !
===============================
Lange Dateinamen werden zum Teil unterstützt. Siehe Findfirst() Findnext()
Eine Datei kann nur zum lesen ODER schreiben geöffnet werden.
Man kann eine Datei nicht zum schreiben öffnen und
alte Daten überschreiben. Es wird IMMER hinten drangehängt.
Formatieren geht natürlich nicht.
Verzeichnisse löschen geht nicht.
Fseek() arbeitet nicht mit Dateien die zum schreiben geöffnet sind.
Es wird keine Kopie von der FAT angelegt. Scandisk meckert da !
Man kann nur mit der ersten Partition arbeiten.
Es gibt keine Laufwerksnamen wie C:
Pfadangaben in Dateinamen sind nicht erlaubt. Man kann mit Chdir()
aber schrittweise in mehrere Unterverzeichnisse wechseln.
Man kann den CF nicht aus der laufenden Schaltung rausziehen bzw.
einen CF reinstecken.
Was geht ?
==========
Das Programm unterstützt FAT12,FAT16 und FAT32 Dateisysteme.
Man kann Dateien lesen und neue Dateien erstellen.
Daten an vorhandene Dateien dranhängen.
Dateien und Verzeichnisse löschen.
Mehrere Dateien können gleichzeitig geöffnet werden.
Man kann neue Verzeichnisse erstellen. Auch in Unterverzeichnissen.
Man kann in Verzeichnisse wechseln und alle oben genannten Funktionen
darin ausführen.
Dateien und Verzeichnisse können umbenannt werden.
Fseek() arbeitet mit Dateien die zum lesen geöffnet sind.
Alle Routinen arbeiten auch mit einer fragmentierten FAT !
Das Programm erkennt automatisch ob in Sektor 0 ein MBR (Partitionstabelle)
oder ein Bootsektor vorhanden ist. Spezielle Formatierung ist nicht erforderlich.
RAM Speicherbedarf
==================
Ohne FATBuffer ca. 1,2kB RAM Bedarf (für max. eine offene Datei)
Mit FATBuffer ca. 1,7kB RAM Bedarf (für max. eine offene Datei)
Wenn mehrere Dateien gleichzeitig geöffnet werden sollen, werden
pro weiterer Datei zusätzliche 560 Bytes benötigt. Wie viele Dateien
geöffnet werden können legt man in dos.h mit dem Wert MAX_OPEN_FILE fest.
Ohne FAT-Buffer ist nur für reine Lesesysteme empfehlenswert.
Schreiben sollte man damit nicht. Siehe unten. Beim lesen kommt
man auch ohne FAT Buffer auf gute Geschwindigkeiten.
Wenn man lange Dateinamen von Findfirst()/Findnext() bekommen
möchte kommen noch einmal 256 Byte RAM dazu. Man kann den
没有合适的资源?快使用搜索试试~ 我知道了~
sd_memory.zip_BRL_sd card_sd_memory_zip
共1284个文件
h:271个
c:233个
log:166个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 24 浏览量
2022-09-23
19:42:29
上传
评论
收藏 6.01MB ZIP 举报
温馨提示
sd_memory card source
资源推荐
资源详情
资源评论
收起资源包目录
sd_memory.zip_BRL_sd card_sd_memory_zip (1284个子文件)
main.a 82KB
string.al 37KB
stdio.al 35KB
stdlib.al 35KB
math.al 34KB
ctype.al 8KB
spi.al 1013B
hany_mp3_player.aps 4KB
1.aps 3KB
12.aps 3KB
main.asm 92KB
hany_mp3_player.aws 3KB
12.aws 486B
1.aws 293B
_doxygen.bat 99B
_doxygen.bat 99B
_doxygen.bat 99B
_gcc.bat 70B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_GCC.BAT 69B
_GCC.BAT 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc.bat 69B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_GCC2.BAT 56B
_GCC2.BAT 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
_gcc2.bat 56B
共 1284 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
资源评论
寒泊
- 粉丝: 75
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功