Changes

User:Pau pajuelo

13,426 bytes removed, 15:28, 5 September 2014
m
DM3730: Decode an AAC audio file (OK)
= How to develop with Qt under IGEP TODO: =
== Overview ==Categorize new tutorials
This guide can be helpful How to learnt to develop Qt applications under IGEP Boards. Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface, and also used for developing non-GUI programs such as command-line tools and consoles for servers. You can get more information [http://qt.nokia.com/ here]. manage the kernel modules on Linux
== Requirements<br> ==How do I edit my kernel command line
There are some requisites to follow this guide: == AUDIO DSP-ARM==
*[http://isee.biz/component/zoo/item/igep-virtual-machine-sdk-yocto ===Included (IGEP SDK VM]: follow the IGEP&nbsp;SDK&nbsp;SOFTWARE&nbsp;USER&nbsp;MANUAL (chapter 2.3 "Setting up and running the VM"GST DSP)<br> *[http://downloads.isee.biz/denzil/binary/qt4e-demo-image-igep00x0.tar.bz2 IGEP Qt Demo]: follow the IGEP&nbsp;SDK SOFTWARE&nbsp;USER&nbsp;MANUAL (chapter 6.1 "Create IGEP firmware bootable micro-sd card") and install&nbsp;qt4e-demo-image-igep00x0.tar.bz2 instead IGEP firmware. ===*[http://www.isee.biz/products/processor'''AACHEDEC -boards/igepv2-board IGEPv2], [http://www.isee.biz/products/expansion-boards/product-igep-berlin IGEP BERLIN] or [http://www.isee.biz/products/expansion-boards/product-igep-paris IGEP PARIS] *MicroSD Card > DEC AACHE (at least 2GbytesOK)<br>'''
== Download and install Qt demo image to a SD<br> ==http://download.wavetlan.com/SVV/Media/HTTP/FAAC-HE-AAC.aac
Once you have open IGEP SDK VM, gst-launch a terminal and type: <pre>cd Desktop/wget http://downloads.isee.biz/denzil/binary/qt4e-demo-imagegst-debug-igep00x0level=2 filesrc location=sampleaache.tarm4a ! TIAuddec1 codecName=aachedec engineName=codecServer ! volume volume=0.bz2 git clone git://git.isee.biz/pub/scm/igep-tools.gitcd igep-tools/scripts</pre> Insert a SD-Card media and use the igep-media-create script to copy the firmware to SD-Card media, required options are: 25 ! alsasink sync=false
*outofthebox--mmc &lt;/dev/sdX&gt;>ok
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unformated MMC Card ----
*'''MP3DEC --image &lt;filename&gt;> DEC MP3 (AUDIO ERRORS)'''
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; specify - Followed README file used to create the bootable SD cardfrom ISEE - IGEP DSP - GST + DMAI Support Package 3. 40.00
*--machine &lt;machine&gt;http://www.stephaniequinn.com/Music/Canon.mp3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; specify the machinegst-launch --gst-debug-level=2 filesrc location=Canon. Options are igep0020, igep0030 or igep0032<br> mp3 ! TIAuddec1 codecName=mp3dec engineName=codecServer ! volume volume=0.25 ! alsasink sync=false
For example, assuming the SD card device takes "/dev/sdf" and you have and IGEPv2 board (igep0020), type: <pre>./igep-media-create --mmc /dev/sdf --machine igep0020 --image /home/jdoe/Desktop/qt4e-demo-image-igep00x0.tar.bz2</pre> This should give you a bootable SD-card<br> '''Random fatal bit error'''
== Prepare Qt demo image =='''mp3-plugin doesn't resolve the error'''
Qt demo image is a root filesystem build by Yocto that contains Qt embedded libraries, also this image has some Qt examples for testing purposes. ----
This image doesn't have openssh and gdbserver, so we should install these packages to develop Qt applications. Open a shell prompt using serial communication ''G711DEC -> DEC PCM uLAW (IGEP&nbsp;SDK&nbsp;SOFTWARE&nbsp;MANUAL chapter 3.1 "Using serial mode"speech) and type the following commands: <pre>zypper refzypper in opensshzypper in gdbserver</pre> Now you can connect between IGEP and VM using SSH protocol:<br> <pre>ssh root@"IGEP IP for example: 192.168.5.1"</pre> == Using Qt Creator ==(NOT TESTED)'''
=== First Steeps<br'''G711ENC -> ===ENC PCM uLAW (speech) (NOT TESTED)'''
==== Open ProgramNot included (IGEP GST DSP):<br> ===='''ACCLCDEC -> DEC AACLE (NOT TESTED)'''
Go to Applications '''AACLDDEC -&gt; IGEP development -&gt; Qt Creator<br> DEC AACLD (NOT TESTED)'''
{| border="1" width="200" cellspacing="1" cellpadding="1"|'''WMA9 -> DEC WMA9 (COMPILING ISSUES)'''| [[Image:Openqtv2.png|331x249px]]<br> | [[Image:Qtopenedv2.png|331x249px]]<br'''ACCLCENC ->|}ENC AACLE (NOT TESTED)'''
'''<sup>Click to enlarge image</supACCHEENC ->ENC AACHE (NOT TESTED)'''
==== Open an example:<br'''AACLDENC -> ====ENC AACLD (NOT TESTED)'''
Copy your desired example from: /opt/QtSDK/Examples/4.7 to your desktop.<br'''WMA8 -> ENC WMA8 (NOT TESTED)'''
{| border="1" width="200" cellspacing="1" cellpadding="1"|'''Problems adding codecs into igep-| [[Image:Qtcopyanexamplev2.png|496x373px]]|}gst-dsp'''
'''<sup>Click to enlarge image</sup>''' == DM3730==
'''NOTE=== DM3730:''' some examples Decode a MP3 file (like helloglOK) cannot be compiled to ARM, for this How-to is used calculator example. (ADDED TO REPOSISTORIES)===
Open this example with Qt Creator, set Desktop target and use for each Qt Version one debug and one release '''under contruction'''
{| border="1" width="757" cellspacing="1" cellpadding="1"|-| [[Image:Qtopenanexamplev2.png|250x188px]] | [[Image:Qtopenanexample2v2.png|250x188px]] | [[Image:Qtopenanexample3v2.png|250x188px]]|}'''does not have an accelerated audio decoder element'''
'''<sup>Click to enlarge image</sup>''' - Compiled gst-plugins-ugly using yocto tools
=== ARM Platform<br> ===- rpm -igst-plugins-ugly-0.*.rpm
==== Build Programs <br> ====- rpm -i libmad0-0.*.rpm
To compile to ARM for IGEP go to Project use the following configuration at Projects field -&gt; Build: rpm -i gst-plugins-ugly-mad-0.*.rpm
{| border- gst-launch filesrc location="1" width="200" cellspacingsample.mp3 ! mad ! volume volume="1" cellpadding="1"|-| [[Image:Qtarmconfigv20.png|496px]]|}25 ! alsasink
'''<sup>Click to enlarge image</sup>''' === DM3730: Decode a RA or RM audio file (ERRORS)===
'''NOTE:''' Use Debug build if you want to gst-launch --gst-debug later -level=3 filesrc location=sample.ra ! rmdemux ! volume volume=0.25 ! alsasink
Compile withhttp: Build-&gt;Clean All and Build-&gt;Build All (Ctrl+Shift+B)//www. superluminal.com/andalib/ra/listen.ra
==== Run Programs ====gst-plugins-ugly-rmdemux-0.10.19-r1.armv7a.rpm
Once you compiled the program pass it from VM to IGEP&nbsp;via SSH, launch a terminal and type: <pre>scp "pathtobinary" root@"IGEP IP for example: 192libgstsdp-0.16810-0-0.510.1":/home/root</pre> Get a remote shell prompt and run your program: <br> <pre>ssh root@"IGEP IP for example: 19236-r3.168armv7a.5.1"rpm:libgstsdp-0./"binary" "optional:arguments"</pre> 10-0 {| border="1" width="200" cellspacing="1" cellpadding="1"|libgstsdp-| [[Image:Qtrunarmv20.10.so.jpg|496x373px]]|}0
'''<sup>Click to enlarge image</sup>''' libgstrtsp-0.10-0-0.10.36-r3.armv7a.rpm:libgstrtsp-0.10-0 libgstrtsp-0.10.so.0
'''NOTEError:''' You cannot use igep-remote-x program because Qt-demo image doesn't have X installed.<br>
==== Debug Programs 0:00:00.084839071 ====1550 0xa137b0 WARN rmdemux rmdemux.c:1012:gst_rmdemux_chain:<rmdemux0> Bogus looking header, unprintable FOURCC
'''NOTE'''0: When you debug programs using Qt Creator "Step in" and "Step Out" are not supported00:00.085052695 1550 0xa137b0 WARN rmdemux rmdemux.c:1012:gst_rmdemux_chain:<rmdemux0> Bogus looking header, because dinamic libraries symbols are not loaded by gdb. unprintable FOURCC
Once you compiled the program pass it from VM to IGEP&nbsp;via SSH, launch a terminal and type0: <pre>scp "pathtobinary" root@"IGEP IP for example00: 19200.168085540976 1550 0xa137b0 WARN rmdemux rmdemux.5.1"c:1057:/home/root</pre> Get a remote shell prompt and run gdbservergst_rmdemux_chain: <prermdemux0>ssh root@"IGEP IP for example: 192.168.5.1"gdbserver "VM IP for example: 192Unknown object_id .168.5.10":1000 "pathtobinary" "optional:armguments"</pre> Now use the followings steps to debug program:<br> ra4
{| border="1" width="200" cellspacing="1" cellpadding="1"|-| [[Image0:Qtdebugx861v200:00.png|331x249px]] | [[Image085693564 1550 0xa137b0 WARN rmdemux rmdemux.c:Qtarmdebug1v2.png|331x249px]]|-| [[Image1012:Qtarmdebug2v2.png|331x249px]] | [[Imagegst_rmdemux_chain:Qtarmdebug3v2.png|331x249px]]|}<rmdemux0> Bogus looking header, unprintable FOURCC
'''0:00:00.085815634 1550 0xa137b0 WARN rmdemux rmdemux.c:1012:gst_rmdemux_chain:<suprmdemux0>Click to enlarge image</sup>''' Bogus looking header, unprintable FOURCC
Image 10: set breakpoints in your source code 00:00.085907187 1550 0xa137b0 WARN rmdemux rmdemux.c:1057:gst_rmdemux_chain:<rmdemux0> Unknown object_id RaTC
Image 3: use the following configuration=== DM3730: Decode an AAC audio file (OK)===
*Debugger: /opt/poky/1.2/sysroots/i686EXTRA_OECONF += "--disable-examples --pokysdkdisable-linux/usr/bin/armv7aexperimental -vfp-neondisable-pokysdl -linux-gnueabi/armdisable-pokycdaudio -linux-gnueabidisable-gdb directfb \*Local executable: "pathtohostbinary" *Host and port: "IGEP IP for example: 192.168.5.1":1000 --with-plugins=musicbrainz,wavpack,ivorbis,mpegvideoparse,'''faad2''' --disable-vdpau --disable-apexsink \*Architecture: arm *GNU target: arm -none-linuxdisable-gnueabi orc"*SysrootInstall: (empty)<br> *Location of debugging information: (empty) *Override host GDB start script: download [http://labs.isee.biz/images/a/a1/Gdbinit_for_qt.tar.bz2 gdbinit] file, uncompress to home folder and select it (/home/jdoe/gdbinit)<br>
'''NOTE:''' You cannot use igep-remote-x program because Qt-demo image doesn't have X installed.<br>
=== x86 Platform<br> ===faad2-2.7-r2.armv7a.rpmlibfaad2-2.7-r2.armv7a.rpmgst-plugins-bad-faad-0.10.23-r2.armv7a.rpm
==== Build Programs '''maybe there are necessary more packages, compare actual gst-bad-recipe and add changes. Necessary add faad2 recipe'''<pre>bitbake faad2 gst-plugins-bad</pre><pre> rpm -i faad2-2.7-r2.armv7a.rpmrpm -i libfaad2-2.7-r2.armv7a.rpmrpm -i gst-plugins-bad-faad-0.10.23-r2.1.armv7a.rpm ====</pre>
To compile to x86 go to Project use the following configuration at Projects field gst-&gt; Build: launch --gst-debug-level=3 filesrc location=sample.aac ! faad ! volume volume=0.10 ! alsasink
{| border="1" width="200" cellspacing="1" cellpadding="1"|-| [[ImageDM3730:Qtx86configv2.png|496px]]|}Decode an WMA audio file (OK)====
'''<suppre>Click to enlarge imagebitbake gst-ffmpeg</suppre>'''
'''NOTE:''' Use Debug build if you want to debug later <pre>gst-launch -v filesrc location=sample.wma ! asfdemux ! decodebin ! audioconvert ! volume volume=0.25 ! alsasink </pre>
<br> === DM3730: Decode an OGG audio file (OK)===
Compile with: Build-&gt;Clean All and Build-&gt;Build All '''Into repositories (Ctrl+Shift+Bbase plugins). :'''
==== Run Programs ====http://upload.wikimedia.org/wikipedia/en/0/04/Rayman_2_music_sample.ogg
Use run button (Ctrl+R)gst-launch -v filesrc location=sample. ogg ! oggdemux ! vorbisdec ! audioconvert ! volume volume=0.25 ! alsasink
{| border="1" width="200" cellspacingBASE0033 CONNECTOR SUMMARY TABLE="1" cellpadding="1"|-| [[Image:Qtrunx86v2.png|496x373px]]|}
'''<sup>Click to enlarge image</sup>''' == Configure a static IP using the same private network range ==
==== Debug Programs ===='''under construction'''
Set breakpoints in your source code and press debug button IGEP Firmware Yocto uses the following Ethernet network configuration (F5IP addresses)
{| border="1" width="200" cellspacing="1" cellpadding="*eth0 − 192.168.5.1"|-| [[Image*eth0:Qtdebugx861v20 − assigned via dhcp.png|331x249px]] | [[Image:Qtdebugx862v2.png|331x249px]]|}
'''<sup>Click This Ethernet network configuration is really useful when you work using a Linux operating system like IGEP SDK Virtual Machine. Because you use eth0 device to enlarge image</sup>''' communicate easily with your board and eth0:0 device to get Internet acces using dhcp protocol.
= Set up But some scenarios this network configuration is not useful, for example: if you use a NFS between IGEP Board and IGEP VM =non-Linux operating system, connect to two IP private range interfaces is not simple. This How-to can be useful to
== Overview ==(Make diagram one: IGEP and Linux defualt communication. Diagram 2 IGEP and other SO alternative configuration)
Network File System (NFS) is a Distributed file system protocol originally developed by Sun Microsystems in 1984, allowing a user on a client Computer to access files over a network in a manner similar to how local storage is accessed= igep. NFS, like many other protocols, builds on the Open Network Computing Remote Procedure Call (ONC RPC) system. The Network File System is an open standard defined in RFCs, allowing anyone to implement the protocol. More information [http://en.wikipedia.org/wiki/Network_File_System here].<br> ini parameters =
In The kernel command line syntax is name=value1. These next parameters are supported in igep.ini since IGEP Boards, NFS protocol can be used to mount a whole rootfs partition located in a remote disk like Virtual Machine, this method can be useful for-X_Loader 2.4.0-2:<br>
*Your remote rootfs will not be limited by flash or MicroSD storage. *You can transfer binaries without using remote connections. *You can test other rootfs only editing igep.ini configuration file.=== [kernel] ===
{| borderalign="1JUSTIFY" widthcellpadding="2001" cellspacingborder="1" cellpaddingstyle="1width: 900px; height: 240px;"|-| '''Parameter Name''' | '''Description''' | '''Default value''' | '''Comments'''|-| kaddress | Kernel copy address | =0x80008000 | Hex memory address|-| rdaddress | Ram Disk location address | =0x81600000 | Hex memory address;<br>disabled by default|-| serial.low | Serial number (low part) | =00000001 | Numeric|-| serial.high | Serial number (high part) | =00000000 | Numeric|-| revision | Revision ID | =0003 | Numeric|-| kImageName | Kernel, binary image name | =zImage | Kernel or binary image name|-| kRdImageName | Kernel RAM Disk Image Name | - | Ram Disk image name|-| MachineID | Machine ID (kernel ID) | ;IGEPv2<br>=2344 | ;Module<br>=2717<br>;Proton<br>=3203
|-
| [[Image:Nfs1 filesystem.pngMode | Boot Mode |331px]] ;Linux kernel<br>=kernel | ;Other image (like uboot)<br>[[Image:Nfs2 filesystem.png|331px]binary image]
|}
'''<sup>Click to enlarge image</sup>''' === [kparams] ===
{| align="JUSTIFY" cellpadding= Requirements "1" border="1" style="width: 900px; height: 1095px;"|-| '''Parameter Name''' There are some requisites to follow this guide: | '''Description''' | '''Default value''' | '''Comments'''|-| buddy *[http:| Enable//isee.biz/component/zoo/item/igep-virtual-machine-sdk-yocto IGEP SDK VM]: follow the IGEPdisable expansion board support | &nbsp;SDK&nbsp;SOFTWAREIGEPv2 Expansion Board support<br>=igep0022 | &nbsp;USER&nbsp;MANUAL (chapter 2.3 "Setting up Berlin and running the VM")Paris Expansion Board support<br> *[http://downloads.isee.biz/denzil/binary/qt4e-demo-image-igep00x0.tar.bz2 IGEP Qt Demo] or [http://isee.biz/component/zoo/item/igep-firmware-yocto-1-2 IGEP Firmware]: follow the IGEP&nbsp;SDK SOFTWARE&nbsp;USER&nbsp;MANUAL (chapter 6.1 "Create IGEP firmware bootable micro-sd card") =base0010<br> *IGEP Board with Ethernet or Wifi connectionNew York Expansion<br> =ilms0015*MicroSD Card (at least 2Gbytes)|-| console == Set up NFS at VM ==| Setup the kernel console parameters | === Download and extract IGEP root filesystem ===ttyO2,115200n8 | -ISEE mantains two rootfs builded with Yocto tools: |-| earlyprintk *IGEP firmware: default software shipped in all IGEP Boards. It comes with some documentation and tools, so you need to uncompress again to extract rootfs| Enable early printk <pre>wget http://downloads.isee.biz/denzil/binary/igep_firmware| -yocto| -1.2.1|-1.tar.bz2 tar jxf igep_firmware-yocto-*.tar.bz2| mem cd igep_firmware-yocto-*| Setup the Board Memory Configuration sudo mkdir /srv/{your_rootfs_dir}| =430M sudo tar jxf demo| -image-sato-igep00x0.tar.bz2 |-C /srv/{your_rootfs_dir} </pre> *Qt demo: demo filesystem with Qt libraries and examples| boot_delay <pre>wget http://downloads.isee.biz/denzil/binary/qt4e-demo-image-igep00x0.tar.bz2 | Setup the boot delay sudo mkdir /srv/{your_rootfs_dir}| =0 sudo tar jxf qt4e| -demo-image-igep00x0.tar.bz2 |-C /srv/{your_rootfs_dir}</pre> === Configure NFS Server ===| mpurate | Setup ARM Processor Speed *Install nfs| -kernel| -server:<pre>sudo apt|-get install nfs-kernel-server </pre> *Make directory exports.d:<br>| loglevel <pre>sudo mkdir /etc/exports.d </pre> Edit /etc/exports file, add the following line and save | Setup the changes: loglevel <pre>/srv/{your_rootfs_dir} *(rw,sync,no_subtree_check,no_root_squash)</pre> | - Export NFS file system: | -<pre>sudo exportfs |-a</pre> '''NOTE: '''You can have as many rootfs as you want | debug | Enable kernel debug output == Set up NFS at IGEP Board ==| - | -=== MicroSD boot ===|-| fixrtc Configure igep.ini file located at boot partition:<br> | Fix RTC variable | - *Comment MMC boot:| -<pre>; --|- | nocompcache | Configure MMC boot ---nocompcache variable ;root| =/dev/mmcblk0p2 rw rootwait</pre> 1 *Add NFS configuration:| -<pre>; --- Configure NFS boot --|-ip=192| omapfb.168.5.1:192.168.5.10::255.255.255.0::eth0mode root=/dev/nfs| Configure frame bugger configuration nfsroot| =192.168.5.10dvi:/srv/{your_rootfs_dir}</pre> hd720-16@50 Save changes, plug MicroSD card and power up your IGEP.| &nbsp;;Other configuration<br> =dvi:1280x720MR-16@60|-=== Flash boot<br> ===| vram | Configure Video RAM assigned to every frame buffer Boot IGEP with a MicroSD card without NFS support. | - <pre>mkdir /tmp/temp| -mount |-t jffs2 /dev/mtdblock1 /tmp/temp </pre> Now, mtdblock1 partition is mounted at /tmp/temp directory. Modify igep| omapfb.ini located in: /tmp/temp/igep.ini vram | Configure Video RAM assigned to every frame buffer *Comment JFFS2 FS boot:| - <pre>; -| -|- | omapfb.debug | Configure JFFS2 FS boot frame buffer debug output | -| -|-;root=/dev/mtdblock2| omapdss.debug ;rootfstype=jffs2</pre> | Configure DSS Video debug output *Add NFS configuration:| - <pre>; --- Configure NFS boot -| -|-ip=192.168.5| smsc911x.1:192.168.5.10::255.255.255.0::eth0mac0 root=/dev/nfs| Configure Board Ethernet Mac Address nfsroot| =192.168.5.10:/srv/{your_rootfs_dir}</pre> Save changes0xb2,0xb0,0x14,0xb5, power down IGEP0xcd, unplug MicroSD card and power up your board. 0xde  = Install and configure Codeblocks for | For IGEP devices <br> =BERLIN|-== Overview ==| smsc911x.mac1 | Configure Board Ethernet Mac Address Codeblocks is a free and open source| =0xb2, cross-platform IDE which supports multiple compilers including GCC and MSVC. It is developed in C++ using wxWidgets as the GUI toolkit. Using a plugin architecture0xb0, its capabilities and features are defined by the provided plugins. Currently0x14, Codeblocks is oriented towards C and C++. It can also be used for creating ARM0xb5, AVR0xcd, D0xdf | For IGEP BERLIN (only with IGEP PROTON)|-| smsc911x.mac | Configure Board Ethernet Mac Address | =0xb2, DirectX0xb0, FLTK0x14, Fortran0xb5, GLFW0xcd, GLUT0xde | For IGEPv2, GTK+IGEP PROTON, Irrlicht, Lightfeather, MATLAB, OGRE, OpenGL, Qt, SDL, SFML, STL, SmartWin IGEP PARIS and wx programs and applications, although in some cases installing thirdIGEP BERLIN|-party SDKs or frameworks is necessary. More information [http://en.wikipedia| ubi.org/wiki/Codeblocks here].<br> mtd | Fot UBI FS boot Codeblocks is not installed by default in IGEP&nbsp;SDK VM, because Eclipse IDE is full integrated with IGEP Firmware. If you don't like Eclipse IDE or you want to use Codeblocks anyway this How| -to can be helpful to install, set up and use it.<br> | -== Requirements ==|-| root There are some requisites to follow this guide: | Configure root directory for MMC, NFS or UBI  *[http://isee.biz/component/zoo/item/igep-virtual-machine-sdk-yocto IGEP SDK VM]: follow the IGEP&nbsp;SDK&nbsp;SOFTWARE| &nbsp;USER&nbsp;MANUAL (chapter 2.3 "Setting up and running the VM")For mmc memory<br> *[http:=/dev/isee.biz/component/zoo/item/igep-firmware-yocto-1-2 IGEP Firmware]: follow the IGEP&nbsp;SDK SOFTWAREmmcblk0p2 rw rootwait | &nbsp;USER&nbsp;MANUAL (chapter 6.1 "Create IGEP firmware bootable micro-sd card") For flash memory<br> *IGEP Board *[http:=/dev/downloads.isee.biz/pub/files/CodeBlocks_examples.tar.bz2 Codeblocks examples] mtdblock2*MicroSD Card (optional)|-| nfsroot == Install Codeblocks in VM ==| For NFS boot <pre>sudo apt| -get install codeblocks codeblocks| -contrib </pre> == Configure Codeblocks ==|-| rootfstype === Startup script ===| For UBI FS boot  Codeblocks startup script (Codeblocks.sh) will let you to load IGEP SDK YOCTO environtment variables to IDE. Don't execute this script if you want to compile with other environtment like x86.<br> <pre>cd Desktop/IGEP\ development/gedit Codeblocks.sh</pre> Copy this code to Codeblocks.sh <pre>#! /bin/bashsource /opt/poky/1.2/environment-setup-armv7a-vfp-neon-poky-linux| -gnueabi exec codeblocks </pre> Give execute privileges to script: <pre>chmod a+x ~/Desktop/IGEP\ development/Codeblocks.sh</pre> {| border="1" width="200" cellspacing="1" cellpadding="1"-
|-
| [[Image:Opencodeblocks1.png|331px]]<br> ip | [[Image:Opencodeblocks2.png|331px]]<br>For NFS boot |} <br>  === Add IGEP SDK Compiler and Debugger === Follow the next instructions to add IGEP SDK&nbsp;Yocto support: - {| border="1" width="200" cellspacing="1" cellpadding="1"-
|-
| [[Image:Addsdkcodeblocks1.pnginit |250px]] Assign init program | [[Image:Addsdkcodeblocks2.png|250px]] - | [[Image:Addsdkcodeblocks3.png|250px]]-
|-
| [[Image:Addsdkcodeblocks4musb_hdrc.png|250px]] debug | [[Image:Addsdkcodeblocks5.png|250px]] USB debug | [[Image:Addsdkcodeblocks6.png|250px]]- |} '''<sup>Click to enlarge image</sup>'''  Save all changes  == Using Codeblocks == You can create two types of projects on Codeblocks: custom Makefile or managed by Codeblocks. These examples can be used as a template for your project. The examples are:<br>  *C_example, Codeblocks-based “Hello World” program written in C. *Cairo_example, generates a png file named hello.png. *Cpp_example, Codeblocks-based “Hello World” program written in C++ *Dbus_example, sends "Hello Wolrd!" using D-Bus message system. *Glib_example, simple “Hello World" written using Glib library. *Gstreamer_example, ogg audio player using Gstreamer. *Gtk_example, Hello World in GTK. *C_example_without_autotools, custom Makefile “Hello World” program written in C. === Build programs === '''NOTE:''' Use Debug build if you want to debug later  Compile with: Build-&gt;Rebuild (Ctrl+F11).  === Run programs === Once you compiled the program pass it from VM to IGEP&nbsp;via SSH, launch a terminal and type: <pre>scp "pathtobinary" root@"IGEP IP for example: 192.168.5.1":/home/root</pre> Get a remote shell prompt and run your program: <br> <pre>ssh root@"IGEP IP for example: 192.168.5.1"./"binary" "optional:arguments"</pre> === Debug programs === '''NOTE''': When you debug programs using CodeBlocks "Step into" and "Step out" are not supported, because dinamic libraries symbols are not loaded by gdb.  Once you compiled the program pass it from VM to IGEP&nbsp;via SSH, launch a terminal and type: <pre>scp "pathtobinary" root@"IGEP IP for example: 192.168.5.1":/home/root</pre> Get a remote shell prompt and run gdbserver: <pre>ssh root@"IGEP IP for example: 192.168.5.1"gdbserver "VM IP for example: 192.168.5.10":1000 "pathtobinary" "optional:armguments"</pre> Now use the followings steps to debug program:<br>  {| border="1" width="200" cellspacing="1" cellpadding="1"
|-
| [[Image:Debugcodeblocks1musb_hdrc.pnguse_dma |331px]] USB over network | [[Image:Debugcodeblocks2.png- |331px]]-
|-
| [[Image:Debugcodeblocks3libertas.png|331px]] libertas_debug | [[Image:Debugcodeblocks4.png|331px]]Configure libertas debug |} Image 1: set breakpoints in your source code  '''NOTE:''' You cant use igep-remote-x program with IGEP firmware (chapter 3.3 "Remote X")<br>= How to use SPI (prove with new firmware, under construction) = == Overview == This How-To is meant to be a starting point for people to learn use SPI for IGEP devices as quickly and easily as possible. In this how-to, we run an example program that reads and writes registers from 3-axis accelerometer ([http://www.st.com/internet/analog/product/250725.jsp LIS3DH]) included on the board IGEP New York. This program was tested in Poky firmware with Kernel 2.6.37.y.  == Feedback and Contributing == At any point, if you see a mistake you can contribute to this How-To.  == Requirements == There are a few requisites to follow this tutorial:  *[http://isee.biz/component/zoo/item/igep-yocto-toolcahin-sdk IGEP YOCTO 1.2 Toolchain SDK] *[http://isee.biz/component/zoo/item/igep-firmware| -yocto-1-2 IGEP Firmware yocto 1.2] *IGEP MODULE with IGEP New York *SPI example Program '''''(link program)''''' == How Works == '''LIS3DH accelerometer'''''':''' It is the accelerometer mounted in IGEP New York.  '''Omap3 SPI Peripheral:''' It is the hardware used to communicated with accelerometer and other SPI devices.  '''Omap2_mcspi:''' It is a bus driver than controls Omap3 SPI Peripheral.  '''Spi:''' It is a protocol driver that defines functions and strucs used in SPI bus.  '''Spidev:''' It is a device driver that export spi driver functionalities to userspace.  '''Lis3lv02d_spi:''' SPI glue layer for lis3lv02d  '''Lis31v02d:''' Device driver for LIS3DH accelerometer.  '''Exp_ilms0015:''' It is a startup program for IGEP New York. It attach lis31v02d with Spi driver.  {| border="1" cellspacing="1" cellpadding="1" width="200"
|-
| [[Image:Spi linux schematicboard.pngei485 |501x600px]]Enable/disable RS485 |}  More information about Linux Kernel SPI at: *[http://git.isee.biz/?p=pub/scm/linux-omap-2.6.git&nbsp;a=blob;fEnable RS485<br>=Documentation/spi/spi-summary;h=4884cb33845d7629987f60610eeedb863561006e;hb=refs/heads/linux-2.6.37.y SPI Overview]yes  *[http://git.isee.biz/?p=pub/scm/linux-omap-2.6.git;a=blob;f=Documentation/spi/spidev| &nbsp;h=ed2da5e5b28a4490a3b03787b02df66d083692be;hb=refs/heads/linux-2.6.37.y SPIDEV] == Attach Spidev to SPI driver == === Modify Linux Kernel Sources === To read accelerometer registers from spidev, we need to attach spidev driver to spi driver at start up. So it is necessary to modify spi_board.  Go to $(Kernel path)/arch/arm/mach-omap2/exp-ilms0015.c and edit the next fields in bold words.  {| border="1" cellspacing="1" cellpadding="1" widthDisable RS485<br>="483"no
|-
| static struct spi_board_info lis3lv02d_spi_board_info __initdata = {  &nbsp;&nbsp;&nbsp;&nbsp;'''board.modalias = "spidev",''' modem  &nbsp;&nbsp;&nbsp; '''| Enable//.modalias&nbsp;&nbsp;&nbsp; = "lis3lv02d_spi",''' disable GPRS modem | &nbsp;&nbsp;&nbsp; .bus_num&nbsp;&nbsp;&nbsp; = -EINVAL,  &nbsp;&nbsp;&nbsp; .chip_select&nbsp;&nbsp;&nbsp; = -EINVAL,  &nbsp;&nbsp;&nbsp; .max_speed_hz&nbsp;&nbsp;&nbsp; = 1*1000*1000,  &nbsp;&nbsp;&nbsp; .irq&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; = -EINVAL,  &nbsp;&nbsp;&nbsp; .mode&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; = SPI_MODE_0,  &nbsp;&nbsp;&nbsp;'''//.platform_data&nbsp;&nbsp;&nbsp; = &amp;lis3lv02d_pdata,'''  };  inline void __init ilms0015_lis3lv02d_initEnable modem (int bus_num, int cs, int irqIGEPv2 Expansion)  {  &nbsp;&nbsp;&nbsp; struct spi_board_info *spi <br>= &amp;lis3lv02d_spi_board_info; no  &nbsp;&nbsp;&nbsp; if ((gpio_request(irq, "LIS3LV02D IRQ") == 0)  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; (gpio_direction_input(irq) == 0))  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gpio_export(irq, 0);  &nbsp;&nbsp;&nbsp; else {  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pr_err("IGEP: Could not obtain gpio LIS3LV02D IRQ\n");  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;  &nbsp;&nbsp;&nbsp; }  &nbsp;&nbsp;| &nbsp; spi-&gt;bus_num = bus_num;  &nbsp;&nbsp;&nbsp; spi-&gt;chip_select = cs;  &nbsp;&nbsp;&nbsp; spi-&gt;irq = OMAP_GPIO_IRQ(irq),  &nbsp;&nbsp;&nbsp; spi_register_board_info(&amp;lis3lv02d_spi_board_info, 1);  }  ...  void __init ilms0015_init(void)  {  &nbsp;&nbsp;&nbsp; mux_partition = omap_mux_get("core");  &nbsp;&nbsp;&nbsp; /* Mux initialitzation for ilms0015 */  &nbsp;&nbsp;&nbsp; omap_mux_write_array(mux_partition, ilms0015_mux);  &nbsp;&nbsp;&nbsp; /* 3-axis accelerometer */  &nbsp;&nbsp;&nbsp; ilms0015_lis3lv02d_init(1, 2, 174);  &nbsp;&nbsp;&nbsp; /* Export some GPIO */  &nbsp;&nbsp;&nbsp; ilms0015_gpio_init();  }  |} Now spi_register_board_info has all information necessary to attach spidev driver instead lis3lv02d_spi.  Once we edit code, compile your modified Kernel, you can follow [http://labs.isee.biz/index.php/Linux_Kernel_2.6.37.y#Build_kernel_from_sources this tutorial] for this purpose. === Enable ilms0015 support === “ilms0015” is the technical name of IGEP New York.  By default, poky-media-create modem (See: [http://labs.isee.biz/index.php/How_to_create_a_SD-card_with_the_latest_software_image Poky firmware with Kernel 2.6.37.y]IGEPv2 Expansion) configured as igep0030, gives support only for IGEP Expansions Paris and Berlin. We need to configure igep.ini and gives support to IGEP New York:  {| border="1" cellspacing="1" cellpadding="1" width<br>="399"yes
|-
| buddy.revision ;Machine configuration ''';buddy=base0010 | Enable hardware buddy.revision=[A or B ''' ] | Only for base0010<br>=A '''buddy| Only for base0010<br>=ilms0015''' B
|}
 
=== Test changes<br> ===
 
== SPI Test program ==
 
=== Overview ===
 
=== Compile program ===
 
== Test program<br> ==
 
=== Read WHO_AM_I register(0Fh) ===
 
=== Read and Write CTRL_REG1 (20h) ===
 
=== Read accelerometer axes ===
 
= How to install IGEP SDK Virtual machine (under construction) =
 
= How to install Qt Creator (under construction) =
 
= How to install Eclipse (under construction) =
4,199
edits