Tested QEMU and Graphic application on Embedded Linux S3C2440.
QEMU is open-source software, can be run on Windows and Linux host, it is software based emulator and instruction set simulator to be used to simulate the embedded processors. QEMU supports the emulation of several target architectures like ARM, PowerPC, x86.
FriendlyElec-Power & Source of Big Ideas. Quectel LTE Standard EC25-AF (Region: North America FirstNet) Quectel EC25 is a series of LTE Cat 4 module optimized specially for M2M and IoT applications. Driver develop List Page 0 DSSZ is the. Usb Description: A USB driver. Can be programmed in a linux environment friendly arm of the 2440 and 6410 of the board.
QT for embedded linux is a C++ framework for GUI and application development for embedded device. It can be run on a variety of processors included Embedded Linux. QT provides the standard QT API for embedded devices with a lightweight window system. QT is meant for cross-platform development, the source code can be compiled on x86 platform, run and debug it on the host PC, the same source code for your target platform can be compiled for the target architecture. The application can also be debugged through remote debugging tools, and only the QT-Embedded is installed.
All the test will be running on the host and on the instruction set simulator.
The QEMU instruction set simulator qemu-system-arm
is installed in /home/iot/qemu-mini2440/qemu/arm-softmmu
. The source code is in /home/iot/qemu-mini2440/qemu
, this version is dedicated for S3C2440 board. It executes the bootloader u-boot first.
The uImage kernel-uImage
is in /home/iot/qemu-mini2440/qemu/mini2440/
.
U-boot
for S3C2440 source code is in /home/iot/uboot-mini2440/
.
QT 4.8.1 is installed in /usr/local/qt
. QT demos are installed in /usr/local/qt/demos
.
First run the script mini2440_start.sh
to start QEMU.
The script mini2440_start.sh
is as below,
Kernel-uImage is a precompiled kernel image in uImage format. It contains the executable of the affine
demo and the libraries needed. As above script shows, the kernel
option is -kernel /home/iot/qemu-mini2440/qemu/mini2440/kernel-uImage
, it tells QEMU to load the kernel of the simulated machine S3C2440
in the RAM, after S3C2440 boot up and the Bootloader command prompt appeared, can use help
command to show all u-boot commands, as below shows.
Before jump to kernel, we nee do key in Linux command line to set the simulated screen size. U-boot will pass it to kernel.
As above shows, mini2440=1tb
, 1
means the screen is 7′ LCD 800*480, t
means touch screen and b
means back light.
Use command bootm
to jump to kernel, then key in root
to log in.
Change to directory /usr/bin
, run a script qtsetting.sh
to set environment variables for QT.
The little penguin appears on the emulated LCD.
Run the affine
demo at the back ground,
On the simulated screen of S3C2440, the animation of affine is as below, you can use the mouse on the screen to click the buttons and bars. To exit the mouse from the screen, press Ctrl+Alt. To terminate the QEMU, press Ctrl + C.
The affine
demo is in the QT demo directory on the host,
It was compiled into zImage
then convert into kernel-uImage
through shell script create_rootfs_bash.sh
,
Use the script generateKerneluImage.sh
to convert the kernel image to uImage format and put into /home/iot/qemu-mini2440/qemu/mini2440/
,
The script converts the file mini2440/linux-3.8.7/arch/arm/boot/zImage
to kernel-uImage, as below help information shows, the parameter -A
specifies architecture. -O
specifies OS. -a
specifies load address. -e
specifies execute address. -d
specified the input file.
QEMU allows the guest OS to communicate with the host OS via Ethernet. We need to create a bridge between them. The script qemu-ifup
is used to achieve this. The content of qemu-ifup
is as below. The script takes two parameters. The first parameter is the name of tap device, e.g. tap0. The second parameter is the device name of the Ethernet interface, such as eth0, p3p1 or em1, etc.
The current Ethernet interface configuration is as below, we will use Ethernet interface eth0 as the bridge setting.
Use the above script qemu-ifup
to setup the bridge, the second parameter is the host Ethernet port device name.
Check the result as below,
Test the connection by ping the target simulated S3C2440.
First startup,
From host ping to simulated S3C2440 linux, it was failed,
Noticed that the eth2 also has 192.168.0.1 address, it is the same network segment as the bridge, it may confuse the host network connection, ifdown
eth2 and ping again, it is successful now after the change.
Driver Usb Friendly Arm 2440 Windows 10 Pro
Now you can try NFS, tftp and telnet operations.
Test on Telnet,
Test on TFTP:
Driver Usb Friendly Arm 2440 Windows 10 Free
Test on NFS,
You can also do the gdb debugging, kernel debugging and profiling by using QEMU.
A script qemu-ifdown
is used to delete the bridge and restore the Ethernet interface device configuration, it takes the same parameters of qemu-ifup
. The script content is as below,
Earlier QEMU test loaded the kernel uImage into RAM when boot the emulated S3C2440 board. U-boot also support other booting approaches such as TFTP boot and BOOTP. Below test was booting the kernel via TFTP.
Copy the kernel-uImage into directory /var/lib/tftpboot
tftp folder.
Start QEMU, in the u-boot command line, set the IP address as below,
Tell u-boot to retrieve uImage named as kernel-uImage
from address 192.168.0.10 and loaded in RAM address 0x30800000.
After u-boot received the file and put it at address 0x30800000, then u-boot will find from the uImage header that it should relocate the kernel image. Now we can jump to the kernel image by using bootm
command,
Embedded Linux S3C2440 environment setup
Embedded Linux S3C2440 Environment Startup
Embedded Linux S3C2440 Build and Boot an Image
Embedded Linux S3C2440 Application Development and Debugging
Embedded Linux S3C2440 Networking
Embedded Linux S3C2440 – Kernel Module
Embedded Linux S3C2440 – Kernel Debugging
Embedded Linux S3C2440 – Multi-thread Scheduling
Embedded Linux S3C2440 Profiling
QEMU Wiki
Qt (software) Wiki