blackfin 23 29 июня, 2009 Опубликовано 29 июня, 2009 · Жалоба Приходилось с радостью портировать даже с 8bit ASM на АРМ 'С' за считаные дни Что-то меня терзают смутные сомнения в практической реализации подобного, если длина кода "не 40 байт", "считанные дни" не измеряются неделями или результат "авось будет работать". Разве-что речь о простых или типовых проектах... А если код на ASM'е с самого начала сопровождался подробными комментариями в стиле Си? Тогда нужно всего лишь закомментировать ASM и убрать лишние комменты в коде на Си.. ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 29 июня, 2009 Опубликовано 29 июня, 2009 · Жалоба Что-то меня терзают смутные сомнения в практической реализации подобного, если длина кода "не 40 байт", "считанные дни" не измеряются неделями или результат "авось будет работать". Сишные вещи размером в десяток-другой К бинарника протируются действительно за пару дней (если не за день). То, что я поминал не портировалось а писалось заново на 'C' ровно неделю. Потом, внимание! было отпортировано за одну субботу обратно на восьмибитник, причем по размеру стало почти вдвое меньше, по производительности никаких напрягов и при полном отладочном логе. Глюки оригинала проявляющиеся в реальных условиях ушли. Секрет очень прост - первоначальное писалось человеком на ASM и много лет вот так вот по "40 байт" дописывалось-дописывалось.. латалось-латалось. Дописались и долатались в конце концов :( Разве-что речь о простых или типовых проектах... Не контроллер светодиода :), сразу скажу. Чисто конкретно - LAPV5. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeiCh 0 29 июня, 2009 Опубликовано 29 июня, 2009 · Жалоба Библиотеки были написаны в 2 уровнях. В AT91Lib почти всё так сделано. Тот же At45 на Spid. По-моему, как минимум для ознакомления полезная библиотека. Зато переключение RS485 интерфейса получается просто "раком". У AT91SAM RS485 аппаратно поддерживается. Это всего лишь информация, LPC мне тоже по-своему нравятся. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 29 июня, 2009 Опубликовано 29 июня, 2009 · Жалоба Больше 2-х месяцев?! 1) Как известно сроки определяются поставленной задачей. :) Параллельно выполнялось куча другой работы по сопровождению других проектов. 2) 2 месяца, это не много для нас. С другой стороны это время, потраченное, в основном, на изучение переферии. Если бы я работал с этим камнем, то это время было бы значительно короче. Сколько - не знаю. Не хочу гадать. Я привёл реальные данные. Кроме того, не стоит забывать, что "менее 2-ух месяцев" это только перенос. А 20-40% кода все равно придется писать. И через 2 месяца вы все еще в начале пути. Кроме того, нужна новая плата (новая схема, новые комплектующие, новая разводка). И кто это все делает? Несколько не понимаю о чём вы? Это вынужденная мера. Не потому, что я решил просто от нечего делать поменять рабочий камень. Я вынужден был перейти на новый камень, в связи с тем, что старый не справлялся с некоторыми задачами. Причина - недостаток свободной памяти. Чистый остаток 5800. После перехода, я оценив производительность решил расширить возможности новой платформы. При совместимости снизу вверх. Новая платформа будет обладать рядом функций недоступных в старой. Так причём здесь на каком отрезке пути я нахожусь??? Я Вам так скажу, - я всегда нахожусь в сааамом начале пути. Всегда! Всегда хочется сделать лучше чем было раньше. А у Вас не так? За помощь в моей работе хотелось бы поблагодарить ... того, того, и того-то :) За помощь в работе хотелось бы поблагодарить в первую очередь Vesago. Я его задолбал вопросами по телефону и нету. Надо признаться он стойко всё выдержал. Ну и всех тех, кто отвечал на мои вопросы прямо и косвенно. :) Короче весь форум. Ваши разъяснения на мои вопросы я аккуратненько скопировал в файлик и сохранил. Хотя в данном проекте не воспользовался. Я всё сделал FIQ/IRQ. Вложенность не понадобилась. Ваша помощь по устранению хомутов в IRQ тоже была очень важна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
singlskv 0 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба Я всё сделал FIQ/IRQ. Вложенность не понадобилась. Интересно, а обработчики в итоге были реализованны в стартапе или просто воспользовались возможностями VIC ? Просто интересно как у Вас реализованы обработчики IRQ/FIQ при полной ненужности обработчиков вложенных прерываний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба Интересно, а обработчики в итоге были реализованны в стартапе или просто воспользовались возможностями VIC ? Странный вопрос. Сводится к тому, было прерывание IRQ единстаенным или нет, и испльзовался-ли jump на обработчик FIQ или этот обработчик сразу с 1E адреса и писался. Это имеет какое-то принципиальное значение? Просто интересно как у Вас реализованы обработчики IRQ/FIQ при полной ненужности обработчиков вложенных прерываний. Лично у меня, "как обычно", при этой самой ненужности. Применяемый многими по принципу "а чего тут думать, трясти надо" bigloop рвущийся многочисленными прерываниями хорош для ограниченного числа решений. Как только научился продумывать подход к системе, так сразу вложенные и перестали быть нужными, причем у меня это не во времена ARM сие случилось, а во времена 186/386, которые аппаратрых ограничений на вложенность не имели - вкладывайся пока стек не кончится. Только нужно это в редчайших случаях. На ARM платформе эти и так редчайшие случаи покрывает еще на 90% наличие FIQ. В сухом остатке остается вообще стремящаяся к нулю необходимость. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба Как только научился продумывать подход к системе, так сразу вложенные и перестали быть нужными, причем у меня это не во времена ARM сие случилось, а во времена 186/386, которые аппаратрых ограничений на вложенность не имели - вкладывайся пока стек не кончится. Ну не знаю ... На embedded x86 использовал вложенность на все присутствующие 8 уровней. Сейчас из текущих проектов на MSP430 вложенность используется для реализации программного интерфейса. Пожалуй, FIQ бы заткнул эту проблему. Может вложенность от приложения зависит, а? ;) А какая Ваша альтернатива bigloop с прерываниями? shortloop, генерация событий и их обработка? Дык обработчики событий разноприоритетные и разные по длительности. Это нужно резерв производительности иметь, а при приоритетной вложенности система просчитывается достаточно просто. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сибирь 0 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба Пытался кратко. Если что не понятно или какие вопросы - спрашивайте. во сколько раз отличается себестоимость на арм и авр? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeiCh 0 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба ... альтернатива bigloop с прерываниями? Видимо, планировщик с оч. короткими обработчиками прерываний - взял данные, засунул в очередь или семафор выставил для процесса, который их обрабатывает. Какая еще может быть альтернатива big/super loop?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
singlskv 0 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба Как только научился продумывать подход к системе, так сразу вложенные и перестали быть нужными, причем у меня это не во времена ARM сие случилось, а во времена 186/386, которые аппаратрых ограничений на вложенность не имели - вкладывайся пока стек не кончится. Только нужно это в редчайших случаях. На ARM платформе эти и так редчайшие случаи покрывает еще на 90% наличие FIQ. В сухом остатке остается вообще стремящаяся к нулю необходимость. Дык, я собственно так и считаю, FIQ перекрывает практически всю необходимость в вложенных IRQ, мне просто было интересно повелся ли автор(на новой платформе) на "стандартные" для многих компиляторов примеры стартапов с возможностью вложенных прерываний или сделал все прерывания используя возможности векторного VIC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба во сколько раз отличается себестоимость на арм и авр? Первоначально я не знал чего ожидать от платформы. Соответственно сделал несколько аппаратных довесков. В результате плата на 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 не предусмотрены совтовые прерывания. И это существенный минус. Я пользовался незадействованым таймером. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба Видимо, планировщик с оч. короткими обработчиками прерываний - взял данные, засунул в очередь или семафор выставил для процесса, который их обрабатывает. Да, так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться