MIKROCHIP-LOGO

MICROCHIP PIC24 Dual Partition Flash programová paměť

MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory-PRO

Informace o produktu

Všechna zařízení PIC24 a dsPIC33 jsou dodávána s interním programovatelným polem Flash, které lze použít ke spuštění uživatelského kódu. Pole Flash má dlouhou životnost a vysoký počet cyklů čtení/zápisu, což poskytuje velkou flexibilitu při vývoji a ukládání kódu. Programová paměť Flash se dvěma oddíly má aktualizovanou verzi s novými funkcemi.

  • Adresní prostor: Zařízení PIC24 a dsPIC33 adresují 4M x 24bitový adresní prostor programové paměti.
  • Prostor uživatelského programu: Mapa paměti programu je rovnoměrně rozdělena do prostoru uživatelského programu (000000h až 7FFFFFh).
  • Místo v konfigurační paměti: Mapa paměti programu je rovnoměrně rozdělena na konfigurační (nebo testovací) paměťový prostor (800000h až FFFFFFh).
  • Přístup k programovému prostoru: Existují tři způsoby přístupu k programovému prostoru:
    1. 23bitové počítadlo programů (PC).
    2. Instrukce čtení tabulky (TBLRD) a zápisu tabulky (TBLWT).
    3. Mapováním libovolného segmentu paměti programu o velikosti 32 kB do adresního prostoru datové paměti.

ZAVEDENÍ
Všechna zařízení PIC24 a dsPIC33 mají interní programovatelné pole Flash pro provádění uživatelského kódu. Vysoce odolné pole Flash poskytuje velkou flexibilitu při vývoji a ukládání kódu a kombinuje dlouhou životnost s vysokým počtem cyklů čtení/zápisu.
Tato verze paměti programu Flash přidává tyto nové funkce:

  • Operace Dual Partition Flash, která umožňuje podporu robustních bootloader systémů a bezpečné ukládání aplikačního kódu s možnostmi navrženými pro zvýšení zabezpečení kódu
  • Operace LiveUpdate, která umožňuje upravit nebo zcela vymazat neaktivní segment kódu (CS), zatímco hlavní aplikace pokračuje ve spouštění
  • Přímé programování za běhu pole Flash z prostoru datové paměti RAM s volitelnou kompresí obrazu datové paměti RAM

Použití produktu

Chcete-li použít programovou paměť Flash se dvěma oddíly, postupujte takto:

  1. Podívejte se do poznámky na začátku kapitoly Dual Partition Flash Program Memory v aktuálním datovém listu zařízení a zkontrolujte, zda tento dokument podporuje zařízení, které používáte.
  2. Stáhněte si datové listy zařízení a sekce referenčních příruček rodiny z Microchip Worldwide Webmísto na: http://www.microchip.com.
  3. Přístup k programovému prostoru použijte kteroukoli ze tří výše popsaných metod.
  4. Implementovanou programovou paměť lze dále rozdělit na vektorovou oblast, která zahrnuje vektory Reset a vektory přerušení, a oblast kódu, která zahrnuje také konfigurační data Flash. Přístup k neimplementovaným oblastem prostoru uživatelského programu (tj. nad horní implementovanou hranicí programové paměti) způsobí past na chybu adresy.

ARCHITEKTURA PAMĚTI PROGRAMU

Zařízení PIC24 a dsPIC33 adresují 4M x 24bitový adresní prostor programové paměti, jak je znázorněno na obrázku 2-1. Mapa paměti programu je rovnoměrně rozdělena na uživatelský programový prostor (000000h až 7FFFFFh) a konfigurační (nebo testovací) paměťový prostor (800000h až FFFFFFh). Uživatelský programový prostor obsahuje Reset vector, Interrupt Vector Tables (IVT) a programovou paměť. Existují tři způsoby přístupu k programovému prostoru.

  1. 23bitové počítadlo programů (PC).
  2. Instrukce čtení tabulky (TBLRD) a zápisu tabulky (TBLWT).
  3. Mapováním libovolného segmentu paměti programu o velikosti 32 kB do adresního prostoru datové paměti.

Implementovanou programovou paměť lze dále rozdělit na vektorovou oblast, která zahrnuje vektory Reset a vektory přerušení, a oblast kódu, která zahrnuje také konfigurační data Flash. Přístup k neimplementovaným oblastem prostoru uživatelského programu (tj. nad horní implementovanou hranicí programové paměti) způsobí past na chybu adresy.

Vektorová oblast
Vektorová oblast začíná na začátku paměťového prostoru programu, na 000000h. Obsahuje vektor Master Reset, vektory hardwarových trapů a tabulku vektorů přerušení (IVT) pro všechna implementovaná hardwarová přerušení.
Kvůli architektonickým rozdílům a velikosti IVT zabírá vektorová oblast různé množství paměti v různých rodinách zařízení. U zařízení PIC24 se vektorová oblast rozšiřuje na 0000FEh. U zařízení dsPIC33 se vektorová oblast rozšiřuje na 0001FEh. Obrázek 2-2 ukazuje rozdíl mezi IVT pro různá zařízení. Bez ohledu na rodinu zařízení začínají vektory hardwarových přerušení vždy na 000014h s vektorem přerušení 0.
Vektorová oblast zhruba odpovídá vektorovému segmentu (VS) v implementacích zabezpečení CodeGuard™. V závislosti na konfiguraci zabezpečení může být vektorová oblast považována za součást spouštěcího segmentu (BS) nebo obecného segmentu (GS).

ALTERNATIVNÍ TABULKA PŘERUŠENÍ VEKTORŮ
Všechna zařízení dsPIC33 a PIC24 umožňují implementaci Alternate IVT (AIVT), kterou lze použít v aplikacích s vysokým zabezpečením a pro alternativní zpracování výjimek. Na rozdíl od dřívějších zařízení v těchto rodinách není AIVT trvale alokováno v paměti programu v pevném rozsahu adres. Místo toho je AIVT přítomen pouze tehdy, když:

  • Zabezpečení CodeGuard je nakonfigurováno pro Boot Segment o velikosti alespoň dvou stránek (nastaveno registrem konfigurace FBSLIM) a
  • AIVT se aktivuje naprogramováním konfiguračního bitu AIVTDIS na '0'.

Když je AIVT povoleno, nachází se v rozsahu adres začínajícím na začátku poslední stránky BS; každý vektor je umístěn v pevném odsazení od hranice stránky. Celková velikost a obsah (tj. pořadí vektorů) AIVT zrcadlí ty IVT.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (1) MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (2)

Kódová oblast
Oblast kódu je oblast paměti uživatelského programu, která obsahuje kód uživatelské aplikace. Rozprostírá se od konce vektorové oblasti k začátku konfiguračních slov Flash. Pokud je implementován spouštěcí segment, začíná na konci vektorové oblasti a rozšiřuje se o předem určený rozsah. Část oblasti kódu, která není v zaváděcím segmentu, odpovídá obecnému segmentu (GS) v bezpečnostních systémech CodeGuard. Kromě konfiguračních slov Flash na konci implementované paměti, jak je popsáno níže, je pro kód aplikace k dispozici celá oblast.

FLASH KONFIGURAČNÍ DATA
Oblast na konci implementované paměti programu Flash (typicky poslední řádek) je vyhrazena pro konfigurační data Flash. Při resetování zařízení se tyto konfigurační informace zkopírují do příslušných registrů konfigurace zařízení, které nejsou uživateli přístupné. Konfigurační data zařízení lze naprogramovat pouze naprogramováním požadovaných hodnot v konfiguračních slovech Flash.
Počet, pořadí a organizace bitů konfigurace se liší mezi architekturami zařízení a mezi rodinami zařízení v rámci stejné architektury. Některá zařízení organizují konfigurační bity jako 16bitová konfigurační slova, která jsou obecně seskupena podle funkčních termínů. Jiná zařízení organizují konfigurační bity pomocí individuálně adresovatelných konfiguračních bajtů. Obrázek 2-3 ukazuje oblast organizovanou pro konfigurační slova. Informace specifické pro rodinu naleznete v datovém listu zařízení.
U zařízení s funkcí Dual Partition je konfigurační slovo FBTSEQ obvykle předposlední konfigurační slovo, které se nachází na konci implementované programové paměti.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (3)

Organizace paměti
Paměť programu je organizována jako bloky s adresovatelnými slovy. Přestože se s ní zachází jako se šířkou 24 bitů, je vhodnější uvažovat o každé adrese paměti programu jako o spodním a horním slově, přičemž horní bajt horního slova je neimplementovaný. Spodní slovo má vždy sudou adresu, zatímco horní slovo má lichou adresu (obrázek 2-4). Adresy paměti programu a PC jsou vždy zarovnány podle slov na spodním slově (tj. nejméně významný bit (LSb) je vždy '0'). Adresy se během provádění kódu zvýší nebo sníží o dvě.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (4)

