OSDev

для всех
Текущее время: 28 мар 2024, 16:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: ARM Assebmler
СообщениеДобавлено: 28 ноя 2019, 12:57 

Зарегистрирован: 28 ноя 2019, 12:23
Сообщения: 12
Всем доброго времени суток, товарищи!
Довелось мне приобрести одноплатный ПК Rock Pi 4B для работы.
https://ru.aliexpress.com/item/32976500346.html?spm=a2g0s.9042311.0.0.697c33edElpboU

Пришла идея написать для него программу с классическим выводом "Hello, World!", но не программой для линукса, а неким видом ОС. Никогда не программировал на ассемблере, очень захотелось попробовать.

Незнание языка даёт о себе знать, хотел бы получить советов от тех, кто в этом лучше разбирается.

Штудируя интернет наткнулся на такие мануалы/статьи.
1. http://rus-linux.net/MyLDP/algol/asm/asmschool_arm_assembly_language.html
2. https://marsohod.org/projects/marsohod2/amber-arm-soc/226-arm-instr
3. https://habr.com/ru/post/133808/
4. https://habr.com/ru/post/319736/
5. https://modexp.wordpress.com/2018/10/30/arm64-assembly/#arch
6. http://www.davespace.co.uk/arm/introduction-to-arm/arithmetic.html

Не обошёл стороной и официальный сайт ARM'а.

Ссылка на toolchain:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads

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

Так же, попался довольно простой видеоматериал по написанию "своей ОС".
https://www.youtube.com/watch?v=9KrZRvJsOeo&feature=emb_logo

Парень пишет код, делает образ системы и выводит сообщение, и делает это всё в эмуляции i386, что мне не подходит.

Нашёл вот такой ресурс:
https://godbolt.org/
Просмотрев местные компиляторы, сравнив с формой записи ассемблера из пунктов 1 и 5, выбрал более подходящий по форме записи - "ARM armclang 19.3".
Вложение:
Снимок.PNG
Снимок.PNG [ 43.3 КБ | Просмотров: 3991 ]


Почитав про регистры ARM и i386(или общепринятыми можно назвать, не знаю точно, поправьте), так же нашёл различия.
У i386 используются компиляторы FASM, TASM, MASM(эта тройка часто встречалась при прочтении), у ARM(A-Family, 64bit) же используется, как я понял, aarch64. ARM-A(32bit) использует aarch32. У них так же присутствуют различия в написании, у 32bit пишутся регистры с буквой "r", например: r0-r12 регистры общего назначения, SP r13 содержит указатель стека выполняемой программы, LR r14 содержит адрес возврата в инструкциях ветвления, PC r15 счётчик команд, у 64bit с буквой "x": x0-x12, x13, x14, x15.
Не раз прочитав статью под №1, понял, что мне ещё нужно будет писать некий драйвер для связи с видеопамятью. В интернете нашёл, что для связи с видеопамятью используется адрес 0xB8000. Не знаю, к чему его отнести, или так у всех можно сделать, или у ARM как-то по-своему(к чему я больше и склоняюсь).

По поводу адреса видеопамяти 0xB8000 нашёл подсказку на форуме https://forum.osdev.org/viewtopic.php?p=131248 от пользователя - codemastersnake.
Цитата:
0xA0000 is the pointer address to the Graphical Mode and 0xB8000 is the pointer address to the Color Text Mode and 0xB0000 is the pointer to the Monochrome text Mode.



Прошу наставлений и помощи в этом (не)лёгком деле. Спасибо за внимание!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ARM Assebmler
СообщениеДобавлено: 28 ноя 2019, 13:29 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Ассемблер потому и называется языком низкого уровня, что он полностью завязан на архитектуру процессора. Между IA-32 (x86) и ARM ничего общего нет вообще (ну, кроме совсем уж базовых принципов типа двоичной арифметики), поэтому абсолютно никакая литература, исходники и т.п., относящиеся к IA-32, для ARMов не годятся совершенно.

Что же до конкретно Вашего случая, Вы взяли плату с 64-разрядным ARMом (версия архитектуры ARMv8-A). Информацию по ассемблеру, понятно, получить можно без проблем -- официальная документация на сайте ARM. Однако, чтобы писать что-то без операционной системы (в частности, свою собственную ОС), необходимо иметь описание всей платформы -- всяких там внешних (с точки зрения архитектуры) устройств типа портов GPIO, UART, всяких-разных прочих контроллеров и т.д. и т.п. Так вот, насколько я знаю, документации ни на какие 64-разрядные ARMы в открытом доступе нет вообще, а соответственно, ничего под них делать нельзя. Серьёзные фирмы получают её у производителей процов, подписывая соответствующие документы о неразглашении, но частному лицу никто их не даст, понятно. Ну а без подобной документации даже правильно завести процессор для работы на нормальной частоте невозможно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ARM Assebmler
СообщениеДобавлено: 28 ноя 2019, 13:50 

Зарегистрирован: 28 ноя 2019, 12:23
Сообщения: 12
Спасибо за ответ. У меня есть документация по armv-8a с официального сайта. Не могли бы подсказать, это то, о чём Вы говорили или нет?
Пдф документ не получается приложить, приложу ссылку на скачивание.
https://developer.arm.com/docs/ddi0487/ea/arm-architecture-reference-manual-armv8-for-armv8-a-architecture-profile


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ARM Assebmler
СообщениеДобавлено: 28 ноя 2019, 14:13 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Да, это именно описание архитектуры (регистры процессора и система команд). Этого (+ документация на ОС и на используемый транслятор) достаточно, чтобы писать программы под ОС, но не под голое железо, поскольку там нужна ещё документация на конкретную модель процессора. Сама ARM не выпускает процессоры, она лишь разрабатывает процессорные ядра, поэтому нужная документация есть лишь у конкретного производителя, а он её не даёт.

Кстати говоря, с IA-32 постепенно ситуация меняется в эту же сторону. Я слышал, что по всем последним чипсетам Intel информацию не даёт даже разработчикам BIOSов, а вместо этого даёт им уже скомпилированный код, который должен быть связан с остальным BIOSом (этот код выполняет самые базовые функции по инициализации аппаратуры -- в частности, настроивает контроллер памяти и заливает патчи в проц).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ARM Assebmler
СообщениеДобавлено: 28 ноя 2019, 14:18 

Зарегистрирован: 28 ноя 2019, 12:23
Сообщения: 12
SII писал(а):
Этого (+ документация на ОС и на используемый транслятор) достаточно, чтобы писать программы под ОС, но не под голое железо, поскольку там нужна ещё документация на конкретную модель процессора. Сама ARM не выпускает процессоры, она лишь разрабатывает процессорные ядра, поэтому нужная документация есть лишь у конкретного производителя, а он её не даёт.


У меня есть ссылка на описание процессора с его даташитом. Это не оно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ARM Assebmler
СообщениеДобавлено: 28 ноя 2019, 14:28 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Как правило, в даташит включается лишь "внешняя" информация -- расположение ног микросхемы (чтобы можно было разработать плату под этот процессор), электрические характеристики и т.д. и т.п., но отсутствует описание собственно нутра. О содержимом документа можно судить даже по объёму документа. Например, на 32-разрядный iMX6 (один из немногих процов архитектуры ARMv7-A, на который есть документация; кроме Freescale, документацию на свои процы давала также TI) соответствующее руководство имеет объём более 50 Мбайт (10К+ страниц), а даташит -- пару мегабайт. А у Вас сколько там? Ну или дайте ссылку, сам гляну и скажу.

Кстати, Вы там про графику спрашивали (и приводили адреса A0000 и др. -- это из ПК и к ARMам никакого отношения не имеет). Если очень кратко, её надо делить на два уровня: вывод буфера кадра на экран через тот или иной видеоинтерфейс и графический процессор для рендеринга в этот самый буфер кадра. Так вот, в той доке на процы Freescale и TI, что открыта, видеоинтерфейс описан -- он их собственный. А вот информация о GPU закрыта полностью -- он разработан другими фирмами, которые не открывают интимные подробности. Соответственно, даже на этих процах можно сделать программный рендеринг (формировать изображение в буфере кадра командами центрального процессора -- самого АРМа т.е.), а вот аппаратный, используя GPU, -- фигвам. Во всяком случае, сколько-нибудь простого пути для этого нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ARM Assebmler
СообщениеДобавлено: 28 ноя 2019, 14:32 

Зарегистрирован: 28 ноя 2019, 12:23
Сообщения: 12
Пардон, ссылка не приложилась.
https://pcminipro.ru/soc/rockchip/rockchip-rk3399-info/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ARM Assebmler
СообщениеДобавлено: 28 ноя 2019, 14:44 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Ну, тут даже по объёму видно, что это -- именно даташит про ножки проца и условия его эксплуатации. Так что нужной информации нет-с.

Можете для интереса полистать доку на iMX6: https://yadi.sk/d/Kq2lORO8Kb5L0g. Я, кстати, ошибся: она всего лишь 32 метра, а не 50. (Можно скачать и с сайта производителя -- нынче это NXP, которая пару лет назад купила FreeScale; но для скачивания нужна регистрация и всё такое, поэтому я и выложил). Именно подобный документ нужен для того, чтобы что-то там на голом железе писать (ну или драйверы под существующую ось -- для того же линуха эти драйвера разрабатывают, как правило, разработчики проца, и им пофиг на мнение ЛТ и компании, что дрова должны быть открытыми).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ARM Assebmler
СообщениеДобавлено: 28 ноя 2019, 14:57 

Зарегистрирован: 28 ноя 2019, 12:23
Сообщения: 12
Я нашёл что-то на китайском сайте. Это может быть тем, что нужно?

https://blog.csdn.net/bassersai/article/details/74010683


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ARM Assebmler
СообщениеДобавлено: 28 ноя 2019, 15:01 

Зарегистрирован: 28 ноя 2019, 12:23
Сообщения: 12
Нашёл вот такое. Пдф документы по ссылками открываются.

http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf
https://www.t-firefly.com/download/Firefly-RK3399/docs/TRM/Rockchip%20RK3399TRM%20V1.3%20Part2.pdf

http://rockchip.fr/
На этом сайте в самом низу Rockchip RK3399 TRM 1.3 - 2 части и 1.4 - 1 часть


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB