ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
27 мая
957392 Топик полностью
Связанные сообщения
АрхитектураHalTclСинтетический Порт
LL vs Registers - стоит ли заморачиваться LL? Посмотрел на LL примеры для stm32, он дает достаточно длинный и сложный на первый ...2024-05-04
Есть Jim, который раз в 5-10 меньше, чем Tcl. Но по скорости заметно хуже (т.к. работает с текстом в лоб, не имеет текстового и ...2020-10-29
Подскажите как сейчас правильно организовать в микроконтроллере программные таймеры?2020-10-23
Начиная с virtual environment смешалось всё. JSON и всё такое прочее -- это детали реализации конкретной системы, а не высокоуро...2020-07-11
Требуется мнение об идее реализации синтетических портов, пока привожу основные тезисы: Синтетической порт(Synth port) представл...2020-07-11
Тебе нужен встраиваемый интерпретатор способный работать в REPL-режиме. Я уже ранее давал тут ссылку на partcl, lil, picol и ...2020-03-25
При наличии полноценного компилятора не при чём (не хуже чем 16 бит). Но как правило с этим проблемы. Для всех кроме AVR у многи...2020-02-28
Выводы контроллера всегда управляются в контексте управления каким-либо более крупным аппаратным ресурсом. I2C-шиной, например. ...2019-12-17
Спасибо, вообще в документе многие пункты достаточно разумны, я особо подчерку для некоторых здешних читателей:2019-10-30
Да, примерно об этом я и думаю. Что систему КА можно запускать параллельно, на пуле потоков, по выбирая готовые к запуску по мер...2019-10-22
Как запустить параллельную систему КА написано у Шалыто лет 20 тому назад. Впрочем и самому додуматься можно. Тема уже изъезженн...2019-10-22
Ровно наоборот. Конечные автоматы подразумевают ЯВНОЕ выделение всех возможных состояний программы (как множества состояний сист...2019-10-21
Выскажу ещё раз: FreeRTOS сырая недоделка, смысла особого, без реализации ряда перечисленного (см. ниже) не имеет и, хуже того, ...2019-10-18
Когда часть ПО, которая на стыке с железом, замещается на симулятор для ПК и вся программа запускается и отлаживается на ПК. В и...2019-10-02
Для этого не нужен именно ваш прибор, для этого может быть вообще не нужно железо (про "синтетический порт" и Evgeny_CD и я уже ...2019-10-02
Помимо прочего при нормальном программировании всегда делается какой-то "логгер" ведущий протокол работы программы. Потому, что ...2019-08-10
От проекта зависит. Насколько чётко выделена аппаратно-зависимая часть и насколько абстракции используемые в старом проекте реал...2019-05-24
По-моему наоборот, Tcl стали закапывать. Старое wiki было куда гораздо лучше. Найти и скачать бы копию. wiki.tcl.tk сейчас уже в...2019-02-06
Собственно можно код запускать в эмуляторе процессора (qemu), которому привязать симуляцию нужной аппаратуры, или заменить HAL н...2019-02-06
Ты что-то не то говоришь. В тикле там свой встроенный цикл обработки событий, либо можно свой написать вместо него, смотря как у...2018-12-01
Когда ПО прибора запускается на обычном ПК. Для этого обычно ПО разделяется на два слоя, как минимум: платформо-независимый (бол...2018-05-23
Презентации:2018-04-28
tclquadcode компилирует Tcl через llvm в нативный код, ускоряет до 25 раз!2018-04-28
Ну нижнее днище нижнего ада в андроиде пройдено: "based on ... SDL... project", "X11 emulation based on... and SDL" -- выглядит ...2018-04-08
[Tcl] сводный системный топик. Коллеги, а кто-нибудь Tcl пробовал использовать для инструментальных целей (кроме FPGA). У...2017-12-14
Что интересно, Julia имеет биндинги с Tk (ну и там целиком встроенный Tcl имеется...)2017-11-29
small version of Tcl -> подборка2017-09-29
Дополню, что успел наковырять. #интерпретаторы #скрипты2017-09-15
If one needs a scripting language for a microcontroller - there is not so many choices... (C) Tcl-подобный минимальный интерпре...2017-01-24
Кстати Tcl/Tk умеет работать поверх SDL.2016-08-04
Векторные картинки так же легко генерировать в первую очередь в виде postscript и его сильно усечённой версии PDF, в виде window...2016-07-10
Подход, если не нужно реальное вытеснение (т.е. критично время реакции), порочный: сложные системы в "больших компьютерах", наоб...2015-09-12
Одни абстракции заменяются на другие, которые тоже нужно учить, документировать и запоминать, учитывать возможные побочные эффек...2015-07-23
Жалкая паделка финских студентов написана на 100% на C, из ассемблера только вектора прерываний, crt и ещё мелочи, в C30 v3.31. ...2014-04-10
Tcl - 25 лет! -> -->2014-01-20
Да, трэш угар и содомия. Иногда абстракции через край, поэтому я имею такое мнение, что иногда и не грех в исходники прямо вписа...2013-12-29
Не совсем. Над HAL может быть ещё один слой, уже нужный для совмещения разных программных интерфейсов. Т.е. есть модуль A, котор...2013-10-25
Вот и отличненько. Удалось значит понять суть: императивный стиль программирования повсеместно вдалбливаемый в (не)окрепший мозг...2013-07-31
Tcl/Tk. Причём не обязательно даже наговнокодить. Но увы, хорошего tutorial нет, да и после знакомства с поделками microsoft п...2013-01-14
Кто о чем, а вшивый о бане я о кодевеломпенте софта-железа. Итак, пусть у нас есть Tcl, который позволяет прикручивать "в...2012-02-24
Топик посвящён программированию микроконтроллеров в условиях необходимости экономии электроэнергии и архитектуре ПО в целом.2011-10-24
Полезны аж 3 прослойки (ассемблеристам дальше лучше не читать):2011-10-13
Тут очень любят рассуждать о RTOS и всём таком. Но как-то массово замалчивается, что стандартная C-библиотека для неопределённог...2011-08-13
Можно picol 2010-10-13
Кстати, про синтетические системы и реальное время. Все гораздо интереснее, чем кажется!2007-07-28
fk0, легенда (07.11.2019 12:59, просмотров: 861) ответил SciFi на Говорят, "test-driven development" в этих случаях помогает. Сделал рефакторинг, прогнал тесты, чувствуешь себя сухо и комфортно. Хотел попробовать, но с этими тестами столько геморроя (особенно симулировать железо), что забил. Плетём лапти по
Железо нужно симулировать не на уровне битов и фронтов сигналов, а на уровне высокоуровневых операций (например, чтение-запись блоков данных в EEPROM делается через функцию HAL)... Потом на сам HAL пишутся тесты и с осциллографом в руках на реальном железе изучается их работа. Потом ПО разрабатывается на ПК, с подмененным слоем HAL, где функции виртуальные (EEPROM как файл). Там где в синтетической платформе нужна логика (клапан открыли -- через пол секунды сработал датчик) или GUI (чтоб видеть вывод и руками симулировать ввод, чтоб не делать в натуре стенд с лампочками и тумблерами) -- HAL лишь протаскивает нужные функции из C-кода в Tcl. Остальное дописывается на Tcl/Tk в 10 раз быстрей. Что касается тестирования, то здесь есть несколько разных подходов: 1) Юнит-тестирование, применимо только к хорошо изолируемым "юнитам", классам в C++ с ограниченным функционалом, которые не имеют огромной зависимости от лежащих ниже API (которые придётся тоже симулировать, что уже достаточно сложно). Юнит-тестирование подходит только для хорошо изолируемых модулей. ПК-программисты этого не понимают, пытаются применить везде и в итоге во-первых сложно, во-вторых тесты проходит, а по факту не работает (потому, что отсутствующие слои нижележащих API симулируются не так, как оно есть в действительности). 2) "Интеграционное" тестирование, я четкого названия не знаю. Когда со всей пирамиды разных слоёв API отрывается верхняя часть, а нижняя остаётся такая какая есть. За исключением HAL, который замещается на другой, для возможности запуска на ПК. Такие тесты могут осуществляться на разных слоях API, что важно. Тесты проверяют, что по факту вызовов API очередного слоя, этот слой и все нижележащие работают верно, что достигается нужный результат, что в HAL попадают нужные запросы (тесты могут наблюдать за состоянием HAL через какой-либо механизм, вплоть до парсинга логов, тесты пишутся скорей на C, потому, что связывать каждый слой с Tcl -- муторно). Данные тесты очень важны, жизненно. Без них в принципе сложно или невозможно выстраивание пирамиды ПО достаточно большой высоты, со множеством слоёв -- развалится как вавилонская башня, если нельзя толком опереться на гарантированно рабочие нижние слои и нужно всё отлаживать в целом и одновременно. Данный способ тестирования реализует принцип "разделяй и властвуй" и позволяет уменьшить сложность и объём одновременно отлаживаемого ПО. Почему-то об этом мало где, нигде практически, не пишут. 3) Функциональное тестирование. Когда подменяется только HAL, который в конечном счёте является и источником входных воздействий или сигналов, и проверяет результат (для этого скриптинг на Tcl очень помогает, потому, что писать тесты на C было бы сложно, долго и неудобно). Проверяется, что программа в целом реализует нужный функцинал. Данный способ плохо подходит для отладки больших систем, но он принципиально необходим как гарантия работоспособности. И в любом случае архитектура ПО должна напоминать пирамиду. Пирамида должна уметь частично разбиратся. Т.е. когда нижние слои ничего не знают о верхних и могут обращаться к верхним лишь косвенным образом (через делегаты, коллбэки, широковещательные события), верхние знают о нижних и умеют их использовать напрямую (путём вызова функций). Важно, чтоб пирамиду всегда можно было разобрать сняв верхние слои и она при этом не сломалась (собиралась, запускалась). Для этого все зависимости должны быть развёрнуты строго в одну сторону (вниз), зависимостей направленных вверх между слоями не должно быть. Зависимости одном слое возможны. Зависимости вниз через слой (с пропуском) -- желательно минимизировать, т.к. они лишают возможности подстановки/замены нижнего слоя другой реализацией. И сами зависимости, разумеется, должны реализоваться через интерфейсы и не подразумевать определённую реализацию под интерфейсом (что позволяет сменить реализацию более нижнего слоя). Опять же, про архитектуру почему-то мало где или нигде не пишут. По крайней мере в области embedded-программирования.
[ZX]