Для незнакомых с ситуацией вкратце - любая библиотека на С это в конечном счёте всего лишь набор .c файлов и набор .h файлов, а также опции компиляции
Бинго! Вот это самое верное. Не забываем насколько Си язык простой. Это не Си++. Любой проект на Си можно "раскрутить" относительно быстро, если вы умеете пользоваться поиском по файлам в папках. Возьмите тот же notepad++. В хорошей библиотеке все имена идентификаторов написаны с умом, клубок быстро распутается, можно будет забрать только те файлы, которые необходимы вам. Кстати так и интегрируют старые проекты в свои: добавляют CMakeLists.txt в папке уровнем выше над субмодулем.
А мусорных файлов там нет. Каждый был сделан для чего-то, для какой-то платформы, может быть для какой-то совместимости с чем-то, что работает 20-30 лет стабильно и без перебоев.
Есть сложившая практика и она хорошо работает. Лучшее - враг хорошего. Так что потратить время немного придется, можно принять это как факт при разработке на Си.
Ну да. Есть неприятные случаи, когда нужно перед сборкой генерировать что-то инструментами типа bison и flex.
проведение 50+ интервью с потенциальными клиентами
Вы такие смешные, приходите на ИТ ресурс, говорите разработчикам проводить интервью, но никогда не говорите как именно это делать. Где вот эти 50+ людей обитают? Как с ними заговорить?
Для кого эта статья? Явно не для разработчика, который решил делать свой стартап. Да и не для хабра вообще.
Когда изначально мало информации, вы имеете дело с контрагентом, который в ИТ ничего не понимает. И, получается, до оценки проекта так или иначе нужно создать ТЗ, в котором достаточно информации, что и сделано в статье. В идеальном случае нужно заключать договор на разработку ТЗ, а уже потом на разработку по ТЗ. И вот тут у меня на практике несколько выборов: 1) отказаться от клиента вообще, 2) сделать авансом ТЗ и понадеяться на заключение договора, 3) разработать ТЗ за отдельную плату. В начале пути о первом варианте я вообще не думал как о допустимом, а сейчас это способ спокойно жить. Скоринг клиента в помощь.
Да, я прочувствовал это приключение: как в студенческие годы, когда хочется возиться со всеми этими механизмами! Разбираешь их на атомы и собираешь обратно
Вы по сути реализовали setjmp() и longjmp() для x64 плюс стек. Во FreeRTOS до 9 версии это называлось Короутинамм (ага!). Очень полезная вещь, когда наперёд просчитал все затраты по времени на выполнение каждой функции.
Zephyr и ESP-IDF живут так, что питон над CMake над Make (или что-то другое). Почти всё необходимое для разработки, отладки и сборки есть, вызывается простыми командами. Легко тромбуется в контейнер. Там есть что подчерпнуть.
Единственное, что приходится делать самому - сервер OTA прошивок.
Вы говорите про дисплей на базе чипа ssd1306, но так и не называете сам дисплей. Почему это важно? Уверен, на плате дисплея есть места для резисторов, убирая или добавляя которые Вы устанавливаете значения контактов BS[2:0] контроллера (ssd1306 datasheet, 13), что в свою очередь определяет интерфейс между MCU и ssd1306.
Статья будет в разы интереснее, если Вы расскажете о всех доступных интерфейсах в данной реализации дисплея. Особенно интересен 3-wire SPI, где отсутствует линия D/C#, а по SPI передаются данные в формате 9 бит: 1 бит – выбор данные-команда, 8 бит – значение.
Для чего нужен режим 3-wire SPI: чтобы не дёргать каждый раз контакт D/C#, отправлять команды и данные на дисплей используя SPI-DMA. Упрощает программу, упрощает использование. Данный контроллер имеет возможность частичного обновления экрана (ssd1306 datasheet, 35-36). Для установки границ нужно отправлять сначала команды, а потом данные. При использовании 3-wire SPI Вы сформируете один буфер с командами и данными, запустите SPI-DMA, займётесь иными полезными операциями.
О том, как реализовать 9-бит SPI, тоже желательно расписать! На сериях F0 и F7 можно выбрать количество бит данных SPI от 4 до 16, а в других сериях только 8 или 16 ЕМНИП.
Прекрасная библиотека LVGL поможет раскрыть весь потенциал дисплеев на контроллерах ssd1306 и ему подобных. Библиотека реализует частичное обновление экрана.
Вы выбрали тему, которую можно разбить на группу интересных статей. Постарайтесь доносить в каждой статье что-то одно. В данной статье не было полного обзора ни на дисплей (платка, резисторы), ни на контроллер дисплея (а вся серия стоит внимания). Понимаю желание настраивать периферию непосредственно через запись значений в регистры. Однако, если Вы говорите про дисплей, то лучше бы использовать библиотеку HAL, чтобы не отвлекать читателя кодом. А код напрашивается на переработку.
Начало серии статей положено. Надеюсь на Ваши успехи и дальнейшее изложение успехов в статьях.
Если учесть для какой ЦА вы делаете этот how-to, то сразу посадите людей на Caddy. Вашей ЦА даже wildcard сертификаты не нужны.
Остаётся тема Docker + Caddy. Но окажется и здесь можно проще сделать. Смотрим в сторону ansible. И от вашей статьи останется два абзаца плюс реклама
Бинго! Вот это самое верное. Не забываем насколько Си язык простой. Это не Си++. Любой проект на Си можно "раскрутить" относительно быстро, если вы умеете пользоваться поиском по файлам в папках. Возьмите тот же notepad++. В хорошей библиотеке все имена идентификаторов написаны с умом, клубок быстро распутается, можно будет забрать только те файлы, которые необходимы вам. Кстати так и интегрируют старые проекты в свои: добавляют CMakeLists.txt в папке уровнем выше над субмодулем.
А мусорных файлов там нет. Каждый был сделан для чего-то, для какой-то платформы, может быть для какой-то совместимости с чем-то, что работает 20-30 лет стабильно и без перебоев.
Есть сложившая практика и она хорошо работает. Лучшее - враг хорошего. Так что потратить время немного придется, можно принять это как факт при разработке на Си.
Ну да. Есть неприятные случаи, когда нужно перед сборкой генерировать что-то инструментами типа bison и flex.
Вы такие смешные, приходите на ИТ ресурс, говорите разработчикам проводить интервью, но никогда не говорите как именно это делать. Где вот эти 50+ людей обитают? Как с ними заговорить?
Для кого эта статья? Явно не для разработчика, который решил делать свой стартап. Да и не для хабра вообще.
Когда изначально мало информации, вы имеете дело с контрагентом, который в ИТ ничего не понимает. И, получается, до оценки проекта так или иначе нужно создать ТЗ, в котором достаточно информации, что и сделано в статье. В идеальном случае нужно заключать договор на разработку ТЗ, а уже потом на разработку по ТЗ. И вот тут у меня на практике несколько выборов: 1) отказаться от клиента вообще, 2) сделать авансом ТЗ и понадеяться на заключение договора, 3) разработать ТЗ за отдельную плату. В начале пути о первом варианте я вообще не думал как о допустимом, а сейчас это способ спокойно жить. Скоринг клиента в помощь.
Да, я прочувствовал это приключение: как в студенческие годы, когда хочется возиться со всеми этими механизмами! Разбираешь их на атомы и собираешь обратно
Вы по сути реализовали
setjmp()иlongjmp()для x64 плюс стек. Во FreeRTOS до 9 версии это называлось Короутинамм (ага!). Очень полезная вещь, когда наперёд просчитал все затраты по времени на выполнение каждой функции.Zephyr и ESP-IDF живут так, что питон над CMake над Make (или что-то другое). Почти всё необходимое для разработки, отладки и сборки есть, вызывается простыми командами. Легко тромбуется в контейнер. Там есть что подчерпнуть.
Единственное, что приходится делать самому - сервер OTA прошивок.
BS[2:0]контроллера (ssd1306 datasheet, 13), что в свою очередь определяет интерфейс между MCU и ssd1306.Статья будет в разы интереснее, если Вы расскажете о всех доступных интерфейсах в данной реализации дисплея. Особенно интересен 3-wire SPI, где отсутствует линия D/C#, а по SPI передаются данные в формате 9 бит: 1 бит – выбор данные-команда, 8 бит – значение.
Для чего нужен режим 3-wire SPI: чтобы не дёргать каждый раз контакт D/C#, отправлять команды и данные на дисплей используя SPI-DMA. Упрощает программу, упрощает использование. Данный контроллер имеет возможность частичного обновления экрана (ssd1306 datasheet, 35-36). Для установки границ нужно отправлять сначала команды, а потом данные. При использовании 3-wire SPI Вы сформируете один буфер с командами и данными, запустите SPI-DMA, займётесь иными полезными операциями.
О том, как реализовать 9-бит SPI, тоже желательно расписать! На сериях F0 и F7 можно выбрать количество бит данных SPI от 4 до 16, а в других сериях только 8 или 16 ЕМНИП.
Прекрасная библиотека LVGL поможет раскрыть весь потенциал дисплеев на контроллерах ssd1306 и ему подобных. Библиотека реализует частичное обновление экрана.
Вы выбрали тему, которую можно разбить на группу интересных статей. Постарайтесь доносить в каждой статье что-то одно. В данной статье не было полного обзора ни на дисплей (платка, резисторы), ни на контроллер дисплея (а вся серия стоит внимания). Понимаю желание настраивать периферию непосредственно через запись значений в регистры. Однако, если Вы говорите про дисплей, то лучше бы использовать библиотеку HAL, чтобы не отвлекать читателя кодом. А код напрашивается на переработку.
Начало серии статей положено. Надеюсь на Ваши успехи и дальнейшее изложение успехов в статьях.