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

Перенос проекта с AVR на ARM7. Информация к размышлению.

Приходилось с радостью портировать даже с 8bit ASM на АРМ 'С' за считаные дни

Что-то меня терзают смутные сомнения в практической реализации подобного, если длина кода "не 40 байт", "считанные дни" не измеряются неделями или результат "авось будет работать". Разве-что речь о простых или типовых проектах...

А если код на ASM'е с самого начала сопровождался подробными комментариями в стиле Си?

Тогда нужно всего лишь закомментировать ASM и убрать лишние комменты в коде на Си..

;)

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


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

Что-то меня терзают смутные сомнения в практической реализации подобного, если длина кода "не 40 байт", "считанные дни" не измеряются неделями или результат "авось будет работать".

Сишные вещи размером в десяток-другой К бинарника протируются действительно за пару дней (если не за день). То, что я поминал не портировалось а писалось заново на 'C' ровно неделю. Потом, внимание! было отпортировано за одну субботу обратно на восьмибитник, причем по размеру стало почти вдвое меньше, по производительности никаких напрягов и при полном отладочном логе. Глюки оригинала проявляющиеся в реальных условиях ушли. Секрет очень прост - первоначальное писалось человеком на ASM и много лет вот так вот по "40 байт" дописывалось-дописывалось.. латалось-латалось. Дописались и долатались в конце концов :(

Разве-что речь о простых или типовых проектах...

Не контроллер светодиода :), сразу скажу. Чисто конкретно - LAPV5.

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


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

Библиотеки были написаны в 2 уровнях.

В AT91Lib почти всё так сделано. Тот же At45 на Spid. По-моему, как минимум для ознакомления полезная библиотека.

 

Зато переключение RS485 интерфейса получается просто "раком".

У AT91SAM RS485 аппаратно поддерживается. Это всего лишь информация, LPC мне тоже по-своему нравятся. :)

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


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

Больше 2-х месяцев?!

 

1) Как известно сроки определяются поставленной задачей. :) Параллельно выполнялось куча другой работы по сопровождению других проектов.

2) 2 месяца, это не много для нас. С другой стороны это время, потраченное, в основном, на изучение переферии. Если бы я работал с этим камнем, то это время было бы значительно короче. Сколько - не знаю. Не хочу гадать. Я привёл реальные данные.

 

Кроме того, не стоит забывать, что "менее 2-ух месяцев" это только перенос. А 20-40% кода все равно придется писать. И через 2 месяца вы все еще в начале пути.

Кроме того, нужна новая плата (новая схема, новые комплектующие, новая разводка). И кто это все делает?

Несколько не понимаю о чём вы?

Это вынужденная мера. Не потому, что я решил просто от нечего делать поменять рабочий камень. Я вынужден был перейти на новый камень, в связи с тем, что старый не справлялся с некоторыми задачами. Причина - недостаток свободной памяти. Чистый остаток 5800. После перехода, я оценив производительность решил расширить возможности новой платформы. При совместимости снизу вверх. Новая платформа будет обладать рядом функций недоступных в старой.

Так причём здесь на каком отрезке пути я нахожусь??? Я Вам так скажу, - я всегда нахожусь в сааамом начале пути. Всегда! Всегда хочется сделать лучше чем было раньше. А у Вас не так?

 

 

 

За помощь в моей работе хотелось бы поблагодарить ... того, того, и того-то :)

:biggrin:

За помощь в работе хотелось бы поблагодарить в первую очередь Vesago. :biggrin:

Я его задолбал вопросами по телефону и нету. Надо признаться он стойко всё выдержал.

 

Ну и всех тех, кто отвечал на мои вопросы прямо и косвенно. :) Короче весь форум.

Ваши разъяснения на мои вопросы я аккуратненько скопировал в файлик и сохранил. Хотя в данном проекте не воспользовался. Я всё сделал FIQ/IRQ. Вложенность не понадобилась. Ваша помощь по устранению хомутов в IRQ тоже была очень важна.

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


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

Я всё сделал FIQ/IRQ. Вложенность не понадобилась.

Интересно, а обработчики в итоге были реализованны в стартапе

или просто воспользовались возможностями VIC ?

Просто интересно как у Вас реализованы обработчики IRQ/FIQ при

полной ненужности обработчиков вложенных прерываний.

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


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

Интересно, а обработчики в итоге были реализованны в стартапе

или просто воспользовались возможностями VIC ?

Странный вопрос. Сводится к тому, было прерывание IRQ единстаенным или нет, и испльзовался-ли jump на обработчик FIQ или этот обработчик сразу с 1E адреса и писался. Это имеет какое-то принципиальное значение?

Просто интересно как у Вас реализованы обработчики IRQ/FIQ при

полной ненужности обработчиков вложенных прерываний.

Лично у меня, "как обычно", при этой самой ненужности. Применяемый многими по принципу "а чего тут думать, трясти надо" bigloop рвущийся многочисленными прерываниями хорош для ограниченного числа решений. Как только научился продумывать подход к системе, так сразу вложенные и перестали быть нужными, причем у меня это не во времена ARM сие случилось, а во времена 186/386, которые аппаратрых ограничений на вложенность не имели - вкладывайся пока стек не кончится. Только нужно это в редчайших случаях. На ARM платформе эти и так редчайшие случаи покрывает еще на 90% наличие FIQ. В сухом остатке остается вообще стремящаяся к нулю необходимость.

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


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

Как только научился продумывать подход к системе, так сразу вложенные и перестали быть нужными, причем у меня это не во времена ARM сие случилось, а во времена 186/386, которые аппаратрых ограничений на вложенность не имели - вкладывайся пока стек не кончится.

Ну не знаю ... На embedded x86 использовал вложенность на все присутствующие 8 уровней.

Сейчас из текущих проектов на MSP430 вложенность используется для реализации программного интерфейса. Пожалуй, FIQ бы заткнул эту проблему.

Может вложенность от приложения зависит, а? ;)

А какая Ваша альтернатива bigloop с прерываниями? shortloop, генерация событий и их обработка? Дык обработчики событий разноприоритетные и разные по длительности. Это нужно резерв производительности иметь, а при приоритетной вложенности система просчитывается достаточно просто.

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


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

Пытался кратко. Если что не понятно или какие вопросы - спрашивайте.

во сколько раз отличается себестоимость на арм и авр?

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


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

... альтернатива bigloop с прерываниями?

Видимо, планировщик с оч. короткими обработчиками прерываний - взял данные, засунул в очередь или семафор выставил для процесса, который их обрабатывает. Какая еще может быть альтернатива big/super loop??

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


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

Как только научился продумывать подход к системе, так сразу вложенные и перестали быть нужными, причем у меня это не во времена ARM сие случилось, а во времена 186/386, которые аппаратрых ограничений на вложенность не имели - вкладывайся пока стек не кончится. Только нужно это в редчайших случаях. На ARM платформе эти и так редчайшие случаи покрывает еще на 90% наличие FIQ. В сухом остатке остается вообще стремящаяся к нулю необходимость.

Дык, я собственно так и считаю, FIQ перекрывает практически всю необходимость в вложенных IRQ,

мне просто было интересно повелся ли автор(на новой платформе) на "стандартные" для многих компиляторов

примеры стартапов с возможностью вложенных прерываний или сделал все прерывания используя

возможности векторного VIC.

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


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

во сколько раз отличается себестоимость на арм и авр?

Первоначально я не знал чего ожидать от платформы. Соответственно сделал несколько аппаратных довесков. В результате плата на LPC2106 выглядела значительно навороченней чем таже на м640. Были существенные проблемы с разводкой. В настоящий момент разводится новая плата, с внесёнными изменениями. По загруженности она будет сопоставима с платой на AVR. Плюс по совету Vesago перешёл с 24с512 на 45db021.

Результирующая цена платы будет приблизительно на 1$ меньше. Уже закупили контроллеры LPC2106/00.151 по цене 6.5$. Меги брали по 7.5$. Также выиграем на 45db приблизительно 1$. Потеряем центов 10 на 595 регистре.

 

Для данного изделия себестоимость комплектующих контроллера это пара % от себестоимости изделия. Так что это было не определяющим.

 

Дык, я собственно так и считаю, FIQ перекрывает практически всю необходимость в вложенных IRQ,

мне просто было интересно повелся ли автор(на новой платформе) на "стандартные" для многих компиляторов

примеры стартапов с возможностью вложенных прерываний или сделал все прерывания используя

возможности векторного VIC.

Честно говоря не понял вопроса.

Стартап я переписал аналогично книги Мартина. Соответственно у меня векторные прерывания IRQ на основе VIC. Одно совтовое. Очень понравилась реализация и совтового и прочих прерываний. FIQ я сделал прямым переходом, так как источник его у меня один.

 

На AVR у меня было сделано одно прерывание быстрое - и одно (совтовое) допускало вложенные прерывания. В связи с этим у меня теоретически работа UART на скорости выше 57600 была не возможна. На LPC у меня UART прерывание обрабатывается при заполнении буфера на 8 символов. То есть я смогу работать на любой доступной скорости. В связи с этим, я вложенность IRQ не делал. FIQ из IRQ вызывается автоматически и без проблем. Всё это легко управляется ч/з ф-ции компилятора. Короче к этому нет ни малейших претензий. Но, насколько я понял, вложенность также поддерживается компилятором и особых проблем не вызывает. Подробности этого механизма я почерпнул у GetSmart который этим широко пользуется.

 

У AVR не предусмотрены совтовые прерывания. И это существенный минус. Я пользовался незадействованым таймером.

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


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

Видимо, планировщик с оч. короткими обработчиками прерываний - взял данные, засунул в очередь или семафор выставил для процесса, который их обрабатывает.

Да, так.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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