Pull to refresh
4
0
Send message

Программирование на C в Linux на примере создания своей командной оболочки

Level of difficultyMedium
Reading time27 min
Views17K

Привет, хабр! Язык программирования C — основополагающий, как я считаю. И его знать, нет, не обходимо, но довольно желательно. Большинство языков отсылают к C, и зная C (или C++) другой язык будет даваться намного легче.

Я решил недавно улучшить свой навык владения C, путем написания проектов. Самая первая мысль, которая пришла мне на ум — это командный интерпретатор, командная оболочка, shell проще говоря. А также я расскажу о системе сборки make, и о том, как правильно писать и документировать C-код.

В этом туториале я буду использовать компилятор CLANG, а не GCC, и расскажу его преимущества

Итак, для создания своего шелла на C для Linux вам понадобится простой советский копеечный...

Узнать
Total votes 28: ↑25 and ↓3+36
Comments42

Запуск DMA на К1986ВЕ92FI пошагово

Level of difficultyMedium
Reading time8 min
Views6K

Здравствуйте уважаемые читатели. Больше двух лет назад Миландр, в связи с санкциями, попал в "блэк-лист" завода, производившего кристаллы разработанных микросхем. После этого поставки микросхем быстро сошли на нет, в том числе "народного" К1986ВЕ92QI в пластиковом корпусе. Больше года Миландр не подавал признаков жизни, однако работа кипела, кристалл 1986ВЕ9х был перепроектирован, год назад появились опытные образцы. Производство кристаллов осталось зарубежным (Микрон не умеет делать флеш), однако корпусировку гражданских кристаллов развернули в России. Поскольку, производственных мощностей для корпусирования в QFP у Миландра нет, кристаллы стали паковать в QFN, которые не требуют опрессовки кристалла пластмассой. А к лету 2024 Миландр начал серийные поставки микросхем. Итак, гражданский микроконтроллер теперь обозначается К1986ВЕ92FI, и его можно достать, а значит с ним снова можно работать.

Вопросы программирования микроконтроллеров 1986ВЕ92 многократно описаны, пути обхода ошибок давно изучены, как говорили знакомые инженеры ещё в 2017 - "нормальный арм, хоть и с особенностями". Однако, несмотря на описание периферии и особенностей работы с ней, есть одно почти белое пятно, на котором многие спотыкаются - контроллер DMA прямого доступа к памяти.

Разбираемся с контроллером ПДП
Total votes 27: ↑26 and ↓1+33
Comments9

Как создать часы на Python: уроки программирования для школьников

Level of difficultyEasy
Reading time7 min
Views13K

Разбираемся, какие проекты могут создавать на Python дети от 10 лет. Внутри туториал по созданию часов и видеоинструкция, если вам больше подходит аудиовизуальный формат.

Python открывает перед школьником множество дверей в мир технологий и дает возможность получить уверенность в своих силах.

Уроки программирования для детей на Python начинаются со знакомства с синтаксисом языка, с ключевыми командами и библиотеками. Хорошо, когда в обучении сразу есть практические занятия и ребята с первых дней курса не просто запоминают и пытаются понять теорию, но создают конкретные проекты. Так информация усваивается гораздо быстрее, да и детям нескучно и интересно учиться.

Читать далее
Total votes 10: ↑6 and ↓4+5
Comments14

Игрострой. С чего начинать

Level of difficultyEasy
Reading time6 min
Views5.4K

Привет всем! Меня зовут Ш. Сергей!

Я очень не хотел создавать подобные темы. И уже есть темы которые я уже создавал и там многое уже написано. А так же есть множество подобных тем, где люди написали больше меня и вероятно для кого-то более полезно чем я. Это и не удивительно, ведь я программист на Pascal/Assembler, от которых сейчас многие открещиваются как только могут.

В этой статье я постараюсь затронуть тему для всех ЯП и в своём большинстве для начинающих программистов. Так как именно они зачастую будут стоять перед выбором: "с чего же начинать?"

ознакомиться
Total votes 22: ↑10 and ↓12+1
Comments20

Редактор кода Visual Studio Code. Самый подробный гайд по настройке и установке плагинов для начинающих

Reading time23 min
Views855K
Бесплатный, мощный, очень популярный, с кучей дополнений, да что там говорить, сам Фейсбук выбрал его в качестве основного редактора!


Сегодня речь пойдет о редакторе кода Visual Studio Code или просто VS Code. Мы с тобой его установим, настроим, а также применим плагины, которые существенно упростят нам работу.
Читать дальше →
Total votes 15: ↑12 and ↓3+15
Comments19

Как убить единорога или попытка навести порядок с инициализацией переменных в языке C++

Level of difficultyMedium
Reading time15 min
Views5.9K

Знаете, я никогда не задумывался, насколько плоха или хороша инициализация переменных в языке C++. Я просто использовал ее. И не имел никаких проблем. Но недавно я посмотрел пару видео, пролистал несколько статей и да, я должен признать… она действительно ужасна. Один очень серьезный человек даже сказал, что мы, как сообщество программистов, виновны в том, что C++ не настолько хорош, насколько он мог бы быть.

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

Читать далее
Total votes 11: ↑6 and ↓5+4
Comments34

Скибиди-бипер — асинхронная полифоническая однобитная музыка на ESP32 без ЦАП

Level of difficultyMedium
Reading time14 min
Views5.5K

В одной из своих предыдущих статей я заводил плазменный дисплей от старого японского автобуса. За кадром же он превратился в полочные часы-будильник — но так как это мне показалось скучным, то и про эволюцию их операционки на Хабре я особо распинаться не стал.

Однако же за это время PIS-OS прирос кучей всего, навроде поддержки ещё одного типа экранов, системы меню, а также и функцией будильника — посему понадобились и более мелодичные рингтоны, чем просто пиликание одним тоном.

В процессе выяснилось, что пьезоэлемент был припаян к той ноге МК, на которой ЦАП отсутствует. Впрочем, если бы я хотел будильник, который звучит как mp3 — просто пользовался бы мобильником, так что самое время вспоминать наследие демосцены и делать самый настоящий однобитный драйвер звука!

Пошумим же!
Total votes 56: ↑56 and ↓0+78
Comments16

Мультитул для разработчика электроники

Level of difficultyEasy
Reading time12 min
Views21K

Предприятие, где я работаю, ведет несколько разработок параллельно, поэтому очень часто нужное оборудование бывает занято, а протестировать свою железку страсть как хочется. В таком случае я собирал временный тестовый стенд на макетке из рассыпухи и модулей, но мне не нравился их внешний вид и малый функционал. Со временем я заметил, что часто нужно одно и тоже, поэтому решил для себя спроектировать некое устройство, в котором будет самое необходимое, позволяющее мне тестировать свои разработки. Это избавит меня от привязки к нескольким приборам и освободит место на рабочем столе. 

Идея понятна - заменить генераторы частоты, терминалы RS-485 и CAN одним самодостаточным прибором. В этой статье расскажу о том, что за девайс я собрал.

Читать далее
Total votes 33: ↑31 and ↓2+41
Comments17

BLE адаптер на ESP32 под Ардуино

Level of difficultyEasy
Reading time13 min
Views8K

Глядя на обилие дешевых ESP32 модулей захотелось мне сделать из них что нибудь полезное. А именно BLE адаптер с последовательным интерфейсом пригодный для разных применений вроде организации беспроводного канала связи между железками или сбора телеметрии с нескольких устройств.

Читать далее
Total votes 20: ↑19 and ↓1+26
Comments28

Сергей Зонов: «Первый „Спектрум“ я сделал потому, что мне было интересно»

Reading time12 min
Views47K


Музей DataArt существует 10 лет, некоторые экспонаты мы уже представляли в виде постеров. Коллекция продолжает расширяться, но теперь мы решили дополнить ее интервью с людьми, повлиявшими на историю ИТ. Это первый из серии исторических материалов, которые будут выходить в нашем блоге регулярно.

В первой половине 1980-х популярным компьютером в Европе был ZX Spectrum. Когда он пришел в СССР, местные умельцы начали его копировать, перерабатывать и улучшать. Одним из тех, кто сделал свой вариант «Спектрума», был Сергей Зонов. По его схемам собраны десятки тысяч компьютеров.
Читать дальше →
Total votes 121: ↑121 and ↓0+121
Comments239

Шахматный компьютер «Интеллект-02», или делаем интерактивным ПЗУ

Level of difficultyMedium
Reading time4 min
Views4.3K

В этой статье я расскажу о советском шахматном компьютере "Интеллект-02", сделанном на основе 8-разрядного микропроцессора КР580ИК80А, и покажу, как можно внедриться вместо его ПЗУ и сделать его изменяемым, чтобы расширить функционал.

Читать далее
Total votes 45: ↑45 and ↓0+60
Comments22

Zynq 7000. Загрузка Embedded Linux на SoC через JTAG с помощью XSCT

Level of difficultyEasy
Reading time11 min
Views4.4K

Учитывая, что я очень давно занимаюсь отладкой и запуском самых разнообразных проектов связанных с Zynq 7000 — со временем количество итераций перезапуска при проведении отладки увеличивалось пропорционально сложности проекта. Когда я только начинал осваивать разработку под Zynq, то каждый раз закидывал новый образ на microSD карту. Это было очень медленным процессом и требовало от меня постоянно подключать/отключать карту. После этого я освоил сетевую загрузку через Ethernet и TFTP, заменяя файлы по сети и проверяя результат после перезагрузки.

Впоследствии, изучив вопрос связанный с типами загрузки, я обнаружил, что есть альтернативный способ загрузки платы через интерфейс JTAG, который впрочем может оказаться единственным доступным, если на плате нет microSD и Ethernet.  

Вот как раз вопросы связанные с тем, как произвести загрузку по JTAG я бы хотел осветить в этой статье. Всем кому интересно — добро пожаловать под кат. 

Читать далее
Total votes 45: ↑45 and ↓0+59
Comments13

Что значит инициализировать int в C++?

Level of difficultyMedium
Reading time10 min
Views15K

Недавно я получил по почте от Сэма Джонсона этот вопрос. Вот слегка отредактированное письмо Сэма:

«Возьмём для примера этот код в локальной области видимости функции:

int a;

a = 5;

Многие люди считают, что инициализация происходит в строке 1, потому что веб-сайты наподобие cppreference дают такое определение: "Инициализация переменной предоставляет его начальное значение на момент создания".

Однако я убеждён, что инициализация происходит в строке 2, потому что [в разных хороших книгах по C++] инициализация определяется как первое существенное значение, попадающее в переменную.

Можете ли вы сказать, какая строка считается инициализацией?»

Отличный вопрос. На Cppreference написано правильно, и для всех классовых типов ответ прост: объект инициализируется в строке 1 вызовом его стандартного конструктора.

Но (а вы ведь знали, что будет «но») для локального объекта фундаментального встроенного типа наподобие int ответ будет... чуть более сложным. И именно поэтому Сэм задал этот вопрос, ведь он знает, что язык достаточно свободно обращается с инициализацией таких локальных объектов по историческим причинам, имевшим в то время смысл.

Короткий ответ: вполне допустимо говорить, что переменная получает своё исходное значение в строке 2. Но заметьте, что я намеренно не сказал «Объект инициализируется в строке 2», к тому же и код, и этот ответ обходят молчанием более важный вопрос: «Ну ладно, а что, если код между строками 1 и 2 попробует считать значение объекта?»

Читать далее
Total votes 24: ↑22 and ↓2+29
Comments106

Рецензия на книгу «Идеальный тестировщик» Кристин Джеквони

Level of difficultyMedium
Reading time6 min
Views7.1K

Всем привет! Меня зовут Екатерина и я QA-специалист в компании SimbirSoft. Я уже 7 лет занимаюсь обеспечением качества IT-продуктов, и за это время прочитала множество книг и пособий. Многим книгам по QA уже много лет, а новинки появляются достаточно редко. В январе 2024 года на русском языке вышел «Идеальный тестировщик» Кристин Джеквони — поэтому я сразу обратила внимание на эту книгу. Поделюсь с вами своей оценкой и выводами — что в ней есть полезного и чего не хватило.

Читать 📚
Total votes 5: ↑5 and ↓0+7
Comments4

Самодельная оптопара из светодиода и 1Т308

Level of difficultyMedium
Reading time7 min
Views5.1K


TL;DR: сделать быструю оптопару не получилось. Опытным путём выяснил, что возможна оптическая передача синусоидального сигнала частотой примерно 2 МГц на расстоянии между кристаллами неизвестного красного светодиода и транзистора 1Т308 около 15 мм.
Читать и смотреть фото
Total votes 45: ↑45 and ↓0+69
Comments39

Как анонимно продать или купить крипту

Reading time5 min
Views53K

Сервис по мониторингу обменников Exnode

Как известно, анонимность — одно из базовых прав человека. В мае 2015 года Совет по правам человека ООН опубликовала доклад, который прямо называет анонимное использование интернета частью базовых прав человека:

«Шифрование и анонимность позволяют людям осуществлять свои права на свободу мнений и их свободное выражение в цифровой век и ввиду этого должны заслуженно пользоваться надёжной защитой», — из доклада ООН, 22.05.2015 г.

Особенно актуальна эта задача при обращении с финансами. Фиат и биткоин изначально задумывались как анонимные и приватные деньги, но на практике в 21 веке государство стремится отслеживать все транзакции, а личность пользователя можно вычислить, если он не принял меры безопасности.
Читать дальше →
Total votes 65: ↑63 and ↓2+76
Comments166

Тестирование NAND и eMMC

Level of difficultyEasy
Reading time24 min
Views8.9K

Когда я плотно занимался аппаратным тестированием, в рамках разработки embedded-устройств, часто бывало так, что инженеры-разработчики и я оказывались в условиях жесткого ограничения в выборе возможных компонентов NAND или eMMC. И в этой связи очень часто возникала необходимость дополнительных проверок каждого из компонентов на долговечность и качество работы. Очень часто приходилось проверять чипы-кандидаты на общий ресурс записи/чтения, скорости операций и т. п. И мне пришла идея, почему бы не поделиться своим опытом с другими специалистами, перед которыми стоят аналогичные задачи. Я хотел бы рассказать в данной статье, что такое Flash-память, почему они выходят из строя и как я организовал тестирование, как через тестирование минимизировать риски при выборе устройства хранения для разрабатываемого устройства. 

Всем, кому интересна данная тема — приглашаю под кат.

Читать далее
Total votes 70: ↑70 and ↓0+86
Comments21

Настраиваем дампы ядра в Linux

Level of difficultyMedium
Reading time5 min
Views3.2K

Core Dump (Дамп ядра) - это файл, который автоматически генерируется ядром Linux после сбоя программы. Этот файл содержит данные о памяти, значениях регистров и стеке вызовов приложения на момент сбоя. Да, обычно появление сообщения о создании Core Dump является не слишком приятным сюрпризом, которых лучше бы было поменьше. Но если уж Core Dump был создан, то лучше, чтобы он содержал максимум полезной информации, которая поможет разработчикам и администраторам разобраться в причинах возникшего сбоя.

В этой статье мы поговорим о том, как правильно настраивать создание дампов ядра.

Читать далее
Total votes 14: ↑11 and ↓3+14
Comments3

KC868-AG Pro: Zigbee координатор (Tasmota и SLS)

Level of difficultyEasy
Reading time6 min
Views4.5K


В прошлой статье я дал общий обзор контроллера KC868-AG Pro, в этой статье мы разберём вопросы использования AG Pro в качестве Zigbee координатора при помощи двух популярных прошивок Tasmota и SLS.

Попробуем разобраться с тем, как установить прошивки на это железо, как их настроить, и я поделюсь своими впечатлениями об этих прошивках.
Читать дальше →
Total votes 10: ↑10 and ↓0+15
Comments18

Пишем «Hello, World!» на Си для OpenWRT

Level of difficultyMedium
Reading time3 min
Views4.5K

Мне стало интересно, как можно скомпилировать код на языке Си для OpenWRT на мой роутер.
В интернете инструкции имеются, но расплывчатые и то им уже по 6-8 лет. Поэтому, в этой статье собрана актуальная информация по компиляции.

Читать далее
Total votes 10: ↑10 and ↓0+12
Comments8

Information

Rating
6,307-th
Registered
Activity