25.05.2014, 17:02
|
|
Прохожий
Регистрация: 15.11.2007
Сообщений: 4
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Проблема с компилированием PIC16F88 (ASM)
При компилировании получаю такую ошибку:
//-----------------------------------------------------------------------------------
MPASMWIN.exe /e"./main.err" /l"./main.lst" /o"main.o" /q- /p16f88 "..\main.asm"
mplink.exe /p16f88 /o "./Release.cof" "main.o"
MPLINK 4.42, Linker
Device Database Version 1.7
Copyright (c) 1998-2011 Microchip Technology Inc.
Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000000, length=0x00001d88
Errors : 1
//-----------------------------------------------------------------------------------
Программа начинается с 0x00000000 и заканчивается 0x00001d88
По адресу 0x002100 идет eeprom... Не могу понять, чего он ругается ?
Притом что объектный файл делается нормально, а вот HEX - выдает ошибку...
Побывал и в Протеусе и в МПлабе - всюду одно и тоже (((
Код программы:
Последний раз редактировалось Da1VeR; 25.05.2014 в 18:31.
|
|
|
|
25.05.2014, 17:39
|
|
Заблокирован
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
|
Re: Проблема с компилированием PIC16F88 (ASM)
Размер флеш-памяти PIC16F88 меньше, чем размер программы.
|
|
|
|
25.05.2014, 17:54
|
|
Прохожий
Регистрация: 15.11.2007
Сообщений: 4
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проблема с компилированием PIC16F88 (ASM)
Сообщение от Yurkin2014
|
Размер флеш-памяти PIC16F88 меньше, чем размер программы.
|
Да в общем-то быть такого не может, данный код вытянут с дисассеблера прошивки для PIC16F88... мне нужно одну функцию добавить...
Но до этого вначале данный код нужно запустить...
Да и при переносе на PIC16F887 (у которого в 2 раза больше места под программу) вылазит та же ошибка ... ... хотя по линку - вроде все должно влазить...
Код:
|
// File: 16f887_g.lkr
// Generic linker script for the PIC16F887 processor
LIBPATH .
CODEPAGE NAME=page0 START=0x0 END=0x7FF
CODEPAGE NAME=page1 START=0x800 END=0xFFF
CODEPAGE NAME=page2 START=0x1000 END=0x17FF
CODEPAGE NAME=page3 START=0x1800 END=0x1FFF
CODEPAGE NAME=eedata START=0x2100 END=0x21FF PROTECTED |
Последний раз редактировалось Da1VeR; 25.05.2014 в 18:23.
|
|
|
|
25.05.2014, 21:04
|
|
Вид на жительство
Регистрация: 12.12.2012
Сообщений: 370
Сказал спасибо: 31
Сказали Спасибо 204 раз(а) в 112 сообщении(ях)
|
Re: Проблема с компилированием PIC16F88 (ASM)
В своё время достала эта ошибка , когда начинал.
Программа у вас странная по организации.
END в конце не стоитдо кучи.
C ORG разберитесь.
Я в своё время подправил линкер для себя , у других тоже не шло.
|
|
|
|
25.05.2014, 21:16
|
|
Прохожий
Регистрация: 15.11.2007
Сообщений: 4
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проблема с компилированием PIC16F88 (ASM)
Сообщение от Sergey_57
|
В своё время достала эта ошибка , когда начинал.
Программа у вас странная по организации.
END в конце не стоитдо кучи.
C ORG разберитесь.
Я в своё время подправил линкер для себя , у других тоже не шло.
|
END в конце есть:
Код:
|
L_0EC0:
sleep
bsf PCLATH,3
goto L_0EC0
end |
ORG всего 2 штуки, один указывающий запись eeprom "org 0x002100", и один указывающий на начало самого кода "org 0x000000"..
Код:
|
; Eeprom memory dump
org 0x002100
de 0x04,0x04,0x04,0x1F,0x04,0x04,0x04,0x04
de 0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00
de 0x0E,0x1F,0x11,0x11,0x11,0x11,0x11,0x1F
de 0x0E,0x1F,0x11,0x11,0x11,0x11,0x1F,0x1F
de 0x0E,0x1F,0x11,0x11,0x11,0x1F,0x1F,0x1F
de 0x0E,0x1F,0x11,0x11,0x1F,0x1F,0x1F,0x1F
de 0x0E,0x1F,0x11,0x1F,0x1F,0x1F,0x1F,0x1F
de 0x0E,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F
org 0x000000
ResetVector:
clrf REG032
goto L_015A
L_0002:
movwf REG028
andlw 0xF8 ;b'1111 1000','ø',.248
HighInterruptVector:
movwf REG020
rrf REG020,F
rrf REG020,F
rrf REG020,W
addwf FSR,F
call L_0082
movwf REG028
andwf INDF,W
return |
А как линкер подправить? А то при компиляции все в порядке, объектный файл создается, а вот когда линковка идет уже в HEX то вылетает такая проблема.
|
|
|
|
25.05.2014, 21:51
|
|
Вид на жительство
Регистрация: 12.12.2012
Сообщений: 370
Сказал спасибо: 31
Сказали Спасибо 204 раз(а) в 112 сообщении(ях)
|
Re: Проблема с компилированием PIC16F88 (ASM)
Код:
|
RESET_VECTOR
CODE 0x0000 ; processor reset vector
nop ; nop required for icd
GOTO INIT ; go to beginning of program
ORG 0x004
MOVWF WTEMP ; save off current W register contents
SWAPF STATUS ,0 ; move status register into W register
CLRF STATUS
MOVWF STEMP
MOVF PCLATH,0
MOVWF PCTEMP
BCF PCLATH,3
MOVF FSR, 0
MOVWF FTEMP
BCF STATUS,5
GOTO INT10
ORG 0x15
;------------ interrupt vector location----------------------------
INT10
;---------------------------------------------------------------------
BTFSC INTCON,1
GOTO S1; INT
BTFSC INTCON,2
GOTO S2; TMR0
BTFSC PIR1,0
GOTO S3; TMR1
BTFSC PIR1,1
GOTO S4; TMR2
;---------------------------------------------------------------------- |
Код:
|
// Sample linker command file for 16F873
// $Id: 16f873a.lkr,v 1.4 2006/02/04 00:06:40 nairnj Exp $
LIBPATH .
CODEPAGE NAME=vectors START=0x0 END=0x14 PROTECTED
CODEPAGE NAME=page0 START=0x15 END=0x7FF
CODEPAGE NAME=page1 START=0x800 END=0xFFF
CODEPAGE NAME=.idlocs START=0x2000 END=0x2003 PROTECTED
CODEPAGE NAME=.config START=0x2007 END=0x2007 PROTECTED
CODEPAGE NAME=eedata START=0x2100 END=0x217F PROTECTED
DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED
DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
SHAREBANK NAME=gpr0 START=0x20 END=0x7F
SHAREBANK NAME=gpr0 START=0x120 END=0x17F
SHAREBANK NAME=gpr1 START=0xA0 END=0xFF
SHAREBANK NAME=gpr1 START=0x1A0 END=0x1FF |
|
|
|
Сказали "Спасибо" Sergey_57
|
|
|
25.05.2014, 22:00
|
|
Прохожий
Регистрация: 15.11.2007
Сообщений: 4
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проблема с компилированием PIC16F88 (ASM)
Извиняюсь за не столь великие познания, а что именно нужно править?
Можете посмотреть файлы?
Последний раз редактировалось Da1VeR; 25.05.2014 в 22:17.
|
|
|
|
25.05.2014, 22:42
|
|
Вид на жительство
Регистрация: 12.12.2012
Сообщений: 370
Сказал спасибо: 31
Сказали Спасибо 204 раз(а) в 112 сообщении(ях)
|
Re: Проблема с компилированием PIC16F88 (ASM)
Цитата:
|
start=0x00000000, length=0x00001d88
|
а у вас страница 7FF в линкере указана.
потому и орёт.
Цитата:
|
CODEPAGE NAME=page0 START=0x0 END=0x7FF
#IFDEF _DEBUGCODESTART
CODEPAGE NAME=page1 START=0x800 END=_CODEEND
|
Не увидел переключения страниц.
|
|
|
|
26.05.2014, 01:14
|
|
Частый гость
Регистрация: 19.10.2006
Адрес: te.ua
Сообщений: 12
Сказал спасибо: 2
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Проблема с компилированием PIC16F88 (ASM)
у меня Ваш "исходник" скомпилировался сразу (в MPLAB 8.92):
Цитата:
|
MPLINK 4.49, Linker
Device Database Version 1.14
Copyright (c) 1998-2011 Microchip Technology Inc.
Errors : 0
Loaded C:\Users\maxx\Desktop\tst_16f88\tst.cof.
----------------------------------------------------------------------
Debug build of project `C:\Users\maxx\Desktop\tst_16f88\tst.mcp' succeeded.
Language tool versions: MPASMWIN.exe v5.51, mplink.exe v4.49, mplib.exe v4.49
Preprocessor symbol `__DEBUG' is defined.
Mon May 26 00:05:05 2014
----------------------------------------------------------------------
BUILD SUCCEEDED
|
http://ww1.microchip.com/downloads/e...B_IDE_8_92.zip
Последний раз редактировалось maxx_kazus; 26.05.2014 в 18:08.
|
|
|
|
26.05.2014, 10:14
|
|
Вид на жительство
Регистрация: 12.12.2012
Сообщений: 370
Сказал спасибо: 31
Сказали Спасибо 204 раз(а) в 112 сообщении(ях)
|
Re: Проблема с компилированием PIC16F88 (ASM)
Всё правильно.
Надо просить у maxx_kazus линкер.
С Вашими проблемы.
С этим ПИК не работал . Но принцип Вашей беды понятен.
Но так просто в линкер влезать нельзя.
Код:
|
start=0x00000000, length=0x00001d88 |
К примеру изменить в секции 7FF на 1FFF у вас всё прокатит,
но не факт что заработает. Надо знать организацию памяти и если выходит за область страницы то и переключать страницы.
Линкер следит за структурой программы в том числе.
Давно уже с Си.
И всё себя ругаю почему не сделал раньше.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:01.
|
|