-
Постов
1 462 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Весь контент esaulenka
-
Битовые поля, кто ж вас выдумал?
esaulenka ответил ViKo тема в Программирование
Объясните, пожалуйста. Посмотрел код - вроде б всё правильно работает (избыточно, ну да ладно...). Я, правда, так никуда этот подход и не применял... -
С такой-то матерью удалось добиться от GCC (оптимизация -Os + LTO) вычислений адреса бит-банга для глобальной переменной (точнее, для элемента класса, экземпляр класса - единственный и глобальный) в момент компиляции. Атомарнее, если какой-то другой поток может менять другие биты в этой же переменной.
-
Судя по картинкам, исполняется код из RAM, а брекпоинты вы ставите во флеше. Либо что-то с ногами BOOT, либо что-то хитрое со скриптом линкера.
-
Здравствуйте. Скажите, ни у кого не возникало задачи сделать софт-таймеры? Уже не первый раз делаю что-то подобное в очередном проекте, хочется сделать унифицировано. Я это вижу по аналогии с FreeRTOS: отдельная задача, которая хранит в себе массив из n-цати структур. Структура состоит из таймера и коллбэка - по истечению таймера (один раз или периодически) вызывается коллбэк. Заполнение этого списка, перенастройка таймеров и т.д. - динамически, из остальных задач. По сравнению с FreeRTOS надо подумать и применить шаблонную магию, чтобы коллбэком мог быть метод произвольного класса. PS в mbed используют другой вариант API. Выглядит симпатичнее, но не совсем понятно, как оно внутри устроено: https://github.com/ARMmbed/mbed-os/blob/c12b433026beae5b3b769c27941bc6d7fe5d4b27/rtos/RtosTimer.h#L58
-
Ещё один метод расчёта CRC16
esaulenka ответил uni тема в Программирование
Если бы у рыб была шерсть, то там обязательно были бы блохи. Не сомневайтесь :-) код из сообщения "Вот теперь больше на правду похоже. Переписал немного" выдаёт следующее: GetCrc16Table = D641 GetCrc16Cycle = 4B37 GetCrc16Simple = 4B37 https://godbolt.org/z/urjyup- 71 ответ
-
- crc16
- crc-16/ccitt-false
-
(и ещё 1 )
C тегом:
-
Ещё один метод расчёта CRC16
esaulenka ответил uni тема в Программирование
Скажите, а код в пдф-ке выдаёт три одинаковых результата? Я не умею в уме "переворачивать" полином, но какое-то подозрение, что код-таки разный. Спасибо за идею. Надо б допилить до макроса автовычисления констант, и можно смело применять там, где цикл по битам делать долго, а места под таблицу - жалко.- 71 ответ
-
- crc16
- crc-16/ccitt-false
-
(и ещё 1 )
C тегом:
-
Инлайн ассемблер в ARMCLANG
esaulenka ответил ViKo тема в Программирование
Конкретно про этот случай мне Рабинович напел, но у арма на сайте написано, что они совместили замечательный компилятор шланг и их супер-оптимизированные библиотеки. Так что, может быть, не сильно-то он и отличается. Но, повторюсь, сам я не проверял - ни платную версию, ни бесплатную (я даже не знаю, умеют ли prebuilt версии с https://clang.llvm.org/ собирать под мелко-армы). -
Инлайн ассемблер в ARMCLANG
esaulenka ответил ViKo тема в Программирование
Я понимаю, что мы в России живём, и знание лицензионных тонкостей тут э-э... не востребовано, но, всё-таки, бесплатный и свободный - вещи разные. Например, микрочип вполне легально берёт деньги за свой XC32, который, по сути, GCC (но при этом не сильно препятствует желающим собрать свой собственный XC32 забесплатно). И, разумеется, компилятор с нуля сейчас никто не пишет. Даже АРМ. Это clang. Допиленный-улучшенный-сертифицированный, но... -
Под фразой "руками нажать BOOT" я имел в виду именно P2.10=LOW. Вручную, перед сбросом (сброс - тоже вручную). Ну и симптомы автора (в загрузчик попасть можно, но потом всё отваливается) говорят о нестабильности связи, а не о невозможности входа в загрузчик. Если это не какой-то хитрый загрузчик, мимикрирующий под штатный.
-
Необязательно, насколько я помню. Это несколько облегчает задачу (не надо руками нажимать BOOT и RESET), но работает и так. Проверял миллион лет назад на LPC2378. Вот-вот. Осциллографом на RX/TX сигнал посмотрите.
-
Тут уже который день идёт разговор про VCL. Использовать VCL без компилятора от борланда/эмбаркадеро, мне кажется, ещё бОльшее безумие, чем собирать ими Qt ;-)
-
Это вы предлагаете Qt билдером собрать? Интересное занятие, конечно: в теории, можно значительно расширить познания потрохов как Qt, так и билдера. То, что несовместимость VCL со всем остальным миром - это неоспоримое преимущество, мы уже поняли.
-
Там вроде бы по другому сейчас считается - чем больше данных загрузил, тем больше запросов к API можешь сделать. Впрочем, скачать базу и поднять подобный сервис у себя можно бесплатно. Ну только своих приборов у вас будет тыщща. Или целых десять тысяч. А в гугл миллиард андроидов данные сливает...
-
"STL за пять минут" - это покруче будет, чем "C++ за 21 день"! :-) ... г-но мамонта, криво-косо спортированное из дельфей в C++ builder. Имхо. Не являюсь экспертом по билдеру, но что-то мне кажется, что этот automatic reference counting - этакий std::shared_ptr, прибитый к TObject. Соответственно, std::vector из указателей на производные от TObject будет так же считать эти ссылки. Если это критично, пользуйтесь контейнерами из указателей. Впрочем, лично у меня программы почему-то не "всё время копируют", а ещё и модифицируют данные. Там и копия как-то к месту смотрится. Искренне рад за вас, я за пять минут вещи подобной сложности полностью освоить не могу... Да что уж там, за несколько лет не могу...
-
Мне кажется, конкретно вам помочь не получится. Потому что вам надо сначала перестроить мышление и перестать сравнивать богоподобный дельфи и жалкую поделку Страуструпа, а только потом задумываться над конкретикой про контейнеры из STL. А всем остальным может помочь вот такая шпаргалка: https://habr.com/ru/company/infopulse/blog/194726/
-
Самый низкий уровень оно умеет: показывает PID-адрес-данные-контролька. А дальше - беда, пришлось USB in Nutshell вспоминать. Правда, у меня этот самый низкий уровень и глючил...
-
Я, кстати, искал косяк в USB с помощью Saleae. Для фулл-спид его вполне хватает.
-
Оригинал-то HS-ный?
-
Не компилируется &&= в C++
esaulenka ответил ViKo тема в Программирование
Я, конечно, понимаю желание отстоять свою точку зрения, но мне почему-то кажется, что написать исходное выражение в две строчки (прочитать во временную переменную a, вычесть бэ) сильно проще, чем писать прагмы. Я уж не говорю о переносимости этих прагм... -
Не компилируется &&= в C++
esaulenka ответил ViKo тема в Программирование
Тут - очевидно, ничего. Осталось только объяснить этот конкретный случай компилятору. Вопрос, на самом деле, интересный. Я никогда активно не пользовался IAR'ом (только какие-то чужие проекты собрать), но с варнингом "два volatile'а в одном выражении" сталкивался. Вот только где, блин?.. -
Не компилируется &&= в C++
esaulenka ответил ViKo тема в Программирование
Если эти а и бэ - не просто переменные, а какие-нибудь регистры (о чём, в общем случае, компилятору неведомо), то от перестановки слагаемых можно поиметь оооочень интересные грабли в случае "для сброса флага считать регистр статуса, потом регистр данных". -
про emWin чо скажете?
esaulenka ответил inventor тема в Программирование
Скажите, а как такого добиться? Мне предлагают только выбрать из обычных "больших" фреймворков. У меня подозрение, что установщик не в курсе моего (триального) аккаунта. Куда логин-пароль вводить, я так и не понял... Золотые слова. Жаль только, брёвна в своих глазах плохо видно... -
Error frames на шине
esaulenka ответил Polaris тема в Controller Area Network (CAN)
Мда. Пока не наступишь на эти грабли, и не догадаешься... А проблема документирована, на самом деле: http://ww1.microchip.com/downloads/en/DeviceDoc/80000740D.pdf "The FDPLL96M exhibits high period jitter and is not suitable for accurate clocking." В новых ревизиях поправлено. Но насколько этот PLL inaccurate, ни атмел, ни микрочип не сознались... -
Конечно же, это не так. Правильный ответ "можно в некоторых сериях камней". Например, в F0, L0, L4, F3, F7. Ключевое слово для поиска в референс мануале - "Character match flag".
-
telnet в eclipse
esaulenka опубликовал тема в GNU/OpenSource средства разработки
Здравствуйте! Кто-нибудь пользуется сеггеровской отладочной консолью RTT ? Штука весьма удобная, но я никак не придумаю, как её нормально интегрировать в эклипс. Сеггеровская софтина при старте отладки запускает телнет-сервер, куда сыпятся все сообщения из контроллера. К этому серверу надо прицепиться телнет-клиентом. В принципе, телнет-клиент в эклипсе есть, но каждый раз соединяться после запуска отладки мне надоело. Про Segger RTT Viewer я в курсе (собственно, им и пользуюсь), но лишнее окно мешается...