Читать полностью »
Рубрика «C» - 9
Извлечение истории воспроизведения из медиабиблиотеки проигрывателя Winamp
2022-03-26 в 18:10, admin, рубрики: C, Excel, Winamp, winhex, Восстановление данных, реверс-инжинирингЧитать полностью »
Основы работы отечественных МК 1986ВЕ1Т с болгарскими отладчиками OLIMEX ARM-USB-OCD-H. Часть 2 — RAM & Interruptions
2022-03-26 в 12:55, admin, рубрики: 1986BE1T, C, Olimex, миландр, оперативная память, отладка, программирование микроконтроллеров, Процессоры, СиПреамбула
Изначально вторая главазадумывалась только, как шпаргалка по работе из оперативной памяти, но делать и разбираться в этом не очень трудно. Основная "запара" может настигнуть несведущего именно при работе с прерываниями. Собсна, решено объединить.
Стек:
-
Отладочная плата LDM-HELPER-K1986BE1QI-FULL;
-
МК K1986BE1QI(но все паки и тд. юзаю 1986ВЕ1Т ибо
те же яйца, только с бокудаже даташит 1 на целую линейку); -
Программатор ARM-USB-OCD-H;
-
IDE Keil uVison 5;
-
Open OCD.
DevOps для firmware
2022-03-18 в 19:42, admin, рубрики: bootloader, C, ci/cd, cli, devops, diy или сделай сам, hardware, HIL, hw, Jenkins, make, unit-testing, Программирование, программирование микроконтроллеровЧасто слышал мнение, что в embedded программировании в принципе не может быть никакого DevOps(а). Якобы вот есть GUI(ня) в IAR и там надо много мышкой водить. "Ты же не будешь ставить шаговые двигатели для сдвигания мышки" и т. п.
В этом тексте я намерен пофантазировать каким мог бы быть абстрактный процесс разработки firmware с точки зрения DevOps. И перечислить атрибуты такого процесса.
1. Репозиторий с кодом (репа)
9 атрибутов хорошего firmware
2022-03-14 в 21:14, admin, рубрики: C, cli, devops, diy или сделай сам, flash-память, mcu, qa, utest, МК, Программирование, программирование микроконтроллеров, процессы разработки, разработка, робототехника, сторожевой таймерВ этой статья я бы хотел перечислить и обсудить некоторые общие системные поведенческие атрибуты хорошего firmware (прошивки) для микроконтроллерных проектов, которые не зависят от конкретного приложения или проекта. Некоторые атрибуты могут показаться очевидными однако в 9 из 10 российских embedded компаний нет ни одного из перечисленных атрибутов.
1. Сторожевой таймер
Прошивка может зависнуть при некорректных входных данных. Сторожевой таймер позволяет автоматически перезагрузиться и устройство не останется тыквой.
2. Загрузчик
Утилита времен «динозавров»: история системного вызова chroot и его применение в современности
2022-03-14 в 11:19, admin, рубрики: C, chroot, linux, UNIX, Блог компании SelectelВ мире победившей контейнеризации и виртуализации об утилите chroot вспоминают лишь брутальные админы суровых физических серверов, а про лежащий в основе системный вызов, кажется, забыли как страшный сон.
Этот простой системный вызов подменяет местонахождение «корня» файловой системы, «заключая» программу в специально созданное ограниченное окружение. Самая распространенная ситуация — восстановление загрузки операционной системы с помощью live-образа. Но при создании chroot о таком применении не задумывались.
Чтобы найти истоки появления chroot в *NIX-подобных операционных системах, нужно пройти немалый путь по истории IT. В этой статье я расскажу про появление chroot и его применение в современном мире. А еще покажу проекты, которые позволяют прикоснуться к операционным системам эпохи, когда Интернета не было.
Читать полностью »
Умный malloc для С
2022-03-08 в 18:27, admin, рубрики: C, new, выделение памяти, Программирование, реализация, Си, системное программированиеНа днях я экспериментировал с языком С, и придумал одну интересную концепцию для удобства выделения памяти ( точнее перенял идею С++ но реализовал её средствами языка С ). Я про операторы new и delete, которые захотел повторить. В этой статье я расскажу о новом malloc, как я к этому пришёл, зачем это нужно, и как оно работает.
Зачем?
В С ( по моему личному мнению ) немного неудобно организована работа с памятью - где-то идёт работа с байтами, а где-то с ячейками. Простой пример:
*u++ = 1;
Настройка VSCode для отладки китайского RISC-V SoC
2022-02-19 в 9:44, admin, рубрики: C, cmake, Интернет вещей, Носимая электроника, программирование микроконтроллеров, Разработка для интернета вещей, разработка железа, разработка электроникиЯ всей душой люблю малоизвестных производителей. Зачастую их продукты имеют фичи, недоступные у их более именитых конкурентов, по очень интересной цене (однажды меня очень выручило наличие встроенной в SoC полуамперной зарядки для аккумулятора и нескольких LDO, способных запитать всю периферию). Кроме того, сроки и условия поставки какого-нибудь Nanjing Qinheng MicroelectronicsЧитать полностью »
...или о fork() в двух словах.
Как люди решают задачи
Обычно у каждой задачи есть одно простое решение, которое воспринимается всеми как правильное. Люди воспринимают такое решение правильным либо исходя из личного опыта¹; исходя из опыта других людей² или просто не задумываясь о правильности³. И самое удивительное, что мир не взорвался, никто (массово) от этого не умер, код работает и приносит деньги.
¹ "всегда так пишу код, никто не умер"
² "копирую код из stack overflow который набрал больше всех плюсов"
³ "копирую первый попавшийся код из stack overflow"
Флаг EPOLLEXCLUSIVE и проблема неравномерного распределения соединений в Nginx на Linux
2022-02-06 в 7:06, admin, рубрики: C, epoll, nginx, балансировка, Разработка под Linux, Серверное администрирование, системное программированиеВведение
Совсем недавно, 25 января 2022 года вышел новый релиз Nginx - 1.21.6, в котором исправлена проблема неравномерного распределения входящих соединений между несколькими worker процессами в дефолтной конфигурации на Linux системах. Если конкретнее - use epoll, accept_mutex off, reuseport выключен.
В данной конфигурации при определенном характере нагрузки большинство входящих в Nginx соединений обрабатывается лишь одним worker процессом.
Железный Отладчик Для ZX Spectrum
2022-02-05 в 17:49, admin, рубрики: C, gdb, gdbserver, spectranet, Z80, z88dk, zx spectrum, отладка, программирование микроконтроллеров, Процессоры, старое железоДо текущего момента, отладка С кода для ZX Spectrum была возможна только в некоторых эмуляторах. В предыдущей статье описан процесс написания отладчика, который использовал цепочку gdb-клиент (z88dk) <-> gdb-протокол <-> gdbserver (эмулятор Fuse).