|
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 79
|
|
Запуск кода на железе24.09.2019, 11:34. Показов 14278. Ответов 64
Метки нет (Все метки)
Я понимаю, что немного не по теме, но как можно запустить код C++,C# или Python на железе? К примеру элементарный вывод текста через cout,Console.Write или print ... Или для этого обязательно писать код для работы с железом ? И можно ли будет формы к примеру WinForms или WPF так запустить ?
1
|
|
| 24.09.2019, 11:34 | |
|
Ответы с готовыми решениями:
64
Запуск исходного кода ОС на FASM Запуск (перезапуск) Windows 10 - сколько времени стартует ваша система, и на каком железе?
|
|
Модератор
|
|
| 19.10.2019, 12:10 | |
|
Т.е. на компьютере, где Вы пытаетесь запустить свой
hi, установлена какая-то Windows. Я бы посоветовал главную страницу сведений msinfo32 вставить в эту тему. Лучше не картинкой, а в текстовом виде в тегах "Спойлер" ( [SPOILER] [/SPOILER])В msinfo32 есть возможность скопировать текст всей страницы обычными Ctrl+A Ctrl+C или командной в меню.Это может в дальнейшем облегчить задачу знатокам, помогающим Вам. Также не помешает знать версию Microsoft Visual Studio или тех средств разработки программ, которые Вы обычно используете. Судя по сообщениям на скриншоте, встроеное ПО вашего компьютера действительно работает в режиме совместимости с протколом загрузки, разработанным почти 40 лет назад для загрузки PC с дискеты. С загрузкой бутсектора (крошеченого загрузчика) с флешки BIOS справился, но бутсектор не нашёл, какой код нужно загружать ему. UEFI удобнее, если Вы собираетесь писать код на C++. Так как ПК новый, скорее всего устаревший режим загрузки можно отключить в настроках встроенного ПО. Что конкретно для этого нужно сделать, зависит от системы. Может быть, нужно нажать какую-нибудь клавишу во время загрузки, или особым образом перезагрузить Windows. Но после переключения режима на UEFI, установленная Windows может перестать стартовать (не обязательно), и перед загрузкой Windows, возможно, придётся менять режим обратно.
1
|
|
|
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 79
|
|
| 19.10.2019, 12:20 [ТС] | |
|
politoto, версия visual studio 2019, версию точную надо или какого года достаточно? Операционная система Windows 10 Pro одна из последних версий, читал, что в bios можно переключить на uefi(должен быть определенный пункт)...
Вот данные из msinfo32 - Кликните здесь для просмотра всего текста
Имя ОС Майкрософт Windows 10 Pro
Версия 10.0.18362 Сборка 18362 Дополнительное описание ОС Недоступно Изготовитель ОС Microsoft Corporation Имя системы DESKTOP-EDO5NSK Изготовитель System manufacturer Модель System Product Name Тип Компьютер на базе x64 SKU системы SKU Процессор AMD Ryzen 3 2200G with Radeon Vega Graphics, 3500 МГц, ядер: 4, логических процессоров: 4 Версия BIOS American Megatrends Inc. 4406, 28.02.2019 Версия SMBIOS 2.8 Версия встроенного контроллера 255.255 Режим BIOS Устаревший Изготовитель основной платы ASUSTeK COMPUTER INC. Модель основной платы PRIME A320M-K Версия основной платы Rev X.0x Роль платформы Рабочий стол Состояние безопасной загрузки Не поддерживается Конфигурация PCR7 Привязка невозможна Папка Windows C:\Windows Системная папка C:\Windows\system32 Устройство загрузки \Device\HarddiskVolume2 Язык системы Россия Аппаратно-зависимый уровень (HAL) Версия = "10.0.18362.387" Имя пользователя DESKTOP-EDO5NSK\playc Часовой пояс Омское стандартное время Установленная оперативная память (RAM) 8,00 ГБ Полный объем физической памяти 5,94 ГБ Доступно физической памяти 1,60 ГБ Всего виртуальной памяти 9,44 ГБ Доступно виртуальной памяти 1,93 ГБ Размер файла подкачки 3,50 ГБ Файл подкачки C:\pagefile.sys Защита DMA ядра Откл. Безопасность на основе виртуализации Не включено Поддержка шифрования устройства Причины сбоя автоматического шифрования устройства: Доверенный платформенный модуль не пригоден к использованию, Привязка PCR7 не поддерживается, Сбой интерфейса проверки безопасности оборудования, устройство не поддерживает текущий режим ожидания, Обнаружены запрещенные устройства или шина с поддержкой прямого доступа к памяти (DMA), Доверенный платформенный модуль не пригоден к использованию Hyper-V — расширения режима мониторинга виртуальной машины Да Hyper-V — расширения для преобразования адресов второго уровня Да Hyper-V — виртуализация включена во встроенном ПО Нет Hyper-V — предотвращение выполнения данных Да
0
|
|
|
Модератор
|
|
| 19.10.2019, 12:20 | |
|
Как уже писал уважаемый shmkv, для запуска своего
hi.efi, скорее всего, придётся также отключить Secure Boot (проверку подписей кода на соответствие ключам, которым доверяет встроенное ПО)https://www.cyberforum.ru/post13864041.html Если обсуждаемый компьютер - единственный имеющийся в Вашем распоряжении, я бы настоятельно рекомендовал освоить какой-нибудь эмулятор ПК (qemu, Virtual Box и т.п.) и для тестирования Вашего кода на этапе разработки использовать исключительно его. Даже если есть другой компьютер для тестирования, использование эмулятора значительно ускорит процесс.
1
|
|
|
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 79
|
|
| 19.10.2019, 12:46 [ТС] | |
|
politoto, про эмуляторы спасибо, я про Virtual box знаю, но как-то не подумал, запускаю, как уже и сказал, myos.exe, проще говоря исполняемый файл, а не efi файл
Добавлено через 3 минуты politoto, что подразумевается под точками входа и куда это вставлять? В параметры компиляции? Или можно на vs 2019 это забабахать ? Ну по хорошему можно и exe сделать для запуска на железе, но у меня видимо автозапуск не сработал, либо что-то еще надо сделать, потому что теже установщики Windows содержат exe файл Добавлено через 1 минуту politoto, Secure Boot выключается в bios'е или где ? И можно ли вместо hi.efi запускать hi.exe ? Добавлено через 9 минут politoto, вообщем, скачиваю qemu и на нем попробую, так же нашел, где можно выключить Secure Boot, позже на своей мат.плате в bios'e посмотрю и так же про uefi Добавлено через 11 минут politoto, а qemu-x32-64, вроде пытается загрузить, но пишет no bootable device
0
|
|
|
Модератор
|
|||||||||||||||||||
| 19.10.2019, 13:17 | |||||||||||||||||||
C:\Windows\System32\ntoskrnl.exe запускает загрузчик ОС Windows. Теоретически, конечно, он может запускать и Ваш код.Тот механизм автозапуска, который Вы, вероятно, использовали, предназначен для автоматического запуска программ со сменных носителей ( DVD, флешек и т.п. ) во время работы Windows. Для сборки программе link нужно передать подходяющий ключ /SUBSYSTEM
Добавлено через 11 минут https://github.com/tianocore/t... o-run-OVMF Добавлено через 3 минуты Пока в проекте только один файл, собирать EFI можно одной строкой
Когда проект разовьётся, в идеале по F5 должен запускаться эмулятор, загружающий и выполняющий собранный EFI Application
1
|
|||||||||||||||||||
|
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 79
|
|
| 19.10.2019, 13:30 [ТС] | |
|
politoto, спасибо, попробую поставить Virtualbox и скомпилировать С++ код с этими ключами которые ты скинул
Добавлено через 4 минуты politoto, чет я не нашел, куда надо вставлять ключ /SUBSYSTEM ?
0
|
|
|
Модератор
|
|
| 19.10.2019, 13:30 | |
|
qemu с OVMF тоже подойдёт.
Сейчас дорабатывается запускалка EFI прямо из linux или windows без эмулятора. Эмулятор EFI для windows, который Intel с друзьями когда-то давно разработала уже несколько устарел.
1
|
|
|
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 79
|
|
| 19.10.2019, 13:41 [ТС] | |
|
politoto, с установкой OVMF я видимо так же понял не до конца
запоролся на этом пункте - bash$ cp /path/to/ovmf/OVMF.fd bios.bin ... Пишет, что не может найти путь... P.S. bash$ естественно не пишу и пишу это в PowerShellДобавлено через 5 минут politoto, и опять же повторю свой вопрос, где вставлять в visual studio ключ /SUBSYSTEM
0
|
|
|
Модератор
|
|||||||||||||||||||||||
| 19.10.2019, 14:08 | |||||||||||||||||||||||
|
Допустим, запустили Вы Developer PowerShell for VS 2019.
Перешли в папку со своим кодом в файле Hi.c++В командной строке пишете
То же самое в x64 Native Tools Command Prompt for VS 2019
1
|
|||||||||||||||||||||||
|
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 79
|
|
| 19.10.2019, 14:34 [ТС] | |
|
politoto, куча ошибок выводит - https://ideone.com/23Az1U
Добавлено через 15 минут politoto, в результате нету myos.efi, а есть только myos.obj
0
|
|
|
Модератор
|
|
| 19.10.2019, 15:10 | |
|
Уберите для начала все стандартные #include из кода.
Если не использовать специальные версии стандартных библиотек, то пока Вам доступно только то, что можно добыть из структуре EFI_SYSTEM_TABLE , указатель на которую UEFI передает в точку входа как один из параметров. Пример, как выводить строчку без использования стандартных библиотек, пользуясь исключительно средствами UEFI Запуск кода на железе Где брать описания этих структур? Уважаемый shmkv предложил варианты ответов и на этот вопрос https://www.cyberforum.ru/post13864041.html
1
|
|
|
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 79
|
||||||
| 19.10.2019, 15:32 [ТС] | ||||||
|
politoto, товарищ shmkv предложил не совсем рабочий вариант... Выдает ошибки с синтаксисом
Кликните здесь для просмотра всего текста
myos.cpp
myos.cpp(1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию myos.cpp(1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "EFIAPI" myos.cpp(2): error C2143: синтаксическая ошибка: отсутствие ";" перед "{" myos.cpp(2): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) Вот мой код
0
|
||||||
|
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 79
|
||||||
| 19.10.2019, 15:37 [ТС] | ||||||
|
politoto, даже попробовал чуть переделать код, но все так же и ошибки теже
politoto, понял, сейчас попробую
0
|
||||||
|
Модератор
|
|
| 19.10.2019, 15:46 | |
main() не нужен, конечно.IN собственно так и определён в https://github.com/tianocore/e... ase.h#L288 ![]() Читате, копипастаете, инклюдаете...
1
|
|
|
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 79
|
||||||
| 19.10.2019, 15:51 [ТС] | ||||||
|
politoto, теперь появились другие ошибки ))) Ошибки -
Кликните здесь для просмотра всего текста
myos.cpp myos.cpp(9): error C2059: синтаксическая ошибка: , myos.cpp(10): error C2143: синтаксическая ошибка: отсутствие ";" перед "{" myos.cpp(10): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) Код -
politoto, я так понял надо создать файл base.h, в него скопипастить код из ссылки скинутой вами и просто подключить к моему коду ?
0
|
||||||
|
Модератор
|
|
| 19.10.2019, 15:58 | |
|
"Настоящие" определения типов
EFI_STATUS EFI_HANDLE EFI_SYSTEM_TABLE а также типа члена SystemTable->ConOut, в котором есть OutputString,нам нужны. ищите здесь или поблизости https://github.com/tianocore/e... UefiSpec.h Можете найти и почитать документацию по UEFI. Оттуда копипастать может быть быстрее.Добавлено через 2 минуты Можно сразу всю edk2 получить с github и инклюдать оттуда. Можно только необходимое копировать прямо себе в с++ и не инклюдать вообще ничего.
1
|
|
|
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 79
|
|||||||||||||||||||||
| 19.10.2019, 16:24 [ТС] | |||||||||||||||||||||
|
politoto, тоесть достаточно просто скачать edk2, запустить bat установщик edk2, заинклудить его в проект и все? И можно теже #define убирать и ошибок не будет ?
Добавлено через 12 минут politoto, вроде установил батник модуль, перезапустил vs, но не
0
|
|||||||||||||||||||||
|
76 / 4 / 0
Регистрация: 26.10.2018
Сообщений: 79
|
|
| 20.10.2019, 07:32 [ТС] | |
|
politoto, убедиться, что оно работает, а потом поискать книжки или материал...
2
|
|
| 20.10.2019, 07:32 | |
|
Запуск кода
Запуск кода асинхронно Запуск кода в Notepad++ Запуск чужого кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|