Qemu не настроен правильно, когда пользовательский компьютер добавлен - PullRequest
1 голос
/ 03 апреля 2019

Я пытался разработать пользовательский компьютер в QEMU : STM32F407 .Я написал первоначальный скрипт для добавления имени машины в список машин, поддерживаемых в QEMU, когда мы делаем -machine help с описанием машины, например определение SRAM , тип процессора и т. Д. У меня естьдобавил файл в путь ~/qemu/hw/arm как stm32f407ve_scu.c

Я также добавил строку obj-$(CONFIG_STM32F407VE_SCU) += stm32f407ve_scu.o в makefile.objs файл.

.c файлимеет следующий код:

struct stm32f407ve_scu {
    DeviceState *soc;
    struct arm_boot_info boot_info;

};

static void stm32f407ve_scu_init(MachineState *machine) { //create a space for the machine kernel
    struct stm32f407ve_scu *s =g_new0(struct stm32f407ve_scu, 1);

    if (!machine->kernel_filename){
        fprintf(stderr," Guest image is missing (use -kernel)\n");
        exit(1);
    }

    s->soc = qdev_create(NULL, "stm32f407-soc");
    qdev_prop_set_string (s->soc, "cpu-type", ARM_CPU_TYPE_NAME("cortex-m4")); // assign cortex-m4 as the processor
    object_property_set_bool(OBJECT(s->soc), true, "realized", &error_fatal);

    MemoryRegion *sram =g_new(MemoryRegion,1); //creates new memory region
    memory_region_init_ram(sram, NULL, "scu.sram", 1024 * 1024 * 128, &error_fatal); // ram area defined with size
    vmstate_register_ram_global(sram);

    //loads kernel of maximum size 2MB
    armv7m_load_kernel(ARM_CPU(first_cpu), machine->kernel_filename, 2 * 1024 * 1024);      

}
static void stm32f407ve_scu_machine_init(MachineClass *mc) //defines the machine init struct and description
{
    mc->desc = "STM32F407 board with RAM";
    mc->init = stm32f407ve_scu_init;
}
DEFINE_MACHINE("stm32f407ve_scu", stm32f407ve_scu_machine_init) //machine is defined with initialization clas

Когда я пытаюсь настроить и сделать QEMU , я не получаю ошибки, но stm32f407ve_scu.o и stm32f407ve_scu.d не генерируются.

Почему файлы .o и .d не генерируются?Но когда я вижу другие файлы .c, они были сгенерированы в .o и .c.

Что мне здесь не хватает?Я добавил все файлы заголовков, как и другие файлы, и использовал тот же синтаксис для написания описания моего компьютера.

1 Ответ

1 голос
/ 04 апреля 2019

Если вы используете obj-$(CONFIG_STM32F407VE_SCU) += stm32f407ve_scu.o, вам нужно включить CONFIG_STM32F407VE_SCU где-нибудь, чтобы построить этот файл.Это можно сделать в файле configure или отредактировать default-configs/arm-softmmu.mak и добавить CONFIG_STM32F407VE_SCU=y.

Если вам нужно только создать этот дополнительный файл, вы можете просто отредактировать Makefile.objs следующим образом:

obj-$(CONFIG_ARM_V7M) += armv7m.o stm32f407ve_scu.o

Поскольку вы используете ARMv7m (Cortex M4), ваш файл будет собран (CONFIG_ARM_V7M будет равен y)

...