Velikost kódu PIC32 vs PIC18F

Ahojte,
po delší odmlce přihazuju takovej zapeklitej dotaz.

Programuju nějaké zařízení, to je postavené na PIC18F87K90 a má 128kB Flash, tu už mám z 93% plnou a řeším jak nakopnout další generaci zařízení trochu nahoru.

V hledáčku mi přistál PIC32MZ2064DA s 2MB Flash, krutě velkou RAMkou, GPU atd. Dneska PIC18F ovládá grafický LCD přes FT800 (320x240), takže je to docela ulehčení ve velikosti kódu.

Nemá někdo zkušenost jak je to s efektivitou PIC32 vs PIC18? Já se totiž bojím, aby ten stejný kód nezabíral v PIC32 víc místa než v PIC18 a tím pádem jsem to neměl z bláta do louže.
S výkonem PIC18 problémy nemám, stejně procesor neustále čeká, až si uživatel rozmyslí co chce vlastně udělat.

PIC32MZDA by mi mohl zase ušetřit BT816 pro ovládání LCD, tentokrát tam chci vecpat 1024x600 a defakto mi na vše stačí 16b barevná hloubka, moc grafiky na tom LCD není, jen spousta textu v různých nastavovacích menu ala mobil 15 a víc let zpátky.

Díky za radu

Zdar draku :slight_smile:
Že se tu ptáš zrovna ty, asi tu na fóru nebude moc zkušenějších, včetně mě :smiley:

Pokusím se sekundovat aspoň teoreticky, s tím, že si myslím, že to stejně všechno už dávno víš: PIC18 je 8bit s 16bit šířkou instrukčního slova a je plně ortogonální. PIC32MZDA je MIPS M14K, 32bit s 32bit šířkou instrukčního slova (microMIPS instruction set) a je Load-Store, přičemž se k tomuto jádru navrhovatel (který už neexistuje) a k tomuto instrukčnímu setu chlubil výraznou úsporou kódu oproti předchozí generaci M4K. Výkonu to má požehnaně, víc než ARM Cortex M0 až M3, a v assembleru to programovat určitě nebudeš, čekal by tě opruz s pipeline, bus matrixem (AHB, APB atd) a určitě ještě nějaké další, přičemž některé z nich tě čekají i v C.

S velikostí kódu je to teoreticky tak, že co se týče šířky instrukčního slova, nárok na paměť vzroste dvojnásobně (přičemž nový PIC ti dá šestnáctinásobně víc paměti), Load-Store sežere obvykle asi o třetinu paměti navíc, přičemž zde je to eliminováno novou microMIPS architekturou (možná i s mírným ziskem), takže bys z toho měl vyjít dobře. Prakticky si to budeš muset v kompilátorech ověřit, ale žádné velké drama tě nečeká. Pokud používáš nějaké hardware-specific hacky, budeš je muset předělat/ošetřit, a naprosto jistě tě čeká konfigurace jádra a sběrnic (AHB, APB atd, přičemž tohle vzdáleně částečně přešlo i do některých nových PIC16F, tam to mají jako Core Independent Peripherals - CIP) na správné taktovací frekvence, povolení zápisu na I/O piny apod (tohle je jednodušší než u ARM, cca 4 registry co vím, u ARM je to asi 9 registrů).

Další hledisko je, co bude za půl roku nebo rok v dnešní čipokrizi, protože tohle je čip pro automotive zajímavý a brzy může být k nesehnání, takže si budeš muset nachystat i nějaký záložní plán.

Dám ti ještě jednu zde hodně netradiční radu - když potkáš pravou lásku, tak všechno zahoď a běž za ní :slight_smile:

@Mahoney Zdarec :slight_smile:
No zeptat jsem se musel, taky semtam potřebuju nakopnout, minimálně když nikdo nic, tak proběhne aspoň nějaká psycho analýza.

Naštěstí to je výhledově prej v rámci, že produkt má celý horizont cca 5 let na vývoj. Takže by to mělo být asi v pohodě, do té doby bude snad krize zažehnána a čipečky zase porostou. Navíc mám dobrý to, že tohle je maloseriová výroba. Když se povede koupit 1000 ks brouků, během dvou let se zakazníků vyrobí Loggery a pak máme na 10 let s HW klid, jen opravy s SW údržba.

