顯示具有 BeagleBoard 標籤的文章。 顯示所有文章
顯示具有 BeagleBoard 標籤的文章。 顯示所有文章

2013年6月9日 星期日

Remote debugging EDK2 BeagleBoardPkg on qEmu

Get ARM none EABI toolchain

arm-none-eabi-gdb included
http://www.codesourcery.com/sgpp/lite/arm/portal/package7813/public/arm-none-eabi/arm-2010.09-51-arm-none-eabi-i686-pc-linux-gnu.tar.bz2

Get module symbol information

Check Build/BeagleBoard/DEBUG_ARMGCC/FV/FVMAIN_COMPACT.Fv.map
Get .textbaseaddress and .databaseaddress

Load symbol information

arm-none-eabi-gdb
(gdb) add-symbol-file <BEAGLEROOT>/Build/BeagleBoard/DEBUG_ARMGCC/ARM/ArmPlatformPkg/PrePi/PeiUniCore/DEBUG/ArmPlatformPrePiUniCore.dll 0x0080008180 -s data 0x008001b5e4

add symbol table from file <BEAGLEROOT>/Build/BeagleBoard/DEBUG_ARMGCC/ARM/ArmPlatformPkg/PrePi/PeiUniCore/DEBUG/ArmPlatformPrePiUniCore.dll" at
.text_addr = 0x80008180
data_addr = 0x8001b5e4
(y or n) y

Reading symbols from <BEAGLEROOT>/Build/BeagleBoard/DEBUG_ARMGCC/ARM/ArmPlatformPkg/PrePi/PeiUniCore/DEBUG/ArmPlatformPrePiUniCore.dll...warning: section data not found in <BEAGLEROOT>/Build/BeagleBoard/DEBUG_ARMGCC/ARM/ArmPlatformPkg/PrePi/PeiUniCore/DEBUG/ArmPlatformPrePiUniCore.dll
done.

Start ARM qEmu

qemu-system-arm -M beagle -s -S -serial stdio -sd beagle.img
-s for waiting for gdb connection
-S for stopping execution when qEmu starts up

Connecting qEmu using GDB

(gdb) target remote :1234
Remote debugging using :1234
0x40014000 in ?? ()

Example

(gdb) b _ModuleEntryPoint
Breakpoint 1 at 0x80008188: file /home/kurt/programming/edk2/src/beagle/Build/BeagleBoard/DEBUG_ARMGCC/ARM/ArmPlatformPkg/PrePi/PeiUniCore/OUTPUT/Arm/ModuleEntryPoint.iii, line 39.

Connecting qEmu using DDD

sudo apt-get install ddd
ddd --debugger arm-none-eabi-gdb

In DDD using GDB command line

Get module symbol information
Load symbol information
Connecting qEmu using GDB




2013年6月1日 星期六

UEFI Boot Linaro images on qEmu based BeagleBoard

Build EDK2 BeagleBoardPkg


Boot Linaro-m alip (Kubuntu 10.10)

Install needed packages
KPH$ sudo apt-get install parted dosfstools uboot-mkimage python-argparse python-dbus python-debian python-parted qemu-arm-static btrfs-tools command-not-found

Create and change to working directory
KPH$ cd $(WORKROOT)
KPH$ mkdir -p linaro-m/alip && cd linaro-m/alip

Get image and hardware packs
KPH$ wget http://releases.linaro.org/platform/linaro-m/alip/final/linaro-m-alip-tar-20101109-0.tar.gz http://releases.linaro.org/platform/linaro-m/hwpacks/final/hwpack_linaro-omap3_20101109-1_armel_supported.tar.gz

Install Linaro image tools
KPH$ sudo add-apt-repository ppa:linaro-maintainers/tools
KPHsudo apt-get update
KPHsudo apt-get install linaro-image-tools

