hello world不会写,先玩玩malta虚拟器上的跑马灯,就是qemu起来后ctrl+atl+5切换出来那个,安装debian mips版本后会有个"LINUX ON MALTA"在那一直循环。
参考之前的文章,windows和linux下都有qemu,gnu的交叉编译工具也都有,所以两个平台应该都能跑。
本文参考了:
http://comments.gmane.org/gmane.comp.emulators.qemu/107966
http://comments.gmane.org/gmane.comp.emulators.qemu/11911
还有qemu对malta机器模拟的源码:
http://svn.peeklinux.com/trunk/qemu/hw/mips_malta.c 这个东西很重要,能看到很多内部实现。
注意:
1. qemu-system-mipsel的-bios参数没实现,指定什么参数启动的时候都不会加载。
2. qemu-system-mipsel的-kernel参数必须指定elf文件,经过objdump -O binary的文件时不会被加载的,看过那篇文章玩qemu-system-arm的人可能会想不通(http://balau82.wordpress.com/2010/02/14/simplest-bare-metal-program-for-arm/)。
3. qemu-system-mipsel的kernel加载位置就是ld时指定链接模板定义的,建议为0x80100000, 这是debian linux kernel文件抄来的,应该不会错多少。malta的bios会根据你的elf入口决定跳转位置,但是,你的elf在256M内存之外,它还是会老老实实跳过去。。。
4. 从malta源码看,这个灯的地址应该是0x1fxxxxxx的,但是用调试工具访问这个地址失败。在qemu的monitor console里面x,xp可以看出来,这个地址是物理地址。那么它的映射地址是多少呢?See MIPS RUN这书2.8图2-1有mips系统内存映射。原来是0xbfxxxxx。
5. 不要以为后面就好办了,gdb里面直接设置0xbf000418(显示字符串的起始位置)这个内存值,但是不会生效,在debian里面试过,不行。搜索"LINUX ON MALTA", 原来内核里面定时刷新的。
6. 好吧,qemu-system-mipsel -s -S -kernel xxxx, 然后用gdb target remote :1234进去,这个地址写进去值,没响应。读就不要想了,从源码看这个地址不支持读。这个不知道算不算qemu的bug, 写应该支持啊。
7. 好吧,写个汇编,让程序去说话,终于成功了~~
test.S
.global __start
.text
__start:
add $t0,$0, 0xbf000408 #LED address
add $t3,$0, 0xbf000418 #display char address
add $s2, $s2, 0x3ffffff #delay time
add $s0, $0,0x55 #LED: "# # # # "
update:
sw $s0,0($t0) #send to LED
sw $s0,0($t3) #send to display
sw $s0,8($t3) #send to display
sw $s0,16($t3) #send to display
sw $s0,24($t3) #send to display
sw $s0,32($t3) #send to display
sw $s0,40($t3) #send to display
sw $s0,48($t3) #send to display
sw $s0,56($t3) #send to display
add $t1, $0, 0
delay:
add $t1, $t1, 1
bne $t1, $s2, delay
add $s0, $s0, 1
b update
test.ld
引用
ENTRY(__start)
SECTIONS
{
. = 0x80100000;
.text : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss) }
. = . + 0x1000; /* 4kB of stack memory */
stack_top = .;
}
Makefile:
引用
all: test
test: testclean
mipsel-linux-gnu-gcc -mips32 -EL -c test.S -o test.o
mipsel-linux-gnu-ld -mips32 -EL -T test.ld test.o -o test
mipsel-linux-gnu-objcopy -O binary test test.bin
testclean:
rm -f test
rm -f test.bin
testrun:
qemu-system-mipsel -kernel test
qemu通过ctrl+alt+5切换到led界面,Malta LEDBAR:显示很多跳动的# ###, Malta ASCII跳动显示的是当前字符,实际上LED是字符的二进制格式。
单步汇编调试:
qemu-system-mipsel -kernel test -s -S
mipsel-linux-gnu-gdb test
(gdb) target remote :1234
(gdb) load
(gdb) break __start ////$pc最开始bios,即0xbfc0.0000
(gdb) i reg
(gdb) c
(gdb) x/16i $pc
(gdb) si
刚学mips, 用C写一样的。玩虚拟机一定要用SSD,现在很便宜了,进出都是按秒算的。。。
分享到:
相关推荐
经过长时间的尝试,搞好了Mips的QEMU linux2.6内核。使得没有板子硬件的你,照样可以trace,跟踪mips的内核 它指导移植kernel 2.6到QEMU上。通过它,省去你很多的时间。 吐血推荐 请下载更新版本. cf
lede模拟器-openwrt模拟器-malta-mips-be-uClibc.part1.rar,由于文件太大,分成了两个文件上传part1和part2 linux或windows都可以运行,需要安装qemu qemu-system-mips -M malta -hda lede-malta-be-root.ext4 -...
QEMU 1.2.0 编译好的可执行程序,可以直接运行于windows平台,可以模拟各种硬件平台,例如ARM,X86,Sparc,PPC,MIPS等等。下面是文件列表 2012-09-20 00:18 3,211 bamboo.dtb 2012-09-20 00:18 131,072 bios.bin ...
win10系统下利用QEMU安装ARM架构的银河麒麟桌面操作系统V10 双击qemu-w64-setup-20210505.exe,指定安装目录,例:D:\qemu 安装好后,利用如下步骤qemu创建一个虚拟硬盘文件: 在D:\qemu文件夹下,打开cmd命令行 在...
qemu-system-mips -M malta -hda lede-malta-be-root.ext4 -append "root=/dev/sda console=tt yS0" -kernel lede-malta-be-vmlinux.elf -net user,hostfwd=tcp::2222-:22,hostfwd=tcp::8080-:80 -...
此版本就上一个版本增加了gdb跟踪kernel, mount disk image,malta板子,mount网络, 显卡图形等研究.使得qemu会更加实用. 网上,关于QEMU,可以说是一堆垃圾帖子。经过长时间的尝试,搞好了Mips的QEMU linux2.6内核。...
stm32f407裸机程序在windows的qemu上跑,而且控制台可以输出打印信息。里面还包含了qemu-system-arm.exe,直接开箱即用,这个是我的对应博客教程 ...
qemu文件,做模拟测试的朋友,赶紧下载,这个版本是不错的 的
利用qemu搭建CentOS6forcolinux虚拟系统定义.pdf
利用qemu搭建CentOS6forcolinux虚拟系统分享.pdf
易语言控制qemu虚拟机源码,控制qemu虚拟机
qemu大神写的虚拟机源码,这个一定要推荐一下。
易语言源码控制qemu虚拟机.rar
QEMU能启动那些为不同中央处理器编译的Linux程序。而Wine及Dosemu是其主要目标。 * System mode模拟模式,亦即是系统模式。QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及...
基于qemu2.6.3版本内存管理分析文档
QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台...在qemu1.0之后的版本,都无法使用kqemu,主要利用qemu-kvm加速模块,并且加速效果以及稳定性明显好于kqemu。
This compiler has also been tested on a QEMU emulated MIPS 4KC running in little-endian mode. A guide for installing Debian on an emulated MIPS(EL) machine can be found here: ...
Qemu模拟器运行AIX 7.2 系统
下载qemu5.x D:\software\QEMU\qemu-system-aarch64.exe -m 6333 -cpu cortex-a72 -smp 2,cores=2,threads=1,sockets=1 -M virt -bios D:\software\QEMU\bios\QEMU_EFI_desktop.fd -net nic,model=pcnet -device nec...
Qemu虚拟机安装 我们先装Qemu虚拟机吧..先安装这个软件QemuInstall-0.7.2安装.我这里安装完了.就不安了! 具体步骤自己看喽. 装QEMU虚拟机的时候可卡.QEMU虚拟机是命令试的.具体命令你自己看我设置吧. 按我的设置...