Zdravím, chtěl bych se zeptat zkušenějších, jestli existuje možnost jak omezit přepisování programové paměti do určité adresy. Jde mi o to že bych na konec programu umístil tabulky které se nemění a při ladění programu přepisoval jen do určité adresy. Je to pro DSPIC30F4011. Jde mi o dobu programování.
Ahoj,
pro c a c++ obvykle bývá možnost nastavit oblasti paměti v linker skriptu.
pozná se podle přípony .ld. Je potřeba si nalézt na internetu popis linker skriptu a uplatnit možnosti rozdělení paměti tvého procesoru. Bohužel tvůj procesor neznám, tak Ti více nemohu říci.
Já jsem to napsal špatně. Jde mi o nahrání již zkompilovaného programu do procesoru. Data co se nemění (tabulky, odladěné funkce) bych uložil na konec programové paměti - vím jak. Ale zajímalo by mě jestli jde donutit programátor aby přepisoval jen paměť flash do určité adresy. Nebo ještě lépe jen data co se změnily. Většinou se používá hromadné mazání paměti, protože je rychlejší, ale když potřebuji přepsat jen pár programových slov mohlo by být rychlejší jen částečné přepsání. Možná by to i šetřilo flash. Jo a používám PICKIT2 a 3.
programator to asi neumi ale procesor ma instrukce na cteni /zapis flash,zalezi na procesoru jestly Byte/Page atd,bootloader takle funguje …
Všechny čipy, které jsem programoval, před naprogramováním prováděly Chip erase, neboli smazání paměti čipu. Asi jediný způsob, jak provést, co chceš bude napsat si vlastní bootloader a program do flash nahrávat pomocí něj. A když se podívám, jak funguje programový zápis do flash paměti, tak vyberu sektor pamětí, ve kterém chci něco přepsat, u něj provedu erase a pak jej teprve lze naprogramovat. Jinak si myslím, že toho nedocílíš.
Díky za odpovědi. Měl jsem do budoucna v plánu naprogramovat pro windows něco jako ovládací pult pro komunikaci s procesorem přes USB/RS232. Takže pokud k tomu někdy dojde asi dodělám i něco na programování.
Já programuji STM a bootloader mám vlastní. Ale jsem schopný přehrát pouze FW bez přehrání bootloderu. Tzn. zde si nemyslím, že by se vždy prováděl full chip erase.
Vývojové prostředí: Eclipse+potřebné pluginy
Debug nástroje: J-Link nebo St-Link v3
Bootloader samozřejmě Chip Erase neprovádí, nicméně dělá v podstatě totéž pro každou stránku flashe, kterou zrovna přepisuje. To znamená, že když ve stránce chceš přepsat jeden byte, načteš jí do RAM, provedeš Erase stránky, v paměti upravíš ten jeden byte, který chceš a pak tu stránku zapíšeš zpět do flashe.