Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Смешанные модели памяти
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
gala
Смешанные модели памяти в SiLabs IDE+Keil

Имеется большой проект в LARGE (задано в опциях проекта, вкладка C-compiller)
Нужно к нему добавить 1 файл в модели SMALL (прерывания по Timer4)
#pragma small дает ошибку, т.к. конфликт с general настройками
Поменять весь проект на small - нельзя, т.к. "чужие" файлы используют библиотеки в модели large

Что посоветуете?
c8051
Цитата(gala @ Nov 22 2009, 15:19) *
Смешанные модели памяти в SiLabs IDE+Keil

Поменять весь проект на small - нельзя, т.к. "чужие" файлы используют библиотеки в модели large

Использовать 2 проекта:
1) (LARGE)основной: исключить из компиляции С-файл, но добавить OBJ
2) (SMALL)только копиляции без Link, полученный OBJ использовать в 1 проекте
gala
Цитата(c8051 @ Nov 22 2009, 16:44) *
Использовать 2 проекта:
1) (LARGE)основной: исключить из компиляции С-файл, но добавить OBJ
2) (SMALL)только копиляции без Link, полученный OBJ использовать в 1 проекте

А все сделать в одном проекте можно?
редактор
Выход есть.
Можно создать *.bat файл и заставить кейл работать через него.
Можно попробовать разобраться в конфликтах.
Сдается мне что компилятор обрабатывает файлы нормально (хотя может я и не прав). У меня две модели не конфликтовали.
Ошибка возникает на этапе линковки. Если идея верная то конфликт из-за использования глобальных переменных.
В модели LARGE они по умолчанию располагаются в XDATA? в модели SMALL в DATA (IDATA). Вот линкер и не может их увязать.
Советую попробовать при объявлении глобальных переменных жестко указать тип памяти.
c8051
Цитата(редактор @ Nov 23 2009, 10:15) *
Можно создать *.bat файл и заставить кейл работать через него.

хороший вариант
c8051
Цитата(gala @ Nov 22 2009, 16:19) *
Смешанные модели памяти в SiLabs IDE+Keil

#pragma small дает ошибку, т.к. конфликт с general настройками

можно попробовать:
void TIMER3_ISR (void) small interrupt 14

Результат компиляции меняется:
data=?? xdata=?? code=????
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.