首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qemu Freescale i.MX6 DualLite SABRE :根文件系统不挂载

Qemu Freescale i.MX6 DualLite SABRE :根文件系统不挂载
EN

Stack Overflow用户
提问于 2017-11-28 18:55:07
回答 1查看 6K关注 0票数 7

目标:模仿Qemu专门支持的"sabrelite : Freescale i.MX6 Quad SABRE Lite Board (Cortex A9)“(做'qemu-system-arm -M ?‘)。它会出现)。

Qemu ver: 2.10.1 (宿主: fedora-27)。

我已经成功地交叉编译并构建了一个4.1.46 Linux内核(使用了imx_v6_v7_defconfig配置文件)以及一个简单的“骨架”根文件系统(基于busybox)。(FYI,我有一个类似的工作设置的ARM Cortex-A9通用的快速平台-我使用我自己的家庭纺嵌入式Linux系统,称为封条)。

查看类似板使用的文件,我想使用' root= /dev/mmcblk0p0‘作为内核的root=参数。因此,为了试用它,我运行qemu,如下所示(pl水平滚动以查看):

代码语言:javascript
复制
qemu-system-arm -m 512 -M sabrelite -kernel zImage -drive file=rfs.img,format=raw -append "console=ttymxc0 rootfstype=ext4 root=/dev/mmcblk0p0 rw rootwait init=/sbin/init " -nographic -dtb imx6dl-sabresd.dtb

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.1.46 (kai@klaptop) (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29) ) #2 SMP Mon Nov 27 17:16:22 IST 2017
[    0.000000] CPU: ARMv7 Processor [410fc090] revision 0 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine model: Freescale i.MX6 DualLite SABRE Smart Device Board
[    0.000000] cma: Reserved 16 MiB at 0x2f000000

..。

所以它开始启动的很好。但随后:

代码语言:javascript
复制
[...]
[    2.210965] /soc/aips-bus@02100000/usdhc@02194000: voltage-ranges unspecified
[    2.211796] sdhci-esdhc-imx 2194000.usdhc: Got CD GPIO
[    2.212199] sdhci-esdhc-imx 2194000.usdhc: Got WP GPIO
[    2.214392] sdhci-esdhc-imx 2194000.usdhc: could not get ultra high speed state, work on normal mode
[    2.218084] sdhci-esdhc-imx 2194000.usdhc: No vmmc regulator found
[    2.218367] sdhci-esdhc-imx 2194000.usdhc: No vqmmc regulator found
[    2.265431] mmc0: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA
[    2.267300] mmc0: mmc_rescan_try_freq: trying to init card at 400000 Hz
[    2.281912] /soc/aips-bus@02100000/usdhc@02198000: voltage-ranges unspecified
[    2.282956] sdhci-esdhc-imx 2198000.usdhc: Got CD GPIO
[    2.283703] sdhci-esdhc-imx 2198000.usdhc: Got WP GPIO
[    2.284044] sdhci-esdhc-imx 2198000.usdhc: could not get ultra high speed state, work on normal mode
[    2.284892] sdhci-esdhc-imx 2198000.usdhc: No vmmc regulator found
[    2.285167] sdhci-esdhc-imx 2198000.usdhc: No vqmmc regulator found
[    2.298029] mmc0: mmc_rescan_try_freq: trying to init card at 300000 Hz
[    2.337904] mmc1: SDHCI controller on 2198000.usdhc [2198000.usdhc] using ADMA
[    2.357051] /soc/aips-bus@02100000/usdhc@0219c000: voltage-ranges unspecified
[    2.358313] sdhci-esdhc-imx 219c000.usdhc: No vmmc regulator found
[    2.358642] sdhci-esdhc-imx 219c000.usdhc: No vqmmc regulator found
[    2.368204] mmc0: mmc_rescan_try_freq: trying to init card at 200000 Hz
[    2.414722] mmc2: SDHCI controller on 219c000.usdhc [219c000.usdhc] using ADMA
[    2.440456] mmc0: mmc_rescan_try_freq: trying to init card at 100000 Hz

[...]

[    2.986441]   No soundcards found.
[    3.007698] Waiting for root device /dev/mmcblk0p0...

一直等在这里..。

我知道,在实际的物理板上,必须对MMC (或SD)卡进行“格式化”或分区,并让u引导加载内核和rootfs到RAM中。但我目前感兴趣的是让IMX6在Qemu上工作.因此,我的实际问题是:如何在Qemu上安装和运行根文件系统?任何帮助都很感激!蒂娅

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-29 12:12:39

这里有两个问题。首先,命令行实际上并没有创建SD卡:-drive选项创建了一个驱动器对象,但是没有尝试将它插入任何地方(因为sabrelite板没有定义“默认类型的块驱动器”)。将驱动器实际插入到您需要的模拟sd卡上

代码语言:javascript
复制
-drive file=yourfile.img,format=raw,id=mycard -device sd-card,drive=mycard

其次,QEMU当前的imx6 sd控制器仿真中存在缺陷,因为如果这样做,则客户内核将不断打印

代码语言:javascript
复制
[   28.971663] mmc1: Timeout waiting for hardware interrupt.
[   28.973619] mmc1: error -110 whilst initialising SD card

...so已经找到了模拟卡,但并没有收到预期的中断。

这些可以通过当前qemu-devel邮件列表上的修补程序修复,并通过代码评审:http://patchwork.ozlabs.org/patch/834805/加上对hw/arm/fsl-imx6.c的简单更改,使其创建TYPE_IMX_USDHC设备而不是TYPE_SYSBUS_SDHCI。(基本上,imx6 6的SD控制器并不是一个完全兼容的sdhci控制器,但是我们在QEMU模型中创建的是简单多样的。)

如果您这样做了,那么您就可以启动一个内核,它可以看到mmc卡:

代码语言:javascript
复制
[    8.878283] mmc1: new SD card at address 4567
[    8.910566] mmcblk0: mmc1:4567 QEMU! 256 MiB 

幸运的是,我们将能够在QEMU的2.12版本中修复这个问题,该版本将在2018年春季发布。

自2018年3月9日起编辑-相关的补丁现在在QEMU (提交fd1e5c81796,df2a5cf4c8)中,并将在2.12中。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47538951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档