Bra design av SW FIFO

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Bra design av SW FIFO

Inlägg av Korken »

Jag kör FreeRTOS. Jag vet dock inte om det finns något inbyggt, ska kolla i dokumentationen. :)
Johanb
Inlägg: 3406
Blev medlem: 26 mars 2006, 22:26:12
Ort: Smedjebacken

Re: Bra design av SW FIFO

Inlägg av Johanb »

Då kan du titta på queues, det finns funktioner anpassade för att köras i ISR vilket borde passa utmärkt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Bra design av SW FIFO

Inlägg av sodjan »

FreeRTOS Queues
Queues are the primary form of intertask communications. They can be used to send
messages between tasks, and between interrupts and tasks. In most cases they are
used as thread safe FIFO (First In First Out) buffers with new data being sent to the
back of the queue, although data can also be sent to the front.
http://www.freertos.org/Embedded-RTOS-Queues.html
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Bra design av SW FIFO

Inlägg av Korken »

Haha, nu vart det för enkelt ju! :D
Bra att jag har läst dokumentationen noga. ;)
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Bra design av SW FIFO

Inlägg av Korken »

Woho! Det fungerar perfekt med Queue i FreeRTOS! :D
Tackar för hjälpen!

En lite fråga bara, när jag vill allokera minne för OSet så vill jag använda CCM-minnet i processorn så de inte behöver kriga med pherial-minnet.
Kan jag använda __attribute__((section(".rtos_heap"))) unsigned char ucHeap[ configTOTAL_HEAP_SIZE ]; för att tvinga kompilatorn att lägga ucHeap vid adressen jag har specificerat i länk-filen (i detta fall .rtos_heap)?
För det syns inte disassembyn om det fungerat eller ej.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Bra design av SW FIFO

Inlägg av sodjan »

Så vitt jag kan se så har du inte sagt ett smack om vilken processor du använder.
Hur tror du att vi ska kunna tycka något om processorspecifika saker
så länge som du hemlighåller det ??
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Bra design av SW FIFO

Inlägg av bearing »

Det är i .map-filen som det borde synas.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Bra design av SW FIFO

Inlägg av Korken »

sojdan: Ah, det är en STM32F4. CCM minne är en vanlig typ av minne som bara CPU Core kommer åt. Det ska dock inte spela någon roll för länkaren vilken MCU det är.
Detta är perfekt för FreeRTOS när det är processorn som gör all som har med minnet att göra och då får OSet (i detta fall) 64kB för sig själv.

Frågan är ganska generell, hur kan jag specificera på vilken adress som min array hamnar?
Kan jag göra det med attribute kommandot? För med den kan man iaf dirigera vart flash hamnar.
Just i mitt fall vill jag ha den på address 0x10000000.

bearing: Jag har tvärr ingen .map-fil. GCC kanske inte genererar en sådan? Eller menar du länk-filen?
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Bra design av SW FIFO

Inlägg av bearing »

Länkaren borde kunna generera en map-fil baserat på länk-filen samt källkoden. Kompilatorn har inte en aning om var variablerna kommer läggas, utan den generar symboler (t.ex. @1, @2, osv), som länkaren sedan byter ut till adresser.

Angående attribute-kommandot så beror det på vilken miljö du programmerar i. Ifall du läst det i dokumentationen, så stämmer det säkert. I några miljöerna jag programmerar i används olika "#pragma" för detta, i en annan används något som heter "__declspec" har jag för mig.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Bra design av SW FIFO

Inlägg av sodjan »

Förrutom processor så vet vi inte heller vilka verktyg du har.
Vi har inte heller några länkar till dokumentationen. För att svara
så har man nog behov av dokumentionen samt din "länkfil" och
ett exempel på map-filen. Det vore väldigt märkligt om du inte
kan få fram en map-fil...

> GCC kanske inte genererar en sådan?

Det är alltid *länkaren* som skapar map-filen. Så om länkningen sker
integrerat i GCC så kanske den skapas där. Eller så körs länkningen
som ett separat verktyg och i så fall är det en option/flagga till
den och inte till GCC. Sen så kan du ju ha en övergripande miljö/IDE
där du sätter options för din "build" och, ja, då är det där det görs.

Men vi vet ju i princip ingenting om vad du använder, ja förrutom
vilken processor det är nu.
labmaster
Inlägg: 2919
Blev medlem: 5 april 2011, 01:10:25

Re: Bra design av SW FIFO

Inlägg av labmaster »

Eller så svarar någon annan som redan vet vad Korken kör för CPU och utvecklingsplattform Sodjan.

Korken, du skall använda "-Xlinker -Map=output.map" som option till gcc så spottar länkaren ut map-filen. Kör "man gcc" så ser du detta.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Bra design av SW FIFO

Inlägg av Korken »

Ah, nu hänger jag med på vad du menar! :)
Jag kör som toolchain arm-none-eabi (CodeSourcery). Som du säger så är det en extern länkare. Men jag lyckades få den att spotta ur sig .map filen.
Tackar bearing för tipset! Jag hade ingen aning om att man kunde göra på de viset för att se vart sakerna landar!

Och för de som är nyfikna så kan man köra med attribute i arm-none-eabi toolchainen. :)

Mapdump på den delen:

Kod: Markera allt

.rtos_heap      0x10000000     0x6400
                0x10000000                . = ALIGN (0x4)
 *(.rtos_heap)
 .rtos_heap     0x10000000     0x6400 ./FreeRTOS/portable/MemMang/heap_1.o
                0x10006400                . = ALIGN (0x4)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Bra design av SW FIFO

Inlägg av sodjan »

Är det alltså "-Xlinker -Map=output.map" enligt :
http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
eller kör du en annan länkare än den som är standard i GCC ?

Besvarade MAP filen dina frågor om allokering?
SvenW
Inlägg: 1156
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Re: Bra design av SW FIFO

Inlägg av SvenW »

Vill man veta var en variabel hamnar så kan man även köra t.ex
'nm prog.elf | grep variabelnamn' ( med gnutools)
Vill man specificera var den skall hamna så är det väl bäst att göra det
i länkskriptet 'linker.ld' eller vad det kan heta.
Något man helst vill undvika!
Skriv svar