SylixOS嵌入式操作系统|论坛

标题: 关于SylixOS运行在linux平台的Qemu问题 [打印本页]

作者: RTOS    时间: 2014-10-30 12:18
标题: 关于SylixOS运行在linux平台的Qemu问题
您好!

我尝试在linux下的qemu运行SylixOS系统,无法引导成功。

qemu源码是:repo.or.cz/qemu/mini2440.git

该版本和SylixOS官方提供的qemu版本是一样的。

但通过运行比对,发现SylixOS提供的qemu已经做出了更改,以适应系统编译出的bspmini2440.bin引导.

主要更改文件猜想为 hw/mini2440.c

故,希望版主能否 公布 更改过的qemu代码,让更多的linux开发者能在linux下测试SylixOS系统!

或者能否 公布 更改的关键引导地址或hw/mini2440.c文件?

谢谢!

作者: RTOS    时间: 2014-10-31 11:19
估计作者是做应用去了,没有要理我们的意思啊
作者: sylixos    时间: 2014-10-31 20:41
我们改过一些东西, 比如修改了 nand flash 的大小, 你可以根据你的 qemu 2440 配置, 修改一下 bsp 就可以了
作者: RTOS    时间: 2014-10-31 20:52
sylixos 发表于 2014-10-31 20:41
我们改过一些东西, 比如修改了 nand flash 的大小, 你可以根据你的 qemu 2440 配置, 修改一下 bsp 就可 ...

谢谢了啦!

今天下午鼓捣好了。

现在已经可以在linux下运行了。

来张图:
[attach]174[/attach]
作者: sylixos    时间: 2014-10-31 21:53
nand flash 还是有问题, 再折腾折腾
作者: 风城少主    时间: 2014-11-2 15:05
需要修改qemu-mini2440/hw/mini2440.c文件:
304行加入:
static void mini2440_reset_for_sylixos(void *opaque)
{
    struct mini2440_board_s *s = (struct mini2440_board_s *) opaque;
    int32_t image_size;

    s->cpu->env->regs[15] = 0;

    if (s->kernel) {
        if (strstr(s->kernel, "u-boot.bin")) {
            image_size = load_image(s->kernel, qemu_get_ram_ptr(0x03f80000));
            if (image_size > 0) {
                mini2440_printf("loaded %s (size %x)\n", s->kernel, image_size);
                s->cpu->env->regs[15] = S3C_RAM_BASE | 0x03f80000;
            }
        } else {
            image_size = load_image(s->kernel, qemu_get_ram_ptr(0));
            if (image_size > 0) {
                mini2440_printf("loaded %s (size %x)\n", s->kernel, image_size);
                s->cpu->env->regs[15] = S3C_RAM_BASE;
            }
        }
    }
}

376行:
#if 0
    qemu_register_reset(mini2440_reset, s);
#else
    qemu_register_reset(mini2440_reset_for_sylixos, s);
#endif

403行:
        mini->nand = nand_init(NAND_MFR_SAMSUNG, 0xf1);
        这样可以把Nand Flash大小改为128MB。

        406行:
#if 0
    mini2440_reset(mini);
#else
    mini2440_reset_for_sylixos(mini);
#endif

需要修改qemu-mini2440/gdbstub.c文件:
2347行:
#if 0
            snprintf(gdbstub_device_name, sizeof(gdbstub_device_name),
                     "%s,nowait,nodelay,server", device);
#else /* for sylixos, add ipv4 option, by jiaojinxing1987@gmail.com */
            snprintf(gdbstub_device_name, sizeof(gdbstub_device_name),
                     "%s,nowait,nodelay,server,ipv4", device);
#endif
Qemu的gdb server默认监听ipv6的1234端口,改为ipv4的,否则arm-none-eabi-gdb连接不上。

作者: RTOS    时间: 2014-11-3 15:23
风城少主 发表于 2014-11-2 15:05
需要修改qemu-mini2440/hw/mini2440.c文件:
304行加入:
static void mini2440_reset_for_sylixos(void *o ...

好的,非常的感谢!
作者: 风城少主    时间: 2014-11-3 21:14
RTOS 发表于 2014-11-3 15:23
好的,非常的感谢!

不客气
作者: westlor    时间: 2015-8-11 14:26
都是大神啊。。膜拜!




欢迎光临 SylixOS嵌入式操作系统|论坛 (https://bbs.sylixos.com/) Powered by Discuz! X3.2