Ошибка не правильного имени модели устройства в Qemu - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь добавить пользовательское устройство в исходный код Qemu. Ниже приведены шаги, которые я выполнил, чтобы добавить устройство в исходный код Qemu:

Go в каталог, где установлена ​​qemu

Затем

  1. создал пользовательский файл устройства в hw / misc /.c
  2. создал запись в qemu / hw / misc / Makefile.ob js
  3. создал запись в qemu / config-all-devices .mak
  4. создал запись в qemu / arm-softmmu / config-devices.mak
  5. создал запись в qemu / arm-softmmu / config-devices.mak.old

После запуска ниже двух команд sudo make CFLAGS = "- Wno-error" sudo make install

Затем я запускаю qemu со своим пользовательским устройством. Ниже приведен скрипт для запуска qemu

* 1022. *

Когда я запускаю вышеуказанный скрипт, я получаю следующую ошибку:

ОШИБКА :

qemu-system-arm: -device hello-world- устройство: 'hello-world-device' не является допустимым названием модели устройства

Так чего мне не хватает в описанных выше шагах?

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Я пробовал метод, предложенный вами для добавления пользовательского устройства в исходный код Qemu (arm-32bit), но он дает следующие ошибки:

  1. Добавлена ​​запись для моего устройства в следующем файле hw / misc / Makefile.ob js и default-config / arm-softmmu.mak
  2. Запустите make, введя следующие команды

    make distclean make -j8 -C build

  3. Я прилагаю изображение ниже, чтобы показать вывод, содержащий ошибку

Ошибка сборки qemu-system-arm

  • После проверки вывода показанным выше изображением, я создал файл "config-devices.mak" в build / arm-softmmu.
  • Я снова запускаю команды, описанные в шаге 2.
  • Я получаю следующий вывод и ошибка показаны ниже.

    ОШИБКА

    ar: creating libfdt/libfdt.a
    

    ar: создание /lhome/priyamvad/debian_qemu_arm32_updated/qemu/build/capstone/libcapstone.a в файле включено в /lhome/priyamvad/debian_qemu_arm32_updated/qemu/hw/misc/testpci.c:19: / lhome / priyamvad / debian_qemu_arm32_update d / qemu / include / hw / hw.h: 8: 20: ошибка: ожидаемая \ u2018 = \ u2018, \ u2019, \ u2018; \ u2019, \ u2018asm \ u2019 или \ u2018__attribute __ \ u2019 до \ u2018hw_error \ u2019 void QEMU_NORETURN hw_error (const char * fmt, ...) GCC_FMT_ATTR (1, 2); ^ ~~~~~~~ В файле, включенном в /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:7, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/incm.exehme/ : 19, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/hw/pci/pci.h:4, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/hw/misc/testpci.*1092me20: priyamvad / debian_qemu_arm32_updated / qemu / include / exec / hwaddr.h: 11: 9: ошибка: неизвестное имя типа \ u2018uint64_t \ u2019 typedef uint64_t hwaddr; ^ ~~~~~~~ В файле, включенном в /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/memory.h:19, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/hw.hci : 4, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/hw/misc/testpci.c:20: /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h :15 :: имя неизвестного типа \ u2018CPUState \ u2019 void tcg_flush_softmmu_tlb (CPUState * cs); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:37:9: ошибка: неизвестное имя типа \ u2018uintptr_t \ u2019 typedef uintptr_t ram_addr_t; ^ ~~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:46:60: ошибка: неизвестное имя типа \ u2018uint32_t \ u2019 typedef void CPUWriteMemoryFun c (void непрозрачный, hwaddr addr, значение uint32_t); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:47:9: ошибка: неизвестное имя типа \ u2018uint32_t \ u2019 typedef uint32_t CPUReadMemoryFun * opa c , hwaddr addr); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:52:1: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 RAMBlock * qemu_ram_block_by_name (имя константы *); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:53:1: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 RAMBlock * qemu_ram_block_from_host, bool , ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:53:47: ошибка: неизвестное имя типа \ u2018bool \ u2019; Вы имели в виду \ u2018_Bool \ u2019? RAMBlock * qemu_ram_block_from_host (void * ptr, bool round_offset, ^ ~~~ _Bool /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:55:39: ошибка: имя_блока_объекта_блока_объектов (RAMBlock * rb, void * host); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:56:25: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 void qemu_ram_set_idstr (блок RAMBlock *, имя const char * name; имя устройства * const *), DeviceState ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:56:60: ошибка: неизвестное имя типа \ u2018DeviceState \ u2019 void qemu_ram_set_idstr (блок RAMBlock *, символ) имя, DeviceState * dev); ^ ~~~~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:57:27: ошибка: имя неизвестного типа \ u2018RAMBlock \ u2019 void qemu_ram_unset_idstr (блок RAMBlock *) ; ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:58:32: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 const char * qemu_ram_get_idstr (RAMBlock * r); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:59:30: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 void * qemu_ram_get_host_addr (RAMBlock * r); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:60:32: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 ram_addr_t qemu_ram_get_offset rset (RAMBlock) ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:61:37: ошибка: имя неизвестного типа \ u2018RAMBlock \ u2019 ram_addr_t qemu_ram_get_used_lebBB; ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:62:1: ошибка: неизвестное имя типа \ u2018bool \ u2019; Вы имели в виду \ u2018_Bool \ u2019? bool qemu_ram_is_shared (RAMBlock * rb); ^ ~~~ _Bool /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:62:25: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 bool qemu_ram_is_shared (RAMBlock * rb); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:63:1: ошибка: неизвестное имя типа \ u2018bool \ u2019; Вы имели в виду \ u2018_Bool \ u2019? bool qemu_ram_is_uf_zeroable (RAMBlock * rb); ^ ~~~ _Bool /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:63:30: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 bool qemu_ram_is_uf_zeroable (RAMBlock * r); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:64:31: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 void qemu_ram_set_uf_zeroable (RAMBlock * r); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:65:1: ошибка: неизвестное имя типа \ u2018bool \ u2019; Вы имели в виду \ u2018_Bool \ u2019? bool qemu_ram_is_migratable (RAMBlock * rb); ^ ~~~ _Bool /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:65:29: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 bool qemu_ram_is_migratable (RAMBlock * rb); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:66:30: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 void qemu_ram_set_migratable (RAMBlock * rb); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:67:32: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 void qemu_ram_unset_migratable (RAMBlock * r); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:69:1: ошибка: неизвестное имя типа \ u2018size_t \ u2019 size_t qemu_ram_pagesize (блок RAMBlock *); ^ ~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:69:1: note: \ u2018size_t \ u2019 определено в заголовке \ u2018 \ u2019; Вы забыли включить \ u2018? /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:8:1: + # include #endif /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:69:1: size_t qemu_ram_pagesize (блок RAMBlock *); ^ ~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:69:26: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 size_t qemu_ram_pagesize (блок RAMBlock *); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:70:1: ошибка: неизвестное имя типа \ u2018size_t \ u2019 size_t qemu_ram_pagesize_largest (void); ^ ~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:70:1: note: \ u2018size_t \ u2019 определено в заголовке \ u2018 \ u2019; Вы забыли включить \ u2018? /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:72:42: ошибка: неизвестное имя типа lhome / priyamvad / debian_qemu_arm32_updated / qemu / include / exec / cpu-common.h: в функции \ u2018cpu_physical_memory_read \ u2019: /lhome/priyamvad/debian_qemu_arm32_updated/qemc: error_p0 неявное объявление функции \ u2018cpu_physical_memory_rw \ u2019; вы имели в виду \ u2018cpu_physical_memory_read \ u2019? [-Werror = объявление неявной функции] cpu_physical_memory_rw (addr, buf, len, 0); ~ ~ ~ ~ ~~~~~~~~~~ cpu_physical_memory_read /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:77:5: ошибка: вложенное внешнее объявление \ u2018cpu_physical_me2010 externs] /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h: на верхнем уровне: /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-commonh ror: неизвестное имя типа \ u2018QEMUBH \ u2019; Вы имели в виду \ u2018QEMU_HW_H \ u2019? void cpu_register_map_client (QEMUBH * bh); ^ ~~~~~ QEMU_HW_H /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:90:32: ошибка: неизвестное имя типа \ u2018QEMUBH \ u2019; Вы имели в виду \ u2018QEMU_HW_H \ u2019? void cpu_unregister_map_client (QEMUBH * bh); ^ ~~~~~ QEMU_HW_H /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:92:1: ошибка: неизвестное имя типа \ u2018bool \ u2019; Вы имели в виду \ u2018_Bool \ u2019? bool cpu_physical_memory_is_io (hwaddr phys_addr); ^ ~~~ _Bool /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:103:32: ошибка: имя неизвестного типа \ u2018RAMBlock \ u2019 typedef int (RAMBlockIterFun c), RAMBlock void * непрозрачный); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:105:28: ошибка: имя неизвестного типа \ u2018RAMBlockIterFunc \ u2019 int qemu_ram_foreach_block *, void * непрозрачный); ^ ~~~~~~~~~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:106:29: ошибка: неизвестное имя типа \ u2018RAMBlock \ u2019 int ram_block_discard_range (RAMBlock * rb, начало uint64_t, длина size_t); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:106:43: ошибка: имя неизвестного типа \ u2018uint64_t \ u2019 int ram_block_discard_range (RAMBlock * rb, rb, size_t длина); ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:106:59: ошибка: неизвестное имя типа \ u2018size_t \ u2019 int ram_block_discard_range (RAMBlock * rb, ub, size_t длина); ^ ~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/cpu-common.h:106:59: примечание: \ u2018size_t \ u2019 определено в заголовке \ u2018 \ u2019; Вы забыли включить \ u2018? В файле, включенном в /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/memory.h:21, от /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/hw/pci/pci.h:4, от /lhome/priyamvad/debian_qemu_arm32_updated/qemu/hw/misc/testpci.c/me320d_dm_yq_d_m_p: /qemu/include/exec/memattrs.h:69:9: ошибка: неизвестное имя типа \ u2018uint32_t \ u2019 typedef uint32_t MemTxResult; ^ ~~~~~~~ В файл включен из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:4, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qtiluhost- : 29, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/memop.h:15, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/memory.h:em_me_dam_home_h_d_datex_v_d_v_d_d_d_v_d_d_v_v_d_v /qemu/include/hw/pci/pci.h:4, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/hw/misc/testpci.c:20: / lhome / priyamvad / debian_qemu_arm32_updated / fuu softfloat-types.h: 87: 9: ошибка: неизвестное имя типа \ u2018uint8_t \ u2019 typedef uint8_t flag; ^ ~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/fpu/softfloat-types.h:93:9: ошибка: неизвестное имя типа \ u2018uint16_t \ u2019 typedef uint16_t float16; ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/fpu/softfloat-types.h:94:9: ошибка: неизвестное имя типа \ u2018uint32_t \ u2019 typedef uint32_t float32; ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/fpu/softfloat-types.h:95:9: ошибка: неизвестное имя типа \ u2018uint64_t \ u2019 typedef uint64_t float64; ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/fpu/softfloat-types.h:106:5: ошибка: неизвестное имя типа \ u2018uint64_t \ u2019 uint64_t low; ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/fpu/softfloat-types.h:107:5: ошибка: неизвестное имя типа \ u2018uint16_t \ u2019 uint16_t high; ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/fpu/softfloat-types.h:115:5: ошибка: неизвестное имя типа \ u2018uint64_t \ u2019 uint64_t низкий, высокий; ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/fpu/softfloat-types.h:169:5: ошибка: неизвестное имя типа \ u2018uint8_t \ u2019 uint8_t float_exception_flags; ^ ~~~~~~ В файл включен из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/host-utils.h:29, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exeh/m.me 15, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/exec/memory.h:22, из /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/hw/pci/pci.h:me / priy ly debian_qemu_arm32_updated / qemu / hw / misc / testpci. c: 20: /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:29:15: ошибка: неизвестное имя типа \ u2018uint16t встроенный uint16_t bswap16 (uint16_t x) ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:29:32: ошибка: имя неизвестного типа \ u2018uint16_t \ u2019 в строке c stati * 1103 uint16_t bswap16 (uint16_t x) ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:35:15: ошибка: неизвестное имя типа \ u2018uint32_t \ u2019 stati * 11032 bswap32 (uint32_t x) ^ ~~~~~~~ / lhome / priyamvad / debian_qemu_arm32_update d / qemu / include / qemu / bswap.h: 35: 32: ошибка: неизвестное имя типа \ u2018uint32_t \ u2019 stati c inline uint32_t bswap32 (uint32_t x) ^ ~~~~~~ / lhome / priyamvad / debian_qemu_arm32_upd /qemu/include/qemu/bswap.h:43:15: ошибка: неизвестное имя типа \ u2018uint64_t \ u2019 stati c inline uint64_t bswap64 (uint64_t x) ^ ~~~~~~ / lhome / priyamvad / debian_qemu_arm32_upd qemu / include / qemu / bswap.h: 43: 32: ошибка: неизвестное имя типа \ u2018uint64_t \ u2019 stati c inline uint64_t bswap64 (uint64_t x) ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:56:29: ошибка: неизвестное имя типа \ u2018uint16_t \ u2019 stati c inline void bswap16s (uint16_t * s) ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:61:29: ошибка: неизвестное имя типа \ u2018uint32_t \ u2019 stati c inline void bswap32s (uint32_t * s) ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:66:29: ошибка: неизвестное имя типа \ u2018uint64_t \ u2019 stati c inline void bswap64s (uint64_t * s) ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:162:21: ошибка: неизвестное имя типа \ u2018uint16_t \ u2019 CPU_CONVERT (be, 16, uint16_t) ^ ~~~ ~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:142:15: примечание: в определении макроса \ u2018CPU_CONVERT \ u2019 stati c встроенный тип endian ## size ## _to_cp v) \ ^ ~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:162:21: ошибка: неизвестное имя типа \ u 2018uint16_t \ u2019 CPU_CONVERT (be, 16, uint16_t) ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:142:46: примечание: в определении макроса \ u201ERTU stati c встроенный тип endian ## size ## _to_cpu (type v) \ ^ ~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:162:21: ошибка: неизвестное имя типа \ u2018uint16_t \ u2019 CPU_CONVERT (be, 16, uint16_t) ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:147:15: примечание: в определении макроса \ u2018CPU_CONVERT u2019 c встроенный тип cpu_to_ ## endian ## size (type v) \ ^ ~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:162:21: ошибка: неизвестное имя типа \ u2018uint16_t \ u2019 CPU_CONVERT (be, 16, uint16_t) ^ ~~~~~~~ /lhome/priyamvad/debian_qemu_arm32_updated/qemu/include/qemu/bswap.h:147:46: примечание: в определении макроса \ u2018CPU_CONVERT \ u201 1114 * встроенный тип cpu_to_ ## endian ## size (type v) \ ^ ~~~ / lhome / priyamvad / debian_qemu_arm32_u pdated / qemu / include / qemu / bswap.h: 162: 21: ошибка: неизвестное имя типа \ u2018uint16_t \ u2019 CPU_CONVERT (be, 16, uint16_t) ^ ~~~~~~~ / lhome / priyamvad / debian_qemu_arm32_updated / qemu include / qemu / bswap.h: 152: 47: примечание: в определении макроса \ u2018CPU_CONVERT \ u2019 stati c inline void endian ## size ## _to_cpus (type * p) \ ^ ~~~ / lhome / priyamvad / debian_qemu_arm32_updated / qemu / include / qemu / bswap.h: 162: 21: ошибка: неизвестное имя типа \ u2018uint16_t \ u2019 CPU_CONVERT (be, 16, uint16_t) ^ ~~~~~~~ / lhome / priyamvad / debarm_emu_date include / qemu / bswap.h: 157: 51: примечание: в определении макроса \ u2018CPU_CONVERT \ u2019 stati c inline void cpu_to_ ## endian ## size ## s (type * p) \

  • Вышеуказанные ошибки вызваны ошибками в исходном коде qemu или я делаю что-то неприятное?

Некоторое описание моей работы

  • Создание пользовательского устройства в Qemu.
  • Создание драйвера устройства для тестирования пользовательского устройства.
  • Я создал пользовательское устройство, и теперь я хочу запустить свое пользовательское устройство на Qemu
  • Qemu имитирует ARM (32-битное) оборудование и запускает на нем debian.
  • Необходимо ли создавать драйвер устройства для пользовательского устройства или его можно протестировать с помощью пользовательского приложения?

Код файлов б

исходный файл пользовательского устройства пользовательское устройство

Makefile. ob js исходный файл Makefile.ob js

файл конфигурации config-device.mak config-device.mak

0 голосов
/ 28 февраля 2020

Вы пытаетесь редактировать некоторые файлы, которые автоматически генерируются процессом configure и make, поэтому при запуске ваши изменения будут снова перезаписаны: config-devices.mak, config-devices.mak.old и config-all -devices.mak все автоматически сгенерированы.

Место, где вы хотите поместить свой новый CONFIG_HELLO_DEVICE = y, находится в default-configs / arm-softmmu.mak. Затем hw / misc / Makefile.ob js может использовать его в строке типа "common-obj - $ (CONFIG_HELLO_DEVICE) + = hello.o".

Проверьте, что ваш исходный файл действительно компилируется и связан с двоичным файлом QEMU при запуске make. Если это так, то проблема в ваших C источниках; если это не так, значит, вы неправильно разбираетесь в makefile / default-config.

Несколько дополнительных советов:

sudo make CFLAGS="-Wno-error" sudo make install

- это действительно плохой способ компилировать QEMU для testing ":

  • он запускает весь процесс make, так как root излишне
  • выполняет установку, которую вам не нужно делать, чтобы просто запустить исполняемый вами файл QEMU ' мы построили для тестирования
  • вы переопределяете стандартную настройку «предупреждения - ошибки», которая просто скрывает ошибки в вашем коде, которые нужно исправить (и если вам действительно нужно сделать это по какой-то причине, это неправильный способ сделать это: есть опция configure --disable-werror)
  • он выполняет сборку в исходном каталоге, что означает, что автоматически сгенерированные файлы из сборки смешиваются с исходными файлами. Вот почему вы запутались и попытались отредактировать автоматически сгенерированные файлы config-devices.mak, я думаю.

Upstream QEMU настоятельно рекомендует делать сборку в отдельном каталоге сборки (я даю некоторые правдоподобные параметры конфигурации, но используйте то, что вы хотите):

 mkdir build
 (cd build && ../configure --target-list=arm-softmmu --enable-debug)
 make -j8 -C build

(вам нужно будет сделать 'distclean' в вашем текущем дереве исходных текстов, чтобы избавиться от результатов встроенного исходного дерева или просто выбросить его и начните снова, чтобы перейти в чистое состояние, из которого вы можете затем выполнить сборку вне дерева.)

После того, как вы сделали 'make', вы можете просто запустить собранный двоичный файл qemu напрямую как ./build/arm-softmmu/qemu-system-arm.

...