Spara variabler i flash
Postat: 24 september 2009, 09:50:03
Jag skriver ett program till en PIC18F6628 och har några variabler som används för kalibrering som jag vill spara undan och kunna läsa av efter ett strömavbrott. Jag tänkte att EEPROM skulle lösa problemet men läste då att det är till för frekvent uppdaterad data och att kalibrerings data och annan data som inte uppdateras så ofta bör läggas i flash.
Jag har läst på en del om flash och tror mig veta hur jag ska skriva till och läsa från det, men hur vet jag var i minnet jag kan skriva?
Kan jag allokera en viss bit av minnet till dessa variabler så jag inte riskerar att skriva över min programkod?
Detta är min linker
Kan jag minska ner "page" och lägga min data efter denna?
Tex
Jag har läst på en del om flash och tror mig veta hur jag ska skriva till och läsa från det, men hur vet jag var i minnet jag kan skriva?
Kan jag allokera en viss bit av minnet till dessa variabler så jag inte riskerar att skriva över min programkod?
Detta är min linker
Kod: Markera allt
// File: 18f6628i.lkr
// Sample ICD2 linker script for the PIC18F6628 processor
LIBPATH .
FILES c018i.o
FILES clib.lib
FILES p18f6628.lib
CODEPAGE NAME=page START=0x0 END=0x17D7F
CODEPAGE NAME=debug START=0x17D80 END=0x17FFF PROTECTED
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF003FF PROTECTED
ACCESSBANK NAME=accessram START=0x0 END=0x5F
DATABANK NAME=gpr0 START=0x60 END=0xFF
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=gpr4 START=0x400 END=0x4FF
DATABANK NAME=gpr5 START=0x500 END=0x5FF
DATABANK NAME=gpr6 START=0x600 END=0x6FF
DATABANK NAME=gpr7 START=0x700 END=0x7FF
DATABANK NAME=gpr8 START=0x800 END=0x8FF
DATABANK NAME=gpr9 START=0x900 END=0x9FF
DATABANK NAME=gpr10 START=0xA00 END=0xAFF
DATABANK NAME=gpr11 START=0xB00 END=0xBFF
DATABANK NAME=gpr12 START=0xC00 END=0xCFF
DATABANK NAME=gpr13 START=0xD00 END=0xDFF
DATABANK NAME=gpr14 START=0xE00 END=0xEF3
DATABANK NAME=dbgspr START=0xEF4 END=0xEFF PROTECTED
DATABANK NAME=gpr15 START=0xF00 END=0xF5F
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
SECTION NAME=CONFIG ROM=config
STACK SIZE=0x100 RAM=gpr13
Tex
Kod: Markera allt
CODEPAGE NAME=page START=0x0 END=0x17D3F // 0x17D7F
CODEPAGE NAME=cali START=0x17D40 END=0x17D7F // Saved calibration values
CODEPAGE NAME=debug START=0x17D80 END=0x17FFF PROTECTED
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF003FF PROTECTED