www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Was kommt in die HAL?


Autor: Elektro Gandalf (e_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was packe ich alles in die HardwareAbstractionLayer mit rein?
Prozessorregister usw. auf jeden fall!
so, wenn ich über die Serielle Schnittstelle mit einem PC über ein 
Protokoll kommuniziere, kommt dann die auswertung des
Protokolls mit in die HAL?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gehört genau und nur das rein, was direkt mit der zugrundeliegenden 
Hardware spricht. Der Zugriff auf die Schnittstellenregister gehört also 
da rein, die Analyse irgendeines Übertragungsprotokolles nicht.

Autor: Elektro Gandalf (e_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, Danke (erst mal ;-).

Und wenn ich nun ein Relais auf der Prozessorkarte setzen will!
Schreibe ich die Funktion zum setzen des Relais dann in die HAL?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Und wenn ich nun ein Relais auf der Prozessorkarte setzen will!
> Schreibe ich die Funktion zum setzen des Relais dann in die HAL?

Ja, aber ggf nach dem benannt, was durch das Relais geschaltet wird, 
also z.B. Light_on().

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Begriff entstammt dem Bereich Betriebssysteme. Wenn du ein System 
hast, in dem sich die Software in einen maschinenabhängigen und einen 
maschinenunabhängigen Teil trennen lässt. Siehe Windows. Was spezifisch 
für x86 ist, gehört in den HAL (Taskumschaltung) oder in Gerätetreiber 
(Disk), was dies nicht ist sitzt woanders (Scheduler, Filesystem).

Wie du das auf Controller abbildest bleibt dir überlassen. Auf einfache 
Controller-Systeme ist dieses Konzept oft nicht sinnvoll anwendbar, da 
auf allen Ebenen sehr hardwarenah gearbeitet wird, und/oder eine 
Trennung den Code bloss aufbläht.

Ein HAL ist sinnvoll, wenn du dich mit dem Gedanken trägst, 
Controller-Anwendungen ohne grossen Aufwand auf verschiedene Controller 
portieren zu können. Und dadurch ergibt sich dann die Schnittstelle 
automatisch. Genau das was aufgrund andersartiger Hardware modifiziert 
werden muss gehört in den HAL. Evtl. auch Dinge, die von der 
Programmierumgebung abhängen (Interrupt-Support ist oft verschieden).

Was dein Relais angeht: Wenn du es konsequent durchziehen willst, dann 
baust du eine Funktion / einen API für Portzugriffe. Wobei du das so 
bauen musst, dass es gleichermassen bei Ports sehr verschiedener Bauart 
funktioniert (8/16/32 Bits breit, mit/ohne OpenCollector, möglicherweise 
mit den Eigenheiten der 8051-Ports, ...). Voraussetzung hierfür ist, 
dass du dir vorher eine Übersicht darüber verschaffst, was die Welt da 
so anbietet.

Bei Kleinkram wie Relais allerdings ist es eher sinnvoll, 3 Port-Makros 
zu definieren. Relais_Init, Relais_An, Relais_Aus.

Autor: Nullpointer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die HAL ist ein halbdurchgekautes Konzept das die Basisfunktionalitaet 
bei beliebig besserer Hardware garantiert. Der VGA modus beim PC ist ein 
Angelegenheit der HAL. Die superbeschleunigte 3D Darstellung laeuft 
natuerlich neben der HAL vorbei. Oder ein UART, das ein 16550 emuliert. 
Dabei ist die Hardware viel besser.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der VGA modus beim PC ist ein angelegenheit der HAL.

Das hat nichts mit HAL zu tun. VGA-kompatible Karten sind einfach 
Hardware, die sich immer gleich ansprechen läßt. HAL braucht man aber 
erst, wenn man die Hardware hat, auf die man auf unterschiedliche Art 
zugreifen muß. Diese Unterschiede werden dann hinter einer 
Softwareschnittstelle verborgen, damit das eigentliche Programm sich 
darum nicht mehr kümmern muß.

> Die superbeschleunigte 3D Darstellung laeuft natuerlich neben der HAL
> vorbei.

Nein, gerade da nicht. Man will nämlich nicht für die Karten von ATI, 
Nvidia, Intel u.s.w jedesmal sein 3D-Spiel komplett neu schreiben, weil 
jeder Hersteller seinem Treiber komplett unterschiedliche Funktionen 
gibt. Deshalb gibt's da ein HAL, das die Unterschiede verbirgt.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Der VGA modus beim PC ist ein angelegenheit der HAL.
> Das hat nichts mit HAL zu tun.

Doch, ursprünglich schon. Das PC-BIOS ist ein solcher HAL und wurde von 
DOS auch so verwendet.

> Deshalb gibt's da ein HAL, das die Unterschiede verbirgt.

Wobei sowas auf unterster Ebene gemeinhin als Device Driver bezeichnet 
wird, nicht als HAL. Das ist aber eher eine Frage der Bezeichnung, nicht 
so sehr des Inhalts.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde sagen, der HAL ist eine Sammlung von Lowlevel-Treibern, die 
direkt mit der Hardware kommunizieren und nach oben einen 
standardisierten Satz von Geräteoperationen bereitstellen.

Darüber liegen in aller Regel noch mehr oder weniger viele, noch oben 
immer abstrakter werdende Treiberschichten. Darauf "sitzt" das 
eigentliche Betriebsystem.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>> Der VGA modus beim PC ist ein angelegenheit der HAL.
>> Das hat nichts mit HAL zu tun.
>
> Doch, ursprünglich schon. Das PC-BIOS ist ein solcher HAL und wurde von
> DOS auch so verwendet.

Stimmt, DOS hat per BIOS auf die Grafikkarte zugegriffen. Allerdings 
ändert das nichts daran, daß die Grafikkarten registerkompatibel zur VGA 
sind und man daher auch ohne Zugriff über das BIOS die VGA-Modi aller 
Karten auf dieselbe Art anspricht. VESA ist da schon eher ein HAL.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also HAL = Treiber?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht unbedingt. Ein HAL ist eine Abstraktionsschicht. Die kann in einem 
Treiber implementiert sein oder auch in einer höheren Ebene. Treiber 
sind halt sehr hardwarenah. Sie sollen erstmal nur die Funktionen der 
Hardware auf ein Software-Interface mappen. Da gibt's dann meistens noch 
einige Unterschiede.
Ein HAL soll aber alle Funktionen, die spezifisch für eine Hardware 
sind, hinter einem einheitlichen Interface wegkapseln.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.