Вопросы по теме 'bare-metal'

Как получить ввод с клавиатуры с голой металлической сборкой x86?
Я пытаюсь собрать воедино первые части ядра. В настоящее время у меня есть все ядро, скомпилированное как код C, и мне удалось заставить его отображать текст в окне консоли и все это прекрасное совершенство. Теперь я хочу начать принимать ввод с...
10491 просмотров
schedule 21.05.2024

Выполнение без ОС
Как скомпилировать программу C в допустимый формат ELF (или формат RAW), чтобы ее можно было запускать непосредственно из ОЗУ без какой-либо ОС ? Предположим, что существует загрузчик , который может загрузить код в любое место в ОЗУ и начать...
940 просмотров
schedule 09.12.2022

Адрес загрузки раздела и адрес выполнения в скрипте компоновщика
Я пишу настраиваемый скрипт компоновщика для ARM-приложения без операционной системы. Приложение хранится во флэш-памяти, на данный момент у меня есть код загрузки, копирующий все приложение в SDRAM и продолжающий выполнение в SDRAM для повышения...
5941 просмотров
schedule 01.01.2023

Понимание манипулирования стеком сборки
Я пишу тестовую программу sdram на чистом ARM. Я написал это на C, но теперь я хочу изменить сгенерированную сборку, чтобы программа не использовала sdram, что подразумевает, помимо прочего, отсутствие стека. Недавно я начал изучать сборку ARM и...
2431 просмотров
schedule 26.11.2023

Включить неон на ARM cortex-a series
Хочу инициализировать на голом железе кору А-15 NEON cp. После выполнения директив ARM Я написал эту последовательность в конце последовательности инициализации моей платформы: MOV r0, #0x00F00000 MRC p15, 0, r0, c1, c1, 2 ORR r0, r0, #0x0C00...
2185 просмотров
schedule 21.01.2023

llvm оптимизируется с помощью библиотечных функций
Начиная с такого кода void lib_memset( unsigned char *dest, unsigned char c, unsigned int n) { while(n--) { *dest=c; dest++; } } использование llvm в качестве кросс-компилятора clang -Wall -m32 -emit-llvm...
1310 просмотров

Как записать начальный адрес раздела в выделенное место в ПЗУ
В проекте на «голом железе» мне нужно записать начальный адрес раздела ПЗУ на выделенный адрес. То, что я нашел до сих пор, похоже на это определение в скрипте компоновщика: MEMORY{ ROM (rx) : ORIGIN = 0x00018000, LENGTH = 0x8000 UICR...
717 просмотров
schedule 01.04.2024

Программирование на «голом металле» на BeagleBone Black
У меня есть черный бигльбон, и я хочу начать работу над проектом с нуля. Я настроил flyswatter2 для отладки и прошивки. У меня может быть код запуска, который в идеале должен работать. но проблема в том что я не знаю с какого адреса памяти...
950 просмотров
schedule 11.02.2023

Как проверить, откуда ссылка на функцию
В чистом проекте C/C++ я использую gcc-arm-embedded (в настоящее время наиболее недавнее 4.9-2015-q2 ). По некоторым причинам я должен избегать использования некоторых функций, таких как некоторые из stdio и так далее (не хочу использовать...
760 просмотров
schedule 27.02.2023

Когда malloc возвращает NULL в среде с «голым железом»?
Существует следующая модель памяти c: +--------+ Last Address of RAM | Stack | | | | | v | +--------+ RAM | | | | +--------+ | ^ | | | | | Heap |...
1893 просмотров
schedule 06.06.2023

запись шестнадцатеричного файла в ОЗУ в ARM Cortex-M
Я занимаюсь текущим проектом по написанию упрощенной ОС для хобби/обучения. Я могу генерировать шестнадцатеричные файлы, и теперь я хочу написать скрипт на чипе, чтобы принимать их через последовательный порт, загружать их в оперативную память, а...
987 просмотров

перекрестная компиляция сборки руки и имитация среды руки без ОС с помощью qemu в Linux
В настоящее время я пытаюсь протестировать код сборки руки, который я написал. Я работаю над Ubuntu, поэтому скачал цепочку инструментов кросс-компилятора (arm-linux-gnueabi), чтобы скомпилировать свой код, а затем протестировать его с помощью...
578 просмотров
schedule 01.08.2023

Allwinner a64 - переключение с aarch32 на aarch64 путем горячего сброса
Я хочу развернуть простое программное обеспечение на голом железе на плате Pine64, на которой размещается Allwinner A64 SoC. Конфигурация следующая: при включении boot0 запускает u-boot, который загружает мой hello.bin в ОЗУ ( 0x40000000 ) и...
819 просмотров
schedule 26.10.2022

Регистр безопасной конфигурации Raspberry Pi 1B
Теперь я делаю низкоуровневый инструмент для RPi. И мне нужно получить значение Регистр безопасной конфигурации . Я написал следующую инструкцию mrc p15, 0, r0, c1, c1, 0 , чтобы получить это. Но ЦП переходит в режим неопределенных исключений...
60 просмотров
schedule 03.08.2022

Можно ли объявить анонимный экземпляр в объединении на С++?
Работая с низкоуровневым C++ для встраиваемых систем без ПО (STM32), я столкнулся с примером использования объявления "анонимного члена союза" с нетривиальным (структурным) типом. Возможно ли подобное? Я пробовал следующий вид кода: struct...
106 просмотров
schedule 19.08.2022

Могу ли я использовать регистры в ЦП как «верхнюю часть стека» для стековой машины?
Допустим, я хочу программировать на чистом железе на процессоре ARM, используя подход стековой машины с Forth. Могу ли я использовать регистры процессора в качестве вершины стека, игнорируя их фактическое обычное использование в регистровой машине?...
113 просмотров
schedule 06.01.2024

Как включить MMU в среде «голого железа» на базе ARMv8A TF-A
Недавно я включил MMU на более низких уровнях EL (EL1/EL0) в нашей тестовой среде ARMv8A на «голом железе», которая работает поверх TF-A. Включение MMU требует создания таблиц перевода, которые представляют собой сильно отформатированный набор...
134 просмотров
schedule 17.07.2023

mmu в руке: как сопоставить код ядра (голое железо)
В скрипте ссылки начальный адрес — 0xffffffff00000000. Затем я могу загрузить собственное ядро ​​​​с нуля (для aarch64) по произвольному (физическому) адресу и использовать относительную адресацию. Итак, когда я включаю MMU, как я узнаю, что память...
89 просмотров
schedule 01.09.2023

Потоки на встроенных устройствах без ПО
Поддерживаются ли потоки (или pthreads) на устройствах без операционной системы. Я использую компилятор ARM/GNU C++(arm-none-eabi-g++) и получаю сообщение об ошибке не могу найти -lpthread при компиляции, хотя я указал флаг -lpthread в команде...
298 просмотров
schedule 02.12.2023

Как скомпилировать baremetal hello_world.c и запустить его на qemu-system-aarch64?
Как следует из названия, я хочу скомпилировать программу hello_world.c и запустить ее на qemu-system-aarch64. Вот программа: #include <stdio.h> int main() { printf("hello world!\n"); } из...
560 просмотров
schedule 10.01.2024