Цифровая микроэлектроника для математиков и программистов 2017Anton Moiseev
История курса "Как пересечь пропасть от физики к программированию" в НГТУ им Алексеева http://1i7.livejournal.com/17550.html и последствия в цикле занятий Популярная робототехника в ДОСААФ http://1i7.livejournal.com/28866.html
Цифровая микроэлектроника для математиков и программистов 2017Anton Moiseev
История курса "Как пересечь пропасть от физики к программированию" в НГТУ им Алексеева http://1i7.livejournal.com/17550.html и последствия в цикле занятий Популярная робототехника в ДОСААФ http://1i7.livejournal.com/28866.html
Введение в профессию исследователя приложений без исходных кодовDI GR
Презентация первого подкаста образовательного цикла "Обратная разработка приложений без исходного кода и поиск в них уязвимостей". Аудио-запись находится здесь https://vimeo.com/224742672.
Не хватает, скажем, человеку рук - он создает себе дубля, безмозглого, безответственного, только и умеющего что паять контакты, или таскать тяжести, или писать под диктовку, но зато уж умеющего это делать хорошо.
Аркадий и Борис Стругацкие
Статья представляет собой введение в параллельные программы для начинающих. Статья была опубликована в журнале "Мир ПК" (http://www.viva64.com/go.php?url=429).
Лабораторные работы (практикум) по конструкции и компоновки персонального компьютера. Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
закон иерархических компенсаций седова и C++ core guidelinescorehard_by
Стандартизация шагает по планете широким шагом. Почему создание сложных систем невозможно без подведения общего знаменателя и принятия стандартов? Можно ли объяснить этот факт с научной точки зрения? В докладе мы рассмотрим как общие вопросы стандартизации и развития информационных систем (в чём нам поможет великий советский ученый-практик Евгений Александрович Седов), так и погрузимся в стандартизацию практик кодирования нашего любимого языка - C++ Core Guidelines
закон иерархических компенсаций седова и C++ core guidelinesCOMAQA.BY
Стандартизация шагает по планете широким шагом. Почему создание сложных систем невозможно без подведения общего знаменателя и принятия стандартов? Можно ли объяснить этот факт с научной точки зрения? В докладе мы рассмотрим как общие вопросы стандартизации и развития информационных систем (в чём нам поможет великий советский ученый-практик Евгений Александрович Седов), так и погрузимся в стандартизацию практик кодирования нашего любимого языка - C++ Core Guidelines
Presentation about most popular IoT protocols.
Открытые стандарты в мире IoT.
• Обзор стеков протоколов для IoT
• (MQTT, CoAP, SNMP).
• Применение SNMP в IoT проектах.
• Описание свойств IoT-устройства на примере термостата
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
Для многих enterprise-разработка ассоциируется с бесконечным унаследованным кодом, устаревшими технологиями и неповоротливыми монолитами. Использование подходов построения сервис-ориентированной архитектуры может существенно улучшить ситуацию. Мы пишем небольшие приложения с чёткой зоной ответственности и покрытием модульными тестами, используем современные протоколы OData и OAuth, а legacy-приложения развиваем подключением повторно используемых модулей. В своем докладе я расскажу о том, чего удалось добиться за последние пару лет, какие роли мы выделили и с какими сложностями столкнулись.
Введение в профессию исследователя приложений без исходных кодовDI GR
Презентация первого подкаста образовательного цикла "Обратная разработка приложений без исходного кода и поиск в них уязвимостей". Аудио-запись находится здесь https://vimeo.com/224742672.
Не хватает, скажем, человеку рук - он создает себе дубля, безмозглого, безответственного, только и умеющего что паять контакты, или таскать тяжести, или писать под диктовку, но зато уж умеющего это делать хорошо.
Аркадий и Борис Стругацкие
Статья представляет собой введение в параллельные программы для начинающих. Статья была опубликована в журнале "Мир ПК" (http://www.viva64.com/go.php?url=429).
Лабораторные работы (практикум) по конструкции и компоновки персонального компьютера. Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
закон иерархических компенсаций седова и C++ core guidelinescorehard_by
Стандартизация шагает по планете широким шагом. Почему создание сложных систем невозможно без подведения общего знаменателя и принятия стандартов? Можно ли объяснить этот факт с научной точки зрения? В докладе мы рассмотрим как общие вопросы стандартизации и развития информационных систем (в чём нам поможет великий советский ученый-практик Евгений Александрович Седов), так и погрузимся в стандартизацию практик кодирования нашего любимого языка - C++ Core Guidelines
закон иерархических компенсаций седова и C++ core guidelinesCOMAQA.BY
Стандартизация шагает по планете широким шагом. Почему создание сложных систем невозможно без подведения общего знаменателя и принятия стандартов? Можно ли объяснить этот факт с научной точки зрения? В докладе мы рассмотрим как общие вопросы стандартизации и развития информационных систем (в чём нам поможет великий советский ученый-практик Евгений Александрович Седов), так и погрузимся в стандартизацию практик кодирования нашего любимого языка - C++ Core Guidelines
Presentation about most popular IoT protocols.
Открытые стандарты в мире IoT.
• Обзор стеков протоколов для IoT
• (MQTT, CoAP, SNMP).
• Применение SNMP в IoT проектах.
• Описание свойств IoT-устройства на примере термостата
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
Для многих enterprise-разработка ассоциируется с бесконечным унаследованным кодом, устаревшими технологиями и неповоротливыми монолитами. Использование подходов построения сервис-ориентированной архитектуры может существенно улучшить ситуацию. Мы пишем небольшие приложения с чёткой зоной ответственности и покрытием модульными тестами, используем современные протоколы OData и OAuth, а legacy-приложения развиваем подключением повторно используемых модулей. В своем докладе я расскажу о том, чего удалось добиться за последние пару лет, какие роли мы выделили и с какими сложностями столкнулись.
1. Embedded System Development
Что это такое?
Как мы за полвека
Где это применяется? перешли от
электромагнетизма
до высокоуровневого
программирования
Антонян Олег AntLabs software development
2. Agenda
О себе
Главное слово - астракция
Собственно embedded systems
Демо!
Вопросы
45 минут на всё
3. О себе
2 года профессионально занимаюсь
разработкой электронных устройств и ПО для
них
Фриланс → маленькая компания
С 6 лет радиолюбитель
4. What is engineering?
Это целенаправленное применение науки
Phase 1 — Придумать новую технологию, закон,
материал, etc (учёные-теоретики)
Phase 2 — ??? (инженеры-практики)
Phase 3 — Profit!
5. Абстракция
Более 9000 абстракций...
“Машинные коды” АЛУ
АЛУ, концепция “вычисление”
Цифровая схемотехника
Электротехника, электрические цепи
Электромагнитизм, движение зарядов
6. “Закон дырявых абстракций”
The Law of Leaky Abstractions by Joel Spolsky
Как ненадёжные низшие уровни обеспечивают
надёжность высших и всегда ли это работает?
http://joelonsoftware.com/Articles/LeakyAbstractions.html
7. Wonder why we don't crash like computers?
Yale explains
by Ben Coxworth
http://www.gizmag.com/yale-scientists-compare-bacteria-to-linux/15037/
9. Причём тут школьная физика?
Разработка embedded устройств требует
знания электроники и низкоуровневого
программирования
Вы видите как запись битов в регистры
изменяет уровни напряжения на выводах
процессора
“То что нельзя сделать с помощью кода
приходится делать с помощью паяльника”
10. Ужасная терминология
Слово “embedded” как нельзя хуже подходит
для описания этой области
Согласно терминологии – веб-сервер в
датацентре – embedded system?
Деление на низкоуровневое и высокоуровневое
программирование как и деление на настольные
ПК и устройства управления кофеваркой –
условное
11. Так в чём же отличия?
Различные подходы к разработке
Различные инструменты
Различные предметные области
Real-time
12. Real time means right now!
Часто в устройствах на микроконтроллерах
используется подход “real time”
Гарантированный отклик на внешнее событие,
гарантированное время работы потока в RTOS
13. Инструменты разработки
На самом деле не такие они и разные
Доминирует язык C и Ассемблер, за ним C++,
кое-где приходит .NET micro framework и C#,
потихоньку наступает Java (недавно выпущена
бета-версия для STM32)
В более крупных системах на embedded
GNU/Linux или специальных RTOS в
принципе нет ограничений на
языки/фреймворки кроме аппаратных
14. Гиганты и малявки
Под крупными системами подразумеваются
устройства под управлением Linux или
аналогичных по “весовой категории” RTOS
Linux != RTOS, несмотря на существование
CONFIG_PREEMPT_RT
Пример популярной RTOS для
микроконтроллеров - FreeRTOS
15. FreeRTOS vs GNU/Linux
В ядре только простейший планировщик, IPC
(очереди, мьютексы и тд.), “выделятор”
динамической памяти
Без MMU нет виртуальной памяти
Доступ к периферии напрямую из процессов
(хотя на процессорах с MPU возможно
разделение на user и kernel space)
16. Пример
int main(void)
{
xTaskCreate(thread_func,”name", STACK_DEPTH, ¶ms, PRIORITY, &handle)
vTaskStartScheduler();
/* will only get here if there was no memory to create the idle task */
return 1;
}
void thread_func(void *params)
{
while(1)
{
/*do stuff */
/* and sleep for 10 mS */
vTaskDelay(10 / portTICK_RATE_MS);
}
}
17. Есть ли жизнь без ОС?
Ага. Большинство устройств на
микроконтроллерах не имеют ОС
Вся работа выполняется в одном бесконечном
цикле и прерываниях
Не нужно беспокоиться о thread-safety
Сложнее масштабировать, но для простых
устройств нет нужды использовать ОС
18. Пример
int main(void)
{
while(1)
{
if(some_flag)
{
do_some_stuff();
}
if(some_other_flag)
{
do_some_other_stuff();
}
/* here we can shut down CPU and wait for interrupt */
}
}