Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: HT-PIC C Compiler и переключение памяти программ.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
amok
Как в HT-PIC C Compiler переключать страницы памяти программ?
Есть ли способ делать это в HI-TECH C Compiler на Си без применения ассемблера?
VAI
Он сам все переключит как надо, не волнуйтесь.
Включите генерацию листинга, и посмотрите результат.
ИМХО асм использовать нет нужды, смотрите листинг, оптимизируйте Сишный текст, чтоб результат компиляции был компактным и оптимальным.
amok
А есть способ, чтобы в пределах одной функции банки переключать из Си?
VAI
Посмотрите во вложеном файле.
Я так делал, когда использовал ПИКи.
Функции для работы с eeprom. В функцию передается указатель на массив в ОЗУ. Он может быть в разных банках.
Пример объявления переменных в разных банках в Global.zip
amok
Спасибо.

Я имел в виду память программ(страницы памяти программ по 2k, FLASH память).
VAI
Посмотрите пример бутлодыря в папке ...\HT-PIC\example, там что-то должно быть. Почитайте доку на компилятор, на сайте разработчика есть.
Смысл в том, чтоб как и в "настоящих" компиляторах объявить сегмент и в нем расположить свои функции.
Я уже 3 года пиками не занимаюсь и вспоминаю их, как страшный сон, а проведение программно-аппаратной доработки в старом приборе воспринимаю как кошмар, от которого никуда не деться, и все из-за проклятых банков и убогости системы команд... Но на эту тему я спорить не с кем не буду, у каждого своя религия...

Это кусок из старых исходников для pic16f877.
Код
// и в опциях линкера эту секцию поместим с адреса 0x0800 (-pspline=0800h) и эту область протект не будем!
#pragma psect const%%u=spline

// Код поместим в секцию spl - во второй половине программной памяти, закрытой от чтения
#pragma psect text%%u=spl


P.S.
Странно получилось, вложеные файлы переместились из прошлого моего поста в этот! Неисповедимы пути господни...
amok
Спасибо большое.

Попробую.
Born
Сам то он конечно переключает...
Только я вот пытался заставить его сделать sprintf() с указателем на строку в bank2 - в результате - полная ерунда получилась...
С bank0 и bank1 все работает)))
VAI
2 Born

Все локальные переменные только в банке 0.
Если Вам необходим особый sprintf, посмотрите мой укороченый myprintf (я использую его для мелких MSP430, а раньше использовал для ПИКов).
На его основе и на основе ранее вложеных мной в этой теме файлов (1.zip - пример работы с EEPROM и использования разных банков ОЗУ) можно соорудить необходимый Вам принтф.

Мой Вам совет, бросайте Вы эти ПИКи - МСП, АРМ не труднее в изучении, но намного мощнее и удобнее.
Работать с ПИКами решая более-менее сложную задачу, это трахаться стоя в ластах в гамаке.
Born
Цитата(VAI @ Sep 30 2005, 10:05)
...
Мой Вам совет, бросайте Вы эти ПИКи - МСП, АРМ не труднее в изучении, но намного мощнее и удобнее.
Работать с ПИКами решая более-менее сложную задачу, это трахаться стоя в ластах в гамаке.
*


Да, я уже и сам к такому выводу пришел...
Для мелочевки AVR, для задач посложнее - ARM...
Я с пиками давно работаю, с тех пор, когда по цене/производительности/доступности они были вне конкуренции...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.