Linuxbaserade processorsystem VS FreeRTOS

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av DanielM »

2. Jag behöver inte sätta en pekare på orginalvärdet. Arrayen är alltid på index 0 så fort jag anropar funktionen med den :)

4. Är det någon assemblerskillnad mellan P++ jämfört med P?


Nu hittade jag problemet! Denna gör INTE som den ska göra.

Kod: Markera allt

// Repeat, substract, power and then sum
// MATLAB:
// Q = sum(pow(P-repmat(Q, 1, size(P, 2)), 2), 1);
static void repmat_substract_power_sum(float Q[], const float P[]){
	// First row of Repeat -> Substract ->Ppower^2 -> Sum
	float q = *Q; // First column and first row value
	for(uint16_t j = 0; j < Pcolumns; j++){
		*Q = *P - q; // Substract
		*Q = *Q * *Q; // Power^2
		Q++;
		P++;
	}

	// The rest of the rows of Repeat -> Substract -> Power^2 -> Sum
	for(uint16_t i = 1; i < Prows; i++){
		q = *Q; // First column value at row i
		for(uint16_t j = 0; j < Pcolumns; j++){
			*Q = *P - q; // Substract
			Q[j] += *Q * *Q; //  Power^2 -> Sum to the top row at column index j
			Q++;
			P++;
		}
	}
}
Här är ett problem.

Om jag håller på och trixa med Q++ lite här och där, sedan så anropar jag Q[j] där jag vill skriva till ett specifikt index. Då fungerar det inte.

Kod: Markera allt

Q[j] += *Q * *Q; //  Power^2 -> Sum to the top row at column index j
Lösningen var att byta ut till denna rad:

Kod: Markera allt

Q[-Pcolumns*i] += *Q * *Q; //  Power^2 -> Sum to the top row at column index j
Nu är det optimalt.
Senast redigerad av DanielM 2 augusti 2020, 18:55:46, redigerad totalt 1 gång.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av Rick81 »

Kod: Markera allt

Q[-Pcolumns*i] += *Q * *Q;
Ser inte rätt ut med negativa index?
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av DanielM »

Det är korrekt med tanke på att jag förflyttar ju pekaren med Q++ :)

Testa så ska du få se att det är korrekt utfört och indexerat.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av DanielM »

Laddar upp två stycken exempel nu. YALE och JAFFE. YALE är alltså identifiering av YALE databasen. JAFFE är Japanese Female Facial Expression databas.

JAFFE har matrisdimensionerna som är deklarerad som statiska

Kod: Markera allt

float 213*8 
float 65536*8
uint16_t 1*213
float 213*8 
uint16_t 1*213
YALE har matrisdimensionerna som är deklarerad som statiska

Kod: Markera allt

float 166*13 
float 77760*13
uint16_t 1*166
float 166*13 
uint16_t 1*166
Jag återanvänder alla matriser och skapar inget nytt. Förutom kanske några variabeler och en array på ca 10-20 element i form av uint16_t.

Nu vet vi hur mycket FLASH som behövs på ett ungefär. Visst är en STM32 helt borträknad här nu? Jag måste ha alltså typ Raspberry?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
AndLi
Inlägg: 17153
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av AndLi »

Varför är stm32 borträknad? Det är bara att sätta externt flash?
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av DanielM »

Men var inte det för RAM endast?

Annars hittar jag QSPI för W25Q32 W25Q128. 32:an är på 4 Mb och 128 är på 16 Mb. Jag tror en 16 Mb räcker gott och väl för mig.
Dessutom har jag bestämt mig för kameran OV2640.

Men jag har dock inte bestämt mig för LCD. Ska man ha en med "många pinnar" eller ska man ta en med SPI? Jag har aldrig riktigt förstått vad "många" pinnar ska vara bra till.

En fråga! Om jag har deklarerat arrayerna som statiska. Då behöver man väll inge mycket RAM? För ramet är väll till för att allokera minne som är ej skapat vid kompileringen?
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av Rick81 »

Kolla devkitet med stm32f7 jag tipsade om det hade externt ram och flash
Användarvisningsbild
AndLi
Inlägg: 17153
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av AndLi »

Vad skulle begränsa dig att bara ansluta RAM externt? Det beror ju bara på hur acessen sker, om du behöver sköta skyfflandet manuellt ellet kärnan har support för det. Vid manuellt arbete kan du ju skriva drivers till att möjligt..
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av Rick81 »

Const ska du använda för lägga arrayer i flash. Men du kan inte modifiera dem då.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av DanielM »

Du tror att det är mer värt att köpa ett färdigt utvecklingskit jämfört med att köpa delar för sig?

Vi kan jämföra lite priser. Låt oss säga att jag tänkte ha en STM32FF446RE. Det är ca 300 kr med frakt från Condrad.

Sedan skulle jag vilja ha en LCD: 115 kr
https://www.banggood.com/3_2-Inch-ILI93 ... rehouse=CN

Kamera: 85 kr
https://www.banggood.com/XD-95-OV2640-C ... rehouse=CN

Extra QSPI flash: 20 kr
https://www.banggood.com/W25Q32-W25Q128 ... rehouse=CN


Lägg på frakt också: 30 kr med försäkring mot tullen.

Så sammanlagt: 300+115+85+20+30 = 550 kr.

Och jämfört med STM32F7508-DK = 472 kr.
Så då kanske det är rent av värt att gå på en STM32F7508-DK?

https://www.digikey.se/product-detail/e ... D/10209874
https://www.digikey.se/product-detail/e ... ND/5267791

Vad föredrar ni? Jag föredrar den billigaste. :lol:
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av DanielM »

Rick81 skrev: 2 augusti 2020, 22:13:18 Const ska du använda för lägga arrayer i flash. Men du kan inte modifiera dem då.
Det behövs inte. Dom ska inte ens ändras :) Det är modellens parametrar.
Nu kanske ni är så van med PCA och LDA inom statistiken? Det är detta jag har använt för att hitta fram modellen.

Jag kan säga att det kan ta flera minuter för att räkna fram en modell. Jag använder Generalized Eigenvalue Problem algoritmen.

\(Av = \lambda B v\)

Denna är enormt svår att beräkna. Speciellt om \(B\) är singulär, vilket oftast alltid är inom bildigenkänning. Då får man använda regularisering.

\(Av = \lambda (B+\alpha I) v\)
Användarvisningsbild
AndLi
Inlägg: 17153
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av AndLi »

Jag skulle föredra det som är mest komplett och testat redan.. om det redan finns komponenter specade för projektet vill jag ha en mockup så lika slutgiltiga kortet som möjligt..

Men jag jobbar ju med det i ett vinstdrivande företag och några tusen hit eller dit för labkort ses ju knappt som en kostnad.

Första riktiga pcb brukar också tas fram relativt tidigt i projekten och det är mot det största delen av kodandet sker. Finns få saker som kan skapa sådan frustration som glappande prototyper och en eller två dagars strul är är ju ett antal tusen i kostnad...
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av DanielM »

Tackar för informationen.
Då väljer jag komplett. Ett STM32F7508-DK får det bli, om det inte finns en mer värd F7:a.

Notera att jag är bara behov utav minne, kamera, processor och LCD.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av Rick81 »

Displayen på STM32f7 devkitet är ju dessutom större och högre upplösning än den du tänkt beställa. Och den har microSDkortshållare så du kan ha flera GB på dina modeller om du behöver.

Dock får du köpa till kamera.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Linuxbaserade processorsystem VS FreeRTOS

Inlägg av DanielM »

Min Ili9341 LCD har också SD kort bakom sig.

Du menar en STM32F4DIS-CAM ?

Nu behöver jag bara 8-bit bilder med tanke på min algorithm vill endast ha 8 bit bilder. Det räcker. Svartvita bilder är ockdå bra.
Skriv svar