EmbDev.net

Forum: ARM programming with GCC/GNU tools Layered OS: DMA Transfer into Filesystem


von Lasse S. (cowz)


Rate this post
useful
not useful
(Deutscher Text unten)

Hi,

I'm coding a little OS for my current project (*) and stepping over some 
problems.

The OS is layered, so there is a HAL that does all the hardware stuff 
(e.g. setting up registers). This HAL is used by the Kernel(-Layer), 
which includes drivers (e.g. FileSystem).

As hardware I have a Camera and a SD-Card. I want to save the camera 
data (coming in via UART) directly to the SD-Card using D (something 
like a save_camera_image(char* filename) function).

The problem is now: The HAL doesn't know anything about the Filesystem 
but the camera data should still be saved into a file. The Kernel 
doesn't know any register adresses to set up an DMA-Transfer.

I'm quite getting stucked here, please help me :)


*) for multiple reasons, of which one is to learn
PS: even though this question is more a theoretical one, I use C on an 
STM32

---

German:

Hallo, ich programmiere ein Betriebssystem* für mein aktuelles Projekt 
und hab jetzt ein kleines Problem.

Das OS ist "layered", also mit Schichten aufgebaut. Es gibt ein HAL der 
sich um die Hardwaresachen kümmert (Register setzen, etc.) und einen 
Kernel der z.B. ein Dateisystem bereitstellt.

Als Hardware habe ich eine Kamera und eine SD-Karte. Ich möchte nun die 
Kameradaten (via UART) in die SD-Karte speichern (Beispielsweise über 
eine save_camera_image(char* filename) Funktion).

Mein Problem dabei: Der HAL hat keine Ahnung vom Dateisystem, das 
Kamerabild soll aber in eine Datei gespeichert werden. Der Kernel hat 
aber keine Ahnung vom DMA und kann somit auch nicht helfen.

Tja, und da hänge ich momentan. Wie kann ich mich aus diesem Dilemma 
befreien, ohne mein Layersystem kaputt zu machen?

*) aus mehreren Gründen, der wichtigste ist wohl, dass ich dabei lernen 
möchte.
PS: Auch wenn das eher eine theoretische Frage ist: Ich programmiere in 
C für einen STM32

von 900ss (Guest)


Rate this post
useful
not useful
E.g.

You have to implement an additional layer, a device driver layer between 
the HAL and the kernel. In the device driver implement intelligent 
functions which have the knowledge of the file system and also a driver 
for SDCard access via DMA. The kernel don't need a filesystem implented. 
The file system is a different "device". The SDCard is another device.

900ss

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.