Eddy_Em 2 4 ноября, 2015 Опубликовано 4 ноября, 2015 · Жалоба Советую для начала взять libopencm3, а потом потихоньку свое сварганить, т.к. любая библиотека — это жиробасище то еще... Скажем, в реализации "полуаппаратного" 1-wire я местами напрямую регистрами инициализировал таймеры и ПДП, т.к. библиотека давала слишком большие задержки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 4 ноября, 2015 Опубликовано 4 ноября, 2015 · Жалоба Советую для начала взять libopencm3, а потом потихоньку свое сварганить, т.к. любая библиотека — это жиробасище то еще... Скажем, в реализации "полуаппаратного" 1-wire я местами напрямую регистрами инициализировал таймеры и ПДП, т.к. библиотека давала слишком большие задержки. А что, в HAL есть модули для "полуаппаратного" 1-wire? Двухпроходный кейловский компилятор любую библиотеку сожмет до нуля, оставив только то, что реально выполняется, а оставшееся заинлайнит и векторизирует. А реально выполняться в среднестатистической программе будет мизер. К тому же HAL сделан под статический анализатор. Т.е. в нем должно просматривается все дерево вызовов. Если за что и хаять HAL, то только не за результирующий объем кода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 4 ноября, 2015 Опубликовано 4 ноября, 2015 · Жалоба Советую для начала взять libopencm3 .... Да, спасибо за напоминание о "третьем пути", как-то не подумал посмотреть еще какие-то библиотеки. на первый взгляд- довольно прозрачно. И как замечательно документировано! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 4 ноября, 2015 Опубликовано 4 ноября, 2015 · Жалоба Двухпроходный кейловский компилятор это когда cross-module? у меня вроде как три раза пробегает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 4 ноября, 2015 Опубликовано 4 ноября, 2015 · Жалоба Извините, а libopencm3 под кейлом будет работать? Они пишут "The most heavily tested toolchain is "gcc-arm-embedded" .... Other toolchains should work, but have not been nearly as well tested." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 5 ноября, 2015 Опубликовано 5 ноября, 2015 · Жалоба Двухпроходный кейловский компилятор любую библиотеку сожмет до нуля, оставив только то, что реально выполняется, а оставшееся заинлайнит и векторизирует. При чем здесь объем кода? А ничего, что тупо все эти "джампы" и манипуляции с регистрами при выполнении уймы функций, занимает довольно-таки значительное время? Извините, а libopencm3 под кейлом будет работать? Без понятия, я вообще не в курсе, что такое "кейл". Ни разу в жизни не видел. Пользуюсь geany в качестве редактора (хоть geany и IDE), компиляю make'ом (gcc-none-eabi), прошиваю через бутлоадер при помощи stm32flash (тем же make'ом), отлаживаю через USB (CDC). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 5 ноября, 2015 Опубликовано 5 ноября, 2015 · Жалоба Извините, а libopencm3 под кейлом будет работать? Они пишут "The most heavily tested toolchain is "gcc-arm-embedded" .... Other toolchains should work, but have not been nearly as well tested." Буквально на прошлой неделе в соседней теме обсуждали портирование на IAR. Если вдумчиво подойти, должно нормально взлететь. Там есть странные особенности (типа генерации "на лету" заголовка с регистрами), свой стартап, но ничто не мешает пользоваться своим (или штатным кейловским). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 5 ноября, 2015 Опубликовано 5 ноября, 2015 · Жалоба Буквально на прошлой неделе в соседней теме обсуждали портирование на IAR. Если вдумчиво подойти, должно нормально взлететь. Там есть странные особенности (типа генерации "на лету" заголовка с регистрами), свой стартап, но ничто не мешает пользоваться своим (или штатным кейловским). Да, я вчера ночью ту тему по диагонали прочитал- там в 90% сообщений обсуждают неотносящиеся к либе вопросы, так что зерна (обсуждения портирования) я не заметил, уже сегодня утром там задал тот же вопрос. Спасибо за наводку, перечитаю еще раз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 5 ноября, 2015 Опубликовано 5 ноября, 2015 · Жалоба При чем здесь объем кода? А ничего, что тупо все эти "джампы" и манипуляции с регистрами при выполнении уймы функций, занимает довольно-таки значительное время? Пользуюсь geany в качестве редактора (хоть geany и IDE), компиляю make'ом (gcc-none-eabi), прошиваю через бутлоадер при помощи stm32flash (тем же make'ом), отлаживаю через USB (CDC). Жесть, "компиляю make'ом (gcc-none-eabi)" и после этого восклицать "все эти "джампы" и манипуляции....занимает довольно-таки значительное время?" А в курсе что только из-за GCC вы убиваете почти половину производительности процессора? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 5 ноября, 2015 Опубликовано 5 ноября, 2015 (изменено) · Жалоба В проекте с цифровой обработкой звука применяется компилятор arm-none-eabi (GCC с launchpad.net). Рассматривая критические места в дизассемблере, пришел к выводу, что лучше соптимизировать не сильно получится - т.е. в коде учитывается конвеер, не мгновенное вычисление функция плавающей точки сопроцессором... SPL/HAL не использую, но многократную вложенность функций моих библиотек компилятор прекрасно инлайнит. Изменено 5 ноября, 2015 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 5 ноября, 2015 Опубликовано 5 ноября, 2015 · Жалоба А в курсе что только из-за GCC вы убиваете почти половину производительности процессора? А в курсе, что подобные слова надо либо предварять фразой "мне Рабинович по телефону напел", либо приводить результаты тестирования? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 5 ноября, 2015 Опубликовано 5 ноября, 2015 · Жалоба Извините, а libopencm3 под кейлом будет работать? Будет. Но стартап от Кейла Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 5 ноября, 2015 Опубликовано 5 ноября, 2015 · Жалоба А в курсе что только из-за GCC вы убиваете почти половину производительности процессора? Кто такой бред выдумал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 7 5 ноября, 2015 Опубликовано 5 ноября, 2015 · Жалоба про HAL в драйвере CAN-а HAL_UNLOCK не вызывается, если все три мейлбокса заняты (типа, индусский код?). после этого драйвер встает (по крайней мере пришлось исправить код HAL, чтобы заработало) в драйвере UART при запуске приема и передачи по DMA - иногда данные терялись (ORE) - скорость 115к у проца ~50МГц - как такое происходит я не понимаю - сделано была высокоприоритетная задача во FreeRTOS, которая ждала завершения приема и перезапускала ...receive_dma... после переписывания драйвера (перезапуск DMA в обработчике) - ORE перестало происходить - тут может я не разабрался, но осадочек остался :) кстати полезная фича в UART 373-го прерывание по таймауту (железное, не софт, я в ПЛИС всегда так в УАРТах делаю) не поддерживается в HAL - то есть по любому драйвер надо переписывать нафига они еще каких-то дебильных оберток к FreeRTOS-ным функциям понаделали - тоже х.з. =============== то есть как всегда (по-моему у 386-го или 186-го был уже графический официальный конфигуратор железа) - быстро что-то склепать, вполне все это в тему cubemx, HAL и т.д. но если начинать копать вглубь - то неприятные впечатления гарантированы :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rudy_b 2 5 ноября, 2015 Опубликовано 5 ноября, 2015 · Жалоба в драйвере UART при запуске приема и передачи по DMA - иногда данные терялись (ORE) - скорость 115к у проца ~50МГц - как такое происходит я не понимаю ... Вот именно про это я и писал - HAL по DMA запускает передачу последнего байта, а, затем, по прямому поллингу TC дожидается завершения передачи последнего байта - и это в функции обработки прерывания DMA. На скорости 115 кбод это приводит к завешиванию равных и более низкопроиоритетных прерываний (ну и всего нижележащего) примерно на 12 мксек (длительность передачи одного байта). Соответственно завешивается приемник (если он на равном или низшем приоритете) и получаем ORE. Это легко убирается либо коррекцией кода HAL, либо снижением приоритета прерываний DMA передачи ниже DMA приема (именно priority, а не subpriority). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться