КДПВ
Вивчення віртуального адресного простору і алгоритму перетворення адрес помітно спроститься, якщо почати з нескладного практичного прикладу. Для цього напишемо просту програму, що виводить адресу локальної змінної:
int main()
{
unsigned i = 0xDEADBEEF;
std::cout << "address of i is " << std::hex << &i;
std::cin.get(); //Щоб процес не завершився
return 0;
}

Потім спробуємо знайти фізичну адресу і переглянути значення за цією адресою.

Читати далі →

routine tasks automation

Введення
Машини завжди будуть швидше, незалежно від того наскільки ми продуктивні і як швидко ми набираємо команди. Сувора правда життя. З іншого боку, якщо ми виконуємо одне і теж дія безліч разів, то чому б не змусити машини страждати. Написати скрипт на
bash
(ваш улюблений мова програмування) і кожен раз викликати цей скрипт, а не набирати монотонні команди, які забирають так багато часу, сил та енергії. А ми, поки скрипт буде виконувати свою роботу, можемо помріяти про те, як космічні кораблі борознять простори Всесвіту.

У минулій статті ми розглянули основи програмування на
bash
. Сьогодні ми будемо застосовувати отримані знання на практиці.

Читати далі →

Засоби програмування PIC-контролерів

Введення
PIC-контролерів залишаються популярними в тих випадках, коли потрібно створити недорогу компактну систему з низьким енергоспоживанням, не предъявляющую високих вимог щодо її управління. Ці контролери дозволяють замінити апаратну логіку гнучкими програмними засобами, які взаємодіють із зовнішніми пристроями через хороші порти.

Мініатюрні PIC контролери гарні для побудови перетворювачів інтерфейсів послідовної передачі даних для реалізації функцій «прийом – обробка – передача даних» і нескладних регуляторів систем автоматичного управління.

Компанія Microchip поширює MPLAB — безкоштовну інтегровану середу редагування і відладки програм, яка записує двійкові файли у мікроконтролери PIC через програматори.

Взаємодія MPLAB і Matlab/Simulink дозволяє розробляти програми для PIC-контролерів в середовищі Simulink — графічного моделювання й аналізу динамічних систем. У цій роботі розглядаються засоби програмування PIC контролерів: MPLAB, Matlab/Simulink і програматор PIC-KIT3 в наступних розділах.

• Характеристики мініатюрного PIC контролера PIC12F629
• Інтегрована середовище розробки MPLAB IDE
• Підключення Matlab/Simulink до MPLAB
• Підключення програматора PIC-KIT3

Читати далі →

Як включити JTAG-налагодження через USB

image

В кінці грудня 2016 року ми опублікували на Хабре матеріал з виступу експертів Positive Technologies на Chaos Communication Congress (33C3) в Гамбурзі. Максим Гарячий і Марк Єрмолов розповіли про те, що сучасні процесори Intel дозволяють використовувати текстовий інтерфейс JTAG через доступний на багатьох платформах порт USB 3.0 для отримання повного контролю над системою.

Починаючи з процесорів сімейства Skylake, запущених у виробництво в 2015 році, компанія Intel впровадила технологію Direct Connect Interface (DCI), яка надає доступ до JTAG через популярний порт USB 3.0. При цьому на цільовому комп'ютері не потрібно яких-небудь програмних або апаратних агентів − необхідно лише, щоб інтерфейс DCI був активований. Таким чином можливість використовувати можливості JTAG на обладнанні, доступні в широкому продажі, з'явилася у пересічних розробників
Читати далі →

Як працює hashCode() за замовчуванням?


Спроба зазирнути вглиб
hashCode()
призвела до спелеологическому подорожі вихідного коду JVM, з розглядом структури об'єктів і прив'язаною блокування (biased locking), а також дивовижних наслідків для продуктивності, пов'язаних з використанням
hashCode()
за замовчуванням.

Читати далі →

Недокументовані можливості Windows: точки зупинки для ключів реєстру

Іноді в процесі зворотної розробки якої-небудь програми (в тому числі драйвера) може знадобитися перервати її виконання в момент вчинення певної дії з певним ключем реєстру, в такій ситуації можна скористатися недокументованій функціональністю точок зупинки для ключів реєстру.

Вперше точки зупинки для ключів реєстру з'явилися в Windows XP, де була реалізована можливість виконання ядром інструкції int 3 при відкритті ключа реєстру з позначкою (випробувальні прапором)
BREAK_ON_OPEN
або при створенні підключа у складі такого ключа.

Читати далі →

Замітка про спосіб налагодження блокувань в ядрі Linux

Всім привіт,
Дана замітка стосується одного практичного прийому, який я використовував при вирішенні задачі визначення місця в ядрі ОС Linux, де утримується певна спін-блокування (спін-лок). Дана проблема виникла досить спонтанно і, враховуючи складність ядра, могла б вимагати велику кількість часу для вирішення. Якщо Вам це цікаво, прошу читати далі...
Читати далі →

Visual C++ for Linux Development: Практика використання для Windows розробників

enter image description here
Так вийшло, що за досить довгу кар'єру Windows Embedded розробника доля звела мене з серйозного з Linux всього лише кілька місяців тому. Потрібно було написати не дуже складну консольну програму. На той момент всі мої знання про Linux були взяті з курсу за операційним системам у внз (10 років тому). Але Stackoverflow, google і досвід дозволили досить швидко впоратися із завданням. У результаті все було написано в Visual Studio Code під Ubuntu 14.04. Правда, додаток під Linux було лише невеликою клієнтом для Windows сервера. Тому результат не дуже задовольняв мене, так як був відірваний від основного проекту в Visual Studio. І тільки зараз я зміг перенести код в основний проект з допомогою Visual C++ for Development Linux. У процесі мені довелося вирішити ряд супутніх проблем. Про це я розсаджені під катом.
Читати далі →

«Байкал-T1»: знайомство з платою на першому в Росії 28-нм процесор


В нашу інженерну лабораторію потрапила демоплата Baikal BFK Rev 1.6 на основі першого російського процесора для комерційних розробок — SOM Baikal-T1 MIPS.
Двоядерний процесор «Байкал-Т1» на архітектурі MIPS Warrior P-class P5600 MIPS 32 був анонсований ще в 2015 році в рамках програми з імпортозаміщення, його розробник — російська фаблес-компанія «Байкал Електронікс». Ця система на кристалі була створена для проектування промислових та споживчих пристроїв: маршрутизаторів і мережевих накопичувачів, тонких клієнтів, мультимедійних центрів, систем ЧПУ і т. п.
Відкриємо коробку і подивимося, як працює стандартний пакет підтримки платформи (BSP) на тестовій плати:

Читати далі →

Повість про неможливе ба: big.LITTLE і кешування

Коли хтось вимовляє слово багатоядерний, то ми несвідомо маємо на увазі SMP. Це успішно спрацьовувало для нас до недавнього часу, поки ARM не оголосила про big.LITTLE. Архітектура ARM big.LITTLE є першим масово виробленим прикладом архітектури AMP, і як ми побачимо далі, вона піднімає планку складності багатоядерного програмування ще вище.

Читати далі →