В смартфонах, то что касается устройств типа: bluetooth, wi-fi или радиомодуль имеет свои закрытые проприетарные части. У этих контроллеров есть даже свои отдельные ОС. В отличие от самоделок, типа модулей подключаемых к ардуино, где все задокументировано, открыто, и все интегрируется на более высокоуровневом интерфейсе. Честно говоря, я вообще пока понятия не имею как конкретно это можно реализовать, и можно ли вообще.
Не хотел публиковать код первой части, потому что тут все еще хрупкое. Во второй части хотя бы будет поддержка QEMU. Но если хотите, то я выложил на гитхаб. https://github.com/AlexanderShirokih/rustos/
Общее поверхностное понимание архитектуры ОС: Эндрю Таненбаум - Современные операционные системы. Когда-то еще игрался с x86. По этой архикетуре много информации в интернете. Например, известный ресурс https://wiki.osdev.org/. ARM во многом отличается от x86, но общие принципы схожи. Исследование загрузки ядра - результат реверс-инжиниринга ядра ОС, и TWRP загрузчика. Так же на github есть исходники загрузчика ABL. По нему можно понять требования к формату ядра. Драйвера устройств и DTB - исходники ядра Linux. Там же есть описание процесса бута Linux aarch64. Конечно, не обошлось без ИИ. ИИ помог разобраться с нюансами, и отладкой ошибок.
P.S. На самом деле на подготовку этой части и частично второй части по выходным ушло около 4 месяцев
Скорее всего на современном Айфоне такое провернуть будет практически невозможно: заблокированный загрузчик, проверка подписей, отсутствие открытой документации по железу.
В первую очередь для развлечения, а там буду пробовать ковырять дальше, пока сил хватит. Конечно, я не претендую на создания "убийцы андроида"). В теории, этот проект переносим на какие-то одноплатные ПК, например, raspberry pi. Так что, вполне можно придумать какое-то прикладное применение.
Кстати, по поводу выключения железки. Под боком есть исходники загрузчика и ядра. Сам по себе загрузчик реализован не сложно. Значит это должна быть посильная задача.
А почему нет? Работая с такими низкоуровневыми вещами без этого не обойтись.
В смартфонах, то что касается устройств типа: bluetooth, wi-fi или радиомодуль имеет свои закрытые проприетарные части. У этих контроллеров есть даже свои отдельные ОС. В отличие от самоделок, типа модулей подключаемых к ардуино, где все задокументировано, открыто, и все интегрируется на более высокоуровневом интерфейсе.
Честно говоря, я вообще пока понятия не имею как конкретно это можно реализовать, и можно ли вообще.
Не хотел публиковать код первой части, потому что тут все еще хрупкое. Во второй части хотя бы будет поддержка QEMU. Но если хотите, то я выложил на гитхаб. https://github.com/AlexanderShirokih/rustos/
Общее поверхностное понимание архитектуры ОС: Эндрю Таненбаум - Современные операционные системы. Когда-то еще игрался с x86. По этой архикетуре много информации в интернете. Например, известный ресурс https://wiki.osdev.org/. ARM во многом отличается от x86, но общие принципы схожи.
Исследование загрузки ядра - результат реверс-инжиниринга ядра ОС, и TWRP загрузчика. Так же на github есть исходники загрузчика ABL. По нему можно понять требования к формату ядра.
Драйвера устройств и DTB - исходники ядра Linux. Там же есть описание процесса бута Linux aarch64.
Конечно, не обошлось без ИИ. ИИ помог разобраться с нюансами, и отладкой ошибок.
P.S. На самом деле на подготовку этой части и частично второй части по выходным ушло около 4 месяцев
Для современного смартфона это, конечно, базовые функции, но с точки зрения реализации, работа с радио модулем очень сложная задача.
Скорее всего на современном Айфоне такое провернуть будет практически невозможно: заблокированный загрузчик, проверка подписей, отсутствие открытой документации по железу.
В первую очередь для развлечения, а там буду пробовать ковырять дальше, пока сил хватит. Конечно, я не претендую на создания "убийцы андроида"). В теории, этот проект переносим на какие-то одноплатные ПК, например, raspberry pi. Так что, вполне можно придумать какое-то прикладное применение.
Кстати, по поводу выключения железки. Под боком есть исходники загрузчика и ядра. Сам по себе загрузчик реализован не сложно. Значит это должна быть посильная задача.
Благодарю, исправил)