|
|
  |
Перенос проекта с AVR на ARM7. Информация к размышлению., Результаты тестов для интересующихся. |
|
|
|
Jun 29 2009, 05:19
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(ArtemKAD @ Jun 29 2009, 03:47)  Что-то меня терзают смутные сомнения в практической реализации подобного, если длина кода "не 40 байт", "считанные дни" не измеряются неделями или результат "авось будет работать". Сишные вещи размером в десяток-другой К бинарника протируются действительно за пару дней (если не за день). То, что я поминал не портировалось а писалось заново на 'C' ровно неделю. Потом, внимание! было отпортировано за одну субботу обратно на восьмибитник, причем по размеру стало почти вдвое меньше, по производительности никаких напрягов и при полном отладочном логе. Глюки оригинала проявляющиеся в реальных условиях ушли. Секрет очень прост - первоначальное писалось человеком на ASM и много лет вот так вот по "40 байт" дописывалось-дописывалось.. латалось-латалось. Дописались и долатались в конце концов  Цитата Разве-что речь о простых или типовых проектах... Не контроллер светодиода  , сразу скажу. Чисто конкретно - LAPV5.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 29 2009, 10:06
|
Частый гость
 
Группа: Участник
Сообщений: 99
Регистрация: 22-03-07
Из: Novosibirsk
Пользователь №: 26 415

|
Цитата(SasaVitebsk @ Jun 26 2009, 04:47)  Библиотеки были написаны в 2 уровнях. В AT91Lib почти всё так сделано. Тот же At45 на Spid. По-моему, как минимум для ознакомления полезная библиотека. Цитата(SasaVitebsk @ Jun 26 2009, 04:47)  Зато переключение RS485 интерфейса получается просто "раком". У AT91SAM RS485 аппаратно поддерживается. Это всего лишь информация, LPC мне тоже по-своему нравятся.
|
|
|
|
|
Jun 29 2009, 14:35
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(ArtemKAD @ Jun 29 2009, 03:47)  Больше 2-х месяцев?! 1) Как известно сроки определяются поставленной задачей.  Параллельно выполнялось куча другой работы по сопровождению других проектов. 2) 2 месяца, это не много для нас. С другой стороны это время, потраченное, в основном, на изучение переферии. Если бы я работал с этим камнем, то это время было бы значительно короче. Сколько - не знаю. Не хочу гадать. Я привёл реальные данные. Цитата(ArtemKAD @ Jun 29 2009, 03:47)  Кроме того, не стоит забывать, что "менее 2-ух месяцев" это только перенос. А 20-40% кода все равно придется писать. И через 2 месяца вы все еще в начале пути. Кроме того, нужна новая плата (новая схема, новые комплектующие, новая разводка). И кто это все делает? Несколько не понимаю о чём вы? Это вынужденная мера. Не потому, что я решил просто от нечего делать поменять рабочий камень. Я вынужден был перейти на новый камень, в связи с тем, что старый не справлялся с некоторыми задачами. Причина - недостаток свободной памяти. Чистый остаток 5800. После перехода, я оценив производительность решил расширить возможности новой платформы. При совместимости снизу вверх. Новая платформа будет обладать рядом функций недоступных в старой. Так причём здесь на каком отрезке пути я нахожусь??? Я Вам так скажу, - я всегда нахожусь в сааамом начале пути. Всегда! Всегда хочется сделать лучше чем было раньше. А у Вас не так? Цитата(GetSmart @ Jun 29 2009, 08:00)  За помощь в моей работе хотелось бы поблагодарить ... того, того, и того-то  За помощь в работе хотелось бы поблагодарить в первую очередь Vesago. Я его задолбал вопросами по телефону и нету. Надо признаться он стойко всё выдержал. Ну и всех тех, кто отвечал на мои вопросы прямо и косвенно.  Короче весь форум. Ваши разъяснения на мои вопросы я аккуратненько скопировал в файлик и сохранил. Хотя в данном проекте не воспользовался. Я всё сделал FIQ/IRQ. Вложенность не понадобилась. Ваша помощь по устранению хомутов в IRQ тоже была очень важна.
|
|
|
|
|
Jun 30 2009, 01:21
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(SasaVitebsk @ Jun 29 2009, 18:35)  Я всё сделал FIQ/IRQ. Вложенность не понадобилась. Интересно, а обработчики в итоге были реализованны в стартапе или просто воспользовались возможностями VIC ? Просто интересно как у Вас реализованы обработчики IRQ/FIQ при полной ненужности обработчиков вложенных прерываний.
|
|
|
|
|
Jun 30 2009, 05:14
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(singlskv @ Jun 30 2009, 04:21)  Интересно, а обработчики в итоге были реализованны в стартапе или просто воспользовались возможностями VIC ? Странный вопрос. Сводится к тому, было прерывание IRQ единстаенным или нет, и испльзовался-ли jump на обработчик FIQ или этот обработчик сразу с 1E адреса и писался. Это имеет какое-то принципиальное значение? Цитата Просто интересно как у Вас реализованы обработчики IRQ/FIQ при полной ненужности обработчиков вложенных прерываний. Лично у меня, "как обычно", при этой самой ненужности. Применяемый многими по принципу "а чего тут думать, трясти надо" bigloop рвущийся многочисленными прерываниями хорош для ограниченного числа решений. Как только научился продумывать подход к системе, так сразу вложенные и перестали быть нужными, причем у меня это не во времена ARM сие случилось, а во времена 186/386, которые аппаратрых ограничений на вложенность не имели - вкладывайся пока стек не кончится. Только нужно это в редчайших случаях. На ARM платформе эти и так редчайшие случаи покрывает еще на 90% наличие FIQ. В сухом остатке остается вообще стремящаяся к нулю необходимость.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 30 2009, 07:28
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(zltigo @ Jun 30 2009, 08:14)  Как только научился продумывать подход к системе, так сразу вложенные и перестали быть нужными, причем у меня это не во времена ARM сие случилось, а во времена 186/386, которые аппаратрых ограничений на вложенность не имели - вкладывайся пока стек не кончится. Ну не знаю ... На embedded x86 использовал вложенность на все присутствующие 8 уровней. Сейчас из текущих проектов на MSP430 вложенность используется для реализации программного интерфейса. Пожалуй, FIQ бы заткнул эту проблему. Может вложенность от приложения зависит, а?  А какая Ваша альтернатива bigloop с прерываниями? shortloop, генерация событий и их обработка? Дык обработчики событий разноприоритетные и разные по длительности. Это нужно резерв производительности иметь, а при приоритетной вложенности система просчитывается достаточно просто.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jun 30 2009, 07:56
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 8-07-08
Пользователь №: 38 815

|
Цитата(SasaVitebsk @ Jun 26 2009, 00:47)  Пытался кратко. Если что не понятно или какие вопросы - спрашивайте. во сколько раз отличается себестоимость на арм и авр?
|
|
|
|
|
Jun 30 2009, 13:43
|
Частый гость
 
Группа: Участник
Сообщений: 99
Регистрация: 22-03-07
Из: Novosibirsk
Пользователь №: 26 415

|
Цитата(Dog Pawlowa @ Jun 30 2009, 14:28)  ... альтернатива bigloop с прерываниями? Видимо, планировщик с оч. короткими обработчиками прерываний - взял данные, засунул в очередь или семафор выставил для процесса, который их обрабатывает. Какая еще может быть альтернатива big/super loop??
|
|
|
|
|
Jun 30 2009, 19:15
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Jun 30 2009, 09:14)  Как только научился продумывать подход к системе, так сразу вложенные и перестали быть нужными, причем у меня это не во времена ARM сие случилось, а во времена 186/386, которые аппаратрых ограничений на вложенность не имели - вкладывайся пока стек не кончится. Только нужно это в редчайших случаях. На ARM платформе эти и так редчайшие случаи покрывает еще на 90% наличие FIQ. В сухом остатке остается вообще стремящаяся к нулю необходимость. Дык, я собственно так и считаю, FIQ перекрывает практически всю необходимость в вложенных IRQ, мне просто было интересно повелся ли автор(на новой платформе) на "стандартные" для многих компиляторов примеры стартапов с возможностью вложенных прерываний или сделал все прерывания используя возможности векторного VIC.
|
|
|
|
|
Jun 30 2009, 20:21
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(Сибирь @ Jun 30 2009, 10:56)  во сколько раз отличается себестоимость на арм и авр? Первоначально я не знал чего ожидать от платформы. Соответственно сделал несколько аппаратных довесков. В результате плата на LPC2106 выглядела значительно навороченней чем таже на м640. Были существенные проблемы с разводкой. В настоящий момент разводится новая плата, с внесёнными изменениями. По загруженности она будет сопоставима с платой на AVR. Плюс по совету Vesago перешёл с 24с512 на 45db021. Результирующая цена платы будет приблизительно на 1$ меньше. Уже закупили контроллеры LPC2106/00.151 по цене 6.5$. Меги брали по 7.5$. Также выиграем на 45db приблизительно 1$. Потеряем центов 10 на 595 регистре. Для данного изделия себестоимость комплектующих контроллера это пара % от себестоимости изделия. Так что это было не определяющим. Цитата(singlskv @ Jun 30 2009, 22:15)  Дык, я собственно так и считаю, FIQ перекрывает практически всю необходимость в вложенных IRQ, мне просто было интересно повелся ли автор(на новой платформе) на "стандартные" для многих компиляторов примеры стартапов с возможностью вложенных прерываний или сделал все прерывания используя возможности векторного VIC. Честно говоря не понял вопроса. Стартап я переписал аналогично книги Мартина. Соответственно у меня векторные прерывания IRQ на основе VIC. Одно совтовое. Очень понравилась реализация и совтового и прочих прерываний. FIQ я сделал прямым переходом, так как источник его у меня один. На AVR у меня было сделано одно прерывание быстрое - и одно (совтовое) допускало вложенные прерывания. В связи с этим у меня теоретически работа UART на скорости выше 57600 была не возможна. На LPC у меня UART прерывание обрабатывается при заполнении буфера на 8 символов. То есть я смогу работать на любой доступной скорости. В связи с этим, я вложенность IRQ не делал. FIQ из IRQ вызывается автоматически и без проблем. Всё это легко управляется ч/з ф-ции компилятора. Короче к этому нет ни малейших претензий. Но, насколько я понял, вложенность также поддерживается компилятором и особых проблем не вызывает. Подробности этого механизма я почерпнул у GetSmart который этим широко пользуется. У AVR не предусмотрены совтовые прерывания. И это существенный минус. Я пользовался незадействованым таймером.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|