shkal 0 16 апреля, 2011 Опубликовано 16 апреля, 2011 · Жалоба Добрый день, Пытаюсь использовать микрочиповские библиотеки перифирии. Среда MPLAB IDE 8.66, компилятор С30 3.25, pic24hj502gp. Добавляю в проект нужный файл библиотеки, и нужный заголовочный файл в <include>. Компиляция проходит, но линкер не видит ни одной функции, вызываемой из библиотеки. Попытка явно прописать пути к библиотечным файлам в build options к результату не приводит. Что делать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Danis 0 17 апреля, 2011 Опубликовано 17 апреля, 2011 · Жалоба Добрый день, Пытаюсь использовать микрочиповские библиотеки перифирии. Среда MPLAB IDE 8.66, компилятор С30 3.25, pic24hj502gp. Добавляю в проект нужный файл библиотеки, и нужный заголовочный файл в <include>. Компиляция проходит, но линкер не видит ни одной функции, вызываемой из библиотеки. Попытка явно прописать пути к библиотечным файлам в build options к результату не приводит. Что делать? Не имея Вашего проекта, так прямо и не понять что у Вас не так. Проще всего, можете скачать какой нить демонстрационный проект для PIC24 (с сайта Microchip), с использованием периферийной библиотеки и изменить его под ваши цели. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shkal 0 17 апреля, 2011 Опубликовано 17 апреля, 2011 · Жалоба Проект простейший, в нем только один мой исходник .с, заголовочный файл контроллера, заголовочный файл библиотеки, скрипт линкера для контроллера (не модифицировал) и сама библиотека. Если не пытаться использовать библиотечные функции, всё работает нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
volodya_t 0 18 апреля, 2011 Опубликовано 18 апреля, 2011 · Жалоба Проект простейший, в нем только один мой исходник .с, заголовочный файл контроллера, заголовочный файл библиотеки, скрипт линкера для контроллера (не модифицировал) и сама библиотека. Если не пытаться использовать библиотечные функции, всё работает нормально. Вы хотя-бы привели лог компилятора - линкера. Может "кто нить - ченить подскажет". А то тайны мадридского двора прямо :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shkal 0 18 апреля, 2011 Опубликовано 18 апреля, 2011 · Жалоба Ещё раз собрал с нуля проект. В нём следующие файлы: 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_t 0 18 апреля, 2011 Опубликовано 18 апреля, 2011 · Жалоба Ещё раз собрал с нуля проект. В нём следующие файлы: 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 0 18 апреля, 2011 Опубликовано 18 апреля, 2011 · Жалоба Огромное спасибо, и кстати стала понятна логика микрочипа - по умолчанию заголовочный фаил подразумевает управление LCD через порт D, которого нет в 28 и 44-ногих моделях, поэтому в библиотеку для 502 и 504 модели эти функции не включены, а для 506 уже есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться