Привет! В этом цикле статей я попытаюсь наглядно и сжато объяснить устройство встраиваемых систем на базе Rockchip. Пройдусь по всем шагам загрузки, начиная с первой инструкции и заканчивая разворачиванием всей системы. Для демонстрации я выбрал плату Orange Pi R1 Plus LTS на базе Rockchip RK3328 SoC, ARM Cortex-A53 64-Bit Processor.
Рубрика «system programming»
Встраиваемые системы для начинающих. Часть 1: Устройство
2025-12-29 в 5:26, admin, рубрики: memory, Rockchip, rockchip rk3328, SoC, system programmingМой первый pet-проект: процесс-менеджер synd3
2025-10-20 в 5:21, admin, рубрики: C, c++, linux, ncurses, open source, pet-project, process management, process manager, system programming, tuiВсем привет!
Пишу этот пост, чтобы поделиться своим опытом и получить критику или советы от людей с большим опытом.
Мне 22 года, я из Латвии. По образованию я судовой механик, но уже около 4 лет увлекаюсь программированием. Долгое время это оставалось хобби: пробовал сайты, простые игры — но они не приносили настоящего удовольствия. Я считал, что в программировании нужно было разбираться ещё со школы, и долго не верил, что могу найти себя в этой сфере.
EHCI по-людски на русском языке
2018-10-15 в 8:11, admin, рубрики: C, EHCI, hardware, IT-стандарты, system programming, usb, Компьютерное железо, периферия, программирование микроконтроллеров, системное программирование
Введение
Всех приветствую. Сегодня хочу поделиться опытом и всё-таки по-моему внятно объяснить про такой, на первый взгляд, простой стандарт для USB 2.0 хост-контроллера.
Изначально можно представить себе что USB 2.0 порт — это всего лишь 4 пина, по двум из которых просто передаются данные(Как, к примеру, COM-порт), но самом деле всё не так, и даже совсем наоборот. USB-контроллер в принципе не даёт нам возможности передавать данные как через обычный COM-порт. EHCI — довольно замысловатый стандарт, который позволяет обеспечить надежную и быструю передачу данных от софта до самого девайса, и в обратную сторону.
Возможно, вам пригодиться эта статья, если, к примеру, вы не имеете достаточных навыков написания драйверов и чтение документации к хардвейру. Простой пример: хотите написать свою ОС для мини-ПК, дабы какая-нибудь винда или очередной дистрибутив линукса не загружали железо, и вы использовали всю его мощь исключительно в своих целях.
Читать полностью »
Использование файлов-последовательностей ядра Linux
2018-05-09 в 20:00, admin, рубрики: C, linux kernel, proc filesystem, seq-file, sequential file, system programming, Разработка под LinuxХарактерная черта современного программирования в использовании глобальной сети как источника справочной информации, в частности, источника шаблонов для решения неизвестных или малоизвестных конкретному программисту проблем. Такой подход экономит массу времени и часто даёт вполне качественный результат. Однако, решения, выложенные в сети, хотя обычно правильны, но не всегда учитывают всех тонкостей решения той или иной проблемы, что приводит к появлению в кодах участков, которые обычно работают правильно, но при не совсем стандартных обстоятельствах становятся источниками неприятных неожиданностей.
Рассмотрим тему использования файлов-последовательностей в ядре Linux. Такие файлы считаются самым удобным механизмом для печати из режима ядра. Но на практике использовать их правильно гораздо сложнее, чем можно об этом подумать.
В сети доступно множество материалов по этой теме. Самый лучший – это исходники самого ядра с достаточно подробными комментариями. Проблема этого источника информации в его объёме. Если не знать в точности, что искать, то лучше, имея лишь ограниченное время, и не пробовать. У меня, когда возник интерес к теме, Google нашёл несколько на первый взгляд отличных источников информации: известную книгу The Linux Kernel Module Programming Guide и серию статей Роба Дея (Rob Day) по нужной теме. Источники не новые, но весьма солидные.
Дайджест KolibriOS #13
2017-09-24 в 15:46, admin, рубрики: kolibrios, open source, system programming, ненормальное программирование, системное программирование
Между выпусками прошло достаточно много времени и накопилось достаточно изменений за 2017г.
Дайджест KolibriOS #2: что нам принёс февраль
Дайджест KolibriOS #3: начало весны
Дайджест KolibriOS #4: и весна нам не помеха
Дайджест KolibriOS #5: мы снова с вами
Дайджест KolibriOS #6: последняя осень
Дайджест KolibriOS #7: как мы зиму перезимовали
Дайджест KolibriOS #8: дары весны
Дайджест KolibriOS #9: летний урожай
Дайджест KolibriOS #10 коротко о накопившемся
Дайджест по итогам 2015 года
Дайджест KolibriOS #11 все новости с последнего выпуска и Google Summer of Code 2016
Дайджест KolibriOS #12
Как JVM аллоцирует объекты?
2017-08-01 в 8:23, admin, рубрики: compilers, hotspot, java, jvm, system programming, virtual machine, системное программирование, что вообще происходит
Как JVM создает новые объекты? Что именно происходит, когда вы пишете new Object()?
На конференциях периодически рассказывают, что для аллокации объектов используются TLAB'ы (thread-local allocation buffer): области памяти, выделенные эксклюзивно каждому потоку, создание объектов в которых очень быстрое за счет отсутствия синхронизации.
Но как правильно подобрать размер TLAB'а? Что делать, если нужно выделить 10% от размера TLAB'а, а свободно только 9%? Может ли объект быть аллоцирован вне TLAB'а? Когда (если) обнуляется выделенная память?
Задавшись этими вопросами и не найдя всех ответов, я решил написать статью, чтобы исправить ситуацию.
Перед прочтением полезно вспомнить как работает какой-нибудь сборщик мусора (например, прочитав этот цикл статей).
Linux все еще не торт
2017-07-11 в 4:17, admin, рубрики: autotest, bugs, continuous integration, crash, CRIU, leaks, linux, linux kernel, memory, open source, panic, system programming, upstream, Блог компании Virtuozzo, Разработка под Linux, системное программирование, Тестирование IT-системЭта история началась около месяца назад, когда Кирилл Тхай добавил поддержку вложенных пространств имен в CRIU, после чего наша система CI приказала долго жить. В тот момент ничто не предвещало тех увлекательных приключений, в которые мы оказались вовлечены.
Немного о строках в Си, или несколько вариантов оптимизировать неоптимизируемое
2017-04-12 в 11:57, admin, рубрики: allocation, C, c++, memory, memory leaks, memory management, system programming, отладка, Программирование, Совершенный кодХабра, привет!
Не так давно у со мной произошел довольно-таки интересный инцидент, в котором был замешан один из преподавателей одного колледжа информатики.
Разговор о программировании под Linux медленно перешел к тому, что этот человек стал утверждать, что сложность системного программирования на самом деле сильно преувеличена. Что язык Си прост как спичка, собственно как и ядро Linux (с его слов).
У меня был с собой ноутбук с Linux, на котором присутствовал джентльменский набор утилит для разработки на языке Си (gcc, vim, make, valgrind, gdb). Я уже не помню, какую цель мы тогда перед собой поставили, но через пару минут мой оппонент оказался за этим ноутбуком, полностью готовый решать задачу.
И буквально на первых же строках он допустил серьезную ошибку при аллоцировании памяти под… строку.
char *str = (char *)malloc(sizeof(char) * strlen(buffer));
buffer — стековая переменная, в которую заносились данные с клавиатуры.
Я думаю, определенно найдутся люди, которые спросят: «Разве что-то тут может быть не так?».
Поверьте, может.
А что именно — читайте по катом.
Читать полностью »
Релиз Rust 1.0 Alpha
2015-01-10 в 9:49, admin, рубрики: Rust, system programming, Программирование, релиз, системное программирование, язык программирования, языки программированияС удивлением обнаружил, что это ожидаемое многими событие почему-то обошло Хабр стороной. Думаю, что для многих программистов, следящих за этим языком программирования, будет полезно узнать, что тот самый релиз версии Rust 1.0.0 состоялся 9 января. В этой версии наконец-то стабилизировали ядро языка и большую часть стандартной библиотеки, так что теперь можно начинать писать на Rust'е программы не боясь, что через неделю что-то сломается после обновления компилятора.
От себя могу добавить, что язык действительно интересный и, как минимум, стоит внимания.


