Hallo zusammen Ich bin ganz neu im Bereich der Mikrocontroller programmierung. Zum starten habe ich das Evaluation Board (AT91SAM7S-EK) mit einem AT91SAM7S256 drauf. Ich habe nun ein bisschen rumgespielt mit dem Evaluation Board (Getting started project kompilliert und geladen, zum ausprobieren etwas erweitert mit Interrupts, DMA etc...) Nun möchte ich die Evaluation version CMX-RTX verwenden, nur habe ich bis jetzt nicht herausgefunden wie das gehen sollte. Ich verwende die Ygarto toolchain (verwendet Eclipse). Ich habe die demoversion des CMX OS als ein IAR Projekt vorliegen für einen andern Mikrocontroller. Kann ich das nun einfach in Eclipse portieren und ev. die includes so abändern dass es für meinen Typ funktioniert? Habe auch ein Eclipse plugin von IAR bekommen das ihre Projekte in Eclipse einbindet, nur gibt es keine Doku dazu. Ich habe ebenfalls die IAR IDE Evaluation Version runtergeladen um das vorhandene IAR Projekt anschauen zu können. Nur finde ich mich dort nicht wirklich zurecht. Ich habe in den options meinen Mikrocontroller Typ ausgewählt und das Projekt mal kompilieren lassen und IAR sagt einfach Done, meldet also keine Errors etc... aber ich finde irgendwie kein Binary... Ist vielleicht etwas wirr mein Beitrag, hoffe ihr könnt damit etwas anfangen... Gruss Sebi
hallo, für welches target ist denn deine cmx eval version den vorgesehen? wenn die nicht für den arm7 ist dann wist du nichts damit anfange konnen, da der scheduler und das startup target spezifisch ist. gruss gerhard
Hallo, "Ich habe die demoversion des CMX OS als ein IAR Projekt vorliegen für einen andern Mikrocontroller." wie Gerhardt schon richtig geschrieben hat, wenn es nicht für den ARM7 ist, wird es schwer. Was dir vielleicht helfen könnte wäre eine Trial Version des Segger Betriebssystems embOS runterzuladen. Das gibts auf www.segger.com auch für Yagarto/Eclipse. Auch wenn dich dann embOS nicht interessiert, hast du schon mal fertige Projekt und Linker Files und kannst damit anfangen rumzuspielen. "Ich habe in den options meinen Mikrocontroller Typ ausgewählt und das Projekt mal kompilieren lassen und IAR sagt einfach Done, meldet also keine Errors etc... aber ich finde irgendwie kein Binary..." Wenn du ein IAR Projekt für deine CPU/Board hast, sollte es eigentlich nicht nötig sein, Änderungen in den Projekt Einstellungen vorzunehmen. Und wenn der Linker nicht meckert, muss auch ein File hinten rausfallen. Von welchem Typ das dann ist, kannst du in den Linker Options einstellen. Gruß, Til
@til prinzipiell finde ich deinen und auch robert's eifer ganz nett und manchmal auch hilfreich, aber manchmal (wie auch diesem thread) einfach nur lästig. gruss gerhard
@gerhard Ich kann dich ja schon verstehen, aber es ging mir jetzt nicht darum ihm was zu verkaufen sondern anzubieten eine Trial Version von uns für seine Zwecke zu missbrauchen, was spricht denn dagegen, wenn er kostenlos passende Projekt-, Linker Files usw. bekommmt?? Damit kann er ja seinen CMX Kram hinzufügen und dann das machen, was er eigentlich machen wollte. Darf ich jetzt nur weil ich für ne Firma arbeite nicht mehr hier versuchen zu helfen? Ich finde aber auch wir sollten sowas nicht an dieser Stelle ausdiskutieren, damit ist ihm nicht geholfen. Oder gehts dir hier nur ums Prinzip oder was? Ich versteh nämlich nicht wieso das lästig, wenn ich jemanden, der mit IAR keine Erfahrung hat, versuche zu erklären, wo man da was in den Projekt Settings einstellt.
@til gegen deine hilfe ist, an richtiger stele platziert ist, selbstverständlich nichts einzuwenden und ist im gegenteil herzliche willkommen. spzeille dann wen es um fargen und problem produkte deines unternehmens geht. nur in diesem fall sind deine kommentare keine hilfe, oder glaubst du tatsächlich das man mit dem embos project und linker file ein gänzlich anderes rtos zum laufen bringt? so naiv bist du hoffentlich nicht wirklich oder? aber wenn es dich beruhigt verkneife ich mir meine kommentare zu eurem "product placement" in diesem forum auch gerne. gruss gerhard
@Gerhard "gegen deine hilfe ist, an richtiger stele platziert ist, selbstverständlich nichts einzuwenden und ist im gegenteil herzliche willkommen. spzeille dann wen es um fargen und problem produkte deines unternehmens geht." Gut, in dem Punkt sind wir uns einig. Es ist doch klar, das ich Produkte meiner Firma als Beispiele angebe, nicht wegen Product Placement, sondern weil ich den ganzen Tag damit arbeite und mich natürlich damit auskenne. "nur in diesem fall sind deine kommentare keine hilfe, oder glaubst du tatsächlich das man mit dem embos project und linker file ein gänzlich anderes rtos zum laufen bringt? so naiv bist du hoffentlich nicht wirklich oder?" Ich weiß nicht wieso du mit naiv anfängst, was ich schon beleidigend finde, du unterhälst doch sonst nicht etwa auf diesem Niveau, oder? Wenn du technisch mit mir darüber diskutieren willst, ob der Vorschlag gut war oder nicht, hab ich nichts dagegen. Was spricht den dagegen, das embOS Projekt für den SAM7 zu nehmen, die embOS Sachen rauszuschmeissen und CMX Kram hinzuzupacken? Ich kenn jetzt CMX nicht so gut, und weiß nicht, was er da bekommen hat, aber prinzipiell sehe ich da kein Problem. Wo siehst du das Problem im Linker File? Selbst im Startupfile hab ich jetzt auf die Schnelle nichts OS spezifisches gesehen. Die Frage ist, ob es Sebi darum ging, unbedingt CMX ans laufen zu bekommen, oder überhaupt ein OS. Wenn letzteres der Fall ist, spricht doch auch nichts dagegen embOS für Yagarto/Arm zu benutzen. Wenn du eins kennst, womit Sebi schneller klar kommt, dann poste es doch bitte hier. Ansonsten finde das eher unkonstruktiv. "aber wenn es dich beruhigt verkneife ich mir meine kommentare zu eurem "product placement" in diesem forum auch gerne." Es würde mich nicht beruhigen, sondern die Sache hier konstruktiver machen, ich kann mir nämlich gerade den Sebi vorstellen, wie der das hier liest und sich denkt, sind die beiden bescheuert ;-). Ich werde aber gerne versuchen das meine Beiträge nicht wie Werbung klingen (wieso auch, bekomm ja kein Geld dafür). Gruß, Til
>Ich weiß nicht wieso du mit naiv anfängst, was ich schon beleidigend >finde, du unterhälst doch sonst nicht etwa auf diesem Niveau, oder? wußte nicht das jemand das adjektiv "naiv" als beleidigend empfindet, nehme ich hiermit zurück. >Wenn du technisch mit mir darüber diskutieren willst, ob der Vorschlag >gut war oder nicht, hab ich nichts dagegen. >Was spricht den dagegen, das embOS Projekt für den SAM7 zu nehmen, die >embOS Sachen rauszuschmeissen und CMX Kram hinzuzupacken? Ich kenn jetzt >CMX nicht so gut, und weiß nicht, was er da bekommen hat, aber >prinzipiell sehe ich da kein Problem. Wo siehst du das Problem im Linker >File? ganz ehrlich gesagt fehlt mir die zeit und die lust dir das jetzt zu erklären. probier es einfach mal und gib uns dann bescheid. >Wenn du eins kennst, womit Sebi schneller klar kommt, dann poste es doch >bitte hier. Ansonsten finde das eher unkonstruktiv. www.freertos.org gruss gerhard
"wußte nicht das jemand das adjektiv "naiv" als beleidigend empfindet, nehme ich hiermit zurück." Schon ok, mir gehts doch nur darum, das wir hier was konstruktives schreiben, was Sebi weiterhilft und nicht gegenseitig ärgern. "ganz ehrlich gesagt fehlt mir die zeit und die lust dir das jetzt zu erklären. probier es einfach mal und gib uns dann bescheid." Es geht nicht darum, das ich hier irgendwas beweise, von dem du behauptet hast, das es nicht funktioniert. Schade, das du erst Vorschläge schlecht machst und dann keine Lust mehr hast, diese technisch zu diskutieren (was doch eigentlich der Sinn dieses Forums sein sollte). "www.freertos.org" Ich glaube zwar nicht, das Sebi damit schneller zurecht kommt, lasse mich aber gerne eines besseren belehren. Muss ehrlich gestehen, das ich den Kram mir noch nicht im Detail angesehen habe. Und damit sollten wir diese Diskussion zwischen uns auch bitte beenden, ich denke, da haben wir beide keine Lust und Zeit für. Wenns natürlich eine fachliche Diskussion ist, habe ich damit kein Problem!
>Es geht nicht darum, das ich hier irgendwas beweise, von dem du >behauptet hast, das es nicht funktioniert. Schade, das du erst >Vorschläge schlecht machst und dann keine Lust mehr hast, diese >technisch zu diskutieren (was doch eigentlich der Sinn dieses Forums >sein sollte). besprich das thema doch bitte mal mit einem rtos experten bei euch, vielleicht klärt er dich darüber auf woraus ein rtos besteht und wie das so funktioniert einen in assembler programmierten scheduler samt der zugehörigen api mal ganz schnell zu portieren. noch eine frage: warum bezeichnest du alles, was nicht aus eurem haus kommt und das du überhaupt nicht kennst als "kram"? gruss gerhard
@gerhard "besprich das thema doch bitte mal mit einem rtos experten bei euch, vielleicht klärt er dich darüber auf woraus ein rtos besteht und wie das so funktioniert einen in assembler programmierten scheduler samt der zugehörigen api mal ganz schnell zu portieren." Danke, aber ich glaube das ist nicht weiter nötig, ich habe schon genug Portierungen hinter mir. Es ist dir aber leider entgangen, das es nicht darum ging irgendetwas zu portieren, sondern nur um den Vorschlag vorhanden Projektfiles usw. zu benutzen...aber egal, es hat anscheinend auch keine Sinn mit dir technisch zu diskutuieren. Macht einfach keine Spaß, wenn der Gegenüber nur mit blöden Sprüchen kommt, anstatt sachlich technische Argumente zu bringen. "noch eine frage: warum bezeichnest du alles, was nicht aus eurem haus kommt und das du überhaupt nicht kennst als "kram"?" Wenn ich irgendwas, was nicht aus unserem Hause kommt als "Kram" bezeichnet habe, dann einfach nur weil es in dem Moment meine lockere Umgangssprache war und nicht, um andere Sachen schlecht zu machen. Das hast du leider missverstanden, macht aber auch nichts, dir geht es ja anscheinend eher darum rumzustänkern als konstruktiv zu sein. Ich habe versucht höflich, respektvoll und verständnisvoll dir gegenüber zu sein, ich habe versucht mit Humor zu reagieren, aber langsam wird das echt doof. Deswegen lass es doch einfach mal gut sein, du musst ja weder mich noch meine technische Meinung respektieren, aber hab doch wenigstens eine wenig Achtung vor Sebi, der hier seine Frage beantwortet haben wollte und nicht unsere kleinlichen Streitigkeiten lesen möchte. Gruß, Til @sebi sorry, für den ganzen offtopic kram, hab nicht damit gerechnet, das man so angegriffen wird, wenn man versucht zu helfen @all Das ist hier ein Forum für nicht kommerzielle Hobby Anwender. Wenn ich irgendwo überlesen habe, das Profis hier nicht posten dürfen, dann bitte ich mir das mitzuteilen, dann melden ich mich gerne wieder ab, denn so mach t das keinen Spaß.
Erst mal vielen Dank euch Beiden für die angeregte Diskussion ;) ...Ich bin euch dankbar für die Hilfe und ihr dürft auch gerne weiter posten! Und ich muss sagen, ich kann euch irgendwie beide verstehen... Zu meinem Problem, es muss halt wirklich das CMX-RTX sein, wir verwenden es für ein Projekt. Ich bin halt frisch von der Uni und habe gerade meinen ersten Job und jetzt muss ich halt erst einmal in die ganze Materie reinkommen. Unterdessen habe ich mit CMX gesprochen und sie geben mir eine evaluation Verison für den SAM7S. Daher hat sich das ganze vorerst erledigt und ich warte bis ich die Software kriege, und keine Angst dann kommen sicher weitere Fragen :)... Gruss Sebi
@sebi: bei fragen betr. cmx stehe ich gerne zur verfügung (verwende cmx schon seit ca. 10 jahren mit div. targets). gruss gerhard
Hallo Ich kann inzwischen CMX kompilieren, nur mit dem laden des Codes auf das Demoboard hapert es noch ein wenig. Manchmal stürzt sogar der PC mit einem Bluescreen ab. Um den code zu laden benütze ich SAM-BA von Atmel. Hat jemand erfahrung mit CMX auf diesem Mikrocontroller? Ich frage mich ob es am Linkerfile liegen könnte oder ob ich es an den falschen Ort im Speicher hinkopiere.... Gruss und schöne Ostern Sebi
hallo sebi, ein paar generelle tips: -) vergiß sam-ba! das tool ist ein "zustand", die aktivierung ist eine zumutung und das pc-tool ist ein einziger bug -) für vernünftiges arbeiten ist ein jtag-ice sinnvoll, besser einen langsamen parallel-wiggler als sam-ba. von der iar workbench wird in v4.xx leider nur j-link (=sam-ice) od. der parallele wiggler unterstützt, ab v5.xx auch der arm-usb-ocd (von olimex). nun zu deinem eigentlichen problem: verwendest du ein original cmx beispiel? wenn ja dann kannst du davon ausgehen das das beispiel auch funktioniert. der blue-screen stammt vermutlich von sam-ba, das tool am besten deinstallieren und vergessen! wenn du mal dein linker-listing postest (oder besser noch das ganze beispiel) kann dir vielleicht besser geholfen werden. gruss gerhard
Hallo gerhard Also du würdest nicht sam-ba verwenden um den code zu laden? Ich habe einen SAM-ICE, würdest du prinzipiell den Code damit aufs Device laden? Verstehe aber nicht ganz wie das geht. Ich habe es mit J-Flash ARM aus dem Segger toolset versucht aber nicht rausgefunden wie es gehen soll. Ja ich verwende ein original CMX beispiel, das einzige was ich verändert habe ist die zusätzliche initialisierung der Debug Uart damit ich auch was 'sehe'... So sieht mein linker file aus:
1 | OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") |
2 | OUTPUT_ARCH(arm) |
3 | ENTRY(_start) |
4 | |
5 | /* INPUT(&& &&Assembler Files&) */
|
6 | /* INPUT(&& &&Source Files&) */
|
7 | |
8 | __TEXT_START__ = 0x100000; |
9 | __DATA_START__ = 0x200000; |
10 | __STACK_END__ = 0x204000; |
11 | |
12 | |
13 | SECTIONS
|
14 | {
|
15 | /* Read-only sections, merged into text segment */
|
16 | |
17 | .text __TEXT_START__ : |
18 | {
|
19 | *intvec.o(.text) |
20 | *(.text) |
21 | *(.text.*) |
22 | }
|
23 | |
24 | PROVIDE (__etext = .); |
25 | |
26 | .rodata : |
27 | {
|
28 | *(.rodata) |
29 | *(.rodata.*) |
30 | }
|
31 | |
32 | /* append .data; it will be copied by crt0 to final __DATA_START__ */
|
33 | . = ALIGN(4); |
34 | __INIT_DATA_START__ = .; |
35 | .data __DATA_START__ : AT ( __INIT_DATA_START__ ) |
36 | {
|
37 | *(.data) |
38 | *(.data.*) |
39 | SORT(CONSTRUCTORS) |
40 | }
|
41 | . = ALIGN(4); |
42 | __DATA_END__ = .; |
43 | |
44 | /* noninitialized data; will be zeroed by crt0*/
|
45 | __bss_start__ = .; |
46 | .bss : |
47 | {
|
48 | *(.bss) |
49 | *(.bss.*) |
50 | *(COMMON) |
51 | . = ALIGN(4); |
52 | }
|
53 | . = ALIGN(4); |
54 | __bss_end__ = . ; |
55 | PROVIDE (end = .); |
56 | }
|
Gruss Sebi
hallo sebi, sam-ice ist sicher eine gute wahl, am besten in verbindung mit der iar workbench. zu deiner linker-datei: sieht mir nach gcc aus und damit habe ich leider keine erfahrung (daher auch die empfehlung für iar). hast du von cmx nicht ein komplettes iar projekt als beispiel erhalten? das sollte ohne probleme mit der iar workbench zu verarbeiten sein. gruss gerhard
Bin schon etwas weiter gekommen, nun aber habe ich mein makefile abgeändert und will eine statische library hinzulinken. Leider kommen nur Fehlermeldungen:
1 | make cmx_lib |
2 | arm-elf-gcc -nostartfiles -Xlinker -Map=cmxsamp.map -Xlinker --script=./at91sam7s64.ind -l cmxarm_le.a -n -o getting_started.elf cmx_init.o cmx_isrs.o cmxsamp.o crt0.o cstartup_sam7.o cxskv5.o handlers.o intvec.o |
3 | c:/programme/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe: cannot find -lcmxarm_le.a |
4 | collect2: ld returned 1 exit status |
5 | make: *** [cmx_lib] Fehler 1 |
Meine library heist cmxarm_le.a (früher cmxarm_le.lib). Weiss jemand wie ich sie korrekt linke? Kriege es weder mit -l noch mit -L gebacken.... Gruss Sebi
>(früher cmxarm_le.lib)
hast du die datei einfach nur umbenannt?
bist du dir sicher das das cmx beispiel den gcc unterstützt?
cmxarm_le.lib deutet eher auf iar workbench hin.
gruss
gerhard
CMX unterstützt den GCC nicht. Das Bsp. was Du bekommen hast wird nur mit dem IAR laufen. ( besonders das "Cxskv5.s79" File ) Gruss Steffen
Hallo zusammen Ja das file habe ich einfach umbenannt, ich habe bis jetzt halt immer mit linux gearbeitet und dort heissen die librarys immer .a oder .so je nach typ. Der gcc sollte unterstützt sein, habe von CMX extra eine Version für die GNU C tools bekommen... Gruss Sebi
hallo sebi, was hast du den genau von cmx bekommen (liste der dateien wäre hilfreich)? oder du kontaktierst cmx nochmal, die sind normalerweise sehr fix im antowrten auf anfragen. gruss gerhard
Alles klar, konnte die library reinkompillieren, aber vielen Dank. Leider läuft das Programm immer noch nicht. Am anfang startet alles schön, diverses Tasks werden registriert, aber der scheduler startet keinen dieser Tasks. Das Programm bleibt in einem endless loop stecken, vermutlich der idle task. Aber es ist ein original CMX beispiel das also funktionieren sollte... Ich weiss zur zeit nicht wie weiter.... Ich darf halt auch nicht beliebig code posten, da es ein Geheimhaltungsabkommen gibt... Gruss Sebi
hallo sebi, ein paar fragen/anregungen die vielleicht dein problem lösen können: -) wird der Periodic Interval Timer (PIT) initialisiert und gestartet? der dient normalerweise als zeitbasis für cmx. -) wird der PIT-interrupt ausgelöst? -) hast du an dem cmx beispiel irgendetwas geändert? falls das nichts hilft dann poste mal dein main() (das wird ja wohl nicht geheim sein). gruss gerhard
Hallo gerhard Es wird ein Timer initialisiert für den system tick, allerdings nicht den PIT sondern einer von den Intervaltimern. Aber das sollte ja auch gehen so... Allerdings kommt der Interrupt wirklich nicht, aber ich sehe kein Fehler in der Initialisierung.... Habe am CMX beispiel nichts geändert, nur habe ich zusätzlich die Debug Uart initialisert, aber auch ohne diese zusätze funktioniert das Bsp nicht! Hier die initialisierung der Timer:
1 | AT91F_TC0_CfgPMC(); |
2 | AT91F_TC0_CfgPIO(); |
3 | *(AT91C_TC0_CCR) = AT91C_TC_CLKDIS; /* disable the clock */ |
4 | *(AT91C_TC0_IDR) = 0xFF; /* disable TC0 interrupts */ |
5 | dummy = *(AT91C_TC0_SR); /* clear any interrupts */ |
6 | /* MCK/8, capture mode, RC compare */
|
7 | *(AT91C_TC0_CMR) = AT91C_TC_CLKS_TIMER_DIV2_CLOCK | AT91C_TC_CPCTRG; |
8 | *(AT91C_TC0_RC) = MCK/8/100; /* 10 ms */ |
9 | *(AT91C_TC0_IER) = AT91C_TC_CPCS; /* interrupt on RC compare */ |
10 | *(AT91C_TC0_CCR) = AT91C_TC_CLKEN; /* enable the clock */ |
11 | *(AT91C_AIC_IDCR) = (1 << AT91C_ID_TC0); /* disable TC0 interrupt */ |
12 | pAic = AT91C_BASE_AIC; |
13 | pAic->AIC_SVR[AT91C_ID_TC0] = (word32)cmx_irq; /* vector to irq isr */ |
14 | pAic->AIC_SMR[AT91C_ID_TC0] = 0x3; /* level sensitive, priority = 3 */ |
15 | |
16 | *(AT91C_AIC_ICCR) = (1 << AT91C_ID_TC0); /* clear TC0 interrupt */ |
17 | *(AT91C_AIC_IECR) = (1 << AT91C_ID_TC0); /* enable TC0 interrupt */ |
18 | *(AT91C_TC0_CCR) = AT91C_TC_SWTRG; /* trigger the clock */ |
Gruss Sebi
hallo sebi, ich verwende in so einem fall immer den "wave form mode" des timers, also
1 | *(AT91C_TC0_CMR) = AT91C_TC_CLKS_TIMER_DIV2_CLOCK | AT91C_TC_CPCTRG | AT91C_TC_WAVE; |
gruss gerhard
Hallo gerhard Dein Zusatz hat leider nichts geändert am Ganzen. Ich habe mich mal ein bisschen in den Assembler files umgesehen und dort folgendes entdeckt:
1 | # Enter FIQ Mode and set its Stack Pointer |
2 | MSR CPSR_c, #FIQ_MODE|I_Bit|F_Bit |
3 | MOV SP, R0 |
4 | SUB R0, R0, #FIQ_Stack_Size |
Das ist die initialisierung des IRQ interrupt stack pointers. Was ich nicht verstehe, wird hier nicht einmal die # als Kommentarzeichen verwendet und einmal um etwas ins Register zu laden. Eclipse zeigt mir jedenfalls beides grünlich an, was auf Kommentar hindeuted oder wird das einfach falsch angezeigt? Gruss Sebi
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.