Suchen          Elektronik Forum
Nicht eingeloggt       Einloggen       Registrieren        Zum Ersatzteileshop       

Elektroforum  

Ersatzteile Haushaltsgeräte  

Ersatzteilversand  

Webmaster-Forum  

Elektroinstallation  

Elektronik- und Elektroforum Forum Index   >>   Hardware, Betriebssysteme, Programmiersprachen        Hardware, Betriebssysteme, Programmiersprachen : Alles zu Software, Hardware, Windows, Linux, Programmiersprachen
Anfragen zu Modding, Games, Cracks, etc. unerwünscht.

Autor
Verständnisfrage: Lesen und Schreiben in Register einer PC- Karte

    

BID = 1016982

asdf

Stammposter



Beiträge: 473
Wohnort: NRW
Zur Homepage von asdf
 

  


PC- Dos
BC++ 3.1
ISA- Bus

Hallo allerseits,

Beispiel 1:
Kartenhersteller einer I/O + MotionControl Karte schreibt:

It contains a 2K bytes-FIFO to receive motion command from host PC, and it also sends the position and status to host-PC via the other 2K bytes FIFO.

FIFO2 register (base + 0) (read only)
This register is used to receive the message coming from SERVO-300
board. ... Please don’t read this register, otherwise the message will lost.

Beispiel 2:
Eine Watchdog-Karte schlummert still vor sich hin. Wehe, sie wird das erste mal gelesen (1 Bit eines Registers). Dann ist sie scharf und rebootet den Rechner nach der Timeout- Zeit. Sie muß dann immer wieder durch Lesebefehl besänftigt werden. (durch Schreiben an eine andere Adresse kann man sie deaktivieren)

Frage: Woher wissen Karten, daß an einer Adresse gelesen wurde?
Was passiert dann? Wird ein Latch zurückgesetzt? Ist das üblich? Wäre es nicht sinvoller, stets den User transparent lesen zu lassen und durch Schreiben eine Aktion auszuführen ?

Nach meinem Gefühl bisher war Lesen immer ein "nicht-invasiver" Vorgang. Daß man z.B. ein Bit stzen muß, mittzuteilen: OK, kannste löschen, die Info brauch ich jetzt nicht mehr.
Statt dessen [Beispiel 1] liest irgendein Modul (schlimmstenfalls in einer Library verborgen), ohne meine Kontrolle, Registerinhalte, an die ich nicht mehr komme, bzw, die ich nicht händisch lesen soll.
Im [Beispiel 2] wird durch bloßes Lesen doch Bedeutendes in Gang gesetzt.










BID = 1016985

DonComi

Moderator



Beiträge: 8596
Wohnort: Amerika

Moin,

Um den Lesevorgang zu detektierein reicht es ja, die Steuerleitungen taktsynchron mit einfacher Logik auszuwerten, wobei das sicher schon in entsprechenden Controllern passieren kann. Und sowohl für nen Watchdog als auch einen Lese-Fifo muss man das detektieren.

Die anderen Probleme gibt es.
Lösungen sind zB Mechanismen wie Mutexe oder allgemein exclusive Zugriffe.

Edit:
Sinnvollerweise übergibt man dem Betriebssystem die exklusiven Rechte an der Hardware und wenn man darauf zugreifen will, dann über eine Zwischenschicht, die genau diese Zugriffe steuert. Wenn sich "deine" Software also vorher anmeldet, um die Ressourcen zu Lesen/Schreiben, dann wird der Zugriff gelockt und andere können nicht mehr.
Üblicherweise lockt man lesende Vorgänge zwar nicht, aber hier ist das anders, da es ja Nebeneffekte gibt.

Leider konnten das ältere Windows-Versionen nur bedingt gut.
Mindestens bis Win98 konnte man problemlos auf IO-Bereiche zugreifen, ohne exklusive Erlaubnis einholen zu müssen


_________________


[ Diese Nachricht wurde geändert von: DonComi am  4 Apr 2017  0:30 ]

 

  






BID = 1016987

asdf

Stammposter



Beiträge: 473
Wohnort: NRW
Zur Homepage von asdf

danke zunächst,
mein Verständnisniveau ist hier kellertief unter deinem.
Mir geht es darum, zu verstehen, was fremde Karten typischerweise tun.
Die Frage ist auch speziell auf ISA (von mir aus auch PCI) Karten der Üblich Verdächtigen in der PC Welt gemünzt, z.B. ICP DAS.
Willssu n Link?Übersicht
Alles verkompliziert durch grottenschlechtes Englisch.

Zitat :
Und sowohl für nen Watchdog als auch einen Lese-Fifo muss man das detektieren.
Nehmen wir Beispiel 1: Es sind eine Schar C- Funktionen beigefügt, die in einer ISR, (den Timer auf schneller modifiziert) , alles mögliche tun, unter anderem Register abfragen. Mir ist die Möglichkeit genommen, die Register selbst abzufragen, da sie ja dann soz. resettet sind. Soll ich lt.Manual nicht tun. Was genau übergeben wird , weiß ich nicht, dank der schlecht oder gar nicht weiter dokumentierten Hardware. Ich bin dabei, dem Hersteller eine Problemanfrage zu stellen, damit er verständlich darlegt, was seine C-Fkt eigentlich tun, andererseits was seine Hardware tut.
Ich befürchte eine Antwort in schlimmsten Chinglisch und fruchtlose Kommunikation. Meine Frage hier soll klären, wie PC Karten (diese typischen Adr-auf-300h-gejumperten Experimentier I /O Karten) Lesevorgänge handhaben.

Zitat :
Lösungen sind zB Mechanismen wie Mutexe oder allgemein exclusive Zugriffe.
Hab ich in der verwirrenden Welt der RTOS schon mal gelesen, kann das sein?
Gerade kommt dein edit, wir reden etwas aneinander vorbei.
Ich bastele an Maschinensteuerungen unter DOS, die selbst soviel wie möglich Kontrolle ausüben. Bei der Programmgröße (240KB) komm ich immer noch locker am 386-protected Mode vorbei, Dos-Extender? Später? Warum nicht! Mit Linux wollen wir mal gar nicht anfangen(wenngleich gut und interessant). Windoof ist allerdings Teufelswerk für mich. (Lebenszeit reicht nicht mehr)

[ Diese Nachricht wurde geändert von: asdf am  4 Apr 2017  1:18 ]

BID = 1016989

asdf

Stammposter



Beiträge: 473
Wohnort: NRW
Zur Homepage von asdf


Zitat :
wobei das sicher schon in entsprechenden Controllern passieren kann
Ja, da ist irgendein FPGA o.ä. drauf.

Zitat :
sowohl für nen Watchdog als auch einen Lese-Fifo muss man das detektieren.
Muss wer? Der Kartenhersteller, wenn er beabsichtigt, quasi als Seiteneffekt durch den im Controller detektierten Lesevorgang eine Aktion auszulösen? Eben um diesen Seiteneffekt geht es mir- ist das gängige Praxis?
Das würde heissen, ich muß mit inportb() selbst die Register lesen, (resp.outpb() schreiben), nachdem ich rausgefunden habe, welche "tollen praktischen" C- Routinen der Hersteller benutzt, um diese dann gänzlich zu meiden. Die Fahr- und Interpolationsbefehle der C- Library sind ja in der Tat verlockend, Kreise, Bögen, Strecken fahren im 3-D-Raum.
Das is der Punkt: ich muß reverse engineering betreiben, weil ein TW-Hersteller zu faul oder zu blöd ist, in gutem Englisch eine umfassende und verständliche Dokumentation seiner Schnittstelle zu liefern.

BID = 1017972

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein


Zitat :
asdf hat am  4 Apr 2017 02:19 geschrieben :


Zitat :
sowohl für nen Watchdog als auch einen Lese-Fifo muss man das detektieren.
Muss wer? Der Kartenhersteller, wenn er beabsichtigt, quasi als Seiteneffekt durch den im Controller detektierten Lesevorgang eine Aktion auszulösen? Eben um diesen Seiteneffekt geht es mir- ist das gängige Praxis?

Ja, sogar manchmal ohne speziellen Hinweis...
... z.B. wenn Du Zeitmessungen zwischen verschiedenen Lesezugriffen benötigst.
Läuft intern (Hardwareseitig) etwa so ab:
Lesebefehl -> Ausgabe eines Zäühlerstandes -> Rücksetzen des Zählers -> Befehl beendet.
Beim nächsten Lesebefehl hast Du dann relativ genau die Zeit gemessen.
Herkömmlich programmiert würde es so aussehen:
Lesebefehl -> Ausgabe Zählerstand -> Befehl beendet Löschbefehl -> Zähler Löschen -> Befehl beendet.
.... braucht natürlich viel mehr Zeit _und_ es ist nicht immer gewährleistet, dass sich nicht ein anderer Befehl per IRQ dazwischenschiebt.

_________________
Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Wer einen Fehler findet, darf ihn behalten!

BID = 1018140

asdf

Stammposter



Beiträge: 473
Wohnort: NRW
Zur Homepage von asdf

Vielen Dank, hajos
das Argument Zeitersparnis leuchtet mir ein, zumal entsprechende Controllerlogik zur Detektion des Lesens immer da ist.

Zitat :
Please don’t read this register, otherwise the message will lost
Das ist genau der Fallstrick-
entweder:
Ich benutze die vorgefertigten Routinen des Herstellers wie zb. Mehrachs-Interpolation, Endschalterüberwachung, etc., dann lesen diese Routinen und die Register werden danach hardwareseitig gelöscht.
Oder:
Ich muß Routinen komplett ersetzen, welche Register auf der Karte auslesen. Ich kann nicht ohne Seiteneffekt rein info-halber mal zwischendurch Register auslesen.
Kann also hiermit abgeschlossen werden.


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Besitzer oder Hersteller oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 56 Beiträge im Durchschnitt pro Tag       heute wurden bisher 55 Beiträge verfasst
© x sparkkelsputz        Besucher : 138414768   Heute : 23190    Gestern : 25805    Online : 260        12.12.2017    22:37
15 Besucher in den letzten 60 Sekunden        alle 4.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.152374982834