Wie funktioniert eine API Implementierung ?

OP #1220579
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe ein Verständnisproblem was das Thema API angeht. :-(

Ich habe schon oft gelesen das in µC-firmware eine API eingebaut ist
über diese man dann die firmware-funktionen ausführen kann.

Wie muß ich mir das vorstellen bzw. wie läuft dann die Programmierung
des Anwenderprogrammes in den µC ab!!???

Ich möchte mich diesem Thema annehmen und in einem Atmega32 zu
Testzwecken diese Art der µC-Programmierung ausprobieren....

Im voraus schon DANKE für alle Antworten.

Grüsse Patrick
Gast #1220697
Lesenswert?
• ▲
▼
Was genau du irgendwo gelesen hat, weiß ich zwar nicht, aber ein API zu 
einer Firmware (Application Programming Interface) ist nichts anderes 
als Windows oder linux auf deinem Computer. Da gibt es einen Satz 
Funktionen, die im Gerät eingebaut sind, und vom Anwenderprogramm 
aufgerufen werden können, ohne das sie zum Programm hinzugelinkt werden 
müssen, oder der Anwender überhaupt weiß, wie sie intern realisiert 
sind.

Was an Thema annehmenswürdig ist, keine Ahnung. Die Technik ist fast so 
alt wie die Computer. Selbst PC-Prozessoren laufen intern mit "Firmware" 
(genannt Microcode), da ist das API der Assembler.

Oliver
Gast #1220834
Lesenswert?
• ▲
▼
> auch ohne zu wissen was sie genau tut
Da muß ich doch heftigst widersprechen! Wenn man eine Funktion benutzen 
will, sollte man schon sehr genau wissen WAS sie tut. Was man nicht 
unbedingt wissen muß, ist WIE sie es tut.
Gast #1220885
Lesenswert?
• ▲
▼
>dass ich meine Schaltung(en) an
>einen Bus (evt. CAN) anbinden möchte und dann verschiedene
>Anwenderprogramme über diesen auf den µC programmieren möchte...

Hä?

Was willst du wo warum worüber programmieren, und was hat das mit API's 
und Firmware zu tun?

Oliver
#1220980
Lesenswert?
• ▲
▼
Ein API-Call ist nichts weiter, als ein Funktionsaufruf von einem 
Programm zu einem anderen Programm.
Der Aufruf erfolgt entweder per Softwareinterrupt oder an eine feste 
Adresse.
Was der API-Call ausführen soll, entscheidet er anhand einer 
Funktionsnummer in einem Register.

Der Funktionsumfang des API ist völlig beliebig.
Bei MCs mit Factory-Bootloader kann man z.B. eine Funktion aufrufen, die 
den Flash beschreibt.


Peter
Moderator Persönliche Seite #1221007
Lesenswert?
• ▲
▼
Wobei das natürlich nicht auf C-Funktionen beschränkt ist.

Grob übersetzt ist ein API ein Bündel von zur Verfügung gestellten 
Funktionen (im allgemeinen Sinn). Wie man die nun aufruft, ist 
nebensächlich.

In meinen AVR-Controllern werkelt z.B. ein Tcl-Kern, der meinen Skripten 
spezielle Funktionen per Tcl-Befehl zur Verfügung stellt, eben ein API.

In meinen Skripten ist z.B. der Befehl "ctrl" für controllerspezifische 
Dinge zuständig, stellt also für die Anwendung (=Skript) entsprechende 
Funktionen (Ausgabe über CAN/RS-232 usw.) zur Verfügung:

set ausgabe "Test"
ctrl can out $ausgabe

gibt also "Test" auf dem CAN-Bus aus, egal, welchen Controller (AVR, 
PIC, ARM, i386) ich einsetze. Dank des API sind die Programme also auf 
beliebigen Maschinen lauffähig (ich kann hier also auf dem PC meine 
Programme in Ruhe testen - ohne hochladen, JTAG und allen anderen 
Krücken).

Natürlich gibt es bzgl. Echtzeit/Interruptverhalten einiges zu beachten 
- aber da gibt es passende Kniffe :-)

Chris D.
Gast #1221281
Lesenswert?
• ▲
▼
Darf ich die API so verstehen z.B. ein paar Warteschleifen, 
Kommunikation mit  RS232, etc. sind auf dem µC und würde dann per 
Bootloader ein Programm überspielen (ohne zu Flashen) und diese 
Funktionen nutzen die hinterlegt sind.
OP #1221607
Lesenswert?
• ▲
▼
Hallo,

danke für die vielen Antworten...

@ Oliver:
Ich möchte die Protokoll-Implementierung für meinen Bus fest im µc 
haben,
aber verschiedene Anwenderprogramme(digital I/O, analog I/O, 
Stellantrieb,...) in den Controller über den Bus programmieren.

Ziel ist ein flexibles Bus-Modul zu bauen bei dem immer nur die 
Anwendungs-
hardware (Relais,Temp-Sensor,...) sich ändert - und ich nur die
passende Anwendersoftware überspielen muss.


Wie muss ich mir denn das Zusammenspiel zwischen Firmware-Funktion
(z.B. Wert senden) und Anwendungsprogramm vorstellen?

In der Firmware schreibe ich eine Funktion (wie in jedem üblichen 
Programm)
das eine Übergabevariable erwartet und diese auf den Bus sendet...

Jetzt zu meinem Verständnisproblem:
Wie rufe ich die Funktion aus meinem nachträglich eingespielten 
Anwenderprogramm auf?????????????
Moderator Persönliche Seite #1221632
Lesenswert?
• ▲
▼
Klaus wrote:
> Darf ich die API so verstehen z.B. ein paar Warteschleifen,
> Kommunikation mit  RS232, etc. sind auf dem µC und würde dann per
> Bootloader ein Programm überspielen (ohne zu Flashen) und diese
> Funktionen nutzen die hinterlegt sind.

Wenn Du mich meinst:

Ja, so in etwa. Alles, was µC-spezifisch ist + der Tcl-Interpreter ist 
bereits auf dem Chip. Das eigentliche Anwendungsprogramm wird bei mir 
z.B. in ein einen externen Atmel-Flash mit z.B. 16MBit abgelegt und 
einem SRAM.

Dadurch, dass ich den Code interpretiere, habe ich für "langsame" Sachen 
in reinem Tcl praktisch unbegrenzt Speicher zur Verfügung.
Die zeitkritischen Sachen stecken in der API.

Chris
Gast #1221652
Lesenswert?
• ▲
▼
> Ein API-Call ist nichts weiter, als ein Funktionsaufruf von einem
> Programm zu einem anderen Programm.
> Der Aufruf erfolgt entweder per Softwareinterrupt oder an eine feste
> Adresse.

Ne Peter, da interpretierst Du viel zu viel rein.

Ein API ist nichts anderes als eine Schnittstellendefinition. Das kann 
von bis gehen und die Implementation und die Details sind vollkommen 
beliebig.

Ein "API-Call" ist nichts weiter als ein Aufruf irgendeiner 
Funktionalität der definierten Schnittstelle. Wie das konkret gelöst 
ist, ist völlig wurscht und ist (oft/meistens) Bestandteil des API.

Ein API kann von einem Betriebssystem, einer shared Library, einem Stück 
Source-Code, einem Netzwerkdienst oder sonst etwas zur Verfügung 
gestellt werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren