Difference between revisions of "Eclipse from Box to Debug"
Aqisecoxefi (Talk | contribs) |
Searchworks (Talk | contribs) (remove spam) |
||
Line 1: | Line 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
This page is meant to serve as a quickstart guide that takes you from opening an Overo + Expansion out of the Box up to Remote Debugging with Eclipse on Ubuntu. | This page is meant to serve as a quickstart guide that takes you from opening an Overo + Expansion out of the Box up to Remote Debugging with Eclipse on Ubuntu. | ||
Line 12: | Line 4: | ||
# sudo apt-get install minicom | # sudo apt-get install minicom | ||
# sudo minicom -s | # sudo minicom -s | ||
− | # [Serial port setup] - | + | # [Serial port setup] -> A - Serial Device -> /dev/ttyUSB0 -> [enter] |
− | # [Serial port setup] - | + | # [Serial port setup] -> F - Hardware Flow Control -> NO -> [enter] |
− | # [Modem and dialing] - | + | # [Modem and dialing] -> A - Init String -> [empty] -> [enter] |
− | # [Modem and dialing] - | + | # [Modem and dialing] -> B - Reset String -> [empty] -> [enter] |
− | # [Modem and dialing] - | + | # [Modem and dialing] -> K - Hang-up String -> [empty] -> [enter] |
# [Save as dfl] | # [Save as dfl] | ||
# [Exit from Minicom] | # [Exit from Minicom] | ||
− | == Power & | + | == Power & Boot == |
# Plug the gumstix into the expansion board | # Plug the gumstix into the expansion board | ||
# Plug the expansion board into your ethernet router / switch / whatever | # Plug the expansion board into your ethernet router / switch / whatever | ||
Line 46: | Line 38: | ||
cp -r org.openembedded.dev/contrib/gumstix/build . | cp -r org.openembedded.dev/contrib/gumstix/build . | ||
cp ~/.bashrc ~/bashrc.bak | cp ~/.bashrc ~/bashrc.bak | ||
− | cat ~/overo-oe/build/profile | + | cat ~/overo-oe/build/profile >> ~/.bashrc |
source ~/overo-oe/build/profile | source ~/overo-oe/build/profile | ||
Line 67: | Line 59: | ||
vim hello.c | vim hello.c | ||
− | #include | + | #include <cstdio> |
int main(int argc, char ** argv) { | int main(int argc, char ** argv) { | ||
− | printf( | + | printf("Hello World!\n"); |
} | } | ||
Line 109: | Line 101: | ||
ssh-copy-id root@192.168.1.150 | ssh-copy-id root@192.168.1.150 | ||
scp ./hello root@192.168.1.150:/hello # | scp ./hello root@192.168.1.150:/hello # | ||
− | ssh root@192.168.1.150 | + | ssh root@192.168.1.150 "/hello" # succeeds |
− | ssh root@192.168.1.150 | + | ssh root@192.168.1.150 "gdbserver 192.168.1.100:43276 /hello" # starts remote gdb |
# use ctrl-z and then bg 1 to background this process, or run it from another ssh session | # use ctrl-z and then bg 1 to background this process, or run it from another ssh session | ||
~/overo-oe/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi-gdb --symbols ./hello.debug | ~/overo-oe/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi-gdb --symbols ./hello.debug | ||
Line 122: | Line 114: | ||
vim hello.c | vim hello.c | ||
− | #include | + | #include <cstdio> |
int main(int argc, char ** argv) { | int main(int argc, char ** argv) { | ||
− | printf( | + | printf("Hello World!\n"); |
char * h; | char * h; | ||
delete h; | delete h; | ||
Line 137: | Line 129: | ||
http://old.nabble.com/Solution:-Using-Eclipse-CDT-for-Gusmtix-development-tt18251552.html#a18251552 | http://old.nabble.com/Solution:-Using-Eclipse-CDT-for-Gusmtix-development-tt18251552.html#a18251552 | ||
and | and | ||
− | http://krupets.com/index.php?option=com_content& | + | http://krupets.com/index.php?option=com_content&view=article&id=18&Itemid=20 |
=== Plugins === | === Plugins === |
Latest revision as of 15:07, 23 November 2010
This page is meant to serve as a quickstart guide that takes you from opening an Overo + Expansion out of the Box up to Remote Debugging with Eclipse on Ubuntu.
Contents
Setting up Minicom
- sudo apt-get install minicom
- sudo minicom -s
- [Serial port setup] -> A - Serial Device -> /dev/ttyUSB0 -> [enter]
- [Serial port setup] -> F - Hardware Flow Control -> NO -> [enter]
- [Modem and dialing] -> A - Init String -> [empty] -> [enter]
- [Modem and dialing] -> B - Reset String -> [empty] -> [enter]
- [Modem and dialing] -> K - Hang-up String -> [empty] -> [enter]
- [Save as dfl]
- [Exit from Minicom]
Power & Boot
- Plug the gumstix into the expansion board
- Plug the expansion board into your ethernet router / switch / whatever
- Plug in the micro-SD
- Plug a mini-usb plug (as you would use with a camera) into the mini-usb port labeled console
- sudo minicom -o # disables modem and dialing settings
- Plug in the 5v power supply
- Watch the system boot
OpenEmbedded [OE] Toolchain on Ubuntu
Official (and Thorough) Documentation
sudo apt-get install git-core cd mkdir -p ~/overo-oe/user.collection cd ~/overo-oe git clone git://gitorious.org/gumstix-oe/mainline.git org.openembedded.dev cd org.openembedded.dev git checkout --track -b overo origin/overo cd ~/overo-oe git clone git://git.openembedded.net/bitbake bitbake # just try this again if it hangs up cd bitbake git checkout 1.8.18 cd ~/overo-oe cp -r org.openembedded.dev/contrib/gumstix/build . cp ~/.bashrc ~/bashrc.bak cat ~/overo-oe/build/profile >> ~/.bashrc source ~/overo-oe/build/profile
The important part:
bitbake gdb-cross
Gumstix Setup
From the previous step your Gumstix should have started configuring itself and hopefully is done, leaving you at the login prompt
root passwd #(change your password) ifconfig # configure as necessary. I assume that your IP address is 192.168.1.150 opkg install gdbserver
Hello World!
This is all taking place on the Ubuntu system (192.18.1.100)
hello.c
mkdir ~/overo-oe/Code/ cd ~/overo-oe/Code/ vim hello.c
#include <cstdio> int main(int argc, char ** argv) { printf("Hello World!\n"); }
Makefile
vim Makefile
CGTOOLS = ~/overo-oe/tmp/cross/armv7a # Compiler and Linker flags C_FLAGS += -Wall -g CPP_FLAGS += -Iinclude LD_FLAGS += -g -lm # compiler CC = $(CGTOOLS)/bin/arm-angstrom-linux-gnueabi-g++ $(C_FLAGS) $(CPP_FLAGS) -c LINK = $(CGTOOLS)/bin/arm-angstrom-linux-gnueabi-g++ $(LD_FLAGS) STRIP = $(CGTOOLS)/bin/arm-angstrom-linux-gnueabi-strip .PHONY: all clean all: clean hello clean: rm hello *.o -rf hello: hello.o $(LINK) -o hello hello.o cp hello hello.debug $(STRIP) hello hello.o: hello.c $(CC) -o hello.o hello.c
Compile
Now we'll compile the program with the debug symbols, strip the symbols, and copy it to the gumstix (192.168.1.150)
make cp ./hello ./hello.debug ~/overo-oe/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi-strip ./hello ./hello # fails because it can't run on your architecture ssh-copy-id root@192.168.1.150 scp ./hello root@192.168.1.150:/hello # ssh root@192.168.1.150 "/hello" # succeeds ssh root@192.168.1.150 "gdbserver 192.168.1.100:43276 /hello" # starts remote gdb # use ctrl-z and then bg 1 to background this process, or run it from another ssh session ~/overo-oe/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi-gdb --symbols ./hello.debug target remote 192.168.1.150:43276 continue
Debug
Now we can introduce a bug and test again
mkdir ~/overo-oe/Code/ cd ~/overo-oe/Code/ vim hello.c
#include <cstdio> int main(int argc, char ** argv) { printf("Hello World!\n"); char * h; delete h; delete h; }
Eclipse
We explore how to use eclipse.
I'm currently grokking through http://old.nabble.com/Solution:-Using-Eclipse-CDT-for-Gusmtix-development-tt18251552.html#a18251552 and http://krupets.com/index.php?option=com_content&view=article&id=18&Itemid=20
Plugins
Update sites and plugins
Configuration
Navigating through menus
Remote Deployment Debugging
Having it somehow all come together to this culminating point