Форум программистов, компьютерный форум, киберфорум
Наши страницы
ОС на Assembler
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
ILUNCHIK
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 40
1

Запуск кода на железе

24.09.2019, 11:34. Просмотров 3872. Ответов 64
Метки нет (Все метки)

Я понимаю, что немного не по теме, но как можно запустить код C++,C# или Python на железе? К примеру элементарный вывод текста через cout,Console.Write или print ... Или для этого обязательно писать код для работы с железом ? И можно ли будет формы к примеру WinForms или WPF так запустить ?
1
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2019, 11:34
Ответы с готовыми решениями:

Запуск исходного кода ОС на FASM
Не могу понять в чем дело. Откомпилировал листинг ОС, которую нашел на вашем форуме, и немогу найти...

Запуск (перезапуск) Windows 10 - сколько времени стартует ваша система, и на каком железе?
Ребята всем привет меня интересует такой вопрос ...(как стартует ваша сборка сколько по времени у...

Запуск неуправляемого кода внутри кода c#
часто требуется при выполнении программы запускать исполняемые файлы (exe) с ключами. Для этого...

Запуск кода
Добрый день,Хотел бы попросить помощи о запуске кода С# Как это сделать?Скоплировать. using...

Запуск С# кода из powershell
Все добрый день. Помогите разобраться с ошибкой. запускаю код C# в повершеле $power = @"...

64
politoto
2438 / 283 / 35
Регистрация: 23.07.2018
Сообщений: 742
Записей в блоге: 1
24.09.2019, 12:26 2
Нужно решить, что должно происходить с железом при выполнении
C++
1
std::cout << "Hello, my hardware!"
И кто-то должен всё-таки написать код, который делает с железом то, что задумано.
Например, кто-то из компании Microsoft в Windows IoT,
разработчики стандартных и аппаратнозависимых библиотек
или Вы сами.
1
ILUNCHIK
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 40
24.09.2019, 12:43  [ТС] 3
politoto, я и спрашиваю, как этот код можно запустить на железе, либо подобный код... Так-то С++, С, fasm и так умеют работать с железом и как бы про std::cout я знаю... Мне нужно именно, как запустить на железе
0
politoto
2438 / 283 / 35
Регистрация: 23.07.2018
Сообщений: 742
Записей в блоге: 1
24.09.2019, 13:06 4
Браузер, при помощи которого Вы задаёте интересные вопросы, разве не на железе работает?
1
24.09.2019, 13:06
ILUNCHIK
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 40
24.09.2019, 13:08  [ТС] 5
politoto, пора бы уже понять, что я имею ввиду чисто на железе, вне ОС
0
maximka777
81 / 62 / 24
Регистрация: 13.08.2018
Сообщений: 167
24.09.2019, 13:31 6
ILUNCHIK, без ОС работать не будет.
1
politoto
2438 / 283 / 35
Регистрация: 23.07.2018
Сообщений: 742
Записей в блоге: 1
24.09.2019, 13:54 7
Нужно преобразовать код в подходящую для железа форму, предоставить к нему доступ устройству, и сделать так, чтобы железо начало его выполнять.

Если железо - какие-нибудь простенькие часики, то код может размещается внутри железа в процессе его производства.
Если это серьёзное корпоративное железо для серьёзных корпораций, то задача решается в процессе Initial Program Load https://www.ibm.com/support/knowledg.../rzahc/opt.htm
в котором может быть задействовано множество устройств, бюрократических процедур, другого кода и микрокода.

Независимо от всевозможных промежуточных вариантов и комбинаций, смысл и цель остаётся той же.
1
гог педа
10 / 7 / 3
Регистрация: 24.09.2019
Сообщений: 11
24.09.2019, 14:13 8
ILUNCHIK, ха ха ха - совсем не ясно, что надо-то вам???
0
shmkv
3308 / 472 / 66
Регистрация: 21.07.2015
Сообщений: 1,232
25.09.2019, 14:12 9
Про C#/Python в силу очевидных причин говорить бессмысленно. На C/C++ можно писать под UEFI. Тогда вывод строки на экран будет выглять примерно так:
C++
1
2
3
4
5
EFI_STATUS EFIAPI EfiMain(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
{
    SystemTable->ConOut->OutputString(SystemTable->ConOut, L"This is test\r\n");
    return EFI_SUCCESS;
}
Добавлено через 2 минуты
ЗЫ: Ожидаю вопроса "Как собрать программу под UEFI?"
1
Ethereal
8376 / 2344 / 316
Регистрация: 17.02.2013
Сообщений: 3,391
25.09.2019, 17:02 10
Ну или используй что-нибудь вроде такого : https://www.on-time.com/rtos-32-docs...without-win32/
2
politoto
2438 / 283 / 35
Регистрация: 23.07.2018
Сообщений: 742
Записей в блоге: 1
25.09.2019, 19:21 11
Цитата Сообщение от shmkv Посмотреть сообщение
Про C#/Python в силу очевидных причин говорить бессмысленно.
Почему бессмысленно?
https://store.micropython.org/category/featured
1
shmkv
3308 / 472 / 66
Регистрация: 21.07.2015
Сообщений: 1,232
26.09.2019, 11:37 12
Так там уже есть заводская прошивка с интерпретатором Python. Голые STM'ки Python не понимают (я баловался с ними).
1
politoto
2438 / 283 / 35
Регистрация: 23.07.2018
Сообщений: 742
Записей в блоге: 1
27.09.2019, 13:46 13
Чем это принципиально отличается от UEFI?

Кстати, этот microPython портировали на UEFI, так что можно запускать кросс-платформенные HelloWorldы на различном железе.
1
ILUNCHIK
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 40
29.09.2019, 14:33  [ТС] 14
shmkv, ну тогда ответь, как собрать под uefi раз ждешь, когда спрошу ... Я просто не писал еще под железо ни разу

Добавлено через 54 секунды
гог педа, все понятно, читать научитесь, я спрашиваю, как на выше перечисленных языках можно написать код, чтобы запустить его вне ОС
0
politoto
2438 / 283 / 35
Регистрация: 23.07.2018
Сообщений: 742
Записей в блоге: 1
29.09.2019, 16:48 15
Лучший ответ Сообщение было отмечено politoto как решение

Решение

Вопрос только в том, как написать?
Как собрать, как запустить и как убедиться, что код работает так, как задумано, уже ясно?

Что имеется под рукой для того, чтобы писать и собирать код на перечисленных языках?
MS Visual Studio в Windows 10?
Или g++ под управлением linux?
Или что-то ещё?

И что представляет собой железо, на котором предстоит запустить код вне ОС? Работает ли на нём UEFI?
Если не работает, то, чтобы запустить код, собранный для работы под управлением UEFI, нужно сначала портировать на это железо или реализовать UEFI самому и запустить эту реализацию на железе.

Писать под железо можно и под управлением ОС

Добавлено через 8 минут
А для реализации спецификаций UEFI нужен значительный объем кода, который превосходит объем многих операционных систем прошлого.

Реализация стандартной функции printf(), чтобы в под управленим UEFI работало
[
C++
1
 printf( "Hello, UEFI!" "\n" )
https://github.com/tianocore/edk2-li...Stdio/printf.c

Пример приложения, работающего под управлением UEFI, и расширяющего функциональность, доступную пользователю
https://github.com/tianocore/tianoco...ll-Application
1
Constantin Cat
9904 / 1441 / 414
Регистрация: 28.02.2015
Сообщений: 2,944
Завершенные тесты: 1
29.09.2019, 21:25 16
Лучший ответ Сообщение было отмечено politoto как решение

Решение

2 All
Начнем с того, что UEFI довесок, к стандартному железу, также как и
Цитата Сообщение от shmkv Посмотреть сообщение
прошивка с интерпретатором Python.
Заводская прошивка - довесок.
На "ГОЛОМ" железе - этого нет. Т.е. у одних он есть, у других его нет(как повезет). Даже сам UEFI, который как бы есть, настолько "кастрирован", по сравнению, даже с первым стандартом С, что о полноценности говорить нет смысла.
Под видом техники UEFI, есть попытки протолкунуть Lisp или Prolog.
2
shmkv
3308 / 472 / 66
Регистрация: 21.07.2015
Сообщений: 1,232
30.09.2019, 13:57 17
Лучший ответ Сообщение было отмечено politoto как решение

Решение

Цитата Сообщение от ILUNCHIK Посмотреть сообщение
shmkv, ну тогда ответь, как собрать под uefi раз ждешь, когда спрошу
Пишу для MinGW-w64. Добавь к линкеру (g++)
-m64 -nostdlib -Wl,--pic-executable -Wl,--subsystem,10 -Wl,--dll -e точка_входа
точка_входа - EfiMain в name mangling. Если хочешь С++, то нужно добавить к компилятору
-fno-exceptions -fno-rtti -fno-threadsafe-statics.
Структуры данных можешь содрать, например, отсюда. Или прямо из официальной документации. Никакие дополнительные либы не нужны, но можно собрать gnu-efi, если не хочешь набор libc функций.
В итоге собираешь свой хеллоуворлд, копируешь на флешку в efi/boot/bootx64.efi, выключаешь в BIOS'е Secure Boot, выбираешь загрузку с флешки и наслаждаешься результатом.

Добавлено через 7 минут
Цитата Сообщение от politoto Посмотреть сообщение
Чем это принципиально отличается от UEFI?
EFI для развертывания ядра ОС годен, а Pyhton разве что как скрипт для МК (пины дергать), не особо представляю как на нем можно, например, реализовать переключение контекста задачи.
Цитата Сообщение от politoto Посмотреть сообщение
так что можно запускать кросс-платформенные HelloWorldы на различном железе.
Только HelloWorld'ами это все и ограничится.
Цитата Сообщение от politoto Посмотреть сообщение
Реализация стандартной функции printf(), чтобы в под управленим UEFI работало
Там вся реализация внутри vfprintf. Да и для вывода строчки EDK2/GNU-EFI не нужны, BIOS вернет указатели на набор функций для работы с консолью в EFI_SYSTEM_TABLE.

Добавлено через 3 часа 52 минуты
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Начнем с того, что UEFI довесок, к стандартному железу
Так я и не спорю. Но воспринял слова ILUNCHIK как желание написать "свою ОС" под PC, поэтому и рекомендации такие. Писать свой BIOS для современных x86 бесперспективно, т. к. низкоуровневая инициализация будет специфична для каждого чипсета/ЦП. А при старте проца не то, что строчку на экран не выведешь, а даже в ОЗУ ничего не запишешь.
3
Constantin Cat
9904 / 1441 / 414
Регистрация: 28.02.2015
Сообщений: 2,944
Завершенные тесты: 1
30.09.2019, 14:32 18
Цитата Сообщение от shmkv Посмотреть сообщение
Так я и не спорю.
Этот пост был не для Вас, а для тех, кто не понимает почему комп, сперва бибикает, а только потом, спустя время, инфу на экран выводит.
Для тех, кто считает, что программа на ЯВУ, только код, который не подключает различную "хрень", ввиде оверлеев, библиотек, в том числе и ОСи, пусть даже и не явно. Таже msvcrt, которая есть в С/С++ или Python, и без которых они работать не могут, это только надстройка над библиотеками WIN'ь(User, Kernel, Gdi и остальных). За счет единообразия msvcrt, код ЯВУ, становится кроссплатфоменным, но у каждой ОСи, своя msvcrt, заточеная именно по неё.
3
politoto
2438 / 283 / 35
Регистрация: 23.07.2018
Сообщений: 742
Записей в блоге: 1
30.09.2019, 16:16 19
Цитата Сообщение от shmkv Посмотреть сообщение
EFI для развертывания ядра ОС годен, а Pyhton разве что как скрипт для МК (пины дергать), не особо представляю как на нем можно, например, реализовать переключение контекста задачи.
На Python можно, например, написать компилятор с собственного языка системного программирования
Проверка типа переменной
1
shmkv
3308 / 472 / 66
Регистрация: 21.07.2015
Сообщений: 1,232
30.09.2019, 18:11 20
Цитата Сообщение от politoto Посмотреть сообщение
например, написать компилятор с собственного языка системного программирования
и собирать бинарник в рантайме uefi?
3
30.09.2019, 18:11
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2019, 18:11

Запуск кода асинхронно
Добрый день господа! Имею следующий класс: using HtmlAgilityPack; using...

Запуск кода в Notepad++
Только начал осваивать HTML. Обучаюсь по видеокурсу. Смотрю, что там автор через браузер запускает...

Запуск чужого кода
Пробую запустить вот эту программу https://github.com/dimMaryanto93/dalas18-cash-management на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.