PAMĚŤ ADRESOVACÍHO PROGRAMU
Pro normální provádění kódu je efektivní adresa (EA) pro spuštění poskytnuta programovým čítačem (PC). Počítač je široký 23 bitů, což umožňuje přímý přístup do libovolného místa v prostoru uživatelského programu. PC[0] je pevně nastaveno jako '0', aby bylo zachováno zarovnání programových instrukcí. PC se inkrementuje na další sekvenční adresu inkrementací PC[1], čímž se hodnota PC zvýší o dvě.
Pro operace čtení tabulky a zápisu do tabulky je EA vytvořen zřetězením 16bitové adresy z jednoho z W registrů s 8bitovou adresou z registru TBLPAG. To umožňuje tabulkovým operacím přístup k uživatelskému i konfiguračnímu prostoru. Generování adres pro operace s tabulkami je podrobněji popsáno v části 4.2.1 „Generování adres pro operace s tabulkami“.
Pro operace rozšířeného datového prostoru (EDS) a viditelnosti programového prostoru (PSV) je EA vytvořen zřetězením spodních 15 bitů registru W s 8bitovou adresou buď z DSRPAG/DSWPAG (dsPIC33) nebo PSVPAG (PIC24F). registrů. Operace s rozšířeným datovým prostorem a viditelností programového prostoru jsou popsány v „DsPIC33/PIC24 Family Reference Manual“, „Data Memory“ (dsPIC33, DS70595) a/nebo „Data Memory“ (PIC24, DS30009717).

PROGRAM OBSLUHA ODDĚLENÍ PAMĚTI

U zařízení s funkcí Dual Partition Flash se režim Dual Partition Program Memory vybírá naprogramováním bitů BTMODE[1:0] v konfiguračním slově FBOOT. Na rozdíl od jiných konfiguračních slov je FBOOT umístěn v prostoru konfigurační paměti, kromě všech ostatních registrů konfigurace Flash. Přesná adresa závisí na architektuře (tj. PIC24 nebo dsPIC33) a může se lišit mezi rodinami zařízení. Tabulka 3-1 uvádí možné možnosti oddílu Flash, které jsou popsány v následujících částech.
Když je zařízení poprvé naprogramováno pomocí In-Circuit Serial Programming™ (ICSP™), programátor by měl naprogramovat FBOOT, aby správně nastavil režim Flash Partition zařízení. Všimněte si, že není možné přeprogramovat FBOOT za běhu pomocí Run-Time Self-Programming (RTSP). Bity FBOOT musí být konfigurovány v režimu ICSP programátorem. Důvodem je, že umístění konfiguračních slov Flash se změní z režimu standardního oddílu na režim duálního oddílu, což by mohlo způsobit neočekávanou činnost zařízení.

Tabulka 3-1: Možnosti rozdělení Flash

BTMODE[1:0] Možnost rozdělení
11 Standardní režim (jeden oddíl, výchozí)
10 Režim Dual Partition
01 Režim chráněného duálního oddílu
00 Privilegovaný režim duálního oddílu(1)

Poznámka 1: Není implementováno na všech zařízeních Dual Partition.

Standardní režim (jeden oddíl).
Standardní režim, označovaný také jako režim Single Partition nebo Standard Partition, je výchozím provozním režimem pro programovou paměť. Je vybráno, když jsou bity konfigurace BTMODEx '11' (jejich nenaprogramovaná konfigurace). Toto je také provozní režim jediné programové paměti dostupný pro všechna předchozí zařízení dsPIC33 a PIC24. V režimu Standard je celá paměť uživatelského programu mapována jako plochý, souvislý paměťový prostor v rozsahu od 000000h do horní hranice implementované paměti Flash. Napřample, zařízení s 256 kB paměti Flash má rozsah adres programové paměti 000000h až 02AFFFh, přičemž adresy nad tímto rozsahem nejsou implementovány. Pro uživatelskou aplikaci je k dispozici celý implementovaný rozsah paměti (kromě vyhrazených prostor pro vektory resetování, IVT a Flash konfigurační slova). V zařízeních se segmentovaným zabezpečením kódu může být implementován také Boot Segment.

Režimy dvou oddílů
Když jsou konfigurační bity BTMODEx naprogramovány na hodnotu jinou než '11', zařízení pracuje v jednom ze tří režimů Dual Partition. Ve všech těchto režimech je implementovaná paměť Flash symetricky rozdělena do dvou oblastí: aktivní oddíl začínající na 000000h a neaktivní oddíl začínající na 400000h. Pro zařízení v předchozím příkladuample, 256-Kbyte Flash paměť by byla implementována jako dvě oblasti po 128 Kbyte, v rozsahu od adres 000000h až 0157FFh a 400000h až 4157FFh. Adresy mezi těmito dvěma oblastmi nejsou implementovány (viz obrázek 3-1).
V režimech Dual Partition lze do zařízení naprogramovat dvě nezávislé aplikace, jednu do každého ze dvou oddílů paměti Flash, známých jako oddíl 1 a oddíl 2. Když je zařízení inicializováno, jedna z nich je dynamicky mapována na aktivní oddíl a popraven. Druhý je namapován na neaktivní oddíl, kde zůstává dostupný pro programování operací s pamětí. Přiřazení oddílu k aktivnímu nebo neaktivnímu oddílu je určeno automaticky podpisem kódu, známým jako spouštěcí pořadové číslo. Oddíly kódu mohou být také zaměněny mezi aktivními a neaktivními oddíly během běhu pod kontrolou softwaru.

Režimy duálního oddílu umožňují aplikaci aktivního oddílu přistupovat (ale nespouštět) programová data v neaktivním oddílu nebo přeprogramovat neaktivní oddíl. Zápis do paměti Flash v neaktivním oddílu nevyžaduje, aby se CPU zastavil, když dojde k zápisu Flash. To umožňuje funkci LiveUpdate, kde se současně s aktualizacemi aplikací mohou provádět důležité řídicí funkce nebo komunikace citlivá na čas. Některé režimy Dual Partition kladou na proces další omezení, která pomáhají zajistit zabezpečení kódu a robustnost provozu. Kód nelze spustit, když je namapován na neaktivní oddíl. Oddíly mohou být prohozeny, ale lze spustit pouze kód v aktivním oddílu.

  1. REŽIM DVOU DĚLENÍ
    Nejjednodušší režim duálního oddílu neklade žádná omezení na operace od aktivního oddílu až po kód v oddílech 1 nebo 2. Jakákoli omezení interakcí mezi segmenty kódu v různých oddílech jsou určena konfigurací rozšířených bezpečnostních funkcí.
  2. CHRÁNĚNÝ REŽIM DVOU ODDĚLENÍ
    Režim chráněného duálního oddílu chrání výchozí segment kódu (oddíl 1) před jakýmikoli operacemi zápisu nebo mazání Flash. To umožňuje implementaci režimu „Factory Default“ tím, že umožňuje uložení záložního obrazu zabezpečeného proti selhání do oddílu 1. Když je použit režim chráněného duálního oddílu, oddíl 1 nelze zapsat ani vymazat operacemi paměti Flash, když je v režimu Neaktivní oddíl. Pokud je oddíl 1 také chráněn proti zápisu pomocí nastavení konfiguračního bitu, nelze jej kdykoli vymazat ani zapsat. Naproti tomu oddíl 2 lze vymazat nebo zapsat operacemi z kteréhokoli oddílu. To umožňuje umístění bootloaderu odolného proti selhání do oddílu 1 spolu s obrazem záložního kódu zabezpečeného proti selhání. Tento obraz kódu lze poté ve výchozím nastavení spustit a použít k přepsání oddílu 2 v případě, že by aktualizace Flash selhala.
  3. PRIVILEGOVANÝ REŽIM DVOU ODDĚLENÍ
    Režim Privileged Dual Partition implementuje další ochranu zabezpečení v případech, kdy aplikace může mít segmenty kódu napsané různými autory a pro ochranu duševního vlastnictví pro jeden z těchto segmentů je vyžadována vyšší úroveň zabezpečení. Bývalýample by byl systém, kde většinu kódu zapisuje vývojář hardwarových aplikací, ale obsahuje proprietární knihovnu třetí strany. Tento režim je navržen pro práci s rozšířenými bezpečnostními funkcemi ve vybraných zařízeních, která mohou selektivně chránit různé segmenty kódu v prostoru paměti programu.
    Režim privilegovaného duálního oddílu se liší od režimu standardního duálního oddílu přidáním speciální ochrany do konfiguračních bitů BSLIMx obou oddílů. Tato ochrana účinně uzamkne bity a zabrání změnám velikosti spouštěcího segmentu a obecného segmentu. Při správném nastavení zabezpečení to zajistí, že žádný segment nebude za běhu změněn ani neočekávaně přečten.
    Režim Privileged Dual Partition není implementován na všech zařízeních s funkcí Dual Partition. Podrobnosti naleznete v technickém listu konkrétního zařízení.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (5)MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (6)
  4. VÝBĚR ODDĚLENÍ KÓDU
    V režimech duálního oddílu existují dva způsoby, jak určit, který oddíl bude namapován na aktivní oddíl a proveden: zaváděcí číslo sekvence a instrukce BOOTSWP. Bit P2ACTIV (NVMCON[10]) lze použít k určení, který fyzický oddíl je aktivní oddíl. Pokud P2ACTIV = 1, je aktivní oddíl 2; pokud P2ACTIV = 0, oddíl 1 je aktivní. Boot Sequence Number je 12bitová hodnota, která se používá pro automatické určení aktivního oddílu po resetu zařízení. Každý oddíl by měl mít jedinečné číslo zaváděcí sekvence, které je uloženo v konfiguračním slově FBTSEQ Flash. Instrukce BOOTSWP se používá k prohození aktivních a neaktivních oddílů bez resetu zařízení.
    1. Zaváděcí pořadové číslo
      12bitové číslo zaváděcí sekvence je uloženo v konfiguračním slově FBTSEQ Flash, které je vždy umístěno na posledním místě paměti uživatelského programu, nad ostatními konfiguračními slovy Flash (viz Obrázek 3-2). Na rozdíl od jiných konfiguračních registrů, které používají pouze spodních 16 bitů programového paměťového slova, je FBTSEQ široký celých 24 bitů. Každý oddíl by měl mít za normálních provozních podmínek jinou hodnotu FBTSEQ. Když se nepoužívají režimy Dual Partition, hodnota FBTSEQ je ignorována.
      Boot Sequence Number je uloženo ve dvou částech: skutečná hodnota v bitovém poli, BSEQx
      (FBTSEQ[11:0]) a jedničkový doplněk hodnoty v poli bitů IBSEQx
      (FBTSEQ[23:12]). Když je po resetu zařízení načteno číslo zaváděcí sekvence, hodnoty BSEQx a IBSEQx se automaticky porovnají. Pokud se tyto dvě hodnoty vzájemně nedoplňují, je zaváděcí pořadové číslo považováno za neplatné. Hodnota doplňku není automaticky vytvářena hardwarem ani není ověřována hardwarem při programování. Aplikace musí vypočítat a naprogramovat příslušnou hodnotu.
      Při resetování zařízení se porovnají sekvenční čísla spouštění v obou oddílech. Oddíl s nižší hodnotou BSEQx je oddíl, který je namapován na aktivní oddíl a jeho kód je spuštěn. Pokud je jedno ze spouštěcích čísel neplatné, zařízení vybere oddíl s platným pořadovým číslem zavádění jako aktivní oddíl bez ohledu na to, které pořadové číslo spouštění je nižší. Pokud jsou obě sekvenční čísla zavádění neplatná, bude oddíl 1 standardně vybrán jako aktivní oddíl.
      Oddíly lze připravit na výměnu za běhu přeprogramováním zaváděcího pořadového čísla neaktivního oddílu na nižší hodnotu. Po provedení Resetu se nyní aktivuje oddíl, který má nižší hodnotu. Tato metoda se používá, když byl neaktivní oddíl aktualizován a po resetování je namapován na aktivní oddíl.
      Umístění FBTSEQ umožňuje jeho snadné vyloučení z kontrolního součtu nebo jiného ověření paměti programu Flash. Protože hodnota FBTSEQ bude pravděpodobně určena za běhu (na základě BSEQx druhého oddílu), často ji nelze zahrnout do kontrolního součtu, jako je CRC.
      Sekvence v horní části obrázku 3-3 ukazuje vztah mezi kódovými oddíly, když se změní číslo zaváděcí sekvence a provede se reset zařízení.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (7)
    2. BOOTSWP instrukce
      Instrukce BOOTSWP je rozšířením instrukční sady PIC24 a dsPIC33. Podporuje kód LiveUpdate tím, že umožňuje zaměňovat segmenty kódu mezi aktivními a neaktivními oddíly bez nutnosti resetování zařízení. Odložení oddílu pomocí instrukce BOOTSWP se nazývá „soft swap“. Pro provedení instrukce BOOTSWP je nutné vymazat konfigurační bit BTSWP (FIDC[25]). Pokud se pokusíte o instrukci BOOTSWP s nastaveným BTSWP, výsledkem bude instrukce NOP.
      Po instrukci BOOTSWP musí vždy následovat jednoslovná instrukce, která zapíše PC (např. GOTO W, CALL W nebo BRA W); cíl instrukce musí být na adrese do 32 kB od aktuální adresy. Po provedení se aktivní a neaktivní oddíl vymění a vektory PC se přesunou na místo určené instrukcí GOTO v nově aktivním oddílu.
      Poznámka: Pokud je instrukce BOOTSWP prováděna z funkce, která vytvořila nový zásobníkový rámec pomocí instrukce LNK, musí být po BOOTSWP použito CALL namísto GOTO; jinak zařízení vygeneruje past chyb zásobníku.
      • Po provedení instrukce BOOTSWP se nastaví bit SFTSWP (NVMCON[11]). Tento bit firmwaru indikuje, že instrukce BOOTSWP proběhla správně a že aktuálně aktivní oddíl byl zadán prostřednictvím BOOTSWP, nikoli prostřednictvím resetování zařízení. Stavový bit, P2ACTIV (NVMCON[10]), lze také přečíst a ověřit, který oddíl je aktivní.
      • Je důležité si uvědomit, že po výměně diskového oddílu zůstanou všechna dříve povolená periferní zařízení a přerušení povolena. Kromě toho si RAM a zásobník po výměně zachovají svůj stav. Důrazně se doporučuje, aby aplikace využívající soft swaps přeskočily na rutinu, která zařízení znovu inicializuje, aby bylo zajištěno, že aplikace nadále běží podle očekávání.
      • Pro robustnost provozu je nutné před provedením instrukce BOOTSWP provést standardní odemykací sekvenci NVM (zápis 55h a AAh do registru NVMKEY ve dvou po sobě jdoucích krocích; více informací naleznete v části 4.1 „Registry“). Před provedením odemykací sekvence je také důležité zakázat přerušení. Pokud se odemykací sekvence neprovede, BOOTSWP se provede jako vynucené NOP. Instrukce GOTO následující po BOOTSWP se stále provádí, což způsobí, že počítač skočí na toto místo v aktuálním operačním oddílu. Podobně BOOTSWP nemá žádný účinek v režimu standardního oddílu.
      • Sekvence ve spodní části obrázku 3-3 ukazuje vztah mezi oddíly při provádění instrukce BOOTSWP. Všimněte si, že změna oddílu BOOTSWP je dočasná; po následném resetu zařízení je oddíl s nižším spouštěcím pořadovým číslem znovu přiřazen k aktivnímu oddílu.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (8) MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (9)

PROGRAMOVÁNÍ FLASH PAMĚTI

Zařízení PIC24 a dsPIC33 lze naprogramovat jedním ze tří způsobů:

  • Samoprogramování za běhu (RTSP)
  • In-Circuit Serial Programming™ (ICSP™)
  • Vylepšené obvodové sériové programování (EICSP)

RTSP je prováděno aplikačním softwarem během provádění, zatímco ICSP a EICSP jsou prováděny z externího programátoru pomocí sériového datového připojení k zařízení. ICSP a EICSP umožňují mnohem rychlejší programování než RTSP. Techniky RTSP jsou popsány v této části. Protokoly ICSP a EICSP jsou definovány v dokumentech programových specifikací pro příslušná zařízení, které lze stáhnout z Microchip webweb (www.microchip.com).

Registry
Programovací operace jsou řízeny prostřednictvím šesti registrů. Registry NVMCON a NVMKEY se používají k povolení a výběru všech operací. Zbývající čtyři registry definují ukazatele dat a adres.

Poznámka: Ne všechna zařízení implementují programování vyrovnávací paměti dat RAM. Další informace naleznete v technickém listu konkrétního zařízení.

KONTROLNÍ REJSTŘÍKY
Registr NVMCON (registr 4-1) řídí všechny operace programování Flash. Bity NVMOP[3:0] (NVMCOM[3:0]) vybírají konkrétní operaci zápisu nebo mazání, která se má provést. Bit WR (NVMCOM[15]) spouští příslušnou operaci; zůstane nastaven, dokud nebude operace dokončena, a poté je hardwarově vymazána. Bit WREN (NVMCOM[14]) povoluje nebo zakazuje operace zápisu a mazání. Bit WR nelze nastavit tak, aby spouštěl operace, když je WREN prázdné.
Registr NVMKEY (registr 4-2) je registr pouze pro zápis, který se používá k zabránění náhodným zápisům NVMCON, které mohou poškodit paměť Flash. Po odemknutí jsou povoleny zápisy do NVMCON po dobu jednoho instrukčního cyklu, ve kterém lze nastavit bit WR tak, aby vyvolal vymazání nebo programovou rutinu. Vzhledem k požadavkům na časování je vyžadováno zakázání přerušení.
Chcete-li spustit sekvenci mazání nebo programování, použijte následující kroky:

  1. Zakázat přerušení.
  2. Zapište 0x55 do NVMKEY.
  3. Napište 0xAA do NVMKEY.
  4. Spusťte cyklus zápisu programování nastavením bitu WR (NVMCON[15]).
  5. Proveďte dvě instrukce NOP.
  6. Obnovit přerušení.
    Examp4-1 ukazuje, jak se provádí odemykací sekvence.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (10)

Zakázání přerušení
Zakázání přerušení je vyžadováno pro všechny operace Flash, aby byl zajištěn úspěšný výsledek. Pokud během odemykací sekvence NVMKEY dojde k přerušení, může to zablokovat zápis do bitu WR. Odemykací sekvence NVMKEY musí být provedena bez přerušení, jak je uvedeno v části 3.2 „Režimy dvou oddílů“. Přerušení lze zakázat jedním ze dvou způsobů, deaktivací globálního povolení přerušení (bit GIE) nebo pomocí instrukce DISI. Instrukce DISI deaktivuje pouze přerušení s prioritou 6 nebo nižší, proto se nedoporučuje a měla by být použita metoda Global Interrupt Enable.

Zápis CPU do GIE trvá dva instrukční cykly, než ovlivní tok kódu. Poté jsou potřeba dvě instrukce NOP nebo mohou být nahrazeny jinými užitečnými pracovními instrukcemi, jako je načítání NMVKEY; to platí jak pro nastavené, tak pro jasné operace. Při opětovném povolování přerušení je třeba dbát na to, aby rutina cílená na NVM nepovolovala přerušení, když je předchozí volaná funkce zakázala z jiných důvodů. K vyřešení tohoto problému v Assembly lze použít stack push a pop k udržení stavu GIE bitu. V C lze proměnnou v RAM použít k uložení INTCON2 před vymazáním GIE.
K deaktivaci přerušení je třeba použít následující sekvenci:

  1. Zatlačte INTCON2 na zásobník.
  2. Vymažte bit GIE.
  3. Dvě NOP nebo zápisy do NVMKEY.
  4. Spusťte programovací cyklus nastavením bitu WR (NVMCON[15]).
  5. Obnovte stav GIE pomocí POP INTCON2.
    Example 4-1 poskytuje syntaxi v Assembly.

REGISTRACE ADRES
Registry NVMADRL a NVMADRH definují ukazatel počáteční adresy pro operace zápisu. Oba typy zápisů do paměti programu (založené na latch a vyrovnávací paměti RAM) používají tyto registry k nastavení cílové adresy. Registry NVMSRCADRL a NVMSRCADRL definují počáteční adresu v datové paměti RAM zdrojových dat při použití programování s vyrovnávací pamětí RAM. Registr NVMSRCADRH se používá na zařízeních s rozšířeným datovým prostorem (EDS) k ukazování na adresy v paměti rozšířeného datového prostoru.

Registr 4-1: NVMCON: Řídicí registr programování Flash

R/S-0(1) R/C-0 R/C-0 R/W-0 R/C-0 R-0 R/W-0 R/C-0
WR STŘÍZLÍK WRERR NVMPIDL(5) SFTSWP P2ACTIV RPDF(2) URERR(2)
bit 15 bit 8
U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
NVMOP[3:0]
bit 7       bit 0
Legenda: S = Pouze nastavitelný bit C = bit pouze smazatelný
R = Čitelný bit W = zapisovatelný bit U = neimplementovaný bit, čte se jako '0'
-n = Hodnota při POR '1' = Bit je nastaven '0' = Bit je vymazán x = Bit je neznámý

MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (11)

Poznámka

  1. Tento bit je také resetován při resetu Brown-out (BOR).
  2. Operace s řádky vyrovnávací paměti RAM nejsou dostupné na všech zařízeních; v těchto případech jsou tyto bity neimplementované a čtou se jako '0'.
  3. Výběrem těchto možností nastavíte bit WRERR a vymažete bit WR.
  4. Operace programu se dvěma slovy vyžadují dvě sousední slova instrukce (každé 24 bitů), zarovnaná na hranici slova se čtyřmi instrukcemi.
  5. Implementováno pouze ve vybraných zařízeních; podrobnosti naleznete v technickém listu konkrétního zařízení.

MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (12)

Poznámka

  1. Tento bit je také resetován při resetu Brown-out (BOR).
  2. Operace s řádky vyrovnávací paměti RAM nejsou dostupné na všech zařízeních; v těchto případech jsou tyto bity neimplementované a čtou se jako '0'.
  3. Výběrem těchto možností nastavíte bit WRERR a vymažete bit WR.
  4. Operace programu se dvěma slovy vyžadují dvě sousední slova instrukce (každé 24 bitů), zarovnaná na hranici slova se čtyřmi instrukcemi.
  5. Implementováno pouze ve vybraných zařízeních; podrobnosti naleznete v technickém listu konkrétního zařízení.

Registr 4-2: NVMKEY: Registr trvalého paměťového klíče

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
bit 15             bit 8
W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0
NVMKEY[7:0]
bit 7 bit 0
Legenda:  
R = Čitelný bit W = zapisovatelný bit U = neimplementovaný bit, čte se jako '0'
-n = Hodnota při POR '1' = Bit je nastaven '0' = Bit je vymazán x = Bit je neznámý

 

Návod k obsluze stolu
Tabulkové instrukce poskytují jednu metodu přenosu dat mezi programovou pamětí a datovou pamětí zařízení PIC24 a dsPIC33. V této části je uveden souhrn tabulkových instrukcí použitých při programování paměti programu Flash.
Existují čtyři základní pokyny k tabulce:

  • TBLRDL: Nízké čtení tabulky
  • TBLRDH: Table Read High
  • TBLWTL: Nízký zápis do tabulky
  • TBLWTH: Table Write High

Instrukce TBLRDL a TBLWTL se používají ke čtení a zápisu do bitů[15:0] prostoru paměti programu. TBLRDL a TBLWTL mohou přistupovat k paměti programu v režimu Word nebo Byte. Instrukce TBLRDH a TBLWTH se používají ke čtení nebo zápisu do bitů[23:16] prostoru paměti programu. TBLRDH a TBLWTH mohou přistupovat k paměti programu v režimu Word nebo Byte. Protože programová paměť je široká pouze 24 bitů, instrukce TBLRDH a TBLWTH mají schopnost adresovat horní byte programové paměti, která neexistuje. Tento bajt se nazývá „fantomový bajt“. Jakékoli čtení fantomového bytu vrátí 00h; zápis do fantomového bytu nemá žádný účinek.

GENEROVÁNÍ ADRES PRO OPERACE STOLU
24bitovou programovou paměť lze považovat za dva 16bitové prostory vedle sebe, přičemž každý prostor sdílí stejný rozsah adres. Instrukce TBLRDL a TBLWTL proto přistupují do „nízkého“ paměťového prostoru programu (PM[15:0]). Instrukce TBLRDH a TBLWTH přistupují do „vysokého“ paměťového prostoru programu (PM[31:16]). Jakékoli čtení nebo zápis do PM[31:24] bude mít přístup k fantomovému (neimplementovanému) bytu. Když se jakákoli z tabulkových instrukcí použije v režimu Byte, použije se jako bit pro výběr bytu LSb adresy tabulky. LSb určuje, ke kterému bajtu ve vysoké nebo nízké paměti programu se přistupuje.
Obrázek 4-1 ukazuje, jak je adresována paměť programu pomocí tabulkových instrukcí. 24bitová adresa programové paměti je vytvořena pomocí bitů TBLPAG[7:0] a efektivní adresy (EA) z registru W, specifikovaného v tabulkové instrukci (pro referenci je zobrazen 24bitový programový čítač). Horních 23 bitů EA se používá k výběru umístění paměti programu. Pro instrukce tabulky bajtového režimu se LSb registru W EA používá k výběru, který bajt 16bitového programového paměťového slova je adresován. „1“ vybírá bity[15:8], „0“ vybírá bity[7:0]. LSb registru W EA je u tabulkové instrukce v režimu Word ignorována. Kromě adresy programové paměti tabulkové instrukce také specifikují W registr (nebo W ukazatel na paměťové místo), který je zdrojem dat programové paměti, která mají být zapsána, nebo cílem pro čtení programové paměti. Pro operaci zápisu do tabulky v režimu Byte jsou bity[15:8] zdrojového pracovního registru ignorovány.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (13)

NÍZKÝ PŘÍSTUP K SLOVŮM
Instrukce TBLRDL a TBLWTL se používají pro přístup k nižším 16 bitům dat programové paměti. LSb adresy registru W je ignorována pro celoslovové přístupy k tabulce. U přístupů na celý bajt určuje LSb adresy registru W, který bajt se přečte. Obrázek 4-2 znázorňuje datové oblasti programové paměti, ke kterým přistupují instrukce TBLRDL a TBLWTL.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (14)

VYSOKÝ PŘÍSTUP K SLOVU
Instrukce TBLRDH a TBLWTH se používají pro přístup k horním osmi bitům dat programové paměti. Tyto instrukce také podporují režimy Word nebo Byte Access pro ortogonalitu, ale vysoký bajt dat paměti programu vždy vrátí '0', jak je znázorněno na obrázku 4-3.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (15)

ULOŽENÍ DAT V PAMĚTI PROGRAMU
Předpokládá se, že pro většinu aplikací nebude pro data používán vysoký bajt (PM[23:16]), takže programová paměť bude pro ukládání dat vypadat jako 16 bitů široká. Doporučuje se, aby byl horní bajt dat programu naprogramován buď jako NOP (00h nebo FFh), nebo jako neplatná hodnota operačního kódu (3Fh), aby bylo zařízení chráněno před náhodným spuštěním uložených dat. Instrukce TBLRDH a TBLWTH jsou primárně poskytovány pro účely programu/ověření pole a pro ty aplikace, které vyžadují ukládání komprimovaných dat.

CHOVÁNÍ BITŮ PAMĚTI PROGRAMU
Bity v paměti programu Flash lze naprogramovat pouze od „1“ do „0“ a následně je lze vymazat na „1“. Pokus o nastavení bitu pomocí programovací sekvence nebude mít žádný účinek.

POUŽITÍ TABULKY PŘEČTĚTE SI POKYNY
Čtení tabulky vyžaduje dva kroky. Nejprve se pomocí registru TBLPAG a jednoho z registrů W nastaví ukazatel adresy. Potom může být načten obsah programové paměti v místě adresy.
Kód examples v Přample 4-2 a Přample 4-3 demonstruje, jak číst slovo z paměti programu pomocí tabulkových instrukcí v režimu Word.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (16)

Poznámka: Direktivy tblpage() a tbloffset() poskytuje assembler Microchip pro zařízení dsPIC33 a PIC24. Tyto direktivy vybírají příslušné hodnoty registru TBLPAG a W pro instrukci tabulky z hodnoty adresy paměti programu. Další informace naleznete v „MPLAB® Assembler, Linker and Utilities for PIC24 MCUs and dsPIC® DSC User's Guide“ (DS51317).

ZÁPADKY PŘIDRŽOVACÍ ZÁPIS NA TABULKU
Instrukce Table Write nezapisují přímo do pole programu Flash. Místo toho instrukce způsobí, že naprogramovaná data se načtou nejprve do přídržných západek. Tyto západky jsou mapovány do paměti v prostoru konfigurační paměti, obvykle začínající na FA0000h, a lze k nim přistupovat pouze pomocí instrukcí Table Write. Když byly načteny všechny přídržné západky, spustí se skutečná operace programování paměti provedením speciální sekvence instrukcí.
Různá zařízení implementují různé počty přídržných západek na základě specifického návrhu programového pole (tj. velikosti řádkového programování a algoritmu řádkového programování). Další podrobnosti naleznete v technickém listu konkrétního zařízení a/nebo specifikaci programování.

Provedení dvouslovného zápisu
Zápisy slov se provádějí pro dvě slova najednou pomocí dvojice instrukcí TBLWTH a TBLWTL. Sekvence kódu v obou příkladechample 4-4 nebo Přample 4-5 (ekvivalent C) lze použít k zápisu dvou blokovacích míst programové paměti, která mají být naprogramována do Flash pomocí režimu Word Write.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (17)

Samoprogramování za běhu (RTSP)
RTSP umožňuje uživatelskému kódu upravovat obsah paměti programu Flash. RTSP se provádí pomocí instrukcí TBLRD (čtení tabulky) a TBLWT (zápis do tabulky) a registrů NVM Control. Zařízení PIC24 a dsPIC33 podporují následující operace programování Flash:

  • Stránka Flash se vymaže
  • Řádkové programování (buď založené na latch nebo založené na RAM)
  • Programování slov

Programování Flash přes RTSP se provádí buď pomocí bloků paměti nazývaných řádky, nebo pomocí dvou slov Flash paměti. Před programováním je nutné vymazat paměťové místo. Operace vymazání se provádějí na blocích paměti, nazývaných stránky, které se skládají z více řádků. Velikost řádku se bude lišit podle zařízení; podrobnosti naleznete v datovém listu zařízení. Pro zařízení dsPIC33 a PIC24 je stránka obvykle definována jako osm (8) řádků. Tento dokument používá napřampsoubory s 64 instrukcemi na řádek (512 instrukcí na stránku).

PROGRAMOVÁNÍ ŘÁDKŮ POMOCÍ ZÁPISŮ PŘIDRŽOVACÍCH ZÁPADKŮ
Jak je uvedeno v části 4.2.7 „Zámky pro přidržování zápisu do tabulky“, zařízení, která implementují programování řádků založené na záchytu, mají přídržné zámky, které obsahují programovací data. Před vlastní programovací operací musí být data zápisu načtena do latch pomocí instrukcí TBLWT v sekvenčním pořadí. Při provádění zápisu řádku musí být slova instrukce načtena do západek jako celý řádek.
Základní sekvencí pro programování RTSP je nastavení ukazatele tabulky a následné provedení série instrukcí TBLWT pro načtení vyrovnávacích pamětí. Programování se provádí nastavením řídicích bitů v registru NVMCON. Napřample, na zařízení se 64 řadami instrukcí by programovací cyklus sestával z 64 instrukcí TBLWTL a 64 instrukcí TBLWTH pro načtení západek zápisu, po nichž by následovala programovací sekvence odblokování NVMCON a nastavení bitu WR. Přample 4-6 ukazuje example procesu.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (18)

PROGRAMOVÁNÍ ŘÁDKŮ POMOCÍ PAMĚTI RAM
Vybraná zařízení dsPIC33 a PIC24 umožňují programování řádků provádět přímo z vyrovnávací paměti v datové paměti RAM, místo aby procházelo přidržovacími západkami pro přenos dat pomocí instrukcí TBLWT. Umístění vyrovnávací paměti RAM je určeno registrem (registry) NVMSRCADR, do kterých je načtena adresa datové paměti RAM obsahující první slovo programových dat, která mají být zapsána.
Před provedením operace programu musí být do vyrovnávací paměti RAM načten řádek dat, která mají být naprogramována. RAM lze načíst buď v komprimovaném (sbaleném) nebo nekomprimovaném formátu. Komprimované úložiště používá jedno datové slovo k uložení nejvýznamnějších bajtů (MSB) dvou sousedních programových datových slov. Nekomprimovaný formát používá dvě datová slova pro každé programové datové slovo, přičemž horní bajt každého druhého slova je 00h. Komprimovaný formát využívá přibližně 3/4 prostoru v datové paměti RAM ve srovnání s nekomprimovaným formátem. Nekomprimovaný formát na druhé straně napodobuje strukturu 24bitového programového datového slova, doplněného o horní fantomový bajt. Formát dat se volí bitem RPDF (NVMCON[9]). Tyto dva formáty jsou znázorněny na obrázku 4-4.

Po načtení vyrovnávací paměti RAM se načtou ukazatele adresy Flash, NVMADRL a NVMADRH s 24bitovou počáteční adresou řádku Flash, který se má zapsat. Stejně jako při programování západek zápisu je proces zahájen zapsáním odemykací sekvence NVM, po níž následuje nastavení bitu WR. Po inicializaci zařízení automaticky načte správné západky a zvýší adresy NVM, dokud nebudou naprogramovány všechny bajty. Přample 4-7 ukazuje example procesu. Pokud je NVMSRCADR nastaveno na takovou hodnotu, že dojde k chybovému stavu podtečení dat, bude bit URERR (NVMCON[8]) nastaven tak, aby indikoval stav. Zařízení, která implementují programování řádků vyrovnávací paměti RAM, také implementují jednu nebo dvě latche zápisu. Ty se načítají pomocí instrukcí TBLWT a používají se k provádění operací programování slov.MICROCHIP-PIC24-Dual-Partition-Flash-Program-Memory- (19)

Obecné algoritmy programování Flash
Operace programování Flash jsou řízeny pomocí následujících řídicích registrů Nonvolatile Memory (NVM):

  • NVMCON
  • NVMKEY
  • NVMADRL/H
  • NVMSRCADRL/H (některá zařízení)

Kompletní programovací sekvence je nezbytná pro naprogramování nebo vymazání interní paměti Flash v režimu RTSP. Nastavení bitu WR (NVMCON[15]) spustí operaci a bit WR se po dokončení operace automaticky vymaže.
Při provádění operací programování Flash na aktivním oddílu (zejména v režimu standardního oddílu) se CPU zastaví, dokud nebude operace dokončena. Při programování neaktivního oddílu může CPU pokračovat v činnosti bez zastavení. Následující části popisují programovací algoritmy, které vykazují zastavení CPU a žádné zastavení.

VYMAZÁNÍ PAMĚTI PROGRAMU (AKTIVNÍ ODDÍL)

  1. Nastavte bity NVMOPx (NVMCOM[3:0]) na '0011' pro konfiguraci pro mazání stránky a nastavte bit WREN (NVMCOM[14]).
  2. Zapište počáteční adresu bloku, který se má vymazat, do registrů NVMADRL/H.
  3. Zakázat přerušení.
  4. Zapište 55h do NVMKEY.
  5. Napište AAh do NVMKEY.
  6. Nastavte bit WR (NVMCOM[15]) pro spuštění cyklu mazání.
  7. Proveďte dvě instrukce NOP.
  8. Obnovit přerušení (volitelné).
    Po dokončení mazání se bit WR automaticky vymaže

PROGRAMOVÁNÍ ŘÁDKŮ (AKTIVNÍ ODDĚLENÍ, REŽIM STANDARDNÍHO ODDĚLENÍ)
Uživatel může naprogramovat jeden řádek programu Flash paměti najednou. K tomu je nutné vymazat stránku obsahující požadovaný řádek. Obecný proces programování řádků do aktivního oddílu je:

  1. Přečtěte si osm řádků programové paměti (512 instrukcí) a uložte do datové paměti RAM.
  2. Aktualizujte data programu v paměti RAM požadovanými novými daty.
  3. Vymazat blok:
    • a) Nastavte bity NVMOPx (NVMCOM[3:0]) na '0011' pro konfiguraci pro mazání stránky a nastavte bit WREN (NVMCOM[14]).
    • b) Zapište počáteční adresu bloku, který se má vymazat, do registrů NVMADRL/H.
    • c) Zakázat přerušení.
    • d) Zapište 55h do NVMKEY.
    • e) Napište AAh do NVMKEY.
    • f) Nastavte bit WR (NVMCOM[15]). Spustí se cyklus mazání a CPU se po dobu cyklu mazání zastaví. Po dokončení mazání se bit WR automaticky vymaže.
    • g) Obnovit přerušení (volitelné).
  4. Zapište prvních 64 instrukcí z datové paměti RAM do vyrovnávacích pamětí programu (viz část 4.2.7 „Zámky přidržující zápis do tabulky“) nebo zapište registr NVMSRCADR s počáteční adresou dat uložených v paměti RAM.
  5. Zapište programový blok do paměti Flash:
    • a) Nastavte bity NVMOPx na '0010' pro konfiguraci pro programování řádků a nastavte bit WREN.
    • b) Zakázat přerušení.
    • c) Zapište 55h do NVMKEY.
    • d) Napište AAh do NVMKEY.
    • e) Nastavte bit WR. Začne programovací cyklus a CPU se zastaví po dobu trvání cyklu zápisu. Po dokončení zápisu do paměti Flash se bit WR automaticky vymaže.
    • f) Obnovit přerušení (volitelné).
  6. Opakujte kroky 4 a 5 s použitím dalších dostupných 64 instrukcí z bloku v datové paměti RAM, zvyšováním adres v NVMADRL/H, dokud nebude všech 512 instrukcí zapsáno zpět do paměti Flash.

Poznámka: Ne všechna zařízení budou vykazovat zastavení CPU během cyklu zápisu nebo mazání. Abyste předešli zablokování, doporučuje se vyhnout se čtení nebo zápisu aplikací do řádku, který je mazán nebo zapisován.

Pro ochranu proti náhodným operacím je před jakoukoli operací mazání nebo programu vyžadována sekvence zahájení zápisu pro NVMKEY. Po provedení programovacího příkazu musí uživatel počkat na dobu programování, dokud nebude programování dokončeno. Dvě instrukce následující po začátku programovací sekvence by měly být NOP.

Poznámka

  1. Počet řad, bloků a přídržných západek se může lišit zařízení od zařízení; skutečná čísla a úplný referenční kód pro programování paměti Flash naleznete v technickém listu konkrétního zařízení.
  2. U zařízení s jednou přídržnou západkou musí být paměť programu Flash zapsána pomocí programování slov.

PROGRAMOVÁNÍ STRÁNKY V NEAKTIVNÍM ODDÍLU (REŽIMY DUÁLNÍHO ODDĚLENÍ)
Programování v režimech Dual Partition vyžaduje zvláštní úvahy. Protože CPU je schopno pokračovat ve vykonávání instrukcí během programování neaktivního oddílu, nedojde k zablokování CPU.
Algoritmus pro vymazání a přeprogramování stránky s daty v jednom z režimů Dual Partition je následující:

  1. Vymazat blok:
    • a) Chcete-li nakonfigurovat mazání stránky, nastavte bity NVMOPx (NVMCOM[3:0]) na „0011“.
    • b) Nastavte bit WREN (NVMCOM[14]).
    • c) Zapište počáteční adresu bloku, který má být vymazán, do registrů NVMADR
      adresu stránky.
    • d) Zakázat přerušení.
    • e) Zapište 55h do NVMKEY.
    • f) Napište AAh do NVMKEY.
    • g) Nastavte bit WR (NVMCOM[15]). Spustí se cyklus mazání a CPU zůstane v chodu.
    • h) Po dokončení mazání se bit WR automaticky vymaže a objeví se příznak úplného přerušení zápisu NVM (NVMIF).
    • i) Obnovit přerušení (volitelné).
  2. Připravte data k programování vyplněním vyrovnávací paměti RAM; střídavě načtěte západky zápisu instrukcemi TBLWT s daty pro první řádek paměti (64 instrukcí).
  3. Naprogramujte blok:
    • a) Nastavte bity NVMOPx (NVMCON[3:0]) na '0010' pro konfiguraci pro programování řádků.
    • b) Nastavte bit WREN (NVMCON[14]).
    • c) Zapište počáteční adresu bloku, který se má zapsat, do registrů NVMADR s počáteční adresou řádku.
    • d) Zakázat přerušení.
    • e) Zapište 55h do NVMKEY.
    • f) Napište AAh do NVMKEY.
    • g) Nastavte bit WR (NVMCOM[15]). Začne cyklus zápisu a CPU zůstane v chodu.
    • h) Po dokončení mazání se bit WR automaticky vymaže a objeví se příznak úplného přerušení zápisu NVM (NVMIF).
    • i) Obnovit přerušení (volitelné).
  4. Opakováním kroků 2 a 3 naprogramujte všechny zbývající řádky dat na vymazané stránce.

PROGRAMOVÁNÍ CELÉHO NEAKTIVNÍHO ODDĚLENÍ (REŽIMY DUÁLNÍHO ODDĚLENÍ)
Chcete-li zcela aktualizovat kód v neaktivním oddílu:

  1. Vymazat neaktivní oddíl:
    • a) Chcete-li nakonfigurovat vymazání neaktivního oddílu, nastavte bity NVMOPx (NVMCOM[3:0]) na „0100“.
    • b) Nastavte bit WREN (NVMCOM[14]).
    • c) Zakázat přerušení.
    • d) Zapište 55h do NVMKEY.
    • e) Napište AAh do NVMKEY.
    • f) Nastavte bit WR (NVMCOM[15]). Spustí se cyklus mazání a CPU zůstane během cyklu v chodu.
    • g) Po dokončení mazání se bit WR automaticky vymaže a objeví se příznak úplného přerušení zápisu NVM (NVMIF).
    • h) Obnovit přerušení (volitelné).
  2. Zapište každou stránku neaktivního oddílu pomocí zápisu stránky, jak je popsáno v části 4.4.3 „Programování stránky v neaktivním oddílu (režimy dvou oddílů)“.
  3. Ověřte zapsané údaje. Jednou navrhovanou metodou je provést CRC na datech, která mají být zapsána, a ověřit hodnotu CRC na celé logické části, aby se zajistilo, že data byla zapsána správně.

AKTUALIZACE AKTIVNÍHO ODDÍLU POMOCÍ BOOTLOADERU

  1. Vymažte a naprogramujte celý neaktivní oddíl, jak je popsáno v části 4.4.4 „Programování celého neaktivního oddílu (režimy duálního oddílu)“.
  2. Přečtěte si registr konfigurace FBTSEQ aktivního oddílu.
  3. Snižte hodnotu o jednu a zapište do FBTSEQ neaktivního oddílu.
  4. Vynutit výměnu oddílu:
    • a) Pokud se zablokování procesoru netýká, proveďte Reset zařízení. Protože má neaktivní oddíl nižší pořadové číslo spouštění, po resetu se stane aktivním oddílem.
    • b) Pokud není zablokování CPU přijatelné, proveďte instrukci BOOTSWP.

VIDITELNOST PROGRAMOVÉHO PROSTORU A ROZŠÍŘENÝ DATOVÝ PROSTOR (PSV A EDS)

Pro všechna zařízení dsPIC33 a PIC24 lze pro přístup k datům v prostoru paměti programu použít tabulkové instrukce (viz část 4.2 „Pokyny k obsluze tabulky“). To je užitečné, když je třeba data pouze číst nebo zapisovat, jeden bajt nebo slovo najednou. Je také možné namapovat 16K word stránek programového paměťového prostoru do horních 32 kB datového adresového prostoru. To umožňuje efektivní rozšíření datového prostoru nad jeho běžné limity adresování 64 kB a také transparentní přístup bez použití tabulkových instrukcí. Všechna zařízení dsPIC33 a PIC24 jsou schopna namapovat libovolnou stránku v implementovaném programovém paměťovém prostoru do datového prostoru. Tato funkce je známá jako viditelnost programového prostoru (PSV). Některá zařízení rozšiřují PSV mapováním paměti určitých periferií na konkrétní rozsah stránek virtuální paměti programu. Tato funkce je užitečná zejména pro periferie, jako je řadič Advanced Graphics Controller, který má vysoké požadavky na datovou propustnost. Toto rozšíření PSV je známé jako Extended Data Space (EDS).
PSV a EDS jsou implementovány jako vlastnosti datové paměti. Jsou implementovány odlišně pro zařízení dsPIC33 a PIC24. Podrobný popis najdete v “DsPIC33/PIC24 Family Reference Manual”, “Data Memory”. (dsPIC33, DS70595) a/nebo „Datová paměť“ (PIC24, DS30009717).

PSV a instrukční stánky
Další informace o zablokování instrukcí pomocí PSV naleznete v „DsPIC33/PIC24 Family Reference Manual“, „dsPIC33E Enhanced CPU“ (DS70005158).

REGISTROVAT MAPU

Souhrn SFR souvisejících s programovou pamětí Dual Partition Flash je uveden v tabulce 6-1.

Tabulka 6-1: Registry speciálních funkcí spojené s pamětí programu Flash(1)

File Jméno Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Všechny resety(2)
TBLPAG Ukazatel adresy stránky tabulky 0000
NVMCON WR STŘÍZLÍK WRERR NVMPIDL SFTSWP P2ACTIV RPDF URERR NVMOP[3:0] 0000
NVMKEY NVMKEY[7:0] 0000
NVMSRCADRL Data RAM Programming Buffer Start Address 0000
NVMSRCADRH Adresa vyrovnávací paměti programování dat RAM (pouze operace EDS) 0000
NVMADRL Cílová adresa paměti programu Flash, dolní bajt (ADDR[15:0]) 0000
NVMADRH Cílová adresa paměti programu Flash, horní bajt (ADDR[23:16]) 0000

SOUVISEJÍCÍ POZNÁMKY K APLIKACI

V této části jsou uvedeny poznámky k aplikaci, které se vztahují k této části příručky. Tyto aplikační poznámky nemusí být napsány specificky pro rodiny produktů PIC24 nebo dsPIC33, ale koncepty jsou relevantní a lze je použít s úpravami a možnými omezeními. Aktuální poznámky k aplikaci týkající se programové paměti Dual Partition Flash jsou:

Poznámka: Navštivte prosím Microchip webweb (www.microchip.com) pro další aplikační poznámky a kód exampsoubory pro rodiny zařízení PIC24 a dsPIC33.

HISTORIE REVIZÍ

  • Revize A (březen 2014)
    Původní verze tohoto dokumentu.
  • Revize B (únor 2015)
    Změněn název a všechny výskyty fráze „Dual Boot Flash Program Memory“ na „Dual Partition Flash Program Memory“ nebo „Dual Partition Flash“.
  • Revize C (listopad 2021)
    Přidáno 4.1.1.1 „Zakázání přerušení“.
    Aktualizováno 4.1.1 „Řídicí registry“, 4.4.2 „Programování řádků (aktivní oddíl, režim standardního oddílu)“, 4.4.3 „Programování stránky v neaktivním oddílu (režimy duálního oddílu)“ a 4.4.4 „Programování celého Neaktivní oddíl (režimy duálního oddílu)“. Aktualizováno Přample 4-5, Přample 4-6 a Přample 4-7.

Všimněte si následujících podrobností o funkci ochrany kódu na produktech Microchip:

  • Produkty Microchip splňují specifikace obsažené v jejich konkrétním datovém listu Microchip.
  • Společnost Microchip věří, že její řada produktů je bezpečná, pokud se používají zamýšleným způsobem, v rámci provozních specifikací a za normálních podmínek.
  • Microchip si cení a agresivně chrání svá práva duševního vlastnictví. Pokusy o porušení funkcí ochrany kódu produktu Microchip jsou přísně zakázány a mohou porušovat zákon Digital Millennium Copyright Act.
  • Společnost Microchip ani žádný jiný výrobce polovodičů nemůže zaručit bezpečnost svého kódu. Ochrana kódem neznamená, že garantujeme, že produkt je „nerozbitný“. Ochrana kódu se neustále vyvíjí. Společnost Microchip se zavázala neustále zlepšovat funkce ochrany kódu našich produktů.

Tato publikace a zde uvedené informace mohou být použity pouze s produkty Microchip, včetně návrhu, testování a integrace produktů Microchip s vaší aplikací. Použití těchto informací jakýmkoli jiným způsobem porušuje tyto podmínky. Informace týkající se aplikací zařízení jsou poskytovány pouze pro vaše pohodlí a mohou být nahrazeny aktualizacemi. Je vaší odpovědností zajistit, aby vaše aplikace odpovídala vašim specifikacím. Obraťte se na místní obchodní zastoupení Microchip pro další podporu nebo získejte další podporu na https://www.microchip.com/en-us/support/design-help/client-supportservices.

TYTO INFORMACE POSKYTUJE SPOLEČNOST MICROCHIP „TAK JAK JSOU“. MICROCHIP NEPOSKYTUJE ŽÁDNÁ PROHLÁŠENÍ ANI ZÁRUKY JAKÉHOKOLI DRUHU, AŤ VÝSLOVNÉ NEBO PŘEDPOKLÁDANÉ, PÍSEMNÉ NEBO ÚSTNÍ, ZÁKONNÉ NEBO JINÉ, TÝKAJÍCÍ SE INFORMACÍ VČETNĚ, ALE NEOMEZENÉ NA JAKÉKOLI PŘEDPOKLÁDANÉ ZÁRUKY, ZA POSKYTNUTÍ PŘEDPOKLÁDANÝCH ZÁRUK, ZA POSKYTNUTÍ POSKYTNUTÍ POSKYTNUTÍ PORUŠENÍ PARTNERSTVÍ, REWAANTILAB JEHO STAV, KVALITA NEBO VÝKON. V ŽÁDNÉM PŘÍPADĚ NEBUDE MICROCHIP ODPOVĚDNÁ ZA JAKÉKOLI NEPŘÍMÉ, ZVLÁŠTNÍ, REKRESIVNÍ, NÁHODNÉ NEBO NÁSLEDNÉ ZTRÁTY, ŠKODY, NÁKLADY NEBO VÝDAJE JAKÉHOKOLI DRUHU JAKKOLI SOUVISEJÍCÍ S INFORMACÍ NEBO JEJICH POUŽITÍM, JAKKOLI BY BYLO UVEDENO, JAK BY BYLO ZPŮSOBeno, MOŽNOST NEBO ŠKODY JSOU PŘEDVÍDAJÍCÍ. CELKOVÁ ODPOVĚDNOST SPOLEČNOSTI MICROCHIP ZA VŠECHNY NÁROKY SOUVISEJÍCÍ S INFORMACEMI NEBO JEJICH POUŽITÍM NEPŘEKROČÍ V NEJVYŠŠÍM ROZSAHU POVOLENÉM ZÁKONEM, KTERÉ JSTE ZA INFORMACE ZAPLATILI PŘÍMO SPOLEČNOSTI MICROCHIP.

Použití zařízení Microchip v aplikacích na podporu života a/nebo v bezpečnostních aplikacích je zcela na riziko kupujícího a kupující souhlasí s tím, že bude Microchip bránit, odškodnit a chránit před všemi škodami, nároky, žalobami nebo výdaji vyplývajícími z takového použití. Žádné licence nejsou poskytovány, implicitně ani jinak, v rámci jakýchkoli práv duševního vlastnictví společnosti Microchip, pokud není uvedeno jinak.

AMBA, Arm, Arm7, Arm7TDMI, Arm9, Arm11, Artisan, big.LITTLE, Cordio, CoreLink, CoreSight, Cortex, DesignStart, DynamIQ, Jazelle, Keil, Mali, Mbed, Mbed Enabled, NEON, POP, RealView, SecurCore, Socrates, Thumb, TrustZone, ULINK, ULINK2, ULINK-ME, ULINK-PLUS, ULINKpro, μVision, Versatile jsou ochranné známky nebo registrované ochranné známky společnosti Arm Limited (nebo jejích dceřiných společností) v USA a/nebo jinde.

Informace týkající se systémů řízení kvality společnosti Microchip naleznete na adrese www.microchip.com/quality.

ochranné známky

Název a logo Microchip, logo Microchip, Adaptec, AnyRate, AVR, logo AVR, AVR Freaks, BesTime, BitCloud, CryptoMemory, CryptoRF, dsPIC, flexPWR, HELDO, IGLOO, JukeBlox, KeeLoq, Kleer, LANCheck, LinkMD, maXStylus maXTouch, MediaLB, megaAVR, Microsemi, logo Microsemi, MOST, logo MOST, MPLAB, OptoLyzer, PIC, picoPower, PICSTART, logo PIC32, PolarFire, Prochip Designer, QTouch, SAM-BA, SenGenuity, SpyNIC, SST, SST Logo, SuperFlash , Symmetricom, SyncServer, Tachyon, TimeSource, tinyAVR, UNI/O, Vectron a XMEGA jsou registrované ochranné známky společnosti Microchip Technology Incorporated v USA a dalších zemích. AgileSwitch, APT, ClockWorks, The Embedded Control Solutions Company, EtherSync, Flashtec, Hyper Speed ​​Control, HyperLight Load, IntelliMOS, Libero, motorBench, mTouch, Powermite 3, Precision Edge, ProASIC, ProASIC Plus, logo ProASIC Plus, Quiet-Wire, SmartFusion, SyncWorld, Temux, TimeCesium, TimeHub, TimePictra, TimeProvider, TrueTime, WinPath a ZL jsou registrované ochranné známky společnosti Microchip Technology Incorporated v USA.

Potlačení sousedících klíčů, AKS, Analog-for-the-Digital Age, Libovolný kondenzátor, AnyIn, AnyOut, Augmented Switching, BlueSky, BodyCom, CodeGuard, CryptoAuthentication, CryptoAutomotive, CryptoCompanion, CryptoController, ddsPICDEM, Average , ECAN, Espresso T1S, EtherGREEN, GridTime, IdealBridge, In-Circuit Serial Programming, ICSP, INICnet, Intelligent Paralleling, Inter-Chip Connectivity, JitterBlocker, Knob-on-Display, maxCrypto, max.View, memBrain, Mindi, MiWi, MPASM, MPF, MPLAB Certified logo, MPLIB, MPLINK, MultiTRAK, NetDetach, NVM Express, NVMe, Omniscient Code Generation, PICDEM, PICDEM.net, PICkit, PICtail, PowerSmart, PureSilicon, QQMatriICE , Ripple Blocker, RTAX, RTG4, SAM-ICE, Serial Quad I/O, simpleMAP, SimpliPHY, SmartBuffer, SmartHLS, SMART-IS, storClad, SQI, SuperSwitcher, SuperSwitcher II, Switchtec, SynchroPHY, Total Endurance, TSHARC, USBCheck, VariSense, VectorBlox, VeriPHY, ViewSpan, WiperLock, XpressConnect a ZENA jsou ochranné známky společnosti Microchip Technology Incorporated v USA a dalších zemích.
SQTP je servisní značka společnosti Microchip Technology Incorporated v USA
Logo Adaptec, Frequency on Demand, Silicon Storage Technology, Symmcom a Trusted Time jsou registrované ochranné známky společnosti Microchip Technology Inc. v jiných zemích.
GestIC je registrovaná ochranná známka společnosti Microchip Technology Germany II GmbH & Co. KG, dceřiné společnosti Microchip Technology Inc., v jiných zemích.
Všechny ostatní ochranné známky uvedené v tomto dokumentu jsou majetkem příslušných společností.
© 2014-2021, Microchip Technology Incorporated a její dceřiné společnosti.

Celosvětový prodej a servis

AMERIKY

ASIE/PACIFIK

  • Austrálie – Sydney
    tel: 61-2-9868-6733
  • Čína – Peking
    tel: 86-10-8569-7000
  • Čína – Čcheng-tu
    tel: 86-28-8665-5511
  • Čína – Chongqing
    tel: 86-23-8980-9588
  • Čína – Dongguan
    tel: 86-769-8702-9880
  • Čína – Guangzhou
    tel: 86-20-8755-8029
  • Čína – Chang-čou
    tel: 86-571-8792-8115
  • Čína – SAR Hong Kong
    tel: 852-2943-5100
  • Čína – Nanjing
    tel: 86-25-8473-2460
  • Čína – Čching-tao
    tel: 86-532-8502-7355
  • Čína – Šanghaj
    tel: 86-21-3326-8000
  • Čína – Shenyang
    tel: 86-24-2334-2829
  • Čína – Shenzhen
    tel: 86-755-8864-2200
  • Čína – Suzhou
    Tel: 86 186--6233-1526
  • Čína – Wuhan
    tel: 86-27-5980-5300
  • Čína – Xian
    tel: 86-29-8833-7252
  • Čína – Xiamen
    tel: 86-592-2388138
  • Čína – Zhuhai
    tel: 86-756-3210040
  • Indie – Bangalore
    tel: 91-80-3090-4444
  • Indie – Nové Dillí
    tel: 91-11-4160-8631
  • Indie - Pune
    tel: 91-20-4121-0141
  • Japonsko – Ósaka
    tel: 81-6-6152-7160
  • Japonsko – Tokio
    tel: 81-3-6880- 3770
  • Korea – Daegu
    tel: 82-53-744-4301
  • Korea – Soul
    tel: 82-2-554-7200
  • Malajsie - Kuala Lumpur
    tel: 60-3-7651-7906
  • Malajsie – Penang
    tel: 60-4-227-8870
  • Filipíny – Manila
    tel: 63-2-634-9065
  • Singapur
    tel: 65-6334-8870
  • Tchaj-wan – Hsin Chu
    tel: 886-3-577-8366
  • Tchaj-wan – Kaohsiung
    tel: 886-7-213-7830
  • Tchaj -wan - Tchaj -pej
    tel: 886-2-2508-8600
  • Thajsko – Bangkok
    tel: 66-2-694-1351
  • Vietnam – Ho Či Min
    tel: 84-28-5448-2100

EVROPA

  • Rakousko – Wels
    tel: 43-7242-2244-39
    Fax: 43-7242-2244-393
  • Dánsko – Kodaň
    tel: 45-4485-5910
    Fax: 45-4485-2829
  • Finsko – Espoo
    tel: 358-9-4520-820
  • Francie – Paříž
    tel: 33-1-69-53-63-20
    Fax: 33-1-69-30-90-79
  • Německo – Garching
    tel: 49-8931-9700
  • Německo – Haan
    tel: 49-2129-3766400
  • Německo – Heilbronn
    tel: 49-7131-72400
  • Německo – Karlsruhe
    tel: 49-721-625370
  • Německo – Mnichov
    tel: 49-89-627-144-0
    Fax: 49-89-627-144-44
  • Německo – Rosenheim
    tel: 49-8031-354-560
  • Itálie – Milán
    tel: 39-0331-742611
    Fax: 39-0331-466781
  • Itálie – Padova
    tel: 39-049-7625286
  • Nizozemsko – Drunen
    tel: 31-416-690399
    Fax: 31-416-690340
  • Norsko – Trondheim
    tel: 47-7288-4388
  • Polsko – Varšava
    tel: 48-22-3325737
  • Rumunsko – Bukurešť
    tel: 40-21-407-87-50
  • Španělsko - Madrid
    tel: 34-91-708-08-90
    Fax: 34-91-708-08-91
  • Švédsko – Göteborg
    tel: 46-31-704-60-40
  • Švédsko – Stockholm
    tel: 46-8-5090-4654
  • Velká Británie – Wokingham
    tel: 44-118-921-5800
    Fax: 44-118-921-5820

Poznámka: Tato část referenční příručky má sloužit jako doplněk k datovým listům zařízení. Tento dokument platí pro všechna zařízení dsPIC33/PIC24. Přečtěte si prosím poznámku na začátku kapitoly „Dual Partition Flash Program Memory“ v aktuálním datovém listu zařízení a zkontrolujte, zda tento dokument podporuje zařízení, které používáte. Listy s údaji o zařízení a sekce referenčních příruček rodiny jsou k dispozici ke stažení na webu Microchip Worldwide Webmísto na: http://www.microchip.com.

Dokumenty / zdroje

MICROCHIP PIC24 Dual Partition Flash programová paměť [pdfUživatelská příručka
PIC24 Dual Partition Flash programová paměť, PIC24, Dual Partition Flash programová paměť, Flash programová paměť, Programová paměť

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *