Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 16.03.2019, 13:15   #1
ivan_fd
Member
 
Регистрация: 16.03.2009
Адрес: Украина
Возраст: 40
Сообщений: 55
Вес репутации: 100/40
ivan_fd will become famous soon enoughivan_fd will become famous soon enough
По умолчанию XC8 размер кода на разных контроллерах.

Доброго дня всем.
Прошу объяснить мне, почему так и есть ли выход?
Есть у меня один проект на контроллере 18f4525, в котором 48к памяти. Компилятор XC8 2.05. Проект занимает 50% програмной памяти. Оптимизация по максимуму. В конце пямяти оставлено 100 слов на бутлоадер.
Появилась необходимость перевести это все на pic18f452, в котором 32к памяти. Добавил к проекту этот контроллер. А не тут то было, компиляция проходит с ошибками о нехватке памяти. Отрубил я зарезервированное место для загрузчика, скомпилировалось. Занимает 100% памяти программ, там что то 20 слов остается.
Взял, создал проект с нуля для 452, перекинул файлы, настройки линкера, компилятора точно такие как в предыдущем, и опять ошибки о нехватке памяти.
Точно какая ошибка сказать не могу сейчас, компьютер на работе оставил.
Всем спасибо.
ivan_fd вне форума   Ответить с цитированием
Старый 16.03.2019, 14:04   #2
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,167
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

ivan_fd
clear and build делали?

вообще 20 слов осталось - это угол, вилы и факелы.
это похоже на ошибку в выборе контроллера, так как любое дальнейшее пожелание заказчика будет вызывать серьезные затруднения.

может стоит взять PIC18F26K40, заместо выбранной Вами, явно устаревшей модели для новой работы?

**
у Вас может быть какой-то параметр не передан.
по моему опыту эффективное использование памяти в pic14/pic16 в рамках Си решается плохо. набор инструкций не располагает.
Иначе говоря, Вам пишет, что 20 слов осталось - так вот эти слова вполне могут быть раскиданы так, что их нереально использовать.

можете сбросить свои коды или их куски, что Вы считаете проблемными - может кто-либо из любителей покопаться в чужих кодах даст Вам дельный совет.
besogon вне форума   Ответить с цитированием
Старый 16.03.2019, 14:21   #3
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,599
Вес репутации: 3588/105
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от besogon Посмотреть сообщение
может стоит взять PIC18F26K40
Тогда уж PIC18F26K22.
Марк вне форума   Ответить с цитированием
Старый 16.03.2019, 14:26   #4
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,599
Вес репутации: 3588/105
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от ivan_fd Посмотреть сообщение
Прошу объяснить мне, почему так и есть ли выход?а
1. Почему так? Так потому, что boot всегда размещен на ОДНОМ СЕГМЕНТЕ СТИРАНИЯ флеша. И не имеет значения сколько он занимает на этом сегменте. Сегмент для остального кода будет исключен линкером СОВСЕМ.
Поэтому 100+2 не равно 102.
2. Выход есть. Взять другой контроллер. С заявленным потребуется переработка кода с целью его минимизации. Например, написать свои драйверы вместо библиотечных. Не использовать флоат без реальной нужды и отцепить математическую библиотеку. И тому подобное.
Короче, работать СВОЕЙ головой, а не чужой.
Марк вне форума   Ответить с цитированием
Старый 16.03.2019, 14:34   #5
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,599
Вес репутации: 3588/105
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от ivan_fd Посмотреть сообщение
В конце памяти оставлено 100 слов на бутлоадер.
А почему в конце? Первая страница стирания с векторами прерываний и вектором ресета впереди. Вы ее тоже стираете при загрузке?
Марк вне форума   Ответить с цитированием
Старый 16.03.2019, 16:07   #6
ivan_fd
Member
 
Регистрация: 16.03.2009
Адрес: Украина
Возраст: 40
Сообщений: 55
Вес репутации: 100/40
ivan_fd will become famous soon enoughivan_fd will become famous soon enough
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от besogon Посмотреть сообщение
ivan_fd
clear and build делали?
Делал.

