win7上怎么用qemu模拟arm环境

 我来答
呆宝贝说不完9r
2016-07-22 · TA获得超过172个赞
知道小有建树答主
回答量:486
采纳率:50%
帮助的人:440万
展开全部
  使用Qemu模拟Cortex-A9运行U-boot和Linux 作者来源于网络

  我的开发环境: Ubuntu-12.04 所有软件包为最新

  1. 安装GNU工具链

  sudo apt-get insatll gcc-arm-linux-gnueabi

  sudo apt-get insatll g++-arm-linux-gnueabi
  安装完成后会在 /usr/arm-linux-gnueabi/ 目录下生成库文件、头文件等。 我安装的GCC版本为:
  arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

  Copyright (C) 2011 Free Software Foundation, Inc.

  2. 安装Qemu模拟器
  sudo apt-get install qemu qemu-system qemu-utils

  这时应该已经可以运行qemu-system-arm命令了, 其版本为:
  qemu-system-arm --version

  QEMU emulator version 1.0.50 (Debian 1.0.50-2012.03-0ubuntu2), Copyright (c) 2003-2008 Fabrice Bellard

  3. 编译和运行U-boot:
  到 ftp://ftp.denx.de/pub/u-boot/ 下载最新版本的U-Boot源代码, 我用的目前最新版本 u-boot-2012.04.tar.bz2
  解压后进入源代码目录,在Makefile里面增加两行:

  ARCH ?= arm
  CROSS_COMPILE ?= arm-linux-gnueabi-
  其实就是告诉它使用ARM编译器来编译。

  make ca9x4_ct_vxp_config
  make
  这里配置目标板为 Cortex-A9x4 vexpress. 之所以选这个配置可以从 boards.cfg文件里看到, vexpress是ARM公司使用Cortext-A9的一个开发板,相关的代码在 board/armltd/vexpress/ 目录,配置文件为include/configs/ca9x4_ct_vxp.h。 而且关键的是Qemu里面已经支持这个板卡。

  编译完成后会生成u-boot文件
  运行:
  qemu-system-arm -M vexpress-a9 -m 256M -nographic -kernel u-boot
  或者
  qemu-system-arm -M vexpress-a9 -m 256M -serial stdio -kernel u-boot
  发现,如果没有指定-nographics, 则必须要加-serial stdio才会有打印。

  参数-m 256M为指定内存大小。-M 指定板卡的名称, 支持的板卡可以用-M ?查看, 如下:
  #qemu-system-arm -M ?
  Supported machines are:
  beagle Beagle board (OMAP3530)
  beaglexm Beagle board XM (OMAP3630)
  ............
  versatilepb ARM Versatile/PB (ARM926EJ-S)
  versatileab ARM Versatile/AB (ARM926EJ-S)
  vexpress-a9 ARM Versatile Express for Cortex-A9
  vexpress-a15 ARM Versatile Express for Cortex-A15
  正常运行的结果:

  qemu-system-arm -M vexpress-a9 -m 256M -nographic -kernel u-boot

  U-Boot 2012.04 (Jul 08 2012 - 00:14:08)

  DRAM: 256 MiB
  WARNING: Caches not enabled
  Flash: ## Unknown flash on Bank 1 - Size = 0x00000000 = 0 MB
  ## Unknown flash on Bank 2 - Size = 0x00000000 = 0 MB
  *** failed ***
  MMC: MMC: 0
  *** Warning - bad CRC, using default environment

  In: serial
  Out: serial
  Err: serial
  Net: smc911x-0
  Hit any key to stop autoboot: 0
  VExpress#
  VExpress# printenv
  baudrate=38400
  bootcmd=run bootflash;
  bootdelay=2
  bootflash=run flashargs; cp ${ramdisk_addr} ${ramdisk_addr_r} ${maxramdisk}; bootm ${kernel_addr} ${ramdisk_addr_r}
  console=ttyAMA0,38400n8
  。。。。。
  注意:如果在检测Flash failed后停止运行,是因为在 arch/arm/lib/board.c里面 board_init_r()函数里检测Flash失败后调用了hang(), 暂时先把hang()去掉就可以运行下去了。
力控科技
2024-08-19 广告
ForceSCADA是力控科技信创产品的重要组成部分,具备完全自主知识产权,支持部署在Linux桌面版、服务器版、嵌入式等系统架构下。使用ForceSCADA可以搭建创新性高、扩展性佳、融合度强的SCADA平台,进而构建高效、智能化的监控中... 点击进入详情页
本回答由力控科技提供
万年长长青
2021-05-27 · 贡献了超过156个回答
知道答主
回答量:156
采纳率:0%
帮助的人:7.1万
展开全部

11 根文件系统并添加自己的程序

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式