MICROCHIP PIC24 Flash programska memorija s dvije particije
Informacije o proizvodu
Svi PIC24 i dsPIC33 uređaji dolaze s internim programabilnim Flash nizom koji se može koristiti za izvršavanje korisničkog koda. Flash polje ima dug vijek trajanja i veliki broj ciklusa čitanja/pisanja, pružajući veliku fleksibilnost u razvoju i pohrani koda. Flash programska memorija s dvostrukom particijom ima ažuriranu verziju s novim značajkama.
- Adresni prostor: PIC24 i dsPIC33 uređaji adresiraju 4M x 24-bitni adresni prostor programske memorije.
- Prostor korisničkog programa: Mapa programske memorije jednako je podijeljena u prostor korisničkog programa (000000h do 7FFFFFh).
- Konfiguracijski memorijski prostor: Programska memorijska karta jednako je podijeljena na konfiguracijski (ili testni) memorijski prostor (800000h do FFFFFFh).
- Pristup programskom prostoru: Postoje tri metode za pristup programskom prostoru:
- 23-bitni programski brojač (PC).
- Upute za čitanje tablice (TBLRD) i pisanje tablice (TBLWT).
- Preslikavanjem bilo kojeg segmenta programske memorije od 32 Kbajta u adresni prostor podatkovne memorije.
UVOD
Svi PIC24 i dsPIC33 uređaji imaju interni programabilni Flash niz za izvršavanje korisničkog koda. Flash niz velike izdržljivosti pruža veliku fleksibilnost u razvoju i pohranjivanju koda, kombinirajući dug životni vijek s velikim brojem ciklusa čitanja/pisanja.
Ova verzija Flash programske memorije dodaje ove nove značajke:
- Dual Partition Flash rad, koji omogućuje podršku robusnih sustava pokretanja i pohranjivanje aplikacijskog koda sigurnog kvara, s opcijama dizajniranim za poboljšanje sigurnosti koda
- Operacija LiveUpdate, koja omogućuje izmjenu ili potpuno brisanje neaktivnog segmenta koda (CS) dok se glavna aplikacija nastavlja izvršavati
- Izravno programiranje u vremenu izvođenja Flash polja iz podatkovnog RAM prostora, uz izbornu kompresiju podatkovne RAM slike
Upotreba proizvoda
Da biste koristili Flash programsku memoriju s dvije particije, slijedite ove korake:
- Pogledajte napomenu na početku poglavlja Flash programska memorija s dvostrukom particijom u trenutnom podatkovnom listu uređaja kako biste provjerili podržava li ovaj dokument uređaj koji koristite.
- Preuzmite tablice s podacima o uređaju i odjeljke obiteljskog referentnog priručnika s Microchip Worldwide Webstranica na: http://www.microchip.com.
- Pristupite programskom prostoru pomoću bilo koje od tri gore opisane metode.
- Implementirana programska memorija može se dalje podijeliti na vektorsko područje, koje uključuje vektore resetiranja i prekida, i područje koda, koje također uključuje Flash konfiguracijske podatke. Pristup neimplementiranim područjima prostora korisničkog programa (tj. iznad gornje implementirane granice programske memorije) uzrokovat će zamku pogreške adrese.
ARHITEKTURA PROGRAMSKE MEMORIJE
PIC24 i dsPIC33 uređaji adresiraju 4M x 24-bitni adresni prostor programske memorije, kao što je prikazano na slici 2-1. Mapa programske memorije jednako je podijeljena na korisnički programski prostor (000000h do 7FFFFFh) i konfiguracijski (ili testni) memorijski prostor (800000h do FFFFFFh). Prostor korisničkog programa sadrži vektor resetiranja, tablice vektora prekida (IVT) i programsku memoriju. Postoje tri metode za pristup programskom prostoru.
- 23-bitni programski brojač (PC).
- Upute za čitanje tablice (TBLRD) i pisanje tablice (TBLWT).
- Preslikavanjem bilo kojeg segmenta programske memorije od 32 Kbajta u adresni prostor podatkovne memorije.
Implementirana programska memorija može se dalje podijeliti na vektorsko područje, koje uključuje vektore resetiranja i prekida, i područje koda, koje također uključuje Flash konfiguracijske podatke. Pristup neimplementiranim područjima prostora korisničkog programa (tj. iznad gornje implementirane granice programske memorije) uzrokovat će zamku pogreške adrese.
Područje vektora
Vektorsko područje počinje na početku programske memorije, na 000000h. Sadrži vektor glavnog resetiranja, vektore zamke hardvera i tablicu vektora prekida (IVT) za sve implementirane hardverske prekide.
Zbog arhitektonskih razlika i veličine IVT-a, područje vektora zauzima različitu količinu memorije u različitim obiteljima uređaja. Za PIC24 uređaje vektorsko područje se proteže do 0000FEh. Za dsPIC33 uređaje vektorsko područje se proteže do 0001FEh. Slika 2-2 prikazuje razliku između IVT-ova za različite uređaje. Bez obzira na obitelj uređaja, hardverski vektori prekida uvijek počinju od 000014h s vektorom prekida 0.
Vektorsko područje otprilike odgovara vektorskom segmentu (VS) u sigurnosnim implementacijama CodeGuard™. Ovisno o sigurnosnoj konfiguraciji, područje vektora može se tretirati kao dio segmenta pokretanja (BS) ili općeg segmenta (GS).
ALTERNATIVNA TABLICA PREKIDA VEKTORA
Svi uređaji dsPIC33 i PIC24 omogućuju implementaciju alternativnog IVT-a (AIVT), koji se može koristiti u aplikacijama koda visoke sigurnosti i za alternativno rukovanje iznimkama. Za razliku od ranijih uređaja u ovim obiteljima, AIVT nije trajno dodijeljen u programskoj memoriji na fiksnom rasponu adresa. Umjesto toga, AIVT je prisutan samo kada:
- Sigurnost CodeGuarda je konfigurirana za Boot segment veličine najmanje dvije stranice (postavlja FBSLIM konfiguracijski registar) i
- AIVT je omogućen programiranjem konfiguracijskog bita AIVTDIS na '0'.
Kada je AIVT omogućen, nalazi se u rasponu adresa koji počinje na početku posljednje stranice BS-a; svaki se vektor nalazi na fiksnom odmaku od granice stranice. Ukupna veličina i sadržaj (tj. redoslijed vektora) AIVT-a odražava one IVT-a.
Područje koda
Područje koda je područje memorije korisničkog programa koje sadrži korisnički kod aplikacije. Proteže se od kraja vektorskog područja do početka Flash konfiguracijskih riječi. Ako je Boot segment implementiran, on počinje na kraju vektorskog područja i proteže se unaprijed određenim rasponom. Dio područja koda koji nije u Boot segmentu odgovara generalnom segmentu (GS) u sigurnosnim sustavima CodeGuard. Osim Flash konfiguracijskih riječi na kraju implementirane memorije, kao što je opisano u nastavku, cijelo je područje dostupno za kod aplikacije.
FLASH KONFIGURACIJSKI PODACI
Područje na kraju implementirane memorije Flash programa (obično zadnji redak) rezervirano je za podatke o konfiguraciji Flasha. Prilikom resetiranja uređaja, ove informacije o konfiguraciji se kopiraju u odgovarajuće registre konfiguracije uređaja, koji nisu dostupni korisniku. Podaci o konfiguraciji uređaja mogu se programirati samo programiranjem željenih vrijednosti u Flash Configuration Words.
Broj, redoslijed i organizacija konfiguracijskih bitova varira između arhitektura uređaja i među obiteljima uređaja unutar iste arhitekture. Neki uređaji konfiguracijske bitove organiziraju kao 16-bitne konfiguracijske riječi, koje su općenito grupirane u funkcionalnom smislu. Drugi uređaji konfiguracijske bitove organiziraju u smislu konfiguracijskih bajtova koji se pojedinačno mogu adresirati. Slika 2-3 prikazuje područje organizirano za konfiguracijske riječi. Za informacije specifične za obitelj pogledajte tablicu s podacima o uređaju.
Za uređaje s mogućnošću dvostruke particije, FBTSEQ konfiguracijska riječ obično je pretposljednja konfiguracijska riječ, smještena na kraju implementirane programske memorije.
Organizacija pamćenja
Prostor programske memorije organiziran je kao blokovi koji se mogu adresirati riječima. Iako se tretira kao široka 24 bita, prikladnije je razmišljati o svakoj adresi programske memorije kao o nižoj i gornjoj riječi, pri čemu je gornji bajt gornje riječi neimplementiran. Donja riječ uvijek ima parnu adresu, dok gornja riječ ima neparnu adresu (slika 2-4). Adrese programske memorije i PC-a uvijek su poredane prema donjoj riječi (tj. Najmanje značajan bit (LSb) uvijek je '0'). Adrese se povećavaju ili smanjuju za dva tijekom izvođenja koda.
ADRESIRANJE PROGRAMSKE MEMORIJE
Za normalno izvršavanje koda, efektivnu adresu (EA) za izvršenje osigurava programski brojač (PC). Računalo je široko 23 bita, što omogućuje izravan pristup bilo kojoj lokaciji u prostoru korisničkog programa. PC[0] je fiksiran kao '0' kako bi se održala usklađenost programskih instrukcija. PC se povećava na sljedeću sekvencijalnu adresu povećanjem PC[1], čime se vrijednost PC-a povećava za dva.
Za operacije čitanja tablice i pisanja tablice, EA se stvara ulančavanjem 16-bitne adrese iz jednog od W registara s 8-bitnom adresom iz TBLPAG registra. Ovo dopušta pristup tabličnim operacijama i korisničkom i konfiguracijskom prostoru. O generiranju adresa za operacije u tablici detaljnije se govori u Odjeljku 4.2.1 “Generacija adresa za operacije u tablicama”.
Za operacije proširenog podatkovnog prostora (EDS) i vidljivosti programskog prostora (PSV), EA se stvara ulančavanjem donjih 15 bitova W registra s 8-bitnom adresom iz DSRPAG/DSWPAG (dsPIC33) ili PSVPAG (PIC24F) registri. Operacije proširenog podatkovnog prostora i vidljivosti programskog prostora razmatraju se u “Referentnom priručniku obitelji dsPIC33/PIC24”, “Memorija podataka” (dsPIC33, DS70595) i/ili “Memorija podataka” (PIC24, DS30009717).
PROGRAM FLASH PARTICIJE MEMORIJE
Za uređaje s mogućnošću Flasha s dvostrukom particijom, način programske memorije s dvostrukom particijom odabire se programiranjem bitova BTMODE[1:0] u konfiguracijskoj riječi FBOOT. Za razliku od ostalih konfiguracijskih riječi, FBOOT se nalazi u konfiguracijskom memorijskom prostoru, odvojeno od svih ostalih Flash konfiguracijskih registara. Točna adresa je specifična za arhitekturu (tj. PIC24 ili dsPIC33) i može se razlikovati između obitelji uređaja. Tablica 3-1 navodi moguće opcije Flash particije, o kojima se govori u sljedećim odjeljcima.
Kada se uređaj prvi put programira putem In-Circuit Serial Programming™ (ICSP™), programator bi trebao programirati FBOOT da ispravno postavi način rada Flash particije uređaja. Imajte na umu da nije moguće reprogramirati FBOOT tijekom izvođenja pomoću samoprogramiranja u vremenu izvođenja (RTSP). Programator mora konfigurirati FBOOT bitove u ICSP modu. To je zato što se lokacija Flash konfiguracijskih riječi mijenja iz načina standardne particije u način rada s dvostrukom particijom, što može uzrokovati neočekivani rad uređaja.
Tablica 3-1: Opcije Flash particije
BTMODE[1:0] | Opcija particije |
11 | Standardni način (jedna particija, zadano) |
10 | Način dvostruke particije |
01 | Zaštićeni način dvostruke particije |
00 | Privilegirani način dvostruke particije(1) |
Napomena 1: Nije implementirano na svim uređajima s dvostrukom particijom.
Standardni način (jedna particija).
Standardni način rada, koji se također naziva Single Partition ili Standard Partition mode, zadani je način rada za programsku memoriju. Odabire se kada su konfiguracijski bitovi BTMODEx-a '11' (njihova neprogramirana konfiguracija). Ovo je također način rada memorije s jednim programom dostupan za sve prethodne dsPIC33 i PIC24 uređaje. U standardnom načinu rada, cjelokupna memorija korisničkog programa mapirana je kao ravni, kontinuirani memorijski prostor, u rasponu od 000000h do gornje granice implementirane Flash memorije. Na primjerample, uređaj s 256 Kbajta Flash memorije ima raspon adresa programske memorije od 000000h do 02AFFFh, s adresama iznad ovog raspona koje nisu implementirane. Cijeli implementirani raspon memorije (isključujući rezervirane prostore za reset vektore, IVT i Flash Configuration Words) dostupan je za korisničku aplikaciju. U uređajima sa sigurnošću segmentiranog koda može se implementirati i Boot Segment.
Dvostruki načini particije
Kada su konfiguracijski bitovi BTMODEx programirani na vrijednost različitu od '11', uređaj radi u jednom od tri načina rada s dvostrukom particijom. U svim ovim načinima, implementirana Flash memorija je simetrično podijeljena u dvije regije: aktivnu particiju, koja počinje od 000000h, i neaktivnu particiju, koja počinje od 400000h. Za uređaj u prethodnom prampDalje, Flash memorija od 256 Kbajta bila bi implementirana kao dva područja od po 128 Kbajta, u rasponu od adresa 000000h do 0157FFh i 400000h do 4157FFh. Adrese između dva područja nisu implementirane (vidi sliku 3-1).
U načinima rada s dvostrukom particijom, dvije neovisne aplikacije mogu se programirati u uređaj, po jedna na svaku od dvije particije Flash memorije, poznate kao Particija 1 i Particija 2. Kada se uređaj inicijalizira, jedna od njih se dinamički mapira na Aktivnu particiju i pogubljen. Drugi je mapiran na neaktivnu particiju, gdje ostaje dostupan za programiranje memorijskih operacija. Dodjeljivanje particije aktivnoj ili neaktivnoj particiji određuje se automatski potpisom koda, poznatim kao Boot Sequence Number. Particije koda također se mogu mijenjati između aktivnih i neaktivnih particija, tijekom vremena izvođenja, pod kontrolom softvera.
Načini dvostruke particije dopuštaju aplikaciji aktivne particije pristup (ali ne i izvršavanje) programskih podataka u neaktivnoj particiji ili reprogramiranje neaktivne particije. Zapisivanje u Flash memoriju na neaktivnoj particiji ne zahtijeva zaustavljanje CPU-a dok se odvija Flash pisanje. To omogućuje funkciju LiveUpdate, gdje se izvršavanje kritičnih kontrolnih funkcija ili komunikacija osjetljivih na vrijeme može dogoditi istovremeno s ažuriranjem aplikacije. Određeni načini dvostruke particije postavljaju dodatna ograničenja na proces kako bi se osigurala sigurnost koda i robusnost rada. Kod se ne može izvršiti kada je mapiran na neaktivnu particiju. Particije se mogu zamijeniti, ali se može izvršiti samo kôd u aktivnoj particiji.
- NAČIN DVOSTRUKE PREGRADE
Najjednostavniji način dvostruke particije ne postavlja ograničenja na operacije od aktivne particije do koda u bilo kojoj particiji 1 ili 2. Sva ograničenja na interakcije između segmenata koda u različitim particijama određena su konfiguracijom poboljšanih sigurnosnih značajki. - ZAŠTIĆENI NAČIN DVOSTRUKE PREGRADE
Zaštićeni način dvostruke particije štiti zadani segment koda (particija 1) od bilo kakvih operacija Flash pisanja ili brisanja. Ovo omogućuje implementaciju "Tvornički zadanog" načina rada dopuštajući pohranjivanje slike sigurnosne kopije u particiju 1. Kada se koristi zaštićeni način dvostruke particije, particija 1 se ne može pisati ili brisati operacijama Flash memorije dok je u neaktivnu particiju. Ako je particija 1 također zaštićena od pisanja preko postavki konfiguracijskih bitova, ne može se obrisati ili pisati u bilo kojem trenutku. Nasuprot tome, particija 2 može se izbrisati ili napisati operacijama s bilo koje particije. Ovo omogućuje postavljanje sigurnosnog pokretačkog programa u particiju 1, zajedno sa sigurnosnom slikom sigurnosnog koda. Ova slika koda tada se može izvršiti prema zadanim postavkama i koristiti za ponovno pisanje particije 2 u slučaju da Flash ažuriranje ne uspije. - PRIVILEGIRANI NAČIN DVOSTRUKE PARTICIJE
Privilegirani način dvostruke particije implementira dodatnu sigurnosnu zaštitu u slučajevima kada aplikacija može imati segmente koda koje su napisali različiti autori i potrebna je viša razina sigurnosti za zaštitu intelektualnog vlasništva za jedan od tih segmenata. bivšiample bi bio sustav u kojem većinu koda piše programer hardverske aplikacije, ali uključuje vlasničku biblioteku treće strane. Ovaj način je dizajniran za rad s poboljšanim sigurnosnim značajkama u odabranim uređajima, koji mogu selektivno zaštititi različite segmente koda u prostoru programske memorije.
Privilegirani način dvostruke particije razlikuje se od standardnog načina dvostruke particije dodavanjem posebne zaštite bitovima BSLIMx konfiguracije obje particije. Ova zaštita učinkovito zaključava bitove i sprječava promjene veličine segmenta za pokretanje i generalnog segmenta. S odgovarajućim sigurnosnim postavkama, ovo osigurava da niti jedan segment neće biti izmijenjen ili neočekivano pročitan tijekom izvođenja.
Privilegirani način dvostruke particije nije implementiran na svim uređajima s mogućnošću dvostruke particije. Pojedinosti potražite u posebnom podatkovnom listu uređaja. - ODABIR PARTICIJE KODOVA
U načinima rada s dvostrukom particijom, postoje dvije metode za određivanje koja će particija biti mapirana na aktivnu particiju i izvršena: Boot Sequence Number i BOOTSWP instrukcija. Bit P2ACTIV (NVMCON[10]) može se koristiti za određivanje koja je fizička particija aktivna particija. Ako je P2ACTIV = 1, particija 2 je aktivna; ako je P2ACTIV = 0, particija 1 je aktivna. Boot Sequence Number je 12-bitna vrijednost koja se koristi za automatsko određivanje aktivne particije nakon resetiranja uređaja. Svaka particija treba imati jedinstveni redni broj pokretanja, koji je pohranjen u FBTSEQ Flash konfiguracijskoj riječi. Instrukcija BOOTSWP koristi se za zamjenu aktivnih i neaktivnih particija bez resetiranja uređaja.- Redni broj pokretanja
12-bitni redni broj pokretanja pohranjen je u FBTSEQ Flash konfiguracijskoj riječi, koja se uvijek nalazi na posljednjoj lokaciji memorije korisničkog programa, iznad ostalih Flash konfiguracijskih riječi (vidi sliku 3-2). Za razliku od drugih konfiguracijskih registara, koji koriste samo nižih 16 bita riječi programske memorije, FBTSEQ je puna 24 bita širok. Svaka bi particija trebala, pod normalnim radnim uvjetima, imati različitu vrijednost za FBTSEQ. Kada se ne koriste načini dvostruke particije, vrijednost FBTSEQ se zanemaruje.
Boot Sequence Number pohranjen je u dva dijela: stvarna vrijednost u polju bita, BSEQx
(FBTSEQ[11:0]), i jedinični komplement vrijednosti u polju bitova IBSEQx
(FBTSEQ[23:12]). Kada se Boot Sequence Number očita nakon resetiranja uređaja, vrijednosti BSEQx i IBSEQx se automatski uspoređuju. Ako se ove dvije vrijednosti međusobno ne nadopunjuju, redni broj pokretanja smatra se nevažećim. Vrijednost komplementa ne stvara hardver automatski, niti je hardver provjerava nakon programiranja. Aplikacija mora izračunati i programirati odgovarajuću vrijednost.
Prilikom resetiranja uređaja uspoređuju se sekvencijski brojevi pokretanja u obje particije. Particija s nižom vrijednošću BSEQx je ona koja je preslikana na Aktivnu particiju i njezin se kod izvršava. Ako je jedan od brojeva sekvence pokretanja nevažeći, uređaj će odabrati particiju s važećim sekvencijskim brojem pokretanja kao aktivnu particiju, bez obzira na to koji je sekvencijski broj niži. Ako su oba sekvencijska broja pokretanja nevažeća, particija 1 bit će odabrana prema zadanim postavkama kao aktivna particija.
Particije se mogu pripremiti za zamjenu tijekom vremena izvođenja reprogramiranjem sekvencijskog broja pokretanja neaktivne particije tako da ima nižu vrijednost. Kada se izvrši Reset, particija koja ima nižu vrijednost sada postaje aktivna. Ova metoda se koristi kada je neaktivna particija ažurirana i zatim se preslikava na aktivnu particiju nakon resetiranja.
Lokacija FBTSEQ-a omogućuje jednostavno isključivanje iz kontrolne sume ili druge provjere memorije Flash programa. Budući da će vrijednost FBTSEQ vjerojatno biti određena tijekom izvođenja (na temelju BSEQx druge particije), često se ne može uključiti u kontrolni zbroj, kao što je CRC.
Redoslijed na vrhu slike 3-3 prikazuje odnos između particija koda kada se promijeni redni broj pokretanja i izvrši resetiranje uređaja. - BOOTSWP upute
BOOTSWP instrukcija je proširenje skupa instrukcija PIC24 i dsPIC33. Podržava kod, LiveUpdate, dopuštajući izmjenu segmenata koda između aktivne i neaktivne particije bez potrebe za resetiranjem uređaja. Zamjena particije pomoću BOOTSWP instrukcije naziva se "soft swap". Za izvođenje BOOTSWP instrukcije, konfiguracijski bit, BTSWP (FIDC[25]), mora biti obrisan. Ako se pokuša BOOTSWP instrukcija s postavljenim BTSWP, rezultirat će NOP instrukcijom.
Nakon BOOTSWP instrukcije uvijek mora slijediti instrukcija od jedne riječi koja piše PC (npr. GOTO W, CALL W ili BRA W); cilj instrukcije mora biti na adresi unutar 32 Kbajta od trenutne adrese. Nakon izvršenja, aktivna i neaktivna particija mijenjaju mjesta, a PC vektorira na lokaciju specificiranu GOTO instrukcijom u novoj aktivnoj particiji.
Bilješka: Ako se BOOTSWP instrukcija izvršava unutar funkcije koja je stvorila novi okvir stoga pomoću LNK instrukcije, CALL se mora koristiti nakon BOOTSWP umjesto GOTO; u suprotnom, uređaj će generirati zamku pogreške hrpa.- Nakon izvršenja BOOTSWP instrukcije postavlja se SFTSWP bit (NVMCON[11]). Ovaj bit ukazuje firmveru da se instrukcija BOOTSWP dogodila ispravno i da je trenutno aktivna particija unesena putem BOOTSWP-a, a ne putem resetiranja uređaja. Statusni bit, P2ACTIV (NVMCON[10]), također se može pročitati kako bi se provjerilo koja je particija aktivna.
- Važno je napomenuti da, nakon izmjene particije, sve periferije i prekidi koji su prethodno bili omogućeni ostaju omogućeni. Osim toga, RAM i stog zadržavaju svoja stanja nakon swapa. Toplo se preporučuje da aplikacije koje koriste meke zamjene prijeđu na rutinu koja ponovno inicijalizira uređaj kako bi se osiguralo da aplikacija nastavi raditi prema očekivanjima.
- Za robusnost rada, potrebno je izvršiti standardnu sekvencu za otključavanje NVM-a prije izvršavanja instrukcije BOOTSWP (upisivanje 55h i AAh u NVMKEY registar u dva uzastopna koraka; pogledajte odjeljak 4.1 “Registri” za više informacija). Važno je također onemogućiti prekide prije izvršavanja sekvence otključavanja. Ako se sekvenca otključavanja ne izvrši, BOOTSWP će se izvršiti kao prisilni NOP. Instrukcija GOTO nakon BOOTSWP-a i dalje se izvršava, uzrokujući skok računala na to mjesto u trenutnoj radnoj particiji. Slično tome, BOOTSWP nema učinka u načinu rada standardne particije.
- Redoslijed na dnu slike 3-3 prikazuje odnos između particija kada se izvrši BOOTSWP instrukcija. Imajte na umu da je promjena BOOTSWP particije privremena; nakon naknadnog resetiranja uređaja, particija s nižim sekvencijskim brojem za pokretanje ponovno se dodjeljuje aktivnoj particiji.
- Redni broj pokretanja
PROGRAMIRANJE FLASH MEMORIJE
PIC24 i dsPIC33 uređaji mogu se programirati na bilo koji od tri načina:
- Samoprogramiranje tijekom izvođenja (RTSP)
- In-Circuit Serial Programming™ (ICSP™)
- Poboljšano serijsko programiranje unutar kruga (EICSP)
RTSP izvodi aplikacijski softver tijekom izvođenja, dok se ICSP i EICSP izvode iz vanjskog programatora pomoću serijske podatkovne veze s uređajem. ICSP i EICSP omogućuju puno brže vrijeme programiranja nego RTSP. RTSP tehnike opisane su u ovom odjeljku. ICSP i EICSP protokoli definirani su u dokumentima specifikacije programiranja za odgovarajuće uređaje, koji se mogu preuzeti s Microchipa webweb mjesto (www.microchip.com).
Registri
Operacijama programiranja upravlja se preko šest registara. Registri NVMCON i NVMKEY koriste se za omogućavanje i odabir svih operacija. Preostala četiri registra definiraju pokazivače podataka i adresa.
Bilješka: Ne implementiraju svi uređaji programiranje podatkovnog RAM međuspremnika. Više informacija potražite u posebnom podatkovnom listu uređaja.
KONTROLNI REGISTRI
NVMCON registar (registar 4-1) kontrolira sve operacije Flash programiranja. Bitovi NVMOP[3:0] (NVMCOM[3:0]) odabiru određenu operaciju pisanja ili brisanja koja će se izvesti. WR bit (NVMCOM[15]) pokreće odgovarajuću operaciju; ostaje postavljen dok se operacija ne završi, a zatim ga briše hardver. Bit WREN (NVMCOM[14]) omogućuje ili onemogućuje operacije pisanja i brisanja. Bit WR ne može se postaviti za pokretanje operacija kada je WREN prazan.
Registar NVMKEY (registar 4-2) je registar samo za pisanje koji se koristi za sprječavanje slučajnog pisanja NVMCON-a koji može oštetiti Flash memoriju. Nakon što se otključa, dopušteno je pisanje u NVMCON za jedan ciklus instrukcija, u kojem se bit WR može postaviti za pozivanje brisanja ili programske rutine. S obzirom na vremenske zahtjeve, potrebno je onemogućiti prekide.
Za pokretanje niza brisanja ili programiranja koriste se sljedeći koraci:
- Onemogući prekide.
- Napišite 0x55 u NVMKEY.
- Napišite 0xAA u NVMKEY.
- Pokrenite programski ciklus pisanja postavljanjem WR bita (NVMCON[15]).
- Izvršite dvije NOP instrukcije.
- Vrati prekide.
Example 4-1 pokazuje kako se izvodi niz otključavanja.
Onemogućavanje prekida
Onemogućavanje prekida potrebno je za sve Flash operacije kako bi se osigurao uspješan rezultat. Ako dođe do prekida tijekom niza otključavanja NVMKEY, može blokirati pisanje u WR bit. NVMKEY sekvenca za otključavanje mora se izvršiti bez prekida, kao što je objašnjeno u odjeljku 3.2 “Načini dvostruke particije”. Prekidi se mogu onemogućiti na jedan od dva načina, onemogućavanjem Global Interrupt Enable (GIE bit) ili korištenjem DISI instrukcije. Instrukcija DISI onemogućuje samo prekide prioriteta 6 ili nižeg, stoga se ne preporučuje i treba koristiti metodu Global Interrupt Enable.
CPU zapisuje u GIE potrebna su dva ciklusa instrukcija prije nego utječu na tijek koda. Nakon toga su potrebne dvije NOP instrukcije ili se mogu zamijeniti bilo kojom drugom korisnom radnom uputom, kao što je učitavanje NMVKEY; ovo je primjenjivo i na skupne i na čiste operacije. Treba biti oprezan pri ponovnom omogućavanju prekida tako da NVM ciljana rutina ne dopusti prekide kada ih je prethodno pozvana funkcija onemogućila iz drugih razloga. Kako bi se to riješilo u Assembly, stack push and pop se može koristiti za zadržavanje stanja GIE bita. U C-u, varijabla u RAM-u može se koristiti za pohranu INTCON2 prije brisanja GIE.
Za onemogućavanje prekida treba koristiti sljedeći redoslijed:
- Gurnite INTCON2 na stog.
- Obrišite GIE bit.
- Dva NOP-a ili piše na NVMKEY.
- Pokrenite ciklus programiranja postavljanjem WR bita (NVMCON[15]).
- Vratite GIE stanje POP-om od INTCON2.
Example 4-1 daje sintaksu u Assembly.
ADRESNI REGISTRI
Registri NVMADRL i NVMADRH definiraju pokazivač početne adrese za operacije pisanja. Obje vrste pisanja programske memorije (zasnovano na zasunu i RAM međuspremnik) koriste ove registre za postavljanje odredišne adrese. Registri NVMSRCADRL i NVMSRCADRH definiraju početnu adresu u podatkovnom RAM-u izvornih podataka kada se koristi programiranje u međuspremniku RAM-a. Registar NVMSRCADRH koristi se na uređajima s proširenim podatkovnim prostorom (EDS) za usmjeravanje na adrese u memoriji proširenog podatkovnog prostora.
Registar 4-1: NVMCON: Registar kontrole programiranja 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 | WREN | WRERR | NVMPIDL(5) | SFTSWP | P2ACTIV | RPDF(2) | URERR(2) |
malo 15 | malo 8 |
U-0 | U-0 | U-0 | U-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 |
— | — | — | — | NVMOP[3:0] | |||
malo 7 | malo 0 |
Legenda: | S = Bit koji se može samo postaviti | C = bit samo za brisanje |
R = Čitljiv bit | W = bit za pisanje | U = Neimplementirani bit, čita se kao '0' |
-n = vrijednost na POR | '1' = Bit je postavljen | '0' = Bit je izbrisan x = Bit je nepoznat |
Bilješka
- Ovaj bit se također resetira na Brown-out Reset (BOR).
- Operacije reda međuspremnika RAM-a nisu dostupne na svim uređajima; u tim slučajevima, ovi bitovi su neimplementirani i čitaju se kao '0'.
- Odabirom ovih opcija postavit će se bit WRERR i izbrisati bit WR.
- Programske operacije s dvostrukom riječi zahtijevaju dvije susjedne instrukcijske riječi (svaka po 24 bita), poredane na granici četiri instrukcijske riječi.
- Implementirano samo na odabranim uređajima; pojedinosti potražite u posebnom podatkovnom listu uređaja.
Bilješka
- Ovaj bit se također resetira na Brown-out Reset (BOR).
- Operacije reda međuspremnika RAM-a nisu dostupne na svim uređajima; u tim slučajevima, ovi bitovi su neimplementirani i čitaju se kao '0'.
- Odabirom ovih opcija postavit će se bit WRERR i izbrisati bit WR.
- Programske operacije s dvostrukom riječi zahtijevaju dvije susjedne instrukcijske riječi (svaka po 24 bita), poredane na granici četiri instrukcijske riječi.
- Implementirano samo na odabranim uređajima; pojedinosti potražite u posebnom podatkovnom listu uređaja.
Registar 4-2: NVMKEY: Registar trajnih memorijskih ključeva
U-0 | U-0 | U-0 | U-0 | U-0 | U-0 | U-0 | U-0 |
— | — | — | — | — | — | — | — |
malo 15 | malo 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 = Čitljiv bit | W = bit za pisanje | U = Neimplementirani bit, čita se kao '0' |
-n = vrijednost na POR | '1' = Bit je postavljen | '0' = Bit je izbrisan x = Bit je nepoznat |
Upute za rad stola
Upute u tablici pružaju jednu metodu prijenosa podataka između programske memorije i podatkovne memorije uređaja PIC24 i dsPIC33. Sažetak tabličnih uputa korištenih tijekom programiranja Flash programske memorije nalazi se u ovom odjeljku.
Postoje četiri osnovne upute za tablicu:
- TBLRDL: Nisko čitanje tablice
- TBLRDH: Visoko očitavanje tablice
- TBLWTL: Table Write Low
- TBLWTH: Table Write High
Instrukcije TBLRDL i TBLWTL koriste se za čitanje i pisanje u bitove [15:0] programske memorije. TBLRDL i TBLWTL mogu pristupiti programskoj memoriji u načinu rada Word ili Byte. Instrukcije TBLRDH i TBLWTH koriste se za čitanje ili pisanje u bitove[23:16] programske memorije. TBLRDH i TBLWTH mogu pristupiti programskoj memoriji u načinu rada Word ili Byte. Budući da je programska memorija široka samo 24 bita, instrukcije TBLRDH i TBLWTH imaju mogućnost adresirati gornji bajt programske memorije koji ne postoji. Ovaj bajt se naziva 'fantomski bajt'. Svako čitanje fantomskog bajta vraća 00h; pisanje u fantomski bajt nema učinka.
GENERACIJA ADRESA ZA TABLIČNE OPERACIJE
24-bitna programska memorija može se smatrati dvama, jedan do drugoga, 16-bitnim prostorom, pri čemu svaki prostor dijeli isti raspon adresa. Stoga, instrukcije TBLRDL i TBLWTL pristupaju 'niskom' memorijskom prostoru programa (PM[15:0]). Instrukcije TBLRDH i TBLWTH pristupaju 'high' programskoj memoriji (PM[31:16]). Svako čitanje ili pisanje u PM[31:24] će pristupiti fantomskom (neimplementiranom) bajtu. Kada se bilo koja od tabličnih instrukcija koristi u bajt načinu rada, LSb adrese tablice koristit će se kao bit odabira bajta. LSb određuje kojem se bajtu u visokom ili niskom programskom memorijskom prostoru pristupa.
Slika 4-1 ilustrira kako se adresira programska memorija korištenjem uputa u tablici. 24-bitna programska memorijska adresa formira se pomoću bitova TBLPAG[7:0] i Efektivne adrese (EA) iz W registra, navedenog u uputama tablice (24-bitni programski brojač prikazan je kao referenca). Gornja 23 bita EA koriste se za odabir programske memorijske lokacije. Za upute tablice načina rada bajta, LSb W registra EA koristi se za odabir koji se bajt 16-bitne programske memorijske riječi adresira. '1' odabire bitove [15:8], '0' odabire bitove [7:0]. LSb EA registra W zanemaruje se za tablične instrukcije u načinu rada Word. Uz adresu programske memorije, tablične upute također određuju W registar (ili W pokazivač na memorijsku lokaciju) koji je izvor podataka programske memorije koji se upisuju ili odredište za čitanje programske memorije. Za operaciju pisanja tablice u bajt modu, bitovi [15:8] izvornog radnog registra se zanemaruju.
NIZAK PRISTUP RIJEČI
Instrukcije TBLRDL i TBLWTL koriste se za pristup donjih 16 bitova programske memorije podataka. LSb adrese W registra se zanemaruje za pristupe tablici na razini cijele riječi. Za pristupe širom bajta, LSb adrese registra W određuje koji se bajt čita. Slika 4-2 ilustrira područja podataka programske memorije kojima pristupaju instrukcije TBLRDL i TBLWTL.
VISOKI PRISTUP RIJEČI
Instrukcije TBLRDH i TBLWTH koriste se za pristup gornjim osam bitova podataka programske memorije. Ove upute također podržavaju Word ili Byte Access modove za ortogonalnost, ali će visoki bajt podataka programske memorije uvijek vratiti '0', kao što je prikazano na slici 4-3.
POHRANA PODATAKA U PROGRAMSKOJ MEMORIJI
Pretpostavlja se da se za većinu aplikacija visoki bajt (PM[23:16]) neće koristiti za podatke, zbog čega programska memorija izgleda široka 16 bita za pohranu podataka. Preporuča se da se gornji bajt programskih podataka programira ili kao NOP (00h ili FFh), ili kao nedopuštena vrijednost operacijskog koda (3Fh), kako bi se uređaj zaštitio od slučajnog izvođenja pohranjenih podataka. Instrukcije TBLRDH i TBLWTH primarno su dane za potrebe programa/verifikacije polja i za one aplikacije koje zahtijevaju pohranu komprimiranih podataka.
PONAŠANJE BITA PROGRAMSKE MEMORIJE
Bitovi u Flash programskoj memoriji mogu se programirati samo od '1' do '0' i mogu se naknadno brisati do '1'. Pokušaj postavljanja bita programskim nizom neće imati učinka.
KORIŠTENJE TABLICE PROČITAJTE UPUTE
Čitanje tablice zahtijeva dva koraka. Prvo se postavlja pokazivač adrese pomoću TBLPAG registra i jednog od W registara. Zatim se može pročitati sadržaj programske memorije na lokaciji adrese.
Kod examples u Example 4-2 i Example 4-3 demonstrira kako čitati riječ programske memorije koristeći tablične upute u načinu rada Word.
Bilješka: Direktive tblpage() i tbloffset() osigurava Microchip asembler za dsPIC33 i PIC24 uređaje. Ove direktive odabiru odgovarajuće vrijednosti TBLPAG i W registara za tablične instrukcije iz vrijednosti adrese programske memorije. Za više informacija pogledajte “MPLAB® asembler, povezivač i uslužni programi za PIC24 MCU i dsPIC® DSC korisnički priručnik” (DS51317).
STOL ZA PISANJE KOJI DRŽI ZASUNE
Upute za pisanje tablice ne pišu izravno u Flash programsko polje. Umjesto toga, upute uzrokuju da se podaci programiraju da se prvi učitaju u zasune za držanje. Ovi zasuni su memorijski mapirani u konfiguracijskom memorijskom prostoru, obično počevši od FA0000h, i može im se pristupiti samo pomoću uputa za pisanje tablice. Kada su svi zasuni za držanje učitani, stvarna operacija programiranja memorije počinje izvršavanjem posebnog niza instrukcija.
Različiti uređaji implementiraju različit broj zasuna za držanje, na temelju specifičnog dizajna niza programa (tj. veličine programiranja reda i algoritma programiranja reda). Dodatne pojedinosti potražite u posebnom podatkovnom listu uređaja i/ili specifikaciji programiranja.
Izvođenje pisanja dvije riječi
Pisanje riječi izvodi se za dvije riječi odjednom pomoću para TBLWTH i TBLWTL instrukcija. Nizovi kodova u bilo kojem Example 4-4 ili Example 4-5 (C ekvivalent) može se koristiti za pisanje dvije programske memorijske latch lokacije koje će se programirati za Flash korištenjem Word Write moda.
Samoprogramiranje tijekom izvođenja (RTSP)
RTSP omogućuje korisničkom kodu izmjenu sadržaja Flash programske memorije. RTSP se postiže korištenjem TBLRD (čitanje tablice) i TBLWT (pisanje tablice) instrukcija i NVM kontrolnih registara. PIC24 i dsPIC33 uređaji podržavaju sljedeće operacije Flash programiranja:
- Flash stranica se briše
- Programiranje redaka (bilo temeljeno na zasunu ili temeljeno na RAM-u)
- Programiranje riječi
Flash programiranje putem RTSP-a se izvodi, bilo s blokovima memorije koji se nazivaju redovi, ili s dvije riječi Flash memorije. Prije programiranja, memorijska lokacija mora biti izbrisana. Operacije brisanja izvode se na blokovima memorije, zvanim stranicama, koji se sastoje od više redaka. Veličina retka ovisit će o uređaju; pojedinosti potražite u podatkovnoj tablici uređaja. Tipično, za dsPIC33 i PIC24 uređaje, stranica je definirana kao osam (8) redaka. Ovaj dokument koristi exampsa 64 upute po redu (512 uputa po stranici).
PROGRAMIRANJE RETKA POMOĆU ZASUNA ZA ZADRŽAVANJE PISANJA
Kao što je objašnjeno u odjeljku 4.2.7 "Zasuni za zadržavanje pisanja u tablici", uređaji koji implementiraju programiranje redaka temeljeno na zasunu imaju zasune za zadržavanje koji sadrže podatke o programiranju. Prije stvarne operacije programiranja, podaci za pisanje moraju se učitati u zasune putem TBLWT instrukcija uzastopnim redoslijedom. Prilikom izvođenja pisanja reda, riječi instrukcija moraju se učitati u zasune kao cijeli red.
Osnovni slijed za RTSP programiranje je postavljanje pokazivača tablice, zatim izvođenje niza TBLWT instrukcija za učitavanje međuspremnika. Programiranje se vrši postavljanjem kontrolnih bitova u NVMCON registar. Na primjerampNa primjer, na uređaju sa 64 reda instrukcija, ciklus programiranja bi se sastojao od 64 TBLWTL i 64 TBLWTH instrukcije za učitavanje zasuna za pisanje, nakon čega bi uslijedio programski niz koji otključava NVMCON i postavlja WR bit. nprample 4-6 prikazuje prample procesa.
PROGRAMIRANJE RETKA POMOĆU RAM MEĐUSPREMNIKA
Odabrani uređaji dsPIC33 i PIC24 dopuštaju da se programiranje retka izvodi izravno iz prostora međuspremnika u podatkovnom RAM-u, umjesto prolaska kroz držače zasuna za prijenos podataka s TBLWT uputama. Lokacija RAM međuspremnika određena je registrom(ima) NVMSRCADR, koji se učitava s adresom podatkovne RAM memorije koja sadrži prvu riječ programskih podataka koju treba zapisati.
Prije izvođenja programske operacije, međuspremnik u RAM-u mora biti učitan s redom podataka koji se programiraju. RAM se može učitati u komprimiranom (pakiranom) ili nekomprimiranom formatu. Komprimirana pohrana koristi jednu podatkovnu riječ za pohranjivanje najvažnijih bajtova (MSB-ova) dviju susjednih podatkovnih riječi programa. Nekomprimirani format koristi dvije podatkovne riječi za svaku podatkovnu riječ programa, pri čemu je gornji bajt svake druge riječi 00h. Komprimirani format koristi oko 3/4 prostora u podatkovnoj RAM memoriji u usporedbi s nekomprimiranim formatom. Nekomprimirani format, s druge strane, oponaša strukturu 24-bitne podatkovne riječi programa, zajedno s gornjim fantomskim bajtom. Format podataka odabire se RPDF bitom (NVMCON[9]). Ova dva formata prikazana su na slici 4-4.
Nakon što se RAM međuspremnik učita, Flash Address Pointers, NVMADRL i NVMADRH, učitavaju se s 24-bitnom početnom adresom Flash retka koji treba zapisati. Kao i kod programiranja zasuna za pisanje, proces se pokreće pisanjem sekvence za otključavanje NVM-a, nakon čega slijedi postavljanje WR bita. Nakon pokretanja, uređaj automatski učitava prave zasune i povećava NVM adresne registre dok se svi bajtovi ne programiraju. nprample 4-7 prikazuje prample procesa. Ako je NVMSRCADR postavljen na vrijednost tako da se dogodi stanje pogreške u nedostatku podataka, URERR bit (NVMCON[8]) bit će postavljen za označavanje stanja. Uređaji koji implementiraju programiranje retka RAM međuspremnika također implementiraju jedan ili dva zasuna za pisanje. Oni se učitavaju pomoću TBLWT instrukcija i koriste se za izvođenje operacija programiranja riječi.
Opći algoritmi za Flash programiranje
Operacijama flash programiranja upravlja se pomoću sljedećih kontrolnih registara trajne memorije (NVM):
- NVMCON
- NVMKEY
- NVMADRL/H
- NVMSRCADRL/H (neki uređaji)
Za programiranje ili brisanje unutarnjeg Flasha u RTSP načinu rada potreban je potpuni niz programiranja. Postavljanje WR bita (NVMCON[15]) pokreće operaciju i WR bit se automatski briše kada se operacija završi.
Prilikom izvođenja operacija Flash programiranja na aktivnoj particiji (osobito u načinu rada standardne particije), CPU će stati dok se operacija ne završi. Prilikom programiranja neaktivne particije, CPU može nastaviti s radom bez zaustavljanja. Sljedeći odjeljci opisuju algoritme programiranja koji pokazuju zastoj CPU-a i ne zastoj.
BRISANJE MEMORIJE PROGRAMA (AKTIVNA PARTICIJA)
- Postavite NVMOPx bitove (NVMCOM[3:0]) na '0011' za konfiguraciju za brisanje stranice i postavite WREN bit (NVMCOM[14]).
- Zapišite početnu adresu bloka koji želite obrisati u NVMADRL/H registre.
- Onemogući prekide.
- Zapišite 55h na NVMKEY.
- Upišite AAh u NVMKEY.
- Postavite WR bit (NVMCOM[15]) za početak ciklusa brisanja.
- Izvršite dvije NOP instrukcije.
- Vraćanje prekida (opcionalno).
Kada je brisanje gotovo, WR bit se automatski briše
PROGRAMIRANJE RETKA (AKTIVNA PARTICIJA, STANDARDNI NAČIN PARTICIJE)
Korisnik može programirati jedan po jedan red programske Flash memorije. Da biste to učinili, potrebno je obrisati stranicu koja sadrži željeni red. Opći postupak za programiranje redaka na aktivnu particiju je:
- Pročitajte osam redova programske memorije (512 instrukcija) i pohranite u podatkovni RAM.
- Ažurirajte programske podatke u RAM-u željenim novim podacima.
- Izbriši blok:
- a) Postavite NVMOPx bitove (NVMCOM[3:0]) na '0011' za konfiguraciju za brisanje stranice i postavite WREN bit (NVMCOM[14]).
- b) Zapišite početnu adresu bloka koji želite obrisati u NVMADRL/H registre.
- c) Onemogući prekide.
- d) Zapišite 55h na NVMKEY.
- e) Upišite AAh u NVMKEY.
- f) Postavite WR bit (NVMCOM[15]). Ciklus brisanja počinje i CPU se zaustavlja za vrijeme trajanja ciklusa brisanja. Kada je brisanje gotovo, WR bit se automatski briše.
- g) Vraćanje prekida (opcionalno).
- Zapišite prve 64 instrukcije iz podatkovnog RAM-a u programske memorijske međuspremnike (pogledajte odjeljak 4.2.7 “Zasuni za zadržavanje pisanja u tablici”) ili zapišite NVMSRCADR registar s početnom adresom podataka pohranjenih u RAM-u.
- Zapišite programski blok u Flash memoriju:
- a) Postavite NVMOPx bitove na '0010' za konfiguraciju za programiranje reda i postavite WREN bit.
- b) Onemogući prekide.
- c) Zapišite 55h na NVMKEY.
- d) Upišite AAh u NVMKEY.
- e) Postavite WR bit. Ciklus programiranja počinje i CPU se zaustavlja tijekom trajanja ciklusa pisanja. Kada je pisanje u Flash memoriju gotovo, WR bit se automatski briše.
- f) Vraćanje prekida (opcionalno).
- Ponovite korake 4 i 5 koristeći sljedeće dostupne 64 instrukcije iz bloka u podatkovnom RAM-u, povećavajući adrese u NVMADRL/H, dok se svih 512 instrukcija ne zapiše natrag u Flash memoriju.
Bilješka: Neće svi uređaji pokazivati zastoj CPU-a tijekom ciklusa pisanja ili brisanja. Kako biste izbjegli zastoje, preporučuje se izbjegavanje čitanja ili pisanja aplikacije u red koji se briše ili piše.
Za zaštitu od slučajnih operacija, slijed pokretanja pisanja za NVMKEY potreban je prije bilo kakvog brisanja ili programiranja. Nakon izvršenja naredbe za programiranje, korisnik mora pričekati vrijeme programiranja dok se programiranje ne završi. Dvije upute koje slijede nakon početka niza programiranja trebaju biti NOP-ovi.
Bilješka
- Broj redova, blokova i zasuna za držanje može se razlikovati od uređaja do uređaja; stvarne brojeve potražite u posebnom podatkovnom listu uređaja, kao i cjeloviti referentni kod za programiranje Flash memorije.
- Za uređaje s jednim zasunom za držanje, Flash programska memorija mora se upisivati programiranjem riječi.
PROGRAMIRANJE STRANICE U NEAKTIVNOJ PARTICIJI (NAČINI DUALNE PARTICIJE)
Programiranje u načinima Dual Partition zahtijeva posebna razmatranja. Budući da CPU može nastaviti izvršavati instrukcije dok se neaktivna particija programira, neće doći do zastoja CPU-a.
Algoritam za brisanje i reprogramiranje stranice podataka u jednom od načina rada Dvostruke particije je sljedeći:
- Izbriši blok:
- a) Postavite NVMOPx bitove (NVMCOM[3:0]) na '0011' za konfiguraciju za brisanje stranice.
- b) Postavite WREN bit (NVMCOM[14]).
- c) Zapišite početnu adresu bloka za brisanje u NVMADR registre
adresu stranice. - d) Onemogući prekide.
- e) Zapišite 55h na NVMKEY.
- f) Upišite AAh u NVMKEY.
- g) Postavite WR bit (NVMCOM[15]). Ciklus brisanja počinje i CPU će nastaviti raditi.
- h) Kada se brisanje završi, WR bit se automatski briše i pojavit će se NVM Write Complete Interrupt Flag (NVMIF).
- i) Vraćanje prekida (opcionalno).
- Pripremite podatke za programiranje punjenjem RAM međuspremnika; naizmjenično učitajte zasune za pisanje s TBLWT uputama s podacima za prvi red memorije (64 instrukcije).
- Programirajte blok:
- a) Postavite NVMOPx bitove (NVMCON[3:0]) na '0010' za konfiguraciju za programiranje redaka.
- b) Postavite bit WREN (NVMCON[14]).
- c) Zapišite početnu adresu bloka koji treba zapisati u NVMADR registre s početnom adresom reda.
- d) Onemogući prekide.
- e) Zapišite 55h na NVMKEY.
- f) Upišite AAh u NVMKEY.
- g) Postavite WR bit (NVMCOM[15]). Ciklus pisanja počinje i CPU će nastaviti raditi.
- h) Kada se brisanje završi, WR bit se automatski briše i pojavit će se NVM Write Complete Interrupt Flag (NVMIF).
- i) Vraćanje prekida (opcionalno).
- Ponovite korake 2 i 3 za programiranje svakog od preostalih redaka podataka na izbrisanoj stranici.
PROGRAMIRANJE CIJELE NEAKTIVNE PARTICIJE (NAČINI DUALNE PARTICIJE)
Za potpuno ažuriranje koda u neaktivnoj particiji:
- Izbrišite neaktivnu particiju:
- a) Postavite NVMOPx bitove (NVMCOM[3:0]) na '0100' za konfiguraciju za brisanje neaktivne particije.
- b) Postavite WREN bit (NVMCOM[14]).
- c) Onemogući prekide.
- d) Zapišite 55h na NVMKEY.
- e) Upišite AAh u NVMKEY.
- f) Postavite WR bit (NVMCOM[15]). Ciklus brisanja počinje i CPU će nastaviti raditi tijekom ciklusa.
- g) Kada se brisanje završi, WR bit se automatski briše i pojavljuje se NVM Write Complete Interrupt Flag (NVMIF).
- h) Vraćanje prekida (opcionalno).
- Zapišite svaku stranicu neaktivne particije korištenjem pisanja stranica, kao što je opisano u odjeljku 4.4.3 “Programiranje stranice u neaktivnoj particiji (načini dvostruke particije)”.
- Provjerite pisane podatke. Jedna predložena metoda je izvođenje CRC-a na podacima koje treba zapisati i provjera CRC vrijednosti na cijeloj particiji kako bi se osiguralo da su podaci ispravno zapisani.
AŽURIRANJE AKTIVNE PARTICIJE POMOĆU BOOTLOADERA
- Obrišite i programirajte cijelu neaktivnu particiju kao što je opisano u odjeljku 4.4.4 “Programiranje cijele neaktivne particije (načini dvostruke particije)”.
- Pročitajte FBTSEQ konfiguracijski registar aktivne particije.
- Smanjite vrijednost za jedan i pišite u FBTSEQ neaktivne particije.
- Prisilno mijenjanje particije:
- a) Ako zastoj CPU-a nije problem, izvršite resetiranje uređaja. Budući da neaktivna particija ima niži redni broj pokretanja, postat će aktivna particija nakon resetiranja.
- b) Ako zastoj CPU-a nije prihvatljiv, izvršite BOOTSWP instrukciju.
PREGLED PROGRAMA I PROŠIRENI PROSTOR PODATAKA (PSV I EDS)
Za sve dsPIC33 i PIC24 uređaje, tablične upute (pogledajte odjeljak 4.2 “Upute za rad tablice”) mogu se koristiti za pristup podacima unutar programske memorije. Ovo je korisno kada podatke treba čitati ili pisati samo jedan bajt ili riječ. Također je moguće preslikati stranice od 16 K riječi programske memorije u gornja 32 Kbajta adresnog prostora podataka. Ovo omogućuje učinkovito širenje podatkovnog prostora izvan normalnih ograničenja adresiranja od 64 Kbajta, kao i transparentan pristup bez upotrebe tabličnih instrukcija. Svi dsPIC33 i PIC24 uređaji mogu mapirati bilo koju stranicu u implementiranom programskom memorijskom prostoru u podatkovni prostor. Ova je značajka poznata kao vidljivost programskog prostora (PSV). Neki uređaji proširuju PSV memorijskim mapiranjem određenih perifernih uređaja na određeni raspon virtualnih programskih memorijskih stranica. Ova značajka je posebno korisna za periferne uređaje, kao što je Advanced Graphics Controller, koji ima visoke zahtjeve za protok podataka. Ovo proširenje PSV-a poznato je kao prošireni podatkovni prostor (EDS).
PSV i EDS implementirani su kao značajke memorije podataka. Implementirani su različito za dsPIC33 i PIC24 uređaje. Za detaljan opis pogledajte “Referentni priručnik obitelji dsPIC33/PIC24”, “Memorija podataka”. (dsPIC33, DS70595) i/ili “Data Memory” (PIC24, DS30009717).
PSV i Instruction Stalls
Za više informacija o zaustavljanju instrukcija pomoću PSV-a, pogledajte “Referentni priručnik za obitelj dsPIC33/PIC24”, “dsPIC33E Enhanced CPU” (DS70005158).
REGISTRACIJA MAPA
Sažetak SFR-ova povezanih s Flash programskom memorijom s dvije particije nalazi se u tablici 6-1.
Tablica 6-1: Registri posebnih funkcija povezani s Flash programskom memorijom(1)
File Ime | 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 | Sve resetirane(2) |
TBLPAG | — | — | — | — | — | — | — | — | Pokazivač adrese stranice tablice | 0000 | |||||||
NVMCON | WR | WREN | WRERR | NVMPIDL | SFTSWP | P2ACTIV | RPDF | URERR | — | — | — | — | NVMOP[3:0] | 0000 | |||
NVMKEY | — | — | — | — | — | — | — | — | NVMKEY[7:0] | 0000 | |||||||
NVMSRCADRL | Početna adresa međuspremnika za programiranje RAM-a podataka | 0000 | |||||||||||||||
NVMSRCADRH | Adresa međuspremnika programiranja podatkovnog RAM-a (samo EDS operacije) | 0000 | |||||||||||||||
NVMADRL | Odredišna adresa memorije Flash programa, donji bajt (ADDR[15:0]) | 0000 | |||||||||||||||
NVMADRH | — | — | — | — | — | — | — | — | Odredišna adresa memorije Flash programa, gornji bajt (ADDR[23:16]) | 0000 |
Ovaj odjeljak navodi napomene o aplikaciji koje se odnose na ovaj odjeljak priručnika. Ove bilješke o aplikaciji možda nisu napisane posebno za obitelji proizvoda PIC24 ili dsPIC33, ali koncepti su relevantni i mogu se koristiti uz izmjene i moguća ograničenja. Trenutačne bilješke o aplikaciji koje se odnose na Flash programsku memoriju s dvije particije su:
Bilješka: Posjetite Microchip webweb mjesto (www.microchip.com) za dodatne napomene o aplikaciji i kod exampdatoteke za PIC24 i dsPIC33 obitelji uređaja.
POVIJEST REVIZIJA
- Revizija A (ožujak 2014.)
Izvorna verzija ovog dokumenta. - Revizija B (veljača 2015.)
Promijenjen je naslov i sve instance fraze, “Dual Boot Flash Program Memory” u “Dual Partition Flash Program Memory” ili “Dual Partition Flash”. - Revizija C (studeni 2021.)
Dodano 4.1.1.1 "Onemogućivanje prekida".
Ažurirano 4.1.1 “Kontrolni registri”, 4.4.2 “Programiranje redaka (aktivna particija, standardni način particije)”, 4.4.3 “Programiranje stranice u neaktivnoj particiji (načini dvostruke particije)” i 4.4.4 “Programiranje cijele Neaktivna particija (načini dvostruke particije)”. Ažurirano Example 4-5, Example 4-6 i Example 4-7.
Imajte na umu sljedeće pojedinosti značajke zaštite koda na Microchip proizvodima:
- Microchip proizvodi zadovoljavaju specifikacije sadržane u njihovom posebnom Microchip podatkovnom listu.
- Microchip vjeruje da je njegova obitelj proizvoda sigurna kada se koristi na predviđeni način, unutar radnih specifikacija i pod normalnim uvjetima.
- Microchip cijeni i agresivno štiti svoja prava intelektualnog vlasništva. Pokušaji kršenja značajki zaštite koda Microchipovih proizvoda strogo su zabranjeni i mogu predstavljati kršenje Zakona o autorskim pravima u digitalnom tisućljeću.
- Niti Microchip niti bilo koji drugi proizvođač poluvodiča ne može jamčiti sigurnost svog koda. Zaštita kodom ne znači da jamčimo da je proizvod "neslomljiv". Zaštita koda stalno se razvija. Microchip je predan stalnom poboljšanju značajki zaštite koda naših proizvoda.
Ova publikacija i informacije u njoj mogu se koristiti samo s Microchip proizvodima, uključujući dizajn, testiranje i integraciju Microchip proizvoda s vašom aplikacijom. Korištenje ovih informacija na bilo koji drugi način krši ove uvjete. Informacije o aplikacijama uređaja daju se samo radi vaše udobnosti i mogu biti zamijenjene ažuriranjima. Vaša je odgovornost osigurati da vaša aplikacija zadovoljava vaše specifikacije. Obratite se svom lokalnom Microchipovom prodajnom uredu za dodatnu podršku ili potražite dodatnu podršku na https://www.microchip.com/en-us/support/design-help/client-supportservices.
OVE INFORMACIJE PRUŽA MICROCHIP "KAKVE JESU". MICROCHIP NE DAJE NIKAKVA IZJAVA ILI JAMSTVA BILO KOJE VRSTE, BILO IZRIČITA ILI PODRAZUMEVANA, PISMENA ILI USMENA, ZAKONSKA ILI DRUGAČA, U VEZI S INFORMACIJAMA, UKLJUČUJUĆI, ALI NE OGRANIČAVAJUĆI SE NA, BILO KOJA PODRAZUMEVANA JAMSTVA O NEKRŠENJU, PRIKLADNOSTI ZA PRODAJU I PRIKLADNOST ESS ZA ODREĐENU NAMJENU ILI JAMSTVA POVEZANA NA NJEGOVO STANJE, KVALITETA ILI IZVEDBA. MICROCHIP NI U KOJEM SLUČAJU NEĆE BITI ODGOVORAN ZA BILO KOJI NEIZRAVNI, POSEBNI, KAZNENI, SLUČAJNI ILI POSLJEDIČNI GUBITAK, ŠTETU, TROŠAK ILI IZDAK BILO KOJE VRSTE, BEZ OBZIRA DA JE MICROCHIP BIO ODGOVORAN ZA INFORMACIJE ILI NJIHOVO KORIŠTENJE EN OBAVIJEST O MOGUĆNOST ILI ŠTETE SU PREDVIĐIVE. U NAJVEĆOJ MJERI DOPUŠTENOJ ZAKONOM, UKUPNA ODGOVORNOST MICROCHIPA ZA SVE ZAHTJEVE NA BILO KOJI NAČIN VEZANE S INFORMACIJAMA ILI NJIHOVIM KORIŠTENJEM NEĆE PRELAZITI IZNOS NAKNADA, AKO IMA, KOJE STE PLATILI IZRAVNO MICROCHIPU ZA INFORMACIJE.
Korištenje Microchip uređaja u aplikacijama za održavanje života i/ili sigurnost u potpunosti je na rizik kupca, a kupac se slaže da će braniti, obeštetiti i zaštititi Microchip od bilo koje štete, potraživanja, tužbi ili troškova proizašlih iz takve upotrebe. Nikakve licence se ne prenose, implicitno ili na neki drugi način, pod bilo kojim Microchipovim pravima intelektualnog vlasništva osim ako nije drugačije navedeno.
AMBA, Arm, Arm7, Arm7TDMI, Arm9, Arm11, Artisan, big.LITTLE, Cordio, CoreLink, CoreSight, Cortex, DesignStart, DynamIQ, Jazelle, Keil, Mali, Mbed, Mbed omogućen, NEON, POP, RealView, SecurCore, Socrates, Thumb, TrustZone, ULINK, ULINK2, ULINK-ME, ULINK-PLUS, ULINKpro, μVision, Versatile zaštitni su znakovi ili registrirani zaštitni znakovi Arm Limited (ili njegovih podružnica) u SAD-u i/ili drugdje.
Za informacije o Microchipovim sustavima upravljanja kvalitetom, posjetite www.microchip.com/kvaliteta.
Zaštitni znakovi
Naziv i logotip Microchipa, logotip Microchipa, Adaptec, AnyRate, AVR, AVR logotip, AVR Freaks, BesTime, BitCloud, CryptoMemory, CryptoRF, dsPIC, flexPWR, HELDO, IGLOO, JukeBlox, KeeLoq, Kleer, LANCheck, LinkMD, maXStylus, maXTouch, MediaLB, megaAVR, Microsemi, Microsemi logo, MOST, MOST logo, MPLAB, OptoLyzer, PIC, picoPower, PICSTART, PIC32 logo, PolarFire, Prochip Designer, QTouch, SAM-BA, SenGenuity, SpyNIC, SST, SST Logo, SuperFlash , Symmetricom, SyncServer, Tachyon, TimeSource, tinyAVR, UNI/O, Vectron i XMEGA registrirani su zaštitni znakovi Microchip Technology Incorporated u SAD-u i drugim zemljama. AgileSwitch, APT, ClockWorks, The Embedded Control Solutions Company, EtherSynch, Flashtec, Hyper Speed Control, HyperLight Load, IntelliMOS, Libero, motorBench, mTouch, Powermite 3, Precision Edge, ProASIC, ProASIC Plus, ProASIC Plus logo, Quiet- Wire, SmartFusion, SyncWorld, Temux, TimeCesium, TimeHub, TimePictra, TimeProvider, TrueTime, WinPath i ZL registrirani su zaštitni znaci Microchip Technology Incorporated u SAD-u
Adjacent Key Suppression, AKS, Analog-for-the-Digital Age, Any Capacitor, AnyIn, AnyOut, Augmented Switching, BlueSky, BodyCom, CodeGuard, CryptoAuthentication, CryptoAutomotive, CryptoCompanion, CryptoController, dsPICDEM, dsPICDEM.net, Dynamic Average Matching, DAM , ECAN, Espresso T1S, EtherGREEN, GridTime, IdealBridge, In-Circuit Serial Programming, ICSP, INICnet, Intelligent Paralleling, Inter-Chip Connectivity, JitterBlocker, Knob-on-Display, maxCrypto, maxView, 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, QMatrix, REAL ICE , 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 i ZENA zaštitni su znakovi tvrtke Microchip Technology Incorporated u SAD-u i drugim zemljama.
SQTP je servisni znak tvrtke Microchip Technology Incorporated u SAD-u
Logotip Adaptec, Frequency on Demand, Silicon Storage Technology, Symmcom i Trusted Time registrirani su zaštitni znaci Microchip Technology Inc. u drugim zemljama.
GestIC je registrirani zaštitni znak Microchip Technology Germany II GmbH & Co. KG, podružnice Microchip Technology Inc., u drugim zemljama.
Svi ostali ovdje spomenuti zaštitni znakovi vlasništvo su svojih odgovarajućih tvrtki.
© 2014-2021, Microchip Technology Incorporated i njegove podružnice.
Prodaja i servis širom svijeta
AMERIKA
- Korporacijski ured
2355 West Chandler Blvd.
Chandler, AZ 85224-6199
Tel: 480-792-7200
Faks: 480-792-7277
Tehnička podrška: http://www.microchip.com/support
Web Adresa: www.microchip.com - Atlanta
Duluth, GA
Tel: 678-957-9614
Faks: 678-957-1455 - Austin, Teksas
Tel: 512-257-3370 - Boston
Westborough, MA
Tel: 774-760-0087
Faks: 774-760-0088 - Chicago
Itasca, IL
Tel: 630-285-0071
Faks: 630-285-0075 - Dallas
Addison, Teksas
Tel: 972-818-7423
Faks: 972-818-2924 - Detroit
Novi, MI
Tel: 248-848-4000 - Houston, Teksas
Tel: 281-894-5983 - Indianapolis
Noblesville, IN
Tel: 317-773-8323
Faks: 317-773-5453
Tel: 317-536-2380 - Los Angeles
Mission Viejo, CA
Tel: 949-462-9523
Faks: 949-462-9608
Tel: 951-273-7800 - Raleigh, NC
Tel: 919-844-7510 - New York, NY
Tel: 631-435-6000 - San Jose, CA
Tel: 408-735-9110
Tel: 408-436-4270 - Kanada – Toronto
Tel: 905-695-1980
Faks: 905-695-2078
AZIJA/PACIFIK
- Australija – Sydney
Tel: 61-2-9868-6733 - Kina – Peking
Tel: 86-10-8569-7000 - Kina – Chengdu
Tel: 86-28-8665-5511 - Kina – Chongqing
Tel: 86-23-8980-9588 - Kina – Dongguan
Tel: 86-769-8702-9880 - Kina – Guangzhou
Tel: 86-20-8755-8029 - Kina – Hangzhou
Tel: 86-571-8792-8115 - Kina – Hong Kong SAR
Tel: 852-2943-5100 - Kina – Nanjing
Tel: 86-25-8473-2460 - Kina – Qingdao
Tel: 86-532-8502-7355 - Kina – Šangaj
Tel: 86-21-3326-8000 - Kina – Shenyang
Tel: 86-24-2334-2829 - Kina – Shenzhen
Tel: 86-755-8864-2200 - Kina – Suzhou
Tel86-186-6233-1526 - Kina – Wuhan
Tel: 86-27-5980-5300 - Kina – Xian
Tel: 86-29-8833-7252 - Kina – Xiamen
Tel: 86-592-2388138 - Kina – Zhuhai
Tel: 86-756-3210040 - Indija – Bangalore
Tel: 91-80-3090-4444 - Indija – New Delhi
Tel: 91-11-4160-8631 - Indija - Puna
Tel: 91-20-4121-0141 - Japan – Osaka
Tel: 81-6-6152-7160 - Japan – Tokio
Tel: 81-3-6880-3770 - Koreja – Daegu
Tel: 82-53-744-4301 - Koreja – Seul
Tel: 82-2-554-7200 - Malezija – Kuala Lumpur
Tel: 60-3-7651-7906 - Malezija – Penang
Tel: 60-4-227-8870 - Filipini – Manila
Tel: 63-2-634-9065 - Singapur
Tel: 65-6334-8870 - Tajvan – Hsin Chu
Tel: 886-3-577-8366 - Tajvan – Kaohsiung
Tel: 886-7-213-7830 - Tajvan – Taipei
Tel: 886-2-2508-8600 - Tajland – Bangkok
Tel: 66-2-694-1351 - Vijetnam – Ho Chi Minh
Tel: 84-28-5448-2100
EUROPA
- Austrija – Wels
Tel: 43-7242-2244-39
Faks: 43-7242-2244-393 - Danska – Kopenhagen
Tel: 45-4485-5910
Faks: 45-4485-2829 - Finska – Espoo
Tel: 358-9-4520-820 - Francuska – Pariz
Tel: 33-1-69-53-63-20
Faks: 33-1-69-30-90-79 - Njemačka – Garching
Tel: 49-8931-9700 - Njemačka – Haan
Tel: 49-2129-3766400 - Njemačka – Heilbronn
Tel: 49-7131-72400 - Njemačka – Karlsruhe
Tel: 49-721-625370 - Njemačka – München
Tel: 49-89-627-144-0
Faks: 49-89-627-144-44 - Njemačka – Rosenheim
Tel: 49-8031-354-560 - Italija – Milano
Tel: 39-0331-742611
Faks: 39-0331-466781 - Italija – Padova
Tel: 39-049-7625286 - Nizozemska – Drunen
Tel: 31-416-690399
Faks: 31-416-690340 - Norveška – Trondheim
Tel: 47-7288-4388 - Poljska – Varšava
Tel: 48-22-3325737 - Rumunjska – Bukurešt
Tel: 40-21-407-87-50 - Španjolska – Madrid
Tel: 34-91-708-08-90
Faks: 34-91-708-08-91 - Švedska – Gothenberg
Tel: 46-31-704-60-40 - Švedska – Stockholm
Tel: 46-8-5090-4654 - Velika Britanija – Wokingham
Tel: 44-118-921-5800
Faks: 44-118-921-5820
Bilješka: Ovaj odjeljak referentnog priručnika za obitelj služi kao dopuna podatkovnim listovima uređaja. Ovaj dokument se odnosi na sve dsPIC33/PIC24 uređaje. Molimo pogledajte napomenu na početku poglavlja “Dual Partition Flash Program Memory” u trenutnom podatkovnom listu uređaja kako biste provjerili podržava li ovaj dokument uređaj koji koristite. Liste s podacima o uređaju i odjeljci referentnog priručnika za obitelj dostupni su za preuzimanje s Microchip Worldwide Webstranica na: http://www.microchip.com.
Dokumenti / Resursi
![]() |
MICROCHIP PIC24 Flash programska memorija s dvije particije [pdf] Korisnički priručnik PIC24 Flash programska memorija s dvije particije, PIC24, Flash programska memorija s dvije particije, Flash programska memorija, Programska memorija |