Цитата:
Сообщение от besogon Посмотреть сообщение
может стоит взять PIC18F26K40, заместо выбранной Вами, явно устаревшей модели для новой работы?
Никаких заказчиков, это я для себя. Хобби у меня такое... На 4525 работает уже два года без проблем. Контроллер специально не выбирал, выбор идет исходя из того, что есть в наличии. 452 валяется уже много лет, решил сделать еще одни (часы это у меня :-)) сыну.


Цитата:
Сообщение от besogon Посмотреть сообщение
можете сбросить свои коды или их куски, что Вы считаете проблемными - может кто-либо из любителей покопаться в чужих кодах даст Вам дельный совет.
Коды не проблема сбросить, тайны там нету никакой. Только они сейчас на работе у меня. Да и, по себе сужу, разбираться в чужом коде, сами понимаете. А наворотил я там знатно. :-)

Цитата:
Сообщение от Марк
1. Почему так? Так потому, что boot всегда размещен на ОДНОМ СЕГМЕНТЕ СТИРАНИЯ флеша. И не имеет значения сколько он занимает на этом сегменте. Сегмент для остального кода будет исключен линкером СОВСЕМ.
Поэтому 100+2 не равно 102.
С этим понятно. Тут дело не в буте. Скажем так, он мне не особо то и нужен. Им можно и пожертвовать.
Меня в основном интересовало, то что 18f4525, в котором 48к памяти код занимал 50%, а при переходе на 452, в котором 32к памяти, все 100?? И при создании нового, с нуля проекта, для 452-го, с теми же файлами, с одинаковыми настройками компилятора и линкера, БЕЗ БУТА, ни в какую не хочет компилироватся.
В коде, у меня есть переменные массивы размером 150 байт. Так он, что то на них и ругается, что не может разместить в памяти. Но они то не памяти программ??

В коде не используются никакие библиотечные драйверы, все свое, так сказать.

Цитата:
Сообщение от Марк
А почему в конце? Первая страница стирания с векторами прерываний и вектором ресета впереди. Вы ее тоже стираете при загрузке?
Тут я не совсем понял. Bootloader использую Tinyloader. В нем сам загрузчик прописывается в конец памяти и, если мне не изменяет память, занимает 100 слов.

А, что первую страницу с векторами стирать нельзя? Объясните я не совсем понимаю.
ivan_fd вне форума   Ответить с цитированием
Старый 16.03.2019, 17:12   #7
masterok999
Senior Member
 
Регистрация: 28.07.2015
Адрес: NA
Возраст: 55
Сообщений: 242
Вес репутации: 1001/28
masterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud of
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от ivan_fd Посмотреть сообщение
А, что первую страницу с векторами стирать нельзя? Объясните я не совсем понимаю.

Нельзя, потому что в случае стирания в бут не попасть - векторы уничтожены.
Лучше бут разместить вначале, для этого даже защищенная область имеется,
да и читать/писать в нее без разрешения можно запретить при прошивке.
masterok999 вне форума   Ответить с цитированием
Старый 16.03.2019, 17:13   #8
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,167
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

ivan_fd
если тираж изделия меньше 10 единиц, то лучше закажите другой контроллер. меньше будет проблем.

Никаких заказчиков, это я для себя. - тем более если для себя любимого, возьмите другой контроллер, заместо устаревшего.

почтой закажите.

Да и, по себе сужу, разбираться в чужом коде, сами понимаете. - по разному бывает. бывает нормальный код, бывает нет. какие-то глубокие промахи Вам наверняка смогут сразу указать.
besogon вне форума   Ответить с цитированием
Старый 16.03.2019, 17:17   #9
masterok999
Senior Member
 
Регистрация: 28.07.2015
Адрес: NA
Возраст: 55
Сообщений: 242
Вес репутации: 1001/28
masterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud ofmasterok999 has much to be proud of
По умолчанию Re: XC8 размер кода на разных контроллерах.

Так ему нет смысла заказывать новый если есть неликвиды - "452 валяется уже много лет"
тем более для баловства...
masterok999 вне форума   Ответить с цитированием
Старый 16.03.2019, 18:04   #10
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,599
Вес репутации: 3588/105
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от ivan_fd Посмотреть сообщение
В коде, у меня есть переменные массивы размером 150 байт. Так он, что то на них и ругается, что не может разместить в памяти. Но они то не памяти программ??
А причем тут флеш? Вы ранее жаловались на флеш. Как нибудь определитесь.
ОЗУ должно хватать.
Бут может съесть от ОЗУ очень много. Ему нужен буфер приема.
Про размещение бута Вам уже сказали.
Если проект не компилится, нужно прочитать что про это говорит Output проекта. Приведите резюме билда.
Марк вне форума   Ответить с цитированием
Старый 16.03.2019, 18:12   #11
ivan_fd
Member
 
Регистрация: 16.03.2009
Адрес: Украина
Возраст: 40
Сообщений: 55
Вес репутации: 100/40
ivan_fd will become famous soon enoughivan_fd will become famous soon enough
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от masterok999 Посмотреть сообщение
Нельзя, потому что в случае стирания в бут не попасть - векторы уничтожены.
Лучше бут разместить вначале, для этого даже защищенная область имеется,
да и читать/писать в нее без разрешения можно запретить при прошивке.
Так загрузчик не стирает начальные вектора, по нулевому адресу идет переход на старт программы загрузчика.

А вот про защищенную область поподробнее. Где она в 18f4525, объясните пожалуйста.

P.s: загрузчик от микрочипа, по моему an1310, если не ошибаюсь, так же сидит в конце памяти.
ivan_fd вне форума   Ответить с цитированием
Старый 16.03.2019, 18:20   #12
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,599
Вес репутации: 3588/105
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от ivan_fd Посмотреть сообщение
Так загрузчик не стирает начальные вектора, по нулевому адресу идет переход на старт программы загрузчика.
Тогда выпадает 32 инструкции из памяти. Код будет смещен на эти 64 байта, о чем надо побеспокоиться. Линкер о Ваших намерениях не извещен и спокойно приклеит участок загружаемого кода в эти 32 инструкции. А Вы их сотрете в попытке загрузить новый код. Вместе с векторами сброса и прерываний.
Марк вне форума   Ответить с цитированием
Старый 16.03.2019, 18:42   #13
ivan_fd
Member
 
Регистрация: 16.03.2009
Адрес: Украина
Возраст: 40
Сообщений: 55
Вес репутации: 100/40
ivan_fd will become famous soon enoughivan_fd will become famous soon enough
По умолчанию Re: XC8 размер кода на разных контроллерах.

Чесно говоря с загрузчиками сильно не разбирался.
По этому никак не пойму почему он сотрет.
С этим лоадером, что я зашил в контроллер, нормально все работает. Пршивал через него кучу раз. Смотрел считанный после программирования лоадером файл, все там нормально. Нужно сесть еще раз посмотреть и вспомнить.
А вот микрочиповский лоадер не хочет работать с компилятором xc8.
ivan_fd вне форума   Ответить с цитированием
Старый 16.03.2019, 18:49   #14
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,599
Вес репутации: 3588/105
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от ivan_fd Посмотреть сообщение
все там нормально
Это лишь говорит о том, что Вы не разобрались где расположено тело бута.
Оно может быть В РАЗНЫХ местах. Например, нулевая страница стирания содержит ремап векторов прерываний и сброс, а остальное тело бута в конце.
Если стереть первую страницу, то исчезнет переход на ЛЮБОЙ КОД.
Стирать меньше одной страницы (в этом МК - 64 байта) НЕВОЗМОЖНО. Так устроен автомат программирования флеша. И не только в ПИКах.
Марк вне форума   Ответить с цитированием
Старый 16.03.2019, 19:03   #15
ivan_fd
Member
 
Регистрация: 16.03.2009
Адрес: Украина
Возраст: 40
Сообщений: 55
Вес репутации: 100/40
ivan_fd will become famous soon enoughivan_fd will become famous soon enough
По умолчанию Re: XC8 размер кода на разных контроллерах.

Марк, извините. Если есть желание, посмотрите в сети tinyloader. У меня сейчас нету возможности, пишу все с телефона. Там, если я помню, по нулевому адресу, org 0 goto startloader. Ремапа векторов прерываний нету. Может я, что то не правильно понимаю.
Спасибо.
ivan_fd вне форума   Ответить с цитированием
Старый 18.03.2019, 12:25   #16
Sergey K
Senior Member
 
Регистрация: 23.10.2008
Адрес: Киев
Возраст: 37
Сообщений: 278
Вес репутации: 422/47
Sergey K is just really niceSergey K is just really niceSergey K is just really niceSergey K is just really niceSergey K is just really nice
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от ivan_fd Посмотреть сообщение
Там, если я помню, по нулевому адресу, org 0 goto startloader. Ремапа векторов прерываний нету. Может я, что то не правильно понимаю
Если у Вас бутлоадер в конце, то по нулевому адресу должна стоять команда org 0 goto startloader, и далее идет код самой прошивки. Когда Вы компилируете саму прошивку, для бутлоадера, то скорее всего у Вас по адресу 0 будет org 0 goto main и далее таблица векторов. Когда Вы будете загружать эту прошивку через бутлоадер, у Вас сотрется первые 64 байта флеша и будет записан новый код прошивки, в результате, после перезагрузки, по нулевому адресу будет запуск уже прошивки, а не бутлоадера. Я не знаю, возможно ли указать компилятору, что по нулевому адресу нужно разместить именно org 0 goto startloader, а org 0 goto startloader размещать по иному адресу, известному бутлоадеру. Также есть мизерная вероятность, что в момент между стиранием страницы памяти и записью в нулевую ячейку пропадет питание и камень не сможет старотовать без программатора.
По поводу различия в размере кода. Вполне возможно, что у более нового камня есть больше инструкций, которые позволяют резко сократить объем кода (Вы как раз используете много логики, которая использует именно эти инструкции).

Я пока не постиг тайну ремапинга векторов прерываний, поэтому под PIC24 я писал свой бутлоадер (на базе примеров, у меня нужно было реализовать свой алгоритм), который находится в конце флеша, а в момент прошивки бутлоадер на лету меняет содержимое инструкции по нулевому адресу.

Последний раз редактировалось Sergey K; 18.03.2019 в 12:30.
Sergey K вне форума   Ответить с цитированием
Старый 18.03.2019, 12:37   #17
ivan_fd
Member
 
Регистрация: 16.03.2009
Адрес: Украина
Возраст: 40
Сообщений: 55
Вес репутации: 100/40
ivan_fd will become famous soon enoughivan_fd will become famous soon enough
По умолчанию Re: XC8 размер кода на разных контроллерах.

Добрый день.
Добрался я до компьютера с проектом.



В принципе, скорее всего, не буду я на этом (452-м) делать. Просто
хотел разобраться почему так, что бы понять.


Интересует, то что я и писал в первом посте, почему на 18F4525 объем кода составляет (Program Used: 24 757 (0x60B5) Free: 24 395 (0x5F4B)), а на 18F452 - (Program Used: 32 689 (0x7FB1) Free: 79 (0x4F))


18F4525




18F452


Это картинки с проекта, который компилируется.


Когда создал проект только для 452, с теми же исходниками, то уже выдает ошибки при компиляции.



Прикрепляю файл OUTPUT с MPLABX проекта который не компилируется.
И полностью Два проекта рабочий и нет.
Ссылка на GoogleDisk https://drive.google.com/open?id=1ed...jvWZ7IO-Vfa-x3


Может кто будет иметь желание покопаться.
Спасибо.
Вложения
Тип файла: zip output.zip (6.4 Кб, 2 просмотров)

Последний раз редактировалось ivan_fd; 18.03.2019 в 12:47.
ivan_fd вне форума   Ответить с цитированием
Старый 18.03.2019, 12:43   #18
ivan_fd
Member
 
Регистрация: 16.03.2009
Адрес: Украина
Возраст: 40
Сообщений: 55
Вес репутации: 100/40
ivan_fd will become famous soon enoughivan_fd will become famous soon enough
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от Sergey K Посмотреть сообщение
Если у Вас бутлоадер в конце, то по нулевому адресу должна стоять команда org 0 goto startloader, и далее идет код самой прошивки.

Так и есть.




Цитата:
Сообщение от Sergey K Посмотреть сообщение
Когда Вы компилируете саму прошивку, для бутлоадера, то скорее всего у Вас по адресу 0 будет org 0 goto main и далее таблица векторов. Когда Вы будете загружать эту прошивку через бутлоадер, у Вас сотрется первые 64 байта флеша и будет записан новый код прошивки, в результате, после перезагрузки, по нулевому адресу будет запуск уже прошивки, а не бутлоадера.

Бутлоадер делает так как Вы написали -

Цитата:
бутлоадер на лету меняет содержимое инструкции по нулевому адресу



Цитата:
Сообщение от Sergey K Посмотреть сообщение

По поводу различия в размере кода. Вполне возможно, что у более нового камня есть больше инструкций, которые позволяют резко сократить объем кода (Вы как раз используете много логики, которая использует именно эти инструкции).



Примерно такие мысли и мне в голову приходили. Спасибо!!!
ivan_fd вне форума   Ответить с цитированием
Старый 18.03.2019, 17:47   #19
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,599
Вес репутации: 3588/105
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от Sergey K Посмотреть сообщение
Я пока не постиг тайну ремапинга векторов прерываний
Это совсем просто. Ремаппинг представляет из себя прибитые гвоздями к абсолютным адресам в основном коде вызовы настоящих обработчиков.
Таким образом, в модифицируемом коде вектора никогда не меняются и IVT/AIVT в начале флеша неизменна, независимо от основного кода.
Марк вне форума   Ответить с цитированием
Старый 18.03.2019, 21:47   #20
Zikon
Junior Member
 
Регистрация: 04.07.2012
Сообщений: 23
Вес репутации: 139/28
Zikon will become famous soon enoughZikon will become famous soon enough
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Интересует, то что я и писал в первом посте, почему на 18F4525 объем кода составляет (Program Used: 24 757 (0x60B5) Free: 24 395 (0x5F4B)), а на 18F452 - (Program Used: 32 689 (0x7FB1) Free: 79 (0x4F))
скорее всего на 18F4525 компилятор использует расширенные инструкции
(XINST=ON)
Zikon вне форума   Ответить с цитированием
Старый 19.03.2019, 11:21   #21
ivan_fd
Member
 
Регистрация: 16.03.2009
Адрес: Украина
Возраст: 40
Сообщений: 55
Вес репутации: 100/40
ivan_fd will become famous soon enoughivan_fd will become famous soon enough
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от Zikon Посмотреть сообщение
скорее всего на 18F4525 компилятор использует расширенные инструкции
(XINST=ON)

Нет, ХС8 ругается на расширенные инструкции. Говорит, что компилятор не поддерживает их.


Ладно ребята, всем спасибо! Что хотел, то узнал.
ivan_fd вне форума   Ответить с цитированием
Старый 23.03.2019, 21:08   #22
Sergey K
Senior Member
 
Регистрация: 23.10.2008
Адрес: Киев
Возраст: 37
Сообщений: 278
Вес репутации: 422/47
Sergey K is just really niceSergey K is just really niceSergey K is just really niceSergey K is just really niceSergey K is just really nice
По умолчанию Re: XC8 размер кода на разных контроллерах.

[QUOTE=Марк;240059]Ремаппинг представляет из себя прибитые гвоздями к абсолютным адресам в основном коде вызовы настоящих обработчиков.
Таким образом, в модифицируемом коде вектора никогда не меняются и IVT/AIVT в начале флеша неизменна, независимо от основного кода./QUOTE] так в штатной таблице векторов указывается сразу адрес перехода (одна команда), а если указать компилятору, что таблица векторов должна размещаться не в начале, а по другому указанному адресу, то нужно уже использовать не одну команду в таблице векторов, а две (goto состоит из двух инструкций). Т.е. нужно заставить компилятор генерировать таблицу векторов уже в несколько ином формате. Если же указывать в бутлоадере сразу адреса перехода, то нужно заранее знать их, а в процессе могократной модификации кода эти адреса будут часто изменяться. Скажу честно, я глубоко не разбирался, т.к. придумал решение, которое меня устроило (бутлоадер в конце).
Sergey K вне форума   Ответить с цитированием
Старый 24.03.2019, 06:47   #23
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Московская область
Возраст: 60
Сообщений: 2,599
Вес репутации: 3588/105
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

Цитата:
Сообщение от Sergey K Посмотреть сообщение
так в штатной таблице векторов указывается сразу адрес перехода (одна команда), а если указать компилятору, что таблица векторов должна размещаться не в начале, а по другому указанному адресу, то нужно уже использовать не одну команду в таблице векторов, а две (goto состоит из двух инструкций). Т.е. нужно заставить компилятор генерировать таблицу векторов уже в несколько ином формате. .
Таблица векторов не содержит никаких команд. Там размещены только сами вектора (код там в принципе не может быть размещен). При размещении ОБРАБОТЧИКОВ по фиксированным адресам компилятор (линкер) сам разместит эти адреса в IVT. Но в обработчиках не будет никакого исполняемого кода, кроме ВЫЗОВА РЕАЛЬНОГО ОБРАБОТЧИКА, который может быть размещен в любом удобном месте.
Таким образом, компилятор сгенерирует такой АСМ код:
Код:
.org  <fix adress>
__XXInterrupt:
   push.s
   call    ISR_XX
   pop.s
   retfie
__YYInterrupt:
   push.s
   call    ISR_YY
   pop.s
   retfie
__ZZInterrupt:
   push.s
   call    ISR_ZZ
   pop.s
   retfie
................
Так как эти псевдообработчики имеют фиксированную длину кода, вектора в IVT станут фиксированными и независящими от длины реального обработчика и его размещения.
Естественно, что следует прописать ВСЕ возможные к использованию В ДАЛЬНЕЙШЕМ псевдообработчики.

Последний раз редактировалось Марк; 24.03.2019 в 06:52.
Марк вне форума   Ответить с цитированием
Старый 24.03.2019, 07:50   #24
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,167
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

ivan_fd
я попробовал собрать проект.
почему не влазиет Вам говорит компилятор
:0:: error: (1347) can't find 0x50 words (0x50 withtotal) for psect "text94" in class "CODE" (largest unused contiguous range 0x3A)

у Вам не хватает места, тк. нет единого куска нужной длины.
besogon вне форума   Ответить с цитированием
Старый 24.03.2019, 07:57   #25
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,167
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC8 размер кода на разных контроллерах.

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

Код:
putchar_b_buf(0, STR_DST[0], &Font, &Dis_Buff);
не надо здесь брать адрес массива. это ошибка типа.
Dis_Buff - у Вас массив.
его имя это указатель на элемент массива с нулевым смещением.
взяв его адрес Вы получите указатель на указатель на элемент массива с нулевым смещением.
besogon вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер кода, бесплатный MPLAB, как быть? hfmscan Вопросы начинающих 31 05.03.2017 11:32
XC8 ругает на размер массива. djoni-kga Вопросы начинающих 19 10.10.2014 18:29
Существуют 3 взаимосвязанные устройства на PIC. На всех соответственно есть свой софт. Два из них пишутся на MCC18. Так вот вопрос. Можно ли в MPLAB открывать два разных проекта одновремено ? alexdos Продукция MICROCHIP 9 27.01.2012 12:04
ищу пример кода для 3-4 софтварных уарта на небольшую скорость dynaco Продукция MICROCHIP 16 30.09.2007 23:28
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


Часовой пояс GMT +3, время: 13:01.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot