Pull to refresh
66
0
Анастасия Шишова @ana_lazareva

Программист

Send message
Я делала небольшой проект под CC1310 с использованием TI-RTOS. Хочу сказать, что если человек никогда не использовал ОС в проектах, то я бы порекомендовала начать с FreeRTOS, т.к. она очень простая и прозрачная. С другой стороны, если проект под техасовские чипы, то я бы использовала все-таки TI-RTOS, просто потому, что техас предоставляет огромное количество примеров, демо проектов, все задокументировано более чем полностью… Тут главное не потеряться во всем этом изобилии и прогитовиться к тому, что читать придется очень много)
Tracealyzer и Segger SystemView штуки, безусловно, очень мощные, полезные и ими нужно пользоваться.

Но, во-первых, эта статья, как я указала в самом начале, ориентирована в большей степени на тех людей, которые только начали свое знакомство с FreeRTOS, а на первых парах, для формирования понимания, того, что описано в статье, на мой взгляд, вполне достаточно.

Во-вторых, для того чтобы использовать эти утилиты, необходим J-LINK. И да, можно сделать J-LINK из ST-LINK, но с этим нужно повозиться (возможно даже не один день), а потом еще потратить время на то, чтобы овладеть всеми фичами этих программ. А в статье описан максимально простой трейсинг, реализуемый средствами самой ОС.

В-третьих, эти утилиты работают только тогда, когда ты отлаживаешь программу «на столе», сидя на своем уютном рабочем месте и с подключенным отладчиком. Но если программа очень комплексная, то часто ты физически не способен в лабораторных условиях нагрузить ее так сильно, как она может быть нагружена в реальных условиях. Поэтому на этапе первых испытаний устройства в полевых условиях, очень полезно весь runtime трейсинг писать в лог, чтобы если что-то сломалось, ты мог понять почему (если поломка была связана с работой ОС).

Вот. Так что думаю, что для многих читателей эта статья все еще может быть актуальной)
Для каждой задачи — свой инструмент. Я не буду есть суп вилкой — это странно и не эффективно) Если мне нужно разработать систему, где время отклика исчисляется десятками, а то и единицами микросекунд (в моей практике это, как правило, всякие военные системы управления), то я изначально не буду использовать FreeRTOS, потому что она не в силах обеспечить такое быстродействие системы. А вот для систем, где время отклика не является критичным, но есть требование параллельного выполнения ряда задач, то тут FreeRTOS как нельзя кстати. Из последнего: устройство должно одновременно общаться с сервером по FTP, с подключенным устройством по Bluetooth, обновлять текущее состояние на дисплее, писать лог, снимать кучу отчетов, а по запросу еще и делать снимки, при этом работая в режиме 24/7. А в проекте Пастильда нам нужно было строить чертово xml дерево, и расшифровывать десятки килобайт данных на контроллере) Вот для таких задач FreeRTOS необходима, как и хороший менеджер памяти. В целом, в embedded практически всегда вся память выделяется либо статически на этапе компиляции, либо динамически, но только во время старта программы. От этого никуда не деться, специфика такая. Однако иногда очень приятно иметь возможность кое-что и динамически в runtime выделить, без коллапса системы при этом. Тут просто нужно понимать как работает ОС, следить за использованием ресурсов и тогда ничего критического не произойдет.
Мне нужно расшифровывать базу, которая лежит на внешнем флеше микроконтроллера, а там своя атмосфера: мало оперативки, нельзя использовать динамическое выделение памяти… Поэтому надо писать свой порт.
Да, мы планируем сделать 2 версии: стационарную, которая будет как переходник между клавиатурой и системным блоком, и портативную — для планшетов, ноутбуков и сматрфонов. Однако на данный момент мы закончили только прототип устройства (основной функционал реализован), чтобы можно уже было демонстрировать потенциальным клиентам.
Стационарная версия: для PC наше устройство является клавиатурой и дисковым накопителем. Все сообщения от подключенной клавиатуры транслируются в PC через наше устройство, т.о. конфиденциальная информация (например, мастер-пароль) никогда не попадет в оперативку PC => кейлоггеры беспомощны тут.
Портативная версия: все то же самое, однако управление устройством, ввод мастер-пароля и выбор логина и пароля будет осуществляться через кнопочный интерфейс на самом устройстве. Детально эта версия еще не прорабатывалась.
Я ответила на ваш вопрос, или вы имели ввиду что-то другое?
Более подробно об устройстве написано здесь. В блоге мы регулярно будем писать о нашем прогрессе)
А еще можно украсть с помощью кейлоггера мастер-пароль и получить полный доступ к базе, а в нашем случае придется красть еще и само устройство, что усложняет задачку, т.к. это невозможно сделать дистанционно и владелец уж точно поймет, что произошла утечка )
Огромное спасибо! Это очень ценная информация.
Мы сейчас разрабатываем аппаратный менеджер паролей, который сведет шансы взлома KeePass к минимуму, и будет самостоятельно вводить пароль. Об устройстве мы уже писали здесь. Уязвимость KeePass состоит в том, что расшифрованная база данных находится в оперативке => если очень захотеть, то эти данные можно украсть. В нашем же случае, расшифрованная БД находится в оперативной памяти устройства и только на момент ввода пароля. Если используются файлы-ключи, то они находятся в защищенной от чтения и записи области флеш памяти устройства. Таким образом, даже если к компьютеру подключен наш аппаратный менеджер паролей, сторонний человек не сможет им воспользоваться, т.к. при очередной попытке ввода логина и пароля, устройство запрашивает мастер-пароль и лишь при его корректности расшифровывает базу данных. Если устройство украли, то это тоже мало чем поможет, т.к. на внешней флеш памяти лежит только зашифрованная БД, а все файл-ключи и мастер-пароли защищены от чтения.
Да, данная задача решалась в рамках разработки аппаратного менеджера паролей.
это опечатка) сейчас исправлю.
Вы имеете ввиду USB video device? Почему нет? Для того, чтобы устройство распознавалось как video device, необходимо лишь правильно описать дескрипторы, тут найти примеры не составит труда. Для работы устройства нужно понимать протокол взаимодействия хоста с данным видом устройств. Существует документ Universal Serial Bus Device Class Definition for Video Devices там все подробно описано (глава 3 поможет с дескрипторами, а глава 4 с протоколом взаимодействия). Изучите его, поймите, что требуется, и это, я полагаю, значительно облегчит ваши поиски! Удачи!
Так да) Мы уже задались вопросом почему мы SD-то не поставили, это действительно было бы проще. С контроллером тоже косяк вышел, мы поставили STM32F40x, а нужно было STM32F41x, ибо в там есть крипто процессор. «На лету» вы имеете ввиду расшифровывать только необходимые в данный момент записи?
Спасибо, я услышала вас. Давно собиралась почитать книжку Real-Time C++ Efficient Object-Oriented and Template Microcontroller Programming, — Kormanyos C.M, а вы напомнили мне о ней)
Разве PVS-Studio не заточен под VS? Может быть вы можете порекомендовать еще какие-нибудь анализаторы?
Реализация 0.1 является тестовой, типо proof of concept и все такое. В рамках данной реализации, мы пока не используем media клавиатуры, клавиатуры с USB хабами и т. д. Мы обязательно займемся этим на следующем этапе развития проекта, но на данной стадии это избыточно. Тут перед нами стоит другая задача: проверить жизнеспособность идеи. Например, на внешней памяти предполагается организация файловой системы и нужно оценить скорость записи файлов на диск через USB, скорость работы самого контроллера с этой памятью как с файловой системой. Еще нам нужно портировать keepass и тут тоже много вопросов: сколько времени будет занимать шифрование / дешифрование базы данных, а подумали ли мы о том, где хранить расшифрованную базу данных и др. Таким образом, пока что нам нужно сделать прототип устройства, чтобы понять:
  • подходящий ли контроллер мы выбрали?
  • а память?
  • нам нужно где-то хранить расшифрованную БД, так может рядом с флешом поставить еще и энергозависимую память?
  • а что со скоростью работы устройства? не пора ли нам использовать RTOS?

и многое другое.
Да, согласна с вами. О применении ChibiOS в проектах думаю уже довольно давно. Слышала, что HAL там действительно самый хороший из всего того, что на данный момент представлено. Но на внедрение использования OS (на корпоративном уровне) нужно время, которого к сожалению всегда не хватает. Однако, полагаю, что скоро жизнь заставит и переход на ChibiOS все-таки будет осуществлен.
На этом месте в дальнейшем будет меню, здесь нужно было просто вывести что-нибудь, что бы понять, работает USB HID или нет.
Наше устройство для системы является клавиатурой. Когда Пастильда принимает сообщение от ПК на включение светодиодов, то т. к. по отношению к реальной клавиатуре она является хостом, то просто перенаправляет сообщение от ПК в клавиатуру и запоминает, какие светодиоды задействованы. Когда происходит переход в режим ввода логина и пароля, Пастильда как хост, может управлять светодиодами, а как девайс может выводить сообщения. После выхода их этого режима, восстанавливается состояние светодиодов, которое было до перехода в режим.
1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity