реклама на сайте
подробности

 
 
> вектор прерывания
swagger
сообщение Apr 9 2008, 16:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 18-01-08
Из: Moscow
Пользователь №: 34 201



Добрый день!
Сейчас изучаю модуль mssp, хочу сделать обмен по I2C c внешней памятью. Скачал архив AN734 (http://www.microchip.com), переделал линкер под 16F876a(закомментированые строчки от предыдущего файла)
Код
// File: 16f876a.lkr
// Linker Script file, modified
// Date: 06/07/2000
// Modified 7/18/2000 -.RLF


LIBPATH  .

CODEPAGE   NAME=vectors  START=0x0000   END=0x0004   PROTECTED
CODEPAGE   NAME=page0    START=0x0005   END=0x07FF
CODEPAGE   NAME=page1    START=0x0800   END=0x0FFF
CODEPAGE   NAME=page2    START=0x1000   END=0x17FF
CODEPAGE   NAME=page3    START=0x1800   END=0x1FFF
CODEPAGE   NAME=.idlocs  START=0x2000   END=0x2003   PROTECTED
CODEPAGE   NAME=.config  START=0x2007   END=0x2007   PROTECTED
CODEPAGE   NAME=eedata   START=0x2100   END=0x21FF   PROTECTED


//CODEPAGE   NAME=vectors  START=0x0      END=0x70    PROTECTED
//CODEPAGE   NAME=page0    START=0x71     END=0x7FF
//CODEPAGE   NAME=page1    START=0x800    END=0xFFF    PROTECTED
//CODEPAGE   NAME=.idlocs  START=0x2000   END=0x2003   PROTECTED
//CODEPAGE   NAME=.config  START=0x2007   END=0x2007   PROTECTED

//Special Function Registers in Banks 0-3
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
//General Purpose RAM in Banks 0-3
DATABANK   NAME=gpr0     START=0x20     END=0x6F
DATABANK   NAME=gpr1     START=0xA0     END=0xEF
DATABANK   NAME=gpr2     START=0x110    END=0x16F
DATABANK   NAME=gpr3     START=0x190    END=0x1EF
//General Purpose RAM - available in all banks
SHAREBANK  NAME=gprnobnk START=0x70     END=0x7F
SHAREBANK  NAME=gprnobnk START=0xF0     END=0xFF
SHAREBANK  NAME=gprnobnk START=0x170    END=0x17F
SHAREBANK  NAME=gprnobnk START=0x1F0    END=0x1FF


//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

//DATABANK   NAME=gpr0     START=0x20     END=0x7F
//DATABANK   NAME=gpr1     START=0xA0     END=0xFF


SECTION    NAME=STARTUP  ROM=vectors    // Reset and interrupt vectors
SECTION    NAME=PROG1    ROM=page0      // ROM code space - page0
SECTION    NAME=PROG2    ROM=page1      // ROM code space - page1
SECTION       NAME=IDLOCS   ROM=.idlocs    // ID locations
SECTION    NAME=CONFIG   ROM=.config    // Configuration bits location


и пытаюсь запустить, но МПЛАБ пишет ошибку:

MPLINK 4.11, Linker
Copyright © 2007 Microchip Technology Inc.
Error - section 'INT_VECTOR' can not fit the absolute section. Section 'INT_VECTOR' start=0x00000004, length=0x000001a4
Errors : 1

Как я понимаю, чтото с вектором прерывания. В чем ошибка? Что надо подправить?

Может вообще надо както делать обмен по другому?

Сообщение отредактировал swagger - Apr 9 2008, 16:55
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
swagger
сообщение Apr 10 2008, 04:02
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 18-01-08
Из: Moscow
Пользователь №: 34 201



Посмотрел в хелпе, там пишется
Код
Section 'secName' can not fit the absolute section. Section 'secName' start=0xHHHH, length=0xHHHH.
A section which has not been assigned to a memory in the linker command file can not be allocated. Use the -m <mapfile> switch to generate an error map file. The error map will show the sections which were allocated prior to the error. More memory must be made available by adding a CODEPAGE, SHAREBANK, or DATABANK directive, or by removing the PROTECTED attribute, or the number of input sections must be reduced.


вот map файл
Код
MPLINK 4.11, Linker
Linker Error Map File - Created Wed Apr 09 18:49:06 2008

*Warning* - This is only a partial map file due to a link time error.
   Only sections which were allocated prior to the error are shown below.

CODEPAGES:
    Memory      Start        End              Section    Address Size(Bytes)
---------  ---------  ---------            ---------  ---------  ---------
   vectors     0x0000     0x0004                                          

     page0     0x0005     0x07ff                                          

     page1     0x0800     0x0fff                                          

     page2     0x1000     0x17ff                                          

     page3     0x1800     0x1fff                                          

   .idlocs     0x2000     0x2003                                          

   .config     0x2007     0x2007              .config     0x2007     0x0002

    eedata     0x2100     0x21ff                                          


SHAREBANKS:
    Memory      Start        End              Section    Address Size(Bytes)
---------  ---------  ---------            ---------  ---------  ---------
  gprnobnk     0x0070     0x007f                                          

  gprnobnk     0x00f0     0x00ff                                          

  gprnobnk     0x0170     0x017f                                          

  gprnobnk     0x01f0     0x01ff                                          


DATABANKS:
    Memory      Start        End              Section    Address Size(Bytes)
---------  ---------  ---------            ---------  ---------  ---------
      sfr0     0x0000     0x001f                                          

      sfr1     0x0080     0x009f                                          

      sfr2     0x0100     0x010f                                          

      sfr3     0x0180     0x018f                                          

      gpr0     0x0020     0x006f              INT_VAR     0x0020     0x0003

      gpr1     0x00a0     0x00ef             INT_VAR1     0x00a0     0x0001

      gpr2     0x0110     0x016f                                          

      gpr3     0x0190     0x01ef                                          


ACCESSBANKS:

провел эсперимент: изменил адрес вектора прерывания с 004 на 005 - все нормально копмилится. Вывод - этот макрос не подходит для этого контроллера? Или как то можно обойти это?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 10:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01416 секунд с 7
ELECTRONIX ©2004-2016