Matrisberäkningar med för STM32?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
bearing
Inlägg: 11250
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Matrisberäkningar med för STM32?

Inlägg av bearing »

Hm, program kopieras alltid in i RAM på en PC, och körs från RAM... ty processorn kan inte ladda instruktioner från en hårddisk, sdkort, eller liknande, utan endast RAM... (även/endast ROM/FLASH på en typisk mikrokontroller).

Angående samplingshastighet, varför så långsam? Är det bara för att du vill vara säker på att programmet ska hinna göra alla beräkningar på aktuell processor? Eller finns det någon annan fördel med långsam (500 - 1000ms) sampling, istället för t.ex 10ms, som ju jag tänker vore bättre?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

Jag tog först 1 sekund för jag skulle göra mina beräkningar i Java och köra Raspberry Pi.

Sedan gick jag över till C++ då jag insåg att jag behövde prestanda. C++ var för stort verktyg för mig så jag gick till C istället. Att kunna Java och C++ samtidigt är väldigt krävande.

Sedan gick jag över till STM32 och programmerade ett bibliotek i C, den jag håller på att utveckla just nu. Jag ska bygga en observability matrix, även kallad observationsmatrisen.

Där efter gick jag ned till 0.5 sekunder i samplingsintervall för jag insåg hur snabbt C var jämfört med Java. Då fick jag dubbelt så mycket data och då kunde inte STM32 klara utav all denna data. Jag ska ju hålla på att först och främst reglera temperatur, adaptivt. Då tror jag att 0.5 sekunders samplingsintervall är nog perfekt. Behövs inte snabbare eller segare.

Så jag går nu över för att hitta något super super super smalt linux OS som har varken något av något. Bara styrning av I/O, inget mer. Inget X, USB, tangentbord eller något. Bootloader + C program endast.

Då lär jag få ett stabilt och bra reglersystem som har mycket ramminne :)
Användarvisningsbild
hawkan
Inlägg: 2619
Blev medlem: 14 augusti 2011, 10:27:40

Re: Matrisberäkningar med för STM32?

Inlägg av hawkan »

Bearing, linux har som ett av de första stegen i bootningen att montera ett minimalt filsystem i ram. Det kallas initramfs och innehåller t ex kernel modules för t ex diskhantering. Det frigörs så småningom och rootfilsystem mm monteras. Har en ganska vag bild av hur det fungerar, många år sedan jag pillade med sånt. Men man skulle kunna lägga till nåt där.

Samtidigt måste man boota från något media, även med initramfs. Och det är väl minst lika enkelt att då boota ett riktigt, minimalt linux och köra där. Dags att börja googla efter minimal linux raspberry.
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14850
Blev medlem: 16 april 2006, 17:04:10

Re: Matrisberäkningar med för STM32?

Inlägg av mrfrenzy »

Bootloader finns ju inbyggt i rom. Den läser filen kernel.img från sd-kortet till ram och exekverar det som hamnar på adress 0x80000. Det behövs alltså inget initramfs eller strippat linux om man bara vill köra sin kod. Det är bara läsa instruktionerna ovan och bygga koden på rätt sätt.
Det kräver förstås att du lär dig skillnaderna mellan stm32 och bc2xxx. Till exempel hur man adresserar minnet, använder serieport och IO. Allt är dokumenterat och det finns bibliotek att välja på.


Enklare och snabbare att komma igång är det säkert att bara ladda ner RealtimePi och köra, men då har du ju Linux i botten.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

Jag tror att till att börja med så kommer jag köra ett Linux OS. Jag tänkte inte börja på #1 bästa, utan jag försöker få saker att fungera först.

Har ni någon bra rekommendation på ett Linux OS som har X-server, terminalbaserat och har inga så kallade interrupts?
Användarvisningsbild
AndLi
Inlägg: 17116
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av AndLi »

Du menar att du vill att hela linuxkärnan ska köra pollat och inte använda interrupt?
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14850
Blev medlem: 16 april 2006, 17:04:10

Re: Matrisberäkningar med för STM32?

Inlägg av mrfrenzy »

Isåfall skulle jag nog börja med att prova RealtimePI. Det är lätta att installera: https://github.com/guysoft/RealtimePi

När du fått igång din kod och provat att det funkar läs på om "isolcpu" och "tasksel". Det gör att du kan köra din kod på en kärna och låta linux använda dom andra kärnorna i CPUn.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

AndLi skrev:Du menar att du vill att hela linuxkärnan ska köra pollat och inte använda interrupt?
Jag menar att själva Linux systemet ska endast utföra enkla saker så som att visa på terminalen, USB kommunikation och själva C-programmet. Inget mer.
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Matrisberäkningar med för STM32?

Inlägg av Icecap »

USB är inte enkelt.
Video är inte enkelt.

Men ja, ett Linux system som bara utför "the bare minimum" ska väl gå att ordna antar jag.

Det kanske är jag som är ute att cykla men det viktiga är väl att samplingen går stabilt och det kan ju fixas med en interrupt och lite timer-styrning.

Om sedan matematiken tar 100ms eller 150ms lär ju ha mindre betydelse om bara samplingen är stabil.
bearing
Inlägg: 11250
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Matrisberäkningar med för STM32?

Inlägg av bearing »

Al_Bundy angående ändring från 1s till halv sekund skrev: då fick jag dubbelt så mycket data och då kunde inte STM32 klara utav all denna data
Det här förstår jag inte. Varför blir det mer data? Det blir väl exakt samma beräkning som ska köras per sample oavsett samplingsintervall? Så datan (storleken på matriserna) blir väl samma? Den enda ändringen du behöver göra borde väl vara att justera någon konstant som innehåller samplingsintervallet. Ändra "dt" från 1.0 till 0.5?

Tidigare skrev du:
Men max är 36x36 för just det program jag tänker använda
Din senaste version har 144x144. Kommer denna ändring för att du ökat samplingshastigheten, eller har du ändrat något annat?
Användarvisningsbild
mankan
EF Sponsor
Inlägg: 908
Blev medlem: 18 juli 2015, 11:23:22
Ort: Linköping

Re: Matrisberäkningar med för STM32?

Inlägg av mankan »

Mitt förslag är att du börjar med vilken RPi-dist som helst som har X, ssh och vad nu du mer önskar.
Kör ditt program och analysera resultatet och kolla efter ev samplingsjitter mm.
Är det ett problem, då är det dags att se över vilka processer som kör i OS:et som du kan vara utan.
Lär dig hur du stänger av dem.
Till slut har du kanske har ett Linux OS med serieports terminal som i praktiken endast kör ett skal och ditt beräkningsprogram.

Skulle det sedan fortfarande vara ett problem med samplingsjitter eller realtidsegenskaper så kan man labba att köra helt utan OS eller byta till RealTimePi om det nu inte duger som startdist enligt vad jag skrivit ovan.
bearing
Inlägg: 11250
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Matrisberäkningar med för STM32?

Inlägg av bearing »

Eftersom att han kör kalmanfilter och grejer lär väl ett jitter på ett par promille inte ha någon betydelse. Brus från ADC, tidskonstanter i temperaturgivare, begränsningar i prestanda på drivsteg för utsignal, och liknande tror jag har betydligt större betydelse.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

bearing skrev:Eftersom att han kör kalmanfilter och grejer lär väl ett jitter på ett par promille inte ha någon betydelse. Brus från ADC, tidskonstanter i temperaturgivare, begränsningar i prestanda på drivsteg för utsignal, och liknande tror jag har betydligt större betydelse.
Jag kör inte kalmanfilter just nu, men det kanske blir aktuellt i framtiden. Jag kör MPC och systemidentifiering.
mankan skrev:Mitt förslag är att du börjar med vilken RPi-dist som helst som har X, ssh och vad nu du mer önskar.
Kör ditt program och analysera resultatet och kolla efter ev samplingsjitter mm.
Är det ett problem, då är det dags att se över vilka processer som kör i OS:et som du kan vara utan.
Lär dig hur du stänger av dem.
Till slut har du kanske har ett Linux OS med serieports terminal som i praktiken endast kör ett skal och ditt beräkningsprogram.

Skulle det sedan fortfarande vara ett problem med samplingsjitter eller realtidsegenskaper så kan man labba att köra helt utan OS eller byta till RealTimePi om det nu inte duger som startdist enligt vad jag skrivit ovan.
Fast borde man inte kunna ha en godtycklig Linuxdist för valfri dator? Jag behöver inte köra en Paj. Men målet var att jag skulle programmera till realtidssystem. Jag brukar alltid köra Ubuntu.
bearing skrev:
Al_Bundy angående ändring från 1s till halv sekund skrev: då fick jag dubbelt så mycket data och då kunde inte STM32 klara utav all denna data
Det här förstår jag inte. Varför blir det mer data? Det blir väl exakt samma beräkning som ska köras per sample oavsett samplingsintervall? Så datan (storleken på matriserna) blir väl samma? Den enda ändringen du behöver göra borde väl vara att justera någon konstant som innehåller samplingsintervallet. Ändra "dt" från 1.0 till 0.5?

Tidigare skrev du:
Men max är 36x36 för just det program jag tänker använda
Din senaste version har 144x144. Kommer denna ändring för att du ökat samplingshastigheten, eller har du ändrat något annat?
För jag valde först 72 punkter, nu valde jag 144 punkter. Alltså jag bara gjorde lite mera tester. Hur mycket mätdata jag egentligen ska använda mig av, visar sig. Jag kanske klarar mig på 30x30 matriser, men troligtvis inte.
Icecap skrev:USB är inte enkelt.
Video är inte enkelt.

Men ja, ett Linux system som bara utför "the bare minimum" ska väl gå att ordna antar jag.

Det kanske är jag som är ute att cykla men det viktiga är väl att samplingen går stabilt och det kan ju fixas med en interrupt och lite timer-styrning.

Om sedan matematiken tar 100ms eller 150ms lär ju ha mindre betydelse om bara samplingen är stabil.
Vad sägs som någon minimal Debian dist? Debian är trygg, tråkigt och säker.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Matrisberäkningar med för STM32?

Inlägg av Al_Bundy »

Vad tror ni om att bygga eget Linux? Det finns hur mycket manualer som helst.

Eller ska man satsa på typ Ubuntu Server, bara för att det är enkelt?
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14850
Blev medlem: 16 april 2006, 17:04:10

Re: Matrisberäkningar med för STM32?

Inlägg av mrfrenzy »

Bygga eget vinner man inget på. Om inte raspbian/ubuntu eller realtimepi funkar så är det bara "bare metal" som gäller.
Skriv svar