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

PIC18 MCC18 Extended Mode

Всем доброго дня!

Столкнулся со странным поведением компилятора MCC18 в обычном режиме и решил попробовать extended mode. Переключил, собралось, код даже изрядно уменьшился. Все с виду хорошо, но вот что не получается:

секции .tmpdata и .MATH_DATA упали в область дальней памяти (НЕ с 0 до 5F как в обычном режиме):

                 .tmpdata      udata   0x000d78       data   0x00000e
            .udata_uart.o      udata   0x000d86       data   0x000009
             .udata_mdb.o      udata   0x000d8f       data   0x000009
          .idata_timers.o      idata   0x000d98       data   0x000006
                MATH_DATA      udata   0x000d9e       data   0x000004

и при чем между этими блоками памяти лежит еще всякое... 

В не extended mode эти два блока падают подряд с 0го адреса:

                MATH_DATA      udata   0x000000       data   0x000014
                 .tmpdata      udata   0x000014       data   0x00000f
                   .stack      udata   0x000060       data   0x00003e

Как я понимаю, это пространство памяти - с убыстренным доступом, что не актуально в extended.

А я должен сохранять эти два блока (по сути контекста) в стек потому что у меня FreeRTOS. Но как бы сделать так, чтобы эти две секции легли опять с 0го адреса и подряд? 

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


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

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

Как я понимаю, с включенной опцией "Banking opimizer" в контексте задачи может быть совершенно не определенно в какой банк процессор нацелен при попадании в следующую задачу ОС.

Отключив опцию Bank optimizer проблема как будто бы и решилась.  Код, конечно, еще увеличился, что не радует. И самое плохое, я как то теперь побаиваюсь - что еще может всплыть в этой банкированной системе...

Поэтому, проблема сделать порт под extended mode продолжает оставаться актуальной. В этом режиме проц работает в без банковом доступе к памяти и это правильно. Прошу откликнуться знатоков PIC18 и С18. Прикрепляю port.c если вдруг кто-то захочет поправить его как следует)) а нужно всего то сохранить и восстановить контекст))))...

port.c

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


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

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

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

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

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

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

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

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

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

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