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

 
 
> Смешанные модели памяти, SiLabs IDE+Keil
gala
сообщение Nov 22 2009, 12:19
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 119
Регистрация: 29-11-05
Из: Украина, Черкассы
Пользователь №: 11 564



Смешанные модели памяти в SiLabs IDE+Keil

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

Что посоветуете?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
c8051
сообщение Nov 22 2009, 12:44
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 10-06-08
Из: Украина, Черкассы-Киев
Пользователь №: 38 188



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

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

Использовать 2 проекта:
1) (LARGE)основной: исключить из компиляции С-файл, но добавить OBJ
2) (SMALL)только копиляции без Link, полученный OBJ использовать в 1 проекте
Go to the top of the page
 
+Quote Post
gala
сообщение Nov 22 2009, 12:46
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 119
Регистрация: 29-11-05
Из: Украина, Черкассы
Пользователь №: 11 564



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

А все сделать в одном проекте можно?
Go to the top of the page
 
+Quote Post
редактор
сообщение Nov 23 2009, 06:15
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



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


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
c8051
сообщение Nov 23 2009, 06:45
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 10-06-08
Из: Украина, Черкассы-Киев
Пользователь №: 38 188



Цитата(редактор @ Nov 23 2009, 10:15) *
Можно создать *.bat файл и заставить кейл работать через него.

хороший вариант
Go to the top of the page
 
+Quote Post
c8051
сообщение Nov 23 2009, 13:10
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 10-06-08
Из: Украина, Черкассы-Киев
Пользователь №: 38 188



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

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

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

Результат компиляции меняется:
data=?? xdata=?? code=????

Сообщение отредактировал c8051 - Nov 23 2009, 13:13
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 12:12
Рейтинг@Mail.ru


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