Na dsPIC nebo PIC24 bych si to dokázal představit asi úplně v pohodě. Tam bych se toho nebál, tam dokážu odhadnout že výsledný kód by byl určitě menší než dneska, protože dost v tom programu pracuju s uint16_t a tam je pro 8bit penalizace jako prase. Hlavně už mám napsáno hodně komunikačních knihoven v C, s naším hodně specifickým výrobkem, který snad jenom přizpůsobím na nový jádro.

Na tom PIC32 se nebudu muset bát hodně zběsile počítat ve floatech, budu tam dělat nějakou navigaci ze souřadnic a geofencing, tam se vyšší výkon bude hodit a zákazníci budou mít z nové fičůry radost.
Nikde jsem se nedozvěděl, jestli jde k PIC32 připojit externí paměť na program, ale to by byl asi velký luxus. No zase 2MB je dost na to, aby mi trvalo dost dlouho než napíšu pro ten procík dost pohádek.

Ještě jsem si říkal, že bych opustil Microchip a šel k ESP32, jenomže to nemá dostatek IO, hlavně je asi problém, že to je čínské (dělám to pro USA zákazníka). Jinak by se mi to ESP líbilo jako prase. Různé složitější věci, co prostě nezobrazím na LCD můžu rozchodit přes WEBové rozhraní, posílat si telemetrii a zákazníkovi jeho data kam bude chtít.

Ale jak říkáš, běž za pravou láskou :smiley:

Ako som pozeral na cenu toho PIC32, keď k nej pripojíš ESP32 len ako web server, cenu to zdvihne naozaj minimálne :slight_smile:

O ceně nemá smysl se bavit. Nic levnejšího prostě neexistuje než ESP32. Faktem je, že bych mohl použít nějaký ten wroover kit místo externí flash na obrázky, to vyjde i levněji a pana Bluetooth potřebuju vlastně taky.

Akorát se budou muset implementovat 2 bootloadery do našeho aktualizačního SW, ale to snad IT strana zvládne.

To se dozvíš v MAPSu, konkrétně PIC32MZ2025DAA288, PIC32MZ2025DAB288, PIC32MZ2064DAA288, PIC32MZ2064DAB288 to umí… Akorát je trošku problém v tom, že jsou to BGA pouzdra, a to asi nechceš :neutral_face:

ESP32 = Tensilica (dnes Cadence) Xtensa LX6 - žije si to vlastním životem, není to žádný ARM ani nic podobného. Nahlédni do low-level manuálů, když po tom budeš potřebovat něco víc do hloubky, dobře ti z toho asi nebude, ale brát ti to nechci… Udělej si obrázek sám.

Kurňa do MAPSu mě tentokrát nenapadlo kouknout. Pročítal jsem co mají na webu k PIC32 za kecy a tam jsem z toho fakt chytrej nebyl.
Osadit BGA není problém, linku ma to máme dost dobrou, ale s kolegou nemám zkoušenost s routováním takovejchle opičáren a tam by byl asi 4 vrstvej plošňák dost v pasti a donečeho složitějšího bych se asi nepouštěl.

Na ESP32 mám postavenejch pár blbin po domě, všechno naprogramované v Arduino studiu, tak jsem si říkal, že oficiální SDK a Eclipse by mohla být cesta. Nijak do hloubky jsem to ještě nestudoval. Co to pod kapotou umí/ neumí a jak je to zabugovaný.

Nehodil by se pro tento účel Raspberry Pi Pico? Externí flash 2 MB, dvoujádro Cortex M0 133 MHz, RAM 264 KB, kvalitní SDK (float a double). RAM sice není pro 1024x600 dost, ale s driverem a kombinovanou grafikou stačí i podstatně míň RAM. … Ptám se protože hledám hranice kde a proč Pico už nestačí.

To spíš kdyby koupil samotný RP2040, stojí 29,- Kč i s daní, ušetřená stovka na kus už jsou v průmyslu peníze…Nikde ale nespecifikoval, kolik vlastně těch I/O potřebuje (RP2040 je v QFN56).

Raspberry PI RP2040, taky jsem se na to díval. Tady, ale nemám asi úplně jistotu, že to koupím za 5 let let. Ale dneska/ zítra mi příjde ta PICO verze na vyzkoušení.
Hlavně, bych se chtěl vyhnout přepisování knihoven, který jsou postavený na Microchip hardware.
Druhá věc, že teď tam je QFN80 a klidně by to sneslo další obsazený nožičky. Teď je tam 5 multiplexerů kvůli nedostatku IO a ještě jeden úplně samostatný PIC16xxxx. Takže QFN144 by mohlo být ideální pouzdro.

Když oželíš tu externí programovou paměť, tak PIC32MZ2064DAK176 apod je LQFP-176 (QFN nedělají, pak už jen BGA). Cena toho PIC32 čipu začíná na 400,- Kč bez daně (podle TME).

Přepisování hardwarově závislých knihoven se stejně tak jako tak nevyhneš… Uvědom si, že to není jejich vlastní jádro (tedy Microchipu), ale licencovaný MIPS, a až na instrukční set to má k ARMu zatraceně blízko, přímo si to konkurovalo (s tím, že to MIPS jádro je propracovanější a rychlejší). Pokud ne tohle, tak pak z běžně dostupných asi už jedině nějaký ARM Cortex M4, nejspíš od STM (jsou levnější a odolnější na ESD než třeba ty od NXP).

Nejdou tu editovat předchozí příspěvky, takže ještě dodatek takto: Projel jsem si teď dostupnosti ARM chipů s 2MB flash jak od STM, tak od NXP, a není dostupné nikde nic (hlavně že jsem tu sám předtím zmínil chipokrizi :smiley: ). Takže rekapitulace:

ARM - není
ESP32 - nevíme nic “o hloubce králičí nory” (samo pro sebe); málo pinů
RP2040 - neznáme dostupnost za 5 let; málo pinů
PIC32MZ - práce s tím nějaká bude, ale dostupné (zatím?) tak nějak jsou i v pouzdrech s větším počtem pinů

mimochodem PIC24 s (1MB flash max) - “dostupný” jeden jediný v QFN64 (PIC24FJ1024GA606-I/MR), mají pět kusů a dodací lhůtu k dalším 90 týdnů.

Takže je to myslím víceméně jasné (PIC32MZ se zatím aspoň dají nějak sehnat), jestli se nějak mýlím, tak mě klidně oprav. Dostupnosti jsem bral podle TME, jestli bereš jinde, bude to možná trochu jinak, ale asi ne nějak výrazně…

To je hrozný, píšu odpověď na 6x 2 dny a pak to stejně smažu :slight_smile:
Mahoney, docela ses mi trefil do výběru s tím PIC32MZ2064DAK176, byl to taky můj kandidát. Asi oželím tu externí paměť programu a budu doufat, že se to tam vleze. ZAse když si vezmu kolik jsem toho vecpal do 128kB, tak to půjde. Teoreticky kompletní gui můžu řešit načítáním obrázků z externí QSPI flash a dokreslovat do toho jen texty, ať netvořím zas komplet GUI v paměti programu.

ARM jsem zavrhnul hned do začátku, chci z nějakého pochybného důvodu zůstat u Microchipu.
Jednak není pro takový lamy jako já a hlavně to používají úplně všichni na kdejakou ptákovinu. Kdežto Microchip zas tolik vývojářů nedělá, je to poměrně takovej okraj, řekl bych.

PIC24 mám dost rád, ale do toho nevyrábí víc jak 1MB flash i ve verzi PIC24E, dsPIC33E je na tom stejně.

Dostupnost v TME mě zas tak netrápí. Budou to vyrábět v Clevelandu a tam si kluci američtí už snad nějak poradí. MicrochipDirect nebo Arrow budou třeba mít v pohodě. Dostupnost brouků mě asi bude zajéímat teď na nějakých 10 ks prototypů co se budou programovat/ testovat a výrobní serie bude stejně nejdřív za 3 roky, to už snad bude s dostupností kapacit na wafer linkách snad zas v pohodě.

ESP32 tam každopádně dám, je to nejlevnější bluetooth a Wifi modul co existuje. Takový převodníček UART na bezdrátové technologie. To by mohlo být v pohodě i s nějakýma těma vnitřníma démonama.

Teď mě kluci ze zákaznickýho servisu potěšili, líbil by se jim dotyk na LCD. Problém je, že to zařízení slouží na logování a nastavování nějakých dalších věcí v kamenolomech při trhacích pracech. Všude je bordel, kamení, voda, blato. Teď je přes LCD 3 mm sklo, když ti to spadne na zem a přejedeš to pickupem (bagr je už problém :smiley: ), tak to akorát očistíš hadrem a jedeš dál. Netuším jestli se dá s takovou odolností řešit kapacitní dotyk. Gumová tlačítková klávesnice je v tomhletom docela nepřekonatelná.

Tak to je libovka…Asi bude dost záležet na velikosti palců :smiley:

Potřebuju tam dostat 5 - 5,5"