Перейти к содержанию
    

Смешанные модели памяти

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

 

Имеется большой проект в LARGE (задано в опциях проекта, вкладка C-compiller)

Нужно к нему добавить 1 файл в модели SMALL (прерывания по Timer4)

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

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

 

Что посоветуете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Использовать 2 проекта:

1) (LARGE)основной: исключить из компиляции С-файл, но добавить OBJ

2) (SMALL)только копиляции без Link, полученный OBJ использовать в 1 проекте

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использовать 2 проекта:

1) (LARGE)основной: исключить из компиляции С-файл, но добавить OBJ

2) (SMALL)только копиляции без Link, полученный OBJ использовать в 1 проекте

А все сделать в одном проекте можно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выход есть.

Можно создать *.bat файл и заставить кейл работать через него.

Можно попробовать разобраться в конфликтах.

Сдается мне что компилятор обрабатывает файлы нормально (хотя может я и не прав). У меня две модели не конфликтовали.

Ошибка возникает на этапе линковки. Если идея верная то конфликт из-за использования глобальных переменных.

В модели LARGE они по умолчанию располагаются в XDATA? в модели SMALL в DATA (IDATA). Вот линкер и не может их увязать.

Советую попробовать при объявлении глобальных переменных жестко указать тип памяти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно создать *.bat файл и заставить кейл работать через него.

хороший вариант

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

можно попробовать:

void TIMER3_ISR (void) small interrupt 14

 

Результат компиляции меняется:

data=?? xdata=?? code=????

Изменено пользователем c8051

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...