Hallo, einen Gruß an alle Mitglieder hier im Forum - und ein frohes neues Jahr! Ich bin neu hier und habe eine Frage, weiß aber nicht, wo genau ich die stellen kann. Kurz zum Hintergrund: habe nach Jahrzehnten der "Abstinenz" vor zwei Jahren wieder mit Linux angefangen und bin mittlerweile auf PC im Kernel Bereich unterwegs (Treiber). Die Logik verstehe ich, auch wenn es in den Details noch sehr langsam geht. Gebt mir Zeit :-) Bin auf embedded ARM Prozessoren gesto0en und möchte da gerne hineintauchen. Mein konkretes Problem - bevor ich mir jetzt ein Evaluation Board zulege - ist folgendes: Ich möchte gerne einen Logic Analyser bauen. Also Abgreifen von digitalen Signalen über ein embedded System und nachfolgende Analyse. Könnte auch ein Oszilloskop werden, spielt keine Rolle. Sollte auf jeden Fall verdammt schnell sein. Thema ist, ich bekomme z.B. von einem externen A/D Wandler kontinuierlich 8bit Werte mit ner Clock und Valid etc. Evtl. noch ein Start-Bit zur Synchronisation. Evtl. auch seriell, dann aber definitv mit Start-Bit. (Kommt auf die Hardware vor dem System an, die ich natürlich gerne 100%ig flexibel halten möchte). Diese Werte muss ich irgendwie verarbeiten. Sei es über DMA (dann brauche ich irgendeinen Chip, der die geclock'ten Daten sammelt und per DMA schreibt, oder einen Bus zum embedded Prozessor, der in wie auch immer aussehende Speicherbereiche schreibt. Irgendwie habe ich da nach extensiver Suche noch keine Idee, wie und ob das funktionieren kann. SW im ARM oder Chip? Wenn Chip, welcher, bzw. wonach muss ich suchen? Stichwort? Für Hilfe wäre ich dankbar. Hoffe, ich kann meinen Knoten lösen. Auch für Hinweise, ob vielleicht in anderen Threads oder HowTo?. Grüße Joachim
Joachim Von stieglitz schrieb: > Ich möchte gerne einen Logic Analyser bauen. Das klingt eher so, als hättest du bei CPLDs oder FPGAs vorbei schauen sollen. Die tun sich damit leichter. Den ARM nutzt man dann zur Auswertung, nicht zum sampeln.
Hi, wow - superschnell. Danke. Habe - irgendwie vergeblich - nach FPGAs gesucht. Die machen doch irgendwie nur Verarbeitung von Daten. Habe das aber nicht wirklich verstanden, wenn ich ehrlich bin. CPLDs sagen mir nach kurzer Durchsicht der hier verfügbaren Doku nichts. Hatte gehofft, es gibt eine "normale" Methode, wie externe Daten im Arm verarbeitet werden können. Analog sozusagen zum Verarbeiten im PC von PCI Devices über Interrupt mit Buffer. Also etwas peripheres, dass mir nen Buffer erzeugen kann aus nem geclockten seriellen oder 8bit parallenen Signal. Edit: bin aber hoffnungsvoll, dass ich hier einen Hinweis bekomme, wo ich mich schlau machen kann. Es geht mehr darum, wie ich die Datenworte in den ARM bekomme. z.B. 16000 Werte übertragen, oder N Werte übertragn, bis neuer Synchronimpuls kommt, dann wieder warten und speichern bzw. DMAen oder buffern. Grüße Joachim
Hier etwas praktisches: http://www.mikrocontroller.net/articles/MiniLA Da hast du Peripherie die deiner CPU Daten zur Verfügung stellt. Ich denke das du mit einem ARM ö.ä. nicht weit kommen würdest. In der Artikelsammlung gibt es vielleicht noch mehr in der Richtung.
Hi Michael, danke für die Info. Klar, es gibt sowas (Logic Analyzer) bestimmt schon, aber meine Idee ist anders. Vielleicht sollte ich den Logic Analyzer löschen. Der hat sowas "digitales". Mein Ziel ist es, beliebige Analoge Werte (Spannung, Strom, Kraft, Schwingung, also Weg) analog zu digital zu konvertieren. Aber nicht mit mit evtl. vorhandenen ADCs sondern mit diskreten externen Schaltungen. Einfach um 100%ig flexibel zu sein. Ob mein Adapter nun Temperaturverläufe (langsam) oder Spannungsverläufe meines Zündkreislaufs im Auto (immer noch langsam) oder Spektralanalysen eines Empfangssignals (verdammt schnell) macht, wäre dann egal. Die externen Bausteine kriege ich hin. Also Input = 8bit Wort oder serieller Stream. Wie beim PCIe - ich habe externe Karten, die sampeln. Hier ist es aber einfacher, da ich nur die vorhandenen Buffer per Interrupt lesen muss und gut ist. Das ist einfach, aber ich benötige für verschiedene Anwendungen verschiedene PCI Karten. Das ufert dann aus... Meine Schnittstelle hätte ich gerne auf 8bit parallel oder seriell digital. Was mein embedded System dann draus macht, ist reine SW. Irgendwie muss man doch externe 8bit Worte per DMA oder so empfangen und vernünftig verarbeiten können? Ist doch prinzipiell nichts anderes als die PCI Karten, die entweder onboard oder per DMA dann per Interrupt buffern? Der ARM ist doch trotz RISC ein "normaler Prozessor? Somit sollten zumindest DMA Controller verfügbar und anbindbar sein, oder andere elegantere Lösungen? Wie gesagt - bin da blank - trotz intensiver Recherchen und es fehlt der Funke, wie ich mit dem ARM externe geclockte Daten empfangen kann (ohne den Proc nur damit zu beschäftigen, auf Daten zu warten und auch noch unsicher bzgl. der Clock Synchronisation zu sein). Grüße Joachim
Wenns nicht allzu garstig eilig ist, dann holt man heute Analogdaten seriell über SPI ab. Und wenn der ARM DMA drin hat, dann passiert das so ganz nebenbei. Parallel geht das aber auch, wenns unbedingt sein muss. Ich meine die STM32 können getriggert durch einen Timer Daten von einem Parallelport per DMA in den Speicher schaufeln. Obs auch mit externem Trigger geht habe ich grad nicht parat.
ups, cool - das stm32 scheint in die richtige Richtung zu gehen! Aber das muss ich erstmal verdauen, bevor ich weiss, ob es funktionert, bzw. ich es implementieren kann, sieht nicht einfach aus. Newbie eben. Keine "einfache" Lösung? Dann muss ich versuche, mich mit dem ST DMA controller zu verständigen (ich mag ST wirklich, by the way). Und muss nochmal die paralelle Variante prüfen - hatte den Eindruck nach dem ersten Lesen, dass er parallel kann. Außerdem kann das "Biest" wohl 12 DMA Channels gleichzeitig. Irgendwie ne Herausforderung, andererseits auch ein Kostenfaktor (der "Cortex" aleine riecht schon teuer), da ich nur einen einzige DMA Channel brauche. Aber da kann ich noch bei ST suchen. Hilft mir jedenfalls erstmal weiter. Bin aber dennoch auf der Suche nach einem "einfachen" 8bit DMA Zugriff.
Joachim S. schrieb: > Irgendwie muss man doch externe 8bit Worte per DMA oder so empfangen und > vernünftig verarbeiten können? Ist doch prinzipiell nichts anderes als > die PCI Karten, die entweder onboard oder per DMA dann per Interrupt > buffern? Der ARM ist doch trotz RISC ein "normaler Prozessor? Somit > sollten zumindest DMA Controller verfügbar und anbindbar sein, oder > andere elegantere Lösungen? Ich hätte da ein FIFO genommen (von IDT gibts da einiges, leider auch viele alte Kamellen mit 5V Vcc), in das Deine externe Schaltung ihre Daten reintaktet, das Half-Full-Flag auf eine Interruptleitung, und wenn das FIFO dann halbvoll ist, kannst Du es dann in einer optimierten Schleife ohne weitere Abfragen leeren. Das sollte eigentlich relativ fix gehen, auch ohne DMA. Um welche Taktraten geht es hier eigentlich? fchk
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.