Jump to content

    

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

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

 

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

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

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

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

 

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

Share this post


Link to post
Share on other sites
Смешанные модели памяти в SiLabs IDE+Keil

 

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

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

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

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

Share this post


Link to post
Share on other sites
Использовать 2 проекта:

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

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

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

Share this post


Link to post
Share on other sites

Выход есть.

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
Можно создать *.bat файл и заставить кейл работать через него.

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

Share this post


Link to post
Share on other sites
Смешанные модели памяти в SiLabs IDE+Keil

 

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

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

void TIMER3_ISR (void) small interrupt 14

 

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

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

Edited by c8051

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this