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

von Lasse S. (cowz)

Rate this post
0 useful
not useful
(Deutscher Text unten)


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

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 



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 
PS: Auch wenn das eher eine theoretische Frage ist: Ich programmiere in 
C für einen STM32

von 900ss (Guest)

Rate this post
0 useful
not useful

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.



Entering an e-mail address is optional. If you want to receive reply notifications by e-mail, please log in.

Rules — please read before posting

  • Post long source code as attachment, not in the text
  • Posting advertisements is forbidden.

Formatting options

  • [c]C code[/c]
  • [avrasm]AVR assembler code[/avrasm]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]

Bild automatisch verkleinern, falls nötig
Note: the original post is older than 6 months. Please don't ask any new questions in this thread, but start a new one.