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
