Зачастую в процессе разработки собственных устройств или моддинга уже существующих, встаёт задача выполнения стороннего кода: будь то ваши собственные программы с SD-флэшек, или программы, написанные другими пользователями с помощью SDK для вашего устройства. Тема компиляторов и кодогенерации достаточно сложная: чтобы просто загрузить ELF или EXE (PE) программу, вам нужно досконально разбираться в особенностях вашей архитектуры: что такое ABI, релокации, GOT, отличие -fPIE от -fPIC, как писать скрипты для ld и т. п. Недавно я копал SDK для первых версий Symbian и основываясь на решениях из этой ОС понял, каким образом можно сделать крайне «дешевую» загрузку любого нативного кода практически на любом микроконтроллере, совершенно не вникая в особенности кодогенерации под неё! Сегодня мы с вами: узнаем, что происходит в процессе загрузки программы ядром Linux, рассмотрим концепцию, предложенную Symbian Foundation и реализуем её на практике для относительно малоизвестной архитектуры — XTensa (хотя она используется в ESP32, детали её реализации «под капотом» для многих остаются загадкой). Интересно? Тогда добро пожаловать под кат!
Читать полностью »
Рубрика «pic»
Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой: как загружать программы без знания ABI?
2024-01-05 в 8:01, admin, рубрики: Atmega, attiny, avr, bodyawm_ништячки, C, c++, cc, dll, elf, esp32, esp8266, exe, executable, gcc, gnu ld, ld, linker, pic, timeweb_статьи, xtensa, бинарные файлы, загрузчик, исполняемый файл, компоновщик, микроконтроллеры, микропроцессоры, программа, программы, системное программированиеСамый суровый магнитный ключ
2023-09-13 в 8:01, admin, рубрики: pic, timeweb_статьи, датчик холла, домофон, катушка, ключи, компаратор, магнит, мультиплексор, сейф-сервис, тапки, факториал, ферритДумаю, многим из нас хорошо известно, что в ныне применяемых домофонных ключах, хоть их иногда называют магнитными, никаких магнитов на деле нет.
Но так было далеко не всегда. В девяностые, когда электронные замки стали постепенно распространяться, существовало огромное количество совершенно экзотических типов ключей. И вот ко мне в руки попал очередной крайне интересный экземпляр, устройством которого стоит поделиться.
Итак, в сегодняшней статье поговорим о ферритовых домофонных ключах. Узнаем, как же они считываются, как устроена панель. Традиционно будет много интересного.Читать полностью »
Управление шаговым двигателем через контроллер Canny
2020-03-18 в 11:52, admin, рубрики: CANNY, pic, контроллер, программирование микроконтроллеров, шаговый двигательНаткнулся недавно на статью камрада BosonBeard про новые контроллеры и решил попробовать на зуб что это такое. Недолго думая были раздобыты 3 типа контроллеров: Canny 3 Tiny, Canny 5 Nano, Canny 7.
Рис. 1. Внешний вид упаковки контроллеров Canny 7 (слева), Canny 5 Nano (в центре), Canny 3 Tiny (справа), шариковая ручка для масштаба
Как я научился работать с микроконтроллерами — опыт новичка
2019-12-08 в 19:00, admin, рубрики: pic, pic16, pic16f877a, микроконтроллер, микроконтроллеры, Микроконтроллеры для начинающих, новичкам, новичок, опыт работы, программирование микроконтроллеров, схемотехника, Электроника для начинающихВсем привет. В этой статье хотел рассказать о том, как я научился работать с микроконтроллерами
(далее по тексту — МК) и на какие подводные камни налетел. Сразу скажу — статья не претендует на эксклюзивность, так как любой человек работающий с МК проходил через то, что прошёл я. Прошу строго не судить, а прочитать как историю.
External Interrupts in the x86 system. Part 1. Interrupt controller evolution
2019-04-01 в 11:38, admin, рубрики: ACPI, apic, i/o apic, interrupts, irq, ISA, lapic, mptable, MSI, msi-x, PCI, pic, PIR, pirq, x2apic, x86, xapic, системное программированиеThis article is about the interrupt delivery process from external devices in the x86 system. It tries to answer questions such as:
- What is PIC and what is it for?
- What is APIC and what is it for? What is the purpose of LAPIC and I/O APIC?
- What are the differences between APIC, xAPIC, and x2APIC?
- What is MSI? What are the differences between MSI and MSI-X?
- What is the role of the $PIR, MPtable, and ACPI tables?
If you want to know the answer for one of these questions, or if you simply want to know about interrupt controller evolution, please, welcome.
Читать полностью »
Прерывания от внешних устройств в системе x86. Часть 3. Настройка роутинга прерываний в чипсете на примере coreboot
2019-02-14 в 12:48, admin, рубрики: apic, C, coreboot, interrupts, irq, open source, PCI, pic, системное программированиеПродолжаем рассматривать настройку прерываний от внешних устройств в системе x86.
В части 1 (Эволюция контроллеров прерываний) мы рассмотрели теоретические основы контроллеров прерываний и общие термины, в части 2 (Опции загрузки ядра Linux) посмотрели как на практике ОС осуществляет выбор между контроллерами. В этой части мы рассмотрим как BIOS настраивает роутинг IRQ на контроллеры прерываний в чипсете.
Никакие современные компании по разработке BIOS (AwardBIOS/AMIBIOS/Insyde) не раскрывают исходники своих программ. Но к счастью есть Coreboot — проект по замене проприетарного BIOS на свободное программное обеспечение. В его коде мы и посмотрим, как настраивается роутинг прерываний в чипсете.
Прерывания от внешних устройств в x86 системе. Опции загрузки ядра Linux
2018-11-28 в 12:06, admin, рубрики: ACPI, apic, interrupts, irq, linux, MSI, pic, Настройка Linux, системное программированиеВ предыдущей части мы рассмотрели эволюцию доставки прерываний от устройств в x86 системах (PIC → APIC → MSI), общую теорию и все необходимые термины.
В этой практической части мы рассмотрим как откатиться к использованию устаревших методов доставки прерываний в Linux, а именно рассмотрим опции загрузки ядра:
- pci=nomsi
- noapic
- nolapic
Также мы посмотрим на порядок, в котором ОС смотрит таблицы роутинга прерываний (ACPI/MPtable/$PIR) и какое влияние на него окажет добавление опций загрузки:
- pci=noacpi
- acpi=noirq
- acpi=off
Возможно вы пробовали комбинации из всех этих опций, когда какое-либо устройство не работало из-за проблемы с прерываниями. Разберём, что именно они делают и как они меняют вывод /proc/interrupts.
Читать полностью »
Прерывания от внешних устройств в системе x86. Эволюция контроллеров прерываний
2018-11-20 в 14:00, admin, рубрики: ACPI, apic, MSI, pic, системное программированиеВ данной статье хотелось бы рассмотреть механизмы доставки прерываний от внешних устройств в системе x86 и попытаться ответить на вопросы:
— что такое PIC и для чего он нужен?
— что такое APIC и для чего он нужен? Для чего нужны LAPIC и I/O APIC?
— в чём отличия APIC, xAPIC и x2APIC?
— что такое MSI? В чём отличия MSI и MSI-X?
— как с этим связаны таблицы $PIR, MPtable, ACPI?
Если на какой-то из этих вопросов вам интересно получить ответ или вы просто хотите ознакомиться с эволюцией контроллеров прерываний в системе x86, добро пожаловать под кат.
Ядра процессора или что такое SMP и с чем его едят
2018-10-15 в 15:42, admin, рубрики: APCI, apic, C, hardware, IT-стандарты, OSDev, pic, pit, SMP, Компьютерное железо, многозадачность, периферия, симметричная мультипроцессорность, системное программированиеВведение
Доброго времени суток, сегодня хотелось бы затронуть достаточно простую тему, которая почти никем из обычных программистов неизвестна, но каждый из вас, скорее всего, ей пользовался.
Речь пойдет о симметричной мультипроцессорности(в народе — SMP) — архитектура, которая встречается во всех многозадачных операционных системах, и конечно же, является неотъемлемой их частью. Каждый знает, что чем больше ядер у процессора — тем мощнее будет процессор, да, это так, но как ОС может использовать несколько ядер одновременно? Некоторые программисты не спускаются до такого уровня абстракции — им это попросту не надо, но думаю, всем будет интересно то, как же SMP работает.
Читать полностью »
Position-independent code (PIC) в разделяемых библиотеках на x64
2017-03-24 в 6:17, admin, рубрики: C, disassembling, linux, pic, shared library, Блог компании Badoo, Компиляторы, Разработка под Linux, системное программирование
Привет, я все еще Марко и все еще системный программист в Badoo. На прошлой неделе я опубликовал перевод о PIC в шареных библиотеках, но есть вторая часть – про разделяемые библиотеки на х64, поэтому решил не оставлять дело незаконченным.