Generera programkod för bildvisning på µC?
- Klas-Kenny
- Inlägg: 11344
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Generera programkod för bildvisning på µC?
Har funderat på en grej ett tag nu, som jag skulle behöva för att komma vidare i ett projekt.
Om jag har en µC kopplad till en liten TFT-display, där jag vill kunna visa upp någon bild, hur gör jag enklast?
Okej, bitmapp i en 2D-array är ju väldigt simpelt, det har jag gjort tidigare och haft program till att generera färdig kod att klistra in och använda. Men problemet att det tar mycket minne.
I mitt fall har jag bara processorns inbyggda flashminne på 128K, räcker inte så långt till bitmappar på typ 200*300 pixlar...
Men, i mitt fall så kommer bilderna att vara väldigt enkla, rätt stora ytor i samma färg -> kan komprimeras mycket.
Jag skulle kunna sätta mig och hårdkoda bilderna, mer avancerade är de inte, men det blir dels drygt, dels jobbigt om jag vill ändra i framtiden, dels så lär jag mig inget på det.
Processorn i fråga är en STM32F103 och jag programmerar i C, men det är inte så intressant då jag mest är ute efter lite mer allmänna sätt att lösa uppgiften oavsett plattform.
Så, vad finns det för smidiga sätt att göra lite enkelt komprimerad bildvisning?
Drömmen vore att kunna rita i något vanligt program på datorn typ Photoshop, Paint.net etc. och där ifrån generera någonting smidigt att köra in i processorn med minsta möjliga handpåläggning.
Alla tips, idéer, länkar etc. är mycket uppskattade.
Om jag har en µC kopplad till en liten TFT-display, där jag vill kunna visa upp någon bild, hur gör jag enklast?
Okej, bitmapp i en 2D-array är ju väldigt simpelt, det har jag gjort tidigare och haft program till att generera färdig kod att klistra in och använda. Men problemet att det tar mycket minne.
I mitt fall har jag bara processorns inbyggda flashminne på 128K, räcker inte så långt till bitmappar på typ 200*300 pixlar...
Men, i mitt fall så kommer bilderna att vara väldigt enkla, rätt stora ytor i samma färg -> kan komprimeras mycket.
Jag skulle kunna sätta mig och hårdkoda bilderna, mer avancerade är de inte, men det blir dels drygt, dels jobbigt om jag vill ändra i framtiden, dels så lär jag mig inget på det.
Processorn i fråga är en STM32F103 och jag programmerar i C, men det är inte så intressant då jag mest är ute efter lite mer allmänna sätt att lösa uppgiften oavsett plattform.
Så, vad finns det för smidiga sätt att göra lite enkelt komprimerad bildvisning?
Drömmen vore att kunna rita i något vanligt program på datorn typ Photoshop, Paint.net etc. och där ifrån generera någonting smidigt att köra in i processorn med minsta möjliga handpåläggning.
Alla tips, idéer, länkar etc. är mycket uppskattade.
-
- EF Sponsor
- Inlägg: 2108
- Blev medlem: 27 augusti 2005, 20:57:58
- Ort: Borlänge
Re: Generera programkod för bildvisning på µC?
Kanske inte svaret du sökte men ett sätt är att använda ett FTDI-chip http://www.ftdichip.com/EVE.htm
- Klas-Kenny
- Inlägg: 11344
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Generera programkod för bildvisning på µC?
thepirateboy: Inte vad jag sökte, nej. I mitt fall måste det hela lösas i mjukvara då hårdvaran är färdig.
Men fortfarande bra att veta till en annan gång!
TomasL: Om jag får in en JPEG-decoder, hur gör man i så fall enklast för att få in själva bilden?
Just eftersom att jag inte har tillgång till annat än processorns inbyggda minne menar jag. Hur kan man tänkas gå till väga för att få in bild-datan då om inte genom programkoden?
Men fortfarande bra att veta till en annan gång!
TomasL: Om jag får in en JPEG-decoder, hur gör man i så fall enklast för att få in själva bilden?
Just eftersom att jag inte har tillgång till annat än processorns inbyggda minne menar jag. Hur kan man tänkas gå till väga för att få in bild-datan då om inte genom programkoden?
Re: Generera programkod för bildvisning på µC?
Nyckeln är att skapa bilderna i realtid utifrån så lite data som möjligt.
"Hårdkoda" bilderna låter kanske fel, men tänk så här istället:
Koda några enkla funktioner som genererar fyrkanter eller linjer utifrån givna data. Och så gör du ett system som kan kombinera dessa till en bild.
Du måste fortfarande "koda" bilden (eller komprimera om du vill kalla det så), men funktionen är flexibel.
så här kanske : Craft, av Linus Åkesson.
"Hårdkoda" bilderna låter kanske fel, men tänk så här istället:
Koda några enkla funktioner som genererar fyrkanter eller linjer utifrån givna data. Och så gör du ett system som kan kombinera dessa till en bild.
Du måste fortfarande "koda" bilden (eller komprimera om du vill kalla det så), men funktionen är flexibel.
så här kanske : Craft, av Linus Åkesson.
Re: Generera programkod för bildvisning på µC?
Nu vet jag inte hur mycket programminne du har, men det borde ju inte vara några problem egentligen, till exempel har uChip några appnotes och kod med JPEG-decodrar för PIC32, det borde finnas rätt mycket om detta på nätet.Klas-Kenny skrev: TomasL: Om jag får in en JPEG-decoder, hur gör man i så fall enklast för att få in själva bilden?
Just eftersom att jag inte har tillgång till annat än processorns inbyggda minne menar jag. Hur kan man tänkas gå till väga för att få in bild-datan då om inte genom programkoden?
- Swech
- EF Sponsor
- Inlägg: 4694
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Generera programkod för bildvisning på µC?
Kläm dit ett SD kort, så har du obegränsat med utrymme ( i princip)
Swech
Swech
Re: Generera programkod för bildvisning på µC?
Eller rita i tex SVG, kommer kräva lite mer av processorn men kan bli väldigt snålt på utrymme om man använder relativt enkla former.
Re: Generera programkod för bildvisning på µC?
Filformatet för SVG kanske är något komplext att hantera för en MCU ?
- Klas-Kenny
- Inlägg: 11344
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Generera programkod för bildvisning på µC?
Sedär ja, det ska jag absolut kolla närmare på!johano skrev:För gcc kan man göra såhär http://balau82.wordpress.com/2012/02/19 ... -with-gcc/
Det är precis så jag menade i första inlägget att jag skulle kunna göra, men helst vill undvika.jesse skrev:"Hårdkoda" bilderna låter kanske fel, men tänk så här istället:
Koda några enkla funktioner som genererar fyrkanter eller linjer utifrån givna data. Och så gör du ett system som kan kombinera dessa till en bild.
Du måste fortfarande "koda" bilden (eller komprimera om du vill kalla det så), men funktionen är flexibel.
Jo, det förstås, men just nu är hårdvaran klar så jag vill inte göra om det då jag vet att det GÅR att lösa i mjukvara.Swech skrev:Kläm dit ett SD kort, så har du obegränsat med utrymme ( i princip)
Sen så bär det mig lite emot också att lägga på extra kostnader i projektet, även om det egentligen inte spelar någon roll då det bara ska göras i enstyck för eget bruk..
PNG är nog rätt väg i det här fallet. Men spelar nog inte jättestor roll skulle jag tro.
Ska ta och googla efter någon bra dekoder för PNG och/eller JPEG.
Edit: För övrigt, hur lång tid det tar att få fram bilden spelar i princip ingen roll, går det på under två sekunder är jag mycket nöjd. Skulle det ta längre tid vore inte det heller hela världen.
Senast redigerad av Klas-Kenny 31 augusti 2013, 16:42:36, redigerad totalt 1 gång.
- Swech
- EF Sponsor
- Inlägg: 4694
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Generera programkod för bildvisning på µC?
Du kan kika på äldre typer också som användes på Amiga/Atari tiden
T.ex.
http://en.wikipedia.org/wiki/Run-length_encoding
Eller köra med mindre antal färger och då koda med palett
Swech
T.ex.
http://en.wikipedia.org/wiki/Run-length_encoding
Eller köra med mindre antal färger och då koda med palett
Swech
Re: Generera programkod för bildvisning på µC?
Vad är det för process som skapar bilderna? är det statiska bilder som du skapar manuellt eller mätdata osv som ska visas osv?
Re: Generera programkod för bildvisning på µC?
Kör bilderna på ett spi flashminne.
Vet ej vad http://lodev.org/lodepng/ tar i flash/ram, testa.
Vet ej vad http://lodev.org/lodepng/ tar i flash/ram, testa.