Вопросы по теме '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 просмотров
schedule
24.02.2024
Как записать начальный адрес раздела в выделенное место в ПЗУ
В проекте на «голом железе» мне нужно записать начальный адрес раздела ПЗУ на выделенный адрес. То, что я нашел до сих пор, похоже на это определение в скрипте компоновщика:
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 просмотров
schedule
02.11.2023
перекрестная компиляция сборки руки и имитация среды руки без ОС с помощью 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