Create u-boot and Linux Linaro image
KPHsudo linaro-media-create --image_file alip.img --dev beagle --binary linaro-m-alip-tar-20101109-0.tar.gz --hwpack hwpack_linaro-omap3_20101109-1_armel_supported.tar.gz
KPH$ sudo chmod a+rw alip.img

Replace u-boot.bin with UEFI
KPHmkdir /tmp/alip_boot/
KPHsudo mount -o loop,offset=$[63*512] $(WORKROOT)/linaro-m/alip/alip.img /tmp/alip_boot
KPH$ sudo cp $(EDK2ROOT)/edk2/Build/BeagleBoard/RELEASE_ARMGCC/FV/BEAGLEBOARD_EFI.fd /tmp/alip_boot/u-boot.bin
KPH$ sudo umount /tmp/alip_boot

ARM UEFI only supports zImage currently, so add zImage to the sdcard
KPH$ tar xzf hwpack_linaro-omap3_20101109-1_armel_supported.tar.gz
KPH$ cd pkgs/
KPH$ dpkg -x linux-image-2.6.35-1008-linaro-omap_2.6.35-1008.15_armel.deb .
KPH$ sudo mount -o loop,offset=$[63*512] $(WORKROOT)/linaro-m/alip/alip.img /tmp/alip_boot
KPH$ sudo cp boot/vmlinuz-2.6.35-1008-linaro-omap /tmp/alip_boot/zImage

Install ARM qEmu
KPH$ sudo add-apt-repository ppa:linaro-maintainers/tools
KPH$ sudo apt-get update
KPH$ sudo apt-get install qemu-user-static qemu-system

Test UEFI on qEmu
KPH$ sudo qemu-system-arm -M beagle -serial stdio -sd alip.img

Add a boot device entry and boot from it

The default boot selection will start in   7 seconds

[1] Linux from SD

[2] Shell
[3] Boot Manager
Start: 3
[1] Add Boot Device Entry
[2] Update Boot Device Entry
[3] Remove Boot Device Entry
[4] Update FDT path
[5] Return to main menu
Choice: 1
[1] SemihostFs (0 MB)
[2] boot (51 MB)
[3] VenHw(4D00EF14-C4E0-426B-81B7-30A00A14AAD6)
Select the Boot Device: 2
File path of the EFI Application or the kernel: zImage
Has FDT support? [y/n] nAdd an initrd: [y/n] yFile path of the initrd: uInitrd
Arguments to pass to the binary: console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw earlyprintk fixrtc nocompcache vram=12M omapfb.mode=dvi:1280x720MR-16@60
Description for this new Entry: alip
[1] Add Boot Device Entry
[2] Update Boot Device Entry
[3] Remove Boot Device Entry
[4] Update FDT path
[5] Return to main menu
Choice: 5
[1] Linux from SD
[2] alip
[3] Shell
[4] Boot Manager
Start: 2
   PEI    661 ms
   DXE   4558 ms
   BDS   5380 ms
Total Time = 10600 ms
Uncompressing Linux... done, booting the kernel.
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.35-1008-linaro-omap (buildd@hawthorn) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #15-Ubuntu Fri Oct 22 11:56:29 UTC 2010 (Ubuntu 2.6.35-1008.15-linaro-omap 2.6.35.7)

(booting messages)

Seeing messages below on Terminal means boot is done
Welcome to Linaro!
 * Documentation:  http://www.linaro.org

1 package can be updated.
0 updates are security updates.

root@localhost:~# 

Takes a while for the GUI desktop on qEmu



























With similar steps you could try another images you like. 
Enjoy. :)

==================================================

Issues

SD: CMD12 in a wrong state
Mouse and keyboard do not work
==================================================

References

Follow steps in the link below first
https://wiki.linaro.org/Resources/HowTo/Qemu-beagleboard

Choose pre-built images of linaro-m (older Ubuntu Maverick version)
http://releases.linaro.org/platform/linaro-m/

Using UEFI to boot Linux
http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=BeagleBoardPkg#Using_UEFI_to_boot_Linux

2013年5月31日 星期五

Build EDK2 BeagleBoardPkg for booting qEmu BeagleBoard

Build BeagleBoardPkg

Get ARM GCC tools by following BeagleBoardPkg/readme.txt first, then follow the link below
Some build errors and tool-deprecated issues need to be done 

Get arm-none-eabi toolchain

4.4.1 (recommended)
https://code.google.com/p/arduino/downloads/detail?name=gcc-arm-none-eabi-4.4.1-2010q1-188-linux32.tar.gz&can=2&q=

Note that if you choose 4.6 or above will probably get compatibility errors, such as -combine option deprecated issue.

4.6
https://launchpad.net/gcc-arm-embedded/4.6/4.6-2012-q2-update/+download/gcc-arm-none-eabi-4_6-2012q2-20120614.tar.bz2

Error: unknown pseudo-op: `.arch_extension' 

Find where the code ".arch_extension" is (in ArmSmc.S) and modify as below

#if __GNUC__ >= 4 && __GNUC_MINOR__ >= 6
".arch_extension sec\n" #endif

BeagleBoardPkg should be successfully built

Qemu-arm-static not found

Follow link below to install qEmu first

Add boot device entry

Because Terminal on Ubuntu cannot completely clear bootargs content and update it, we need to add an entry for booting.

The default boot selection will start in   7 seconds
[1] Linux from SD
[2] Shell
[3] Boot Manager
Start: 3
[1] Add Boot Device Entry
[2] Update Boot Device Entry
[3] Remove Boot Device Entry
[4] Update FDT path
[5] Return to main menu
Choice: 1

bunch of  "SD: CMD12 in a wrong state" messages

[1] SemihostFs (0 MB)
[2] boot (51 MB)
[3] VenHw(4D00EF14-C4E0-426B-81B7-30A00A14AAD6)
Select the Boot Device: 2
File path of the EFI Application or the kernel: zImage
Has FDT support? [y/n] nAdd an initrd: [y/n] yFile path of the initrd: uInitrd
Arguments to pass to the binary: console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw earlyprintk fixrtc nocompcache vram=12M omapfb.mode=dvi:1280x720MR-16@60
Description for this new Entry: Linaro Linux
[1] Add Boot Device Entry
[2] Update Boot Device Entry
[3] Remove Boot Device Entry
[4] Update FDT path
[5] Return to main menu
Choice: 5
[1] Linux from SD
[2] Linaro Linux
[3] Shell
[4] Boot Manager
Start: 2

bunch of  "SD: CMD12 in a wrong state" messages

   PEI    383 ms
   DXE   2744 ms
   BDS   2845 ms
Total Time = 5974 ms

Uncompressing Linux... done, booting the kernel.
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu

booting kernel logs

Welcome to Linaro!
 * Documentation:  http://www.linaro.org
root@localhost:~#

Build using gcc-arm-linux-gnueabi (Working on it)

http://kphuang1009.blogspot.tw/2013/06/build-beagleboardpkg-using-gcc-arm.html

Issues

"SD: CMD12 in a wrong state" issue

Rollback to Older Linaro qemu version 

Compile using gcc-4.4

undefined reference to symbol 'timer_settime@@GLIBC_2.3.3'
sudo apt-get install python2.4

Try another qemu omap3 project

https://code.google.com/p/qemu-omap3/wiki/UserManual#Download_The_Source_Code

Get warning messages after configuring qemu-omap3
WARNING: "gcc" looks like gcc 4.x
Looking for gcc 3.x
gcc 3.x not found!
QEMU is known to have problems when compiled with gcc 4.x
It is recommended that you use gcc 3.x to build QEMU
To use this compiler anyway, configure with --disable-gcc-check

Tried to install gcc 3.x to build Linaro qEmu
http://askubuntu.com/questions/39628/old-version-of-gcc-for-new-ubuntu

Error: zlib check failed
Reinstall zlib
sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev