登录
注册
一键加入QQ群
友善之臂官方网站
首 页
联系我们
淘宝店铺
维基教程
资料下载
搜索帖子!
NanoPC-T2
Core4418
NanoPC-T3 Plus
Core6818
NanoPi-M4B
NanoPC-T4
NanoPC-T6
NanoPi-NEO
NanoPi-NEO Core
NanoPi-NEO Air
NanoPi-M1 Plus
NanoPi-Duo2
NanoPi-NEO3
核心板:
Smart210
Tiny210
Smart4418
Smart6818
SOM-RK3399V2
CM3588(新品)
路由器:
R1
R1S
R2S
R2S Plus
R2C Plus
R4S
R5S
R5C
R6C
R6S
热门版块:
友善之臂最新动态
站点服务
Linux技术交流区
站务管理与公告
裸机程序和微型OS
友善之臂官方客服中心
默认风格
用户中心首页
编辑个人资料
查看个人资料
好友列表
用户权限查看
积分管理
积分转换
特殊组购买
收藏夹
我的主题
基本统计信息
到访IP统计
管理团队
管理统计
在线统计
会员排行
版块排行
帖子排行
个人首页
我的收藏
好友近况
友善之家
Linux技术交流区
《使用qemu 建立mini2440的模拟仿真环境》补充修正说明
友友粉丝快线
开发板销售中心
嵌入式最新资讯
友善之臂最新动态
友善之臂官方客服中心
开发板实战手册及教程
应用方案和定制开发
NanoPi 交流与讨论
NanoPi 玩家交流区
ROM发布区
硬软DIY及开发
嵌入式交流与讨论
Android技术交流区
Linux技术交流区
U-boot技术交流区
WinCE技术交流区
Ubuntu技术交流区
裸机程序和微型OS
OpenWRT讨论区
开发板硬件讨论区
相关资料下载及使用技巧
站点服务
二手交易区
我的论坛我的贴
站务管理与公告
上一主题
下一主题
新 帖
主题 : 《使用qemu 建立mini2440的模拟仿真环境》补充修正说明
复制链接
|
浏览器收藏
|
打印
cyx8648
星星之火,可以燎原
级别: 骑士
作者资料
发送短消息
加为好友
QQ联系
UID:
42844
精华:
2
发帖:
140
金钱:
805 两
威望:
161 点
贡献值:
2 点
综合积分:
320 分
注册时间:
2011-04-11
最后登录:
2016-05-23
楼主
发表于: 2011-10-26 15:45
全看
|
小
中
大
《使用qemu 建立mini2440的模拟仿真环境》补充修正说明
我的编译平台是 ubuntu 11.10
按照
http://www.cnblogs.com/jinmu190/archive/2011/03/21/1990698.html
《
使用qemu 建立mini2440的模拟仿真环境
》的方法,就会遇到以下这些错误:
一、当使用以下
./configure --target-list=arm-softmmu
语句编译qemu时,出现如下错误
The error log from compiling the libSDL test is:
/tmp/qemu-conf--3170-.c:1:17: fatal error: SDL.h: 没有那个文件或目录
compilation terminated.
ERROR: QEMU requires SDL or Cocoa for graphical output
To build QEMU without graphical output configure with --disable-gfx-check
Note that this will disable all output from the virtual graphics card
except through VNC or curses.
那么就可以使用以下语句修复:
sudo apt-get install libsdl-dev
再使用 make -j4 时, 即可编译成功。
二、编译uboot的时候,大家可以将设置初始IP的代码修改为自己想要的IP,比如和自己主机IP一个网段,以方便以后的实验。还有
,一定要记住要记将编译好的 u-boot.bin 拷贝到 qemu/mini2440 的文件夹中去, 否则以后执行
mini2440/mini2440_start.sh
就会遇到一下错误:
复制代码
QEMU mini2440_reset: loaded default u-boot from NANDQEMU
mini2440_reset: loaded mini2440/uImage (size 1f7000)
qemu: fatal: Trying to execute code outside RAM or ROM at 0x34000000
R00=00000000 R01=00000000 R02=00000000 R03=00000000R04=00000000 R05=00000000 R06=00000000 R07=00000000R08=00000000 R09=00000000 R10=00000000 R11=00000000R12=00000000 R13=00000000 R14=00000000 R15=34000000PSR=400001d3 -Z-- A svc32
Aborted
三、 当编译kernel时,会出现如下问题:
(我补充下:下载 linux kernel for mini2440的地址为:
http://repo.or.cz/w/linux-2.6/mini2440.git/snapshot/HEAD.tar.gz
)
"mkimage" command not found -
U-Boot images will not be built
这时,执行以下语句即可:
sudo apt-get install uboot-mkimage (其实这个好像还是有些不太正确的,但是不知为什么后面的u-boot还是可以引导内核的)
其实下面的方法才是真正比较合适的:
“
如果使用make uImage 则能生成由uboot 引导的内核文件, 需要用到
uboot/tools/mkimage,可以在/etc/bashrc 文件末加入一下语句:
export PATH=$PATH:$PWD/../uboot_src/tools
这样就能直接引用mkimage 命令。
”
或者直接将uboot_src/tools内的mkimage 拷贝到 /usr/bin/ 内也行。但要记住这个mkimage 是对应于此处的u-boot的。
再重新运行以下语句:
make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
就OK了!
三、当执行以下语句的时候:(
一定要使用root根用户来执行以下语句
)
sh mini2440/mini2440_start.sh
又会碰到如下问题:
Starting in mini2440
mini2440/mini2440_start.sh : creating empty snapshot image : mini2440/mini2440_snapshots.img
qemu-img: Invalid image size You may use k, M, G or T suffixes for
qemu-img: kilobytes, megabytes, gigabytes and terabytes.
mini2440/../arm-softmmu/qemu-system-arm -M mini2440 -drive file=mini2440/mini2440_snapshots.img,snapshot=on -serial stdio -kernel mini2440/uImage -mtdblock mini2440/mini2440_nand.bin -show-cursor -usb -usbdevice keyboard -usbdevice mouse -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 -monitor telnet::5555,server,nowait
warning: could not configure /dev/net/tun: no virtual network emulation
Could not initialize device 'tap'
真是困难重重啊,我上网搜索到这篇文章:《解决: 运行qemu 提示"warning: could not open /dev/net/tun: no virtual network emulation"》
http://blog.csdn.net/swangbucknell/article/details/5423187
看起来,有些眉目了,后来,我在按照上面的方法编译内核模块时,又碰到以下问题:
make[2]: *** 没有规则可以创建“kernel/bounds.s”需要的目标“kernel/bounds.c”。 停止。
此时,我大为气馁,后来又在不懈的努力下,发现了问题的所在,原来是/lib/modules/`uname -r`/build 这个文件夹(也就是/usr/src/linux-headers-‘uname -r’-generic-pae/)下面的内核代码不完整,需要重新上网下载该版本的内核源码包,解压后,再进行编译才可以真正的解决这个问题。命令如下:
sudo apt-get install linux-source
再进入到 linux-source-'your version' 之中重新执行下述命令,例如我的版本如下:
make menuconfig 详情请看
《qemu两种上网方式》
http://www.linuxdiyf.com/viewarticle.php?id=40202
cd /usr/src/linux-source-2.6.38/
tar xjvf linux-source-2.6.38.tar.bz2
cd linux-source-2.6.38
sudo -s
make && sudo make modules_install
modprobe tun
lsmod |grep tun
其实还有一种方法不需要使用modules_install,也是
《qemu两种上网方式》这篇文章里面的.
要注意三点:
1.内核源码必须与当前内核版本完全一致,否则编译出的模块是不能用的。
2.注意只make modules(编译模块),没有make modules_install(自动安装模块到/lib/modules下)
3.加载新编译的模块前必须先运行depmod,否则modprobe找不到它
有了tun这个文件后,那么就进入下一个的问题了。
四、开启NFS服务器,就按照开头那篇文章里面所说的进行操作就可以了,当重启NFS的命令的时候,在最新的ubuntu11.10中就会出现以下语句:
exportfs: /etc/exports [3]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/opt/FriendlyARM/mini2440/root_qtopia".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
其实不用紧张,这对于后面使用NFS挂载文件系统没有关系,但大家注意了,这里在/etc/exports中,大家要就不要使用友善的rootfs_qtopia_qt4这个文件系统了,因为现在使用的qemu这个模拟器中只支持64M的NAND(或者也有可能是大家从开头那篇文章里面编译的u-boot是属于64M的版本,这里还得做后续研究)。所以推荐大家使用老版的root_qtopia文件系统,否则就会出现qemu挂载失败的结果。
五、对于mini2440_start.sh这个文件,其实大家只需要修改下面这个地方就可以了:
-net nic,vlan=0 \
-net tap,vlan=0,ifname=tap0 \
修改为:
-net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=./qemu-ifup,downscript=./qemu-ifdown \
六、当遇到下面的问题时,
复制代码
./qemu-ifup: could not launch network scriptCould not initialize device 'tap'
使用下面命令即可:
chmod a+x qemu-ifup qemu-ifdown
对于qemu-ifup, qemu-ifdown 这两个文件,大家可以按照自己的情况,将其中10.0.0.1 这个IP换成和自己主机一个IP网段的地址即可,不一定非要是那个IP,而且开头文章里面的u-boot的IP地址是10.0.0.4 ,其实可以在编译uboot的时候,找到设置初始IP的代码换成自己想要的IP即可。
七、当按照开头文章之中的步骤跑起来qemu中的mini2440后,会发现出现以下错误,一直挂载不了NFS文件系统:
VFS: Mounted root (nfs filesystem) on device 0:13.
Freeing init memory: 132K
nfs: server 10.66.3.4 not responding, still trying
这个问题,一方面一定要把
“
u-boot启动成功后输入设置linux kernel的引导参数
set bootargs noinitrd root=/dev/nfs rw nfsroot=10.0.0.1:/home/lizhao/ARM-pro/nfs/rootfs ip=10.0.0.10:10.0.0.1::255.255.255.0 console=ttySAC0,115200
”
这个u-boot引导参数之中的 nfsroot=.... 里面的内容修改成自己机器上面的NFS环境。
另一方面,我发现开头文章中最后给出的解决方法(如下)只能说是个提示,并没有起作用:
“
友善之臂提供的qtopia文件系统在挂载时会初始化网卡,但我们是由nfs挂载的文件系统,这会导致nfs连接中断,挂载失败,所以用nfs挂载之前需要把网卡的初始化过程取消,对应的文件是/etc/init.d/if-config,只需把该文件内容清空即可。Enjoy yourself!
”
而是应该把 root_qtopia 文件系统中的 etc/init.d/rcS 这个文件中的如下两个语句注释掉即可:
#/sbin/ifconfig lo 127.0.0.1
#/etc/init.d/ifconfig-eth0
在完成上面的修改后,大家就可以真正的享受qemu-mini2440带给我们的开发和调试乐趣了!
插入几个做实验的图,引诱一下大伙:
楼下还有相关分析和解释,请大家接着往下看!
[ 此帖被cyx8648在2012-06-05 11:45重新编辑 ]
星星之火,可以燎原!
顶端
回复
引用
分享
kasim
*無鈳取玳
级别: 论坛版主
作者资料
发送短消息
加为好友
QQ联系
UID:
27
精华:
12
发帖:
5398
金钱:
40120 两
威望:
17929 点
贡献值:
71 点
综合积分:
11036 分
注册时间:
2008-01-16
最后登录:
2014-11-22
1楼
发表于: 2011-10-26 17:22
全看
|
小
中
大
谢谢分享。
我当初用过这个qemu-mini2440 + 虚拟的SD卡镜像, 只要你硬盘空间够,想要多大就有多大:)
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
顶端
回复
引用
分享
kasim
*無鈳取玳
级别: 论坛版主
作者资料
发送短消息
加为好友
QQ联系
UID:
27
精华:
12
发帖:
5398
金钱:
40120 两
威望:
17929 点
贡献值:
71 点
综合积分:
11036 分
注册时间:
2008-01-16
最后登录:
2014-11-22
2楼
发表于: 2012-06-05 11:44
全看
|
小
中
大
回 10楼(cyx8648) 的帖子
恭喜恭喜:)
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
顶端
回复
引用
分享
上一主题
下一主题
友善之家
Linux技术交流区
http://www.aiothome.net
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问