Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MPLAB C30, IDE и библиотеки
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
shkal
Добрый день,
Пытаюсь использовать микрочиповские библиотеки перифирии. Среда MPLAB IDE 8.66, компилятор С30 3.25, pic24hj502gp. Добавляю в проект нужный файл библиотеки, и нужный заголовочный файл в <include>.
Компиляция проходит, но линкер не видит ни одной функции, вызываемой из библиотеки. Попытка явно прописать пути к библиотечным файлам в build options к результату не приводит. Что делать?
Danis
Цитата(shkal @ Apr 16 2011, 23:53) *
Добрый день,
Пытаюсь использовать микрочиповские библиотеки перифирии. Среда MPLAB IDE 8.66, компилятор С30 3.25, pic24hj502gp. Добавляю в проект нужный файл библиотеки, и нужный заголовочный файл в <include>.
Компиляция проходит, но линкер не видит ни одной функции, вызываемой из библиотеки. Попытка явно прописать пути к библиотечным файлам в build options к результату не приводит. Что делать?


Не имея Вашего проекта, так прямо и не понять что у Вас не так. Проще всего, можете скачать какой нить демонстрационный проект для PIC24 (с сайта Microchip), с использованием периферийной библиотеки и изменить его под ваши цели.
shkal
Проект простейший, в нем только один мой исходник .с, заголовочный файл контроллера, заголовочный файл библиотеки, скрипт линкера для контроллера (не модифицировал) и сама библиотека.
Если не пытаться использовать библиотечные функции, всё работает нормально.
volodya
Цитата(shkal @ Apr 17 2011, 14:04) *
Проект простейший, в нем только один мой исходник .с, заголовочный файл контроллера, заголовочный файл библиотеки, скрипт линкера для контроллера (не модифицировал) и сама библиотека.
Если не пытаться использовать библиотечные функции, всё работает нормально.


Вы хотя-бы привели лог компилятора - линкера. Может "кто нить - ченить подскажет".
А то тайны мадридского двора прямо laughing.gif
shkal
Ещё раз собрал с нуля проект. В нём следующие файлы:
1) start.c - мой исходник
2)xlcd_my.h - модифицированный под мой контроллер заголовочный библиотеки. Изменены только назначения пинов.
3)p24hj64gp502.h
4)libp24hj64gp502-coff.a - сама библиотека
5)p24hj64gp502.gld - скрипт линкера.

Выдача компилера\линкера:

..\start\start.c: In function 'main':
..\start\start.c:29: warning: unused variable 'chAstate'
..\start\start.c: In function '_T1Interrupt':
..\start\start.c:110: warning: PSV model not specified for '_T1Interrupt';
assuming 'auto_psv' this may affect latency
..\start\start.c: In function '_SPI1Interrupt':
..\start\start.c:150: warning: PSV model not specified for '_SPI1Interrupt';
assuming 'auto_psv' this may affect latency
Executing: "C:\Program Files\Microchip\mplabc30\v3.25\bin\pic30-gcc.exe" -mcpu=24HJ64GP502 "start.o" "C:\Program Files\Microchip\mplabc30\v3.25\lib\PIC24H\libp24HJ64GP502-coff.a" -o"my.cof" -Wl,--script="..\..\Program Files\Microchip\mplabc30\v3.25\support\PIC24H\gld\p24HJ64GP502.gld",--defsym=__MPLAB_BUILD=1,--defsym=__MPLAB_DEBUG=1,-Map="my.map",--report-mem
Microchip MPLAB C30 License Manager Version v3_25 (Build Date Oct 11 2010).
Copyright © 2008 Microchip Technology Inc. All rights reserved.
The MPLAB C30 license has expired.
Options have been disabled due to expired license
Visit http://www.microchip.com/ to purchase a new key.


Program Memory [Origin = 0x200, Length = 0xaa00]

section address length (PC units) length (bytes) (dec)
------- ------- ----------------- --------------------
.text 0x200 0x90 0xd8 (216)
.const 0x290 0x18 0x24 (36)
.text 0x2a8 0x180 0x240 (576)
.dinit 0x428 0x8 0xc (12)
.isr 0x430 0x2 0x3 (3)

Total program memory used (bytes): 0x34b (843) 1%


Data Memory [Origin = 0x800, Length = 0x2000]

section address alignment gaps total length (dec)
------- ------- -------------- -------------------
.nbss 0x800 0 0x8 (8)

Total data memory used (bytes): 0x8 (8) <1%


Dynamic Memory Usage

region address maximum length (dec)
------ ------- ---------------------
heap 0 0 (0)
stack 0x808 0x1ff8 (8184)

Maximum dynamic memory (bytes): 0x1ff8 (8184)

start.o(.text+0xba): In function `main':
C:\a\my_prj\..\start\start.c:95: undefined reference to `OpenXLCD'
start.o(.text+0xbe):C:\a\my_prj\..\start\start.c:96: undefined reference to `WriteCmdXLCD'
start.o(.text+0xc2):C:\a\my_prj\..\start\start.c:97: undefined reference to `putsXLCD'
start.o(.text+0xc6):C:\a\my_prj\..\start\start.c:98: undefined reference to `SetDDRamAddr'
start.o(.text+0xca):C:\a\my_prj\..\start\start.c:99: undefined reference to `putsXLCD'
Link step failed.
volodya
Цитата(shkal @ Apr 18 2011, 13:47) *
Ещё раз собрал с нуля проект. В нём следующие файлы:
1) start.c - мой исходник
2)xlcd_my.h - модифицированный под мой контроллер заголовочный библиотеки. Изменены только назначения пинов.
3)p24hj64gp502.h
4)libp24hj64gp502-coff.a - сама библиотека
5)p24hj64gp502.gld - скрипт линкера.

start.o(.text+0xba): In function `main':
C:\a\my_prj\..\start\start.c:95: undefined reference to `OpenXLCD'
start.o(.text+0xbe):C:\a\my_prj\..\start\start.c:96: undefined reference to `WriteCmdXLCD'
start.o(.text+0xc2):C:\a\my_prj\..\start\start.c:97: undefined reference to `putsXLCD'
start.o(.text+0xc6):C:\a\my_prj\..\start\start.c:98: undefined reference to `SetDDRamAddr'
start.o(.text+0xca):C:\a\my_prj\..\start\start.c:99: undefined reference to `putsXLCD'
Link step failed.


А похоже для Вашего контроллера этот модуль в библиотеке отсутствует.
Попробуйте любым вьюветом посмотреть файл *-coff.a- для 506 - есть а для 502 функции отсутствуют (о чем честно сообщает линкер).
Объяснения не нашел.
Просто добавте в проект файлы из ...\src\peripheral_30F_24H_33F\src\pmc\xlcd\
и скомпилируйте с ними (может придется их подшаманить).
shkal
Огромное спасибо, и кстати стала понятна логика микрочипа - по умолчанию заголовочный фаил подразумевает управление LCD через порт D, которого нет в 28 и 44-ногих моделях, поэтому в библиотеку для 502 и 504 модели эти функции не включены, а для 506 уже есть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.