Booting a Graphical MIPS QEMU Machine - linux

I would like to boot a QEMU MIPS architecture machine running some distribution of Linux. I have been looking through this documentation (https://www.linux-mips.org/wiki/QEMU), but I am getting stuck at this part
[ralf#box qemu]$ qemu-system-mips -kernel /tftboot/192.168.0.1/vmlinux.bin -m 16 -nographic
(qemu) mips_r4k_init: start
mips_r4k_init: load BIOS '/usr/local/share/qemu/mips_bios.bin' size 131072
qemu: could not load MIPS bios '/usr/local/share/qemu/mips_bios.bin'
[ralf#box qemu]$
There currently is no MIPS BIOS file for QEMU (see firmware). However if passed a
-kernel argument qemu will not call the firmware at all, so this does no harm at all. Therefore, a command such as
dd if=/dev/zero of=/usr/local/share/qemu/mips_bios.bin bs=1024 count=128
will generate a firmware file that will do the job for now.
I am confused what arguement I am supposed to pass for kernel? Is that /usr/local/share/qemu/mips_bios.bin argument a compiled Linux image?
If possible, I would like the emulator to have a GUI. I am not sure how this is accomplished either.
Thanks.

You no longer need to create a mips_bios.bin file. If you have a file by that name in the same folder when you run qemu-system-mips it will pick it up. I'd remove it if you do. Here's the wiki link for a little history about it:
https://www.linux-mips.org/wiki/QEMU
For a nice example of a mips specific kernel working with graphics and qemu please check this link out:
http://shadow-file.blogspot.com/2013/05/running-debian-mips-linux-in-qemu.html

Related

How to put files into riscv linux?

ri
1.We tried to install the rocket chip with risc-v linux on Zedboard, and we had successfully entered riscv linux. However, we couldn't put the files compiled by assembler(using the instruction : riscv64-unknown-linux-gnu-g++) into riscv linux. Would someone please tell me how to put it in? (p.s we tried to mount the files into the file called root.bin,but it seems that risc-v linux doesn't use this file to boot.)
2. If we use the linux instrustion [make CONFIG=RoccExampleConfig] on our workshop, would it be RoCC there? If not, how to enable RoCC?
The file boot.bin is read by the firmware executed by the Zynq ARM CPU on boot. It contains the boot loader and instructions to boot Linux on that CPU. It may also contain a bitstream for the programmable logic.
According to https://github.com/ucb-bar/fpga-zynq/issues/22 you need to put your files into the RISC-V initramfs file until tether is working.

Build a minimum system with Qt embedded and run on Qemu for x86

My aim: Trying to
Build a minimal Qt based GUI system with a single window and sensor connected on USB
demonstrate this using Qemu and later on embedded board with atom
to build it from scratch
Use buildroot to build the rootfilesystem
My experience Have experience in Linux kernel development for device drivers, qemu, Buildroot, USB but has no experience on GUI and framebuffers.
My attempts:Build kernel and rootfile system
with buildroot using the command make qemu_x86_defconfig
Framebuffer support on Linux kernel is enabled along with the following CONFIG_FB, CONFIG_FRAMEBUFFER_CONSOLE, and CONFIG_LOGO (all the options below this are also enabled)
As the first milestone I expected to see the TUX logo when I run the image with the command
qemu-system-i386 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2 -append root=/dev/sda -vga std but i donot.
Am I making a mistake at the Qemu command or the framebuffer is not enabled?
P.S. A similar question Qt application GUI -- automatic start -- linux. But i am not planning to use the X window as suggested by most users.
I missed the cirrus graphics board driver. Qemu emulates Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA extensions (hardware level, including all non standard modes for i386.
So the steps are:
Download buildroot
make clean
make qemu_x86_defconfig
make linux-menuconfig to configure kernel and in Device drivers->Graphics support->Support for frame buffer devices enable Cirrus Logic support
Save the configuration and run make
Once make is complete run the command in board/qemu/x86/readme.txt
Where did you see that Buildroot has a i386_defconfig? You seem to be confusing kernel defconfigs and Buildroot defconfigs. I would recommend you to start with:
make clean
make qemu_x86_defconfig
make
and then read board/qemu/x86/readme.txt to see how to run the generated system.

How to check compiled linux kernel?

I am new to Linux Kernel Development. I have got the linux source code and added a Hello World system call just to get started. But now I am not able to figure out how to go about testing this code. How can I run the changed kernel?
I think I can use VirtualBox to check, but would not I have to make a new iso everytime I make a change and compile the kernel?
Sorry for asking such a naive question, but I am very confused here
You can launch a qemu virtual machine with an external kernel, so you don't need to keep modifying a disk image to test your kernel. For example:
qemu-kvm -kernel arch/x86/boot/bzImage -initrd initramfs.gz -append "console=ttyS0" -nographic
That example comes from this article which contains a lot of information on how to set up a development environment.

Linux qemu reset the register

I program assembly under Linux, compile it and put it in a virtual flash:
dd if=myProgramm.bin of=flash.bin bs=4096 conv=notrunc
dd if=myProgramm.bin of=myProgramm.bin bs=4096 conv=notrunc
Now I load the flash into the qemu emulator:
qemu-system-arm -M connex -pflash flash.bin -nographic -serial /dev/null
Here i can see the registers via
info registers
The problem is, when I now create a new flash, the old flash still is in the qemu emulator until i restart the emulator with
exit
and the Linux command qemu-system
How can I reload the flash without complete restart the whole emulator?
As for my understanding once you flashed the image in qemu you cannot update image.
suppose when you run any system using qemu which contains linux kernel zImage and rootfs with
qemu-system-arm .... args. If u want to reboot it . the qemu quits and once again you have to laod with arguments.
So in qemu as for my knowledge u cannot reload the flash without complete restart the qemu.

Mini2440 Emulation Procedure : please, how to?

I want to emulate the friendlyARM board, the Mini2440 or the mini6410, so I can get to practice the embedded programming, the QT programming and this due to some financial difficulties and strange import policy in my country.
Anyway, the problem is that I can't seem to understand what's the first step to proceed the emulation: Am running ubuntu 12.04 on VirtualBox then, I installed the qemu-kvn-extras then what ?
Do I need a new kernel for qemu and the emulation process ? What's its specifications ?
In the other hand, when I read all of the tutorials in the net, I can't see the hardware specification part : I mean where is the part in the "qemu-i386 command" that refers to the fact that I'm using Mini2440 ?
After a long period of research, I don't know whether I can emulate the board so I can get used to the u-boot and cross compiling, etc.. or it's just a dream I can't reach ..
(Sorry for reviving an old thread but I had similar issues, so this might be useful for some other people, too)
To run my tests I used (see also man qemu-system-arm):
$ qemu-system-arm -machine versatilepb -cpu arm1176 -m 128M -nographic -kernel kernel.img
You might not want the -nographic here when you are testing Qt and need to replace kernel.img with the image you want to run. However, note that you need the ARM version of qemu qemu-system-arm. It will not work with the Intel version qemu-i386 as the mini6410 runs an ARM processor (the ARM1176JZF-S).
For me, connecting with gdb was also useful (-S halts the CPU at start, -s starts a gdbserver on port 1234):
$ qemu-system-arm -machine versatilepb -cpu arm1176 -S -s -m 128M -nographic -kernel kernel.img
And then:
$ arm-none-eabi-gdb
(gdb) target remote localhost:1234
By the way, host system can be any Linux distribution, so you do not need VirtualBox if your host is already Linux.
Another remark: I am currently struggling to get the interrupts to run on qemu (see also ARM Interrupt Handling in QEMU), so not sure if everything will work for you though.
Good luck! ;)
The closest thing I know about emulating the Mini2440 is that it's emulated on MAME.
The only problem is that you're not only stuck with the 3 pre installed OSes (Windows Mobile, old version Android and a Linux distro) but it's also slow and you can't connect to anything outside of the device itself.
You'll probably need a beefy computer if you want to run this, the beefier the PC is, the faster you can run it.
Plus, you can't use your mouse as a touch screen. You'll need to map out the touch screen controls that are already present in MAME if you want something like that.

Resources