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

LLVM (цель arm-none-eabi) создает раздел ARM.exidx для кода на основе C (?)
При компиляции простого HelloWorld.c с использованием Clang / LLVM (цель arm-none-eabi) создается раздел перемещения '.rel.ARM.exidx', но при использовании arm-gcc этого не происходит. Эти записи таблицы очистки, созданные LLVM, правильно помечены...
1704 просмотров
schedule 13.04.2022

Как написать программу hello world на чистом железе для PowerPC
Мне нужно написать программу на чистой системе PowerPC. Как новичок в программировании на «голом железе» без ОС/загрузчика, я решил написать для начала программу hello world. Я погуглил пост об этом и нашел кое-что об ARM, например Beagleboard bare...
1535 просмотров
schedule 26.08.2022

Резервное пространство памяти в области памяти m_text FLASH на встроенной цели
У меня есть микроконтроллер с большим количеством флэш-памяти, разделенной на секторы флэш-памяти по 1 тыс. Я хочу прошить простые числа в определенную область памяти во время перепрошивки, тогда при первой загрузке будет сгенерирован крипто ключ,...
3259 просмотров
schedule 07.08.2023

Как кодировать функции прерывания ARM на C
Я использую набор инструментов arm-none-eabi-gcc версии 4.8.2 на LinuxMint 17.2 64b . Я, на уровне любителя, пытаюсь поиграть с платой TM4C123G и ее обычными функциями (кодирование различных миганий, вещей uart ...), но всегда стараюсь...
2000 просмотров
schedule 01.05.2022

Как создать минимальный загрузочный сектор BIOS hello world с помощью GCC, который работает с USB-накопителя на реальном оборудовании?
Мне удалось создать минимальный загрузочный сектор, который работает с QEMU 2.0.0 Ubuntu 14.04: .code16 .global _start _start: cli mov $msg, %si mov $0x0e, %ah loop: lodsb or %al, %al jz halt int $0x10 jmp loop...
3097 просмотров
schedule 05.03.2023

Адрес конечной точки USB BULK IN 0x81 или 0x01?
Я использую USB в качестве хоста для чтения содержимого файловой системы FAT32. Дескриптор конечной точки возвращает мне 0x81 как адрес конечной точки IN и 0x02 для адреса OUT EP. Я реализую это с помощью OHCI. Дескриптор конечной точки в OHCI...
1770 просмотров
schedule 06.02.2023

64-битные регистры в защищенном режиме x86
Мне было интересно, могу ли я использовать 64-битные регистры на 64-битном процессоре, оставаясь в 32-битном защищенном режиме. Я не могу проверить это сам, так как мои виртуальные машины не поддерживают 64-битный режим. Я также не мог найти это...
199 просмотров

Boost::context на ARM Cortex-M?
Согласно документации boost::context поддерживает системы ARM с ОС GNU/Linux. Просто интересно - можно ли его использовать на голом железе (без ОС) и микроконтроллеры Cortex-M, или это дополнительный порт, который надо писать?
749 просмотров
schedule 02.11.2022

FatFS f_write не работает
Я на ZedBoard и пытаюсь писать на SD-карту. Я работаю над встроенной системой, и у меня нет никакой ОС, я работаю на «голом металле». Я могу нормально читать с SD-карты, с ними проблем нет. Но когда я пытаюсь читать, у меня какое-то странное...
10592 просмотров
schedule 17.11.2022

Используя счетный семафор, как создать рекурсивный мьютекс
Я работаю в среде с голым металлом, поэтому любые ответы о том, что просто используйте то, что у вас есть, не применяются, поскольку у меня ничего нет. Я пишу системный драйвер, но мне нужны рекурсивные мьютексы, но я не могу понять, как их...
405 просмотров
schedule 05.12.2023

Неопределенное исключение инструкции в коде ARM
Я занимаюсь программированием с нуля (разрабатываю ядро) на ARM-Cortex A53, SoC BCM2837 (другими словами, Raspberry PI 3). На самом деле я пишу часть программного обеспечения, отвечающего за обработку mini UART (своего рода привет, мир, как...
908 просмотров
schedule 08.04.2022

Как программы работают под управлением операционной системы
Я пытаюсь понять внутренности операционной системы, но у меня возникла небольшая проблема. Мне интересно, как операционные системы выделяют виртуальную память, утверждают, что программы не пишут в пределах и за пределами границ (это потребует...
188 просмотров

Статическая замена вызовов malloc
Я разрабатываю baremetal-приложение. Я хочу использовать исходный код U-Boot для своего приложения. Я хочу заменить следующие вызовы malloc, найденные в U-Boot, вместо статического выделения памяти: struct foo *ptr = malloc(sizeof(struct foo));...
178 просмотров
schedule 22.09.2022

Функции плагина Qemu - как получить доступ к гостевой памяти и регистрам
Фон Qemu версия 4.2.0 , выпущенная в декабре '19, функциональность для чего-то, что называется подключаемыми модулями TCG . У них есть несколько примеров в каталоге tests / plugins , а API более или менее определен в qemu -plugin.h . Этот...
780 просмотров
schedule 16.01.2023

Как подключить системные вызовы C++ к freertos
Я хочу написать многопоточную программу для микроконтроллера с бесплатным RTOS. но я не хочу использовать нестандартные функции free-rtos, вместо этого я хочу использовать собственную библиотеку C++ для выполнения параллельных и асинхронных задач....
375 просмотров
schedule 31.03.2023

Что такое nosys, nano, rdimon при использовании ARM GCC?
Я учусь писать код ARM, используя набор инструментов GCC. Я столкнулся с несколькими вариантами GCC, для которых я не могу найти документацию. Может кто-нибудь, пожалуйста, помогите объяснить, что они делают? -specs=nosys.specs...
3882 просмотров
schedule 20.03.2023