Difference between revisions of "User:Pau pajuelo"

From IGEP - ISEE Wiki

Jump to: navigation, search
m (DM3730: Decode an AAC audio file (OK))
 
Line 1: Line 1:
= TODO: Update peripheral tutorials =
+
= TODO:  =
  
= TODO: Categorize new tutorials<br> =
+
Categorize new tutorials
  
= How to use SPI (prove with new firmware, under construction)  =
+
How to manage the kernel modules on Linux
  
== Overview  ==
+
How do I edit my kernel command line
  
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. <br>
+
== AUDIO DSP-ARM==
  
== Requirements  ==
+
===Included (IGEP GST DSP):===
 +
'''AACHEDEC -> DEC AACHE (OK)'''
  
There are some requisites to follow this guide:  
+
http://download.wavetlan.com/SVV/Media/HTTP/FAAC-HE-AAC.aac
  
*[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")<br>
+
gst-launch --gst-debug-level=2 filesrc location=sampleaache.m4a ! TIAuddec1 codecName=aachedec engineName=codecServer ! volume volume=0.25 ! alsasink  sync=false
*[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")
 
*[http://isee.biz/products/processor-boards/igep-com-module IGEP&nbsp;COM&nbsp;MODULE] and [http://isee.biz/products/expansion-boards/product-igep-new-york IGEP NEW&nbsp;YORK]<br>
 
*SPI example program '''(link program)'''
 
*MicroSD Card (at least 2Gbytes)
 
  
== How Works  ==
+
outofthebox->ok
  
'''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.
+
'''MP3DEC -> DEC MP3 (AUDIO ERRORS)'''
  
'''Omap2_mcspi:''' It is a bus driver than controls Omap3 SPI Peripheral.  
+
- Followed README file from ISEE - IGEP DSP - GST + DMAI Support Package 3.40.00
  
'''Spi:''' It is a protocol driver that defines functions and strucs used in SPI bus.  
+
http://www.stephaniequinn.com/Music/Canon.mp3
  
'''Spidev:''' It is a device driver that export spi driver functionalities to userspace.  
+
gst-launch --gst-debug-level=2 filesrc location=Canon.mp3 ! TIAuddec1 codecName=mp3dec engineName=codecServer ! volume volume=0.25 ! alsasink  sync=false
  
'''Lis3lv02d_spi:''' SPI glue layer for lis3lv02d
+
'''Random fatal bit error'''
  
'''Lis31v02d:''' Device driver for LIS3DH accelerometer.
+
'''mp3-plugin doesn't resolve the error'''
  
'''Exp_ilms0015:''' It is a startup program for IGEP New York. It attach lis31v02d with Spi driver.
+
----
  
{| cellspacing="1" cellpadding="1" border="1" width="200"
+
'''G711DEC -> DEC PCM uLAW (speech) (NOT TESTED)'''
|-
 
| [[Image:Spi linux schematic.png|501x600px]]
 
|}
 
  
<br> More information about Linux Kernel SPI at:
+
'''G711ENC -> ENC PCM uLAW (speech) (NOT TESTED)'''
  
*[http://git.isee.biz/?p=pub/scm/linux-omap-2.6.git;a=blob;f=Documentation/spi/spi-summary;h=4884cb33845d7629987f60610eeedb863561006e;hb=refs/heads/linux-2.6.37.y SPI Overview]
+
===Not included  (IGEP GST DSP):===
 +
'''ACCLCDEC -> DEC AACLE (NOT TESTED)'''
  
*[http://git.isee.biz/?p=pub/scm/linux-omap-2.6.git;a=blob;f=Documentation/spi/spidev;h=ed2da5e5b28a4490a3b03787b02df66d083692be;hb=refs/heads/linux-2.6.37.y SPIDEV]
+
'''AACLDDEC -> DEC AACLD (NOT TESTED)'''
  
== Prepare Micro SD Card  ==
+
'''WMA9 -> DEC WMA9 (COMPILING ISSUES)'''
  
=== Generate Micro SD Card  ===
+
'''ACCLCENC -> ENC AACLE (NOT TESTED)'''
  
Open a terminal and use the following steps to download and generate a Micro SD card.
+
'''ACCHEENC -> ENC AACHE (NOT TESTED)'''
<pre>wget http://downloads.isee.biz/denzil/binary/igep_firmware-yocto-1.2.1-1.tar.bz2
 
tar jxf igep_firmware-yocto-*.tar.bz2
 
cd igep_firmware-yocto-* </pre>  
 
Insert a SD-Card media and use the igep-media-create script to copy the firmware.
 
  
./igep-media-create -–mmc &lt;mmc&gt; --image demo-image-sato-igep00x0.tar.bz2&nbsp;--machine igep0030
+
'''AACLDENC -> ENC AACLD (NOT TESTED)'''
  
where &lt;mmc&gt; - is the SD-Card device of your computer. For example, assuming the SD-card device takes '/dev/sdb' type:
+
'''WMA8 -> ENC WMA8 (NOT TESTED)'''
<pre>./igep-media-create --mmc /dev/sdb --machine igep0030 --image demo-image-sato-igep00x0.tar.bz2 </pre>  
 
This should give you a bootable SD-card with IGEP&nbsp;COM&nbsp;MODULE support.
 
  
'''NOTE:''' Use the following tutorial '''(upgrade it)''' to connect via Ethernet Gadget with IGEP&nbsp;COM&nbsp;MODULE
+
'''Problems adding codecs into igep-gst-dsp'''
  
=== Custom Micro SD Card  ===
+
== DM3730==
  
==== Modify Linux Kernel Sources to attach Spidev to SPI&nbsp;driver ====
+
=== DM3730: Decode a MP3 file (OK) (ADDED TO REPOSISTORIES)===
  
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.
+
'''under contruction'''
  
Go to $(Kernel path)/arch/arm/mach-omap2/exp-ilms0015.c and edit the next fields in bold words.
+
'''does not have an accelerated audio decoder element'''
  
{| cellspacing="1" cellpadding="1" border="1" width="500"
+
- Compiled gst-plugins-ugly using yocto tools
|-
 
|
 
static struct spi_board_info lis3lv02d_spi_board_info __initdata = {
 
  
&nbsp;&nbsp;&nbsp;&nbsp;'''.modalias = "spidev",'''
+
- rpm -igst-plugins-ugly-0.*.rpm
  
&nbsp;&nbsp;&nbsp; '''//.modalias&nbsp;&nbsp;&nbsp; = "lis3lv02d_spi",'''
+
- rpm -i libmad0-0.*.rpm
  
&nbsp;&nbsp;&nbsp; .bus_num&nbsp;&nbsp;&nbsp; = -EINVAL,
+
- rpm -i gst-plugins-ugly-mad-0.*.rpm
  
&nbsp;&nbsp;&nbsp; .chip_select&nbsp;&nbsp;&nbsp; = -EINVAL,
+
- gst-launch filesrc location=sample.mp3 ! mad ! volume volume=0.25 ! alsasink
  
&nbsp;&nbsp;&nbsp; .max_speed_hz&nbsp;&nbsp;&nbsp; = 1*1000*1000,
+
=== DM3730: Decode a RA or RM audio file (ERRORS)===
  
&nbsp;&nbsp;&nbsp; .irq&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; = -EINVAL,
+
gst-launch --gst-debug-level=3 filesrc location=sample.ra ! rmdemux ! volume volume=0.25 ! alsasink
  
&nbsp;&nbsp;&nbsp; .mode&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; = SPI_MODE_0,
+
http://www.superluminal.com/andalib/ra/listen.ra
  
&nbsp;&nbsp;&nbsp;'''//.platform_data&nbsp;&nbsp;&nbsp; = &amp;lis3lv02d_pdata,'''
+
gst-plugins-ugly-rmdemux-0.10.19-r1.armv7a.rpm
  
};
+
libgstsdp-0.10-0-0.10.36-r3.armv7a.rpm:
 +
libgstsdp-0.10-0
 +
libgstsdp-0.10.so.0
  
inline void __init ilms0015_lis3lv02d_init(int bus_num, int cs, int irq)
+
libgstrtsp-0.10-0-0.10.36-r3.armv7a.rpm:
 +
libgstrtsp-0.10-0
 +
libgstrtsp-0.10.so.0
  
{
+
'''Error:'''
  
&nbsp;&nbsp;&nbsp; struct spi_board_info *spi = &amp;lis3lv02d_spi_board_info;
+
0:00:00.084839071  1550  0xa137b0 WARN                rmdemux rmdemux.c:1012:gst_rmdemux_chain:<rmdemux0> Bogus looking header, unprintable FOURCC
  
&nbsp;&nbsp;&nbsp; if ((gpio_request(irq, "LIS3LV02D IRQ") == 0)
+
0:00:00.085052695  1550  0xa137b0 WARN                rmdemux rmdemux.c:1012:gst_rmdemux_chain:<rmdemux0> Bogus looking header, unprintable FOURCC
  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; (gpio_direction_input(irq) == 0))
+
0:00:00.085540976  1550  0xa137b0 WARN                rmdemux rmdemux.c:1057:gst_rmdemux_chain:<rmdemux0> Unknown object_id .ra4
  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gpio_export(irq, 0);
+
0:00:00.085693564  1550  0xa137b0 WARN                rmdemux rmdemux.c:1012:gst_rmdemux_chain:<rmdemux0> Bogus looking header, unprintable FOURCC
  
&nbsp;&nbsp;&nbsp; else {
+
0:00:00.085815634  1550  0xa137b0 WARN                rmdemux rmdemux.c:1012:gst_rmdemux_chain:<rmdemux0> Bogus looking header, unprintable FOURCC
  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pr_err("IGEP: Could not obtain gpio LIS3LV02D IRQ\n");
+
0:00:00.085907187  1550  0xa137b0 WARN                rmdemux rmdemux.c:1057:gst_rmdemux_chain:<rmdemux0> Unknown object_id RaTC
  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;
+
=== DM3730: Decode an AAC audio file (OK)===
  
&nbsp;&nbsp;&nbsp; }
+
EXTRA_OECONF += "--disable-examples --disable-experimental --disable-sdl --disable-cdaudio --disable-directfb \
 +
                --with-plugins=musicbrainz,wavpack,ivorbis,mpegvideoparse,'''faad2''' --disable-vdpau --disable-apexsink \
 +
                --disable-orc"
 +
Install:
  
&nbsp;&nbsp;&nbsp; spi-&gt;bus_num = bus_num;
 
  
&nbsp;&nbsp;&nbsp; spi-&gt;chip_select = cs;
+
faad2-2.7-r2.armv7a.rpm
 +
libfaad2-2.7-r2.armv7a.rpm
 +
gst-plugins-bad-faad-0.10.23-r2.armv7a.rpm
  
&nbsp;&nbsp;&nbsp; spi-&gt;irq = OMAP_GPIO_IRQ(irq),
+
'''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.rpm
 +
rpm -i libfaad2-2.7-r2.armv7a.rpm
 +
rpm -i gst-plugins-bad-faad-0.10.23-r2.1.armv7a.rpm
 +
</pre>
  
&nbsp;&nbsp;&nbsp; spi_register_board_info(&amp;lis3lv02d_spi_board_info, 1);
+
gst-launch --gst-debug-level=3 filesrc location=sample.aac ! faad ! volume volume=0.10 ! alsasink
  
}
+
==== DM3730: Decode an WMA audio file (OK)====
  
...
+
<pre>bitbake gst-ffmpeg</pre>
  
void __init ilms0015_init(void)
+
<pre>gst-launch -v filesrc location=sample.wma ! asfdemux ! decodebin ! audioconvert ! volume volume=0.25 ! alsasink  </pre>
  
{
+
=== DM3730: Decode an OGG audio file (OK)===
  
&nbsp;&nbsp;&nbsp; mux_partition = omap_mux_get("core");
+
'''Into repositories (base plugins):'''
  
&nbsp;&nbsp;&nbsp; /* Mux initialitzation for ilms0015 */  
+
http://upload.wikimedia.org/wikipedia/en/0/04/Rayman_2_music_sample.ogg
  
&nbsp;&nbsp;&nbsp; omap_mux_write_array(mux_partition, ilms0015_mux);
+
gst-launch -v filesrc location=sample.ogg ! oggdemux ! vorbisdec ! audioconvert ! volume volume=0.25 ! alsasink
  
&nbsp;&nbsp;&nbsp; /* 3-axis accelerometer */
+
== BASE0033 CONNECTOR SUMMARY TABLE==
  
&nbsp;&nbsp;&nbsp; ilms0015_lis3lv02d_init(1, 2, 174);
+
== Configure a static IP using the same private network range ==
  
&nbsp;&nbsp;&nbsp; /* Export some GPIO */
+
'''under construction'''
  
&nbsp;&nbsp;&nbsp; ilms0015_gpio_init();
+
IGEP Firmware Yocto uses the following Ethernet network configuration (IP addresses)
  
}
+
*eth0 − 192.168.5.1
 +
*eth0:0 − assigned via dhcp.
  
|}
+
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 communicate easily with your board and eth0:0 device to get Internet acces using dhcp protocol.
  
Now spi_register_board_info has all information necessary to attach spidev driver instead lis3lv02d_spi.  
+
But some scenarios this network configuration is not useful, for example: if you use a non-Linux operating system, connect to two IP private range interfaces is not simple. This How-to can be useful to
  
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.  
+
(Make diagram one: IGEP and Linux defualt communication. Diagram 2 IGEP and other SO alternative configuration)
  
==== Enable ilms0015 support ====
+
= igep.ini parameters =
  
“ilms0015” is the technical name of IGEP New York.  
+
The kernel command line syntax is name=value1. These next parameters are supported in igep.ini since IGEP-X_Loader 2.4.0-2:
  
By default, poky-media-create (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]) 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:
+
=== [kernel] ===
  
{| cellspacing="1" cellpadding="1" border="1" width="500"
+
{| align="JUSTIFY" cellpadding="1" border="1" style="width: 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
 
|-
 
|-
| &nbsp;; Machine configuration
+
| kRdImageName
'''&nbsp;&nbsp;&nbsp;&nbsp;;buddy=base0010 buddy.revision=B '''
+
| Kernel RAM Disk Image Name
 
+
| -
'''&nbsp;&nbsp;&nbsp; buddy=ilms0015'''
+
| Ram Disk image name
 
+
|-
 +
| MachineID
 +
| Machine ID (kernel ID)
 +
| ;IGEPv2<br>=2344
 +
| ;Module<br>=2717<br>;Proton<br>=3203
 +
|-
 +
| Mode
 +
| Boot Mode
 +
| ;Linux kernel<br>=kernel
 +
| ;Other image (like uboot)<br>[binary image]
 
|}
 
|}
  
==== Test changes ====
+
=== [kparams] ===
  
Once you copy your new Kernel binaries and edit igep.ini. Power up your board, log in and check your changes:
+
{| align="JUSTIFY" cellpadding="1" border="1" style="width: 900px; height: 1095px;"
 
+
|-
{| cellspacing="1" cellpadding="1" border="1" width="500"
+
| '''Parameter Name'''
 +
| '''Description'''
 +
| '''Default value'''
 +
| '''Comments'''
 +
|-
 +
| buddy
 +
| Enable/disable expansion board support
 +
| &nbsp;;IGEPv2 Expansion Board support<br>=igep0022
 +
| &nbsp;;Berlin and Paris Expansion Board support<br>=base0010<br>New York Expansion<br>=ilms0015
 +
|-
 +
| console
 +
| Setup the kernel console parameters
 +
| =ttyO2,115200n8
 +
| -
 +
|-
 +
| earlyprintk
 +
| Enable early printk
 +
| -
 +
| -
 +
|-
 +
| mem
 +
| Setup the Board Memory Configuration
 +
| =430M
 +
| -
 +
|-
 +
| boot_delay
 +
| Setup the boot delay
 +
| =0
 +
| -
 +
|-
 +
| mpurate
 +
| Setup ARM Processor Speed
 +
| -
 +
| -
 +
|-
 +
| loglevel
 +
| Setup the loglevel
 +
| -
 +
| -
 +
|-
 +
| debug
 +
| Enable kernel debug output
 +
| -
 +
| -
 +
|-
 +
| fixrtc
 +
| Fix RTC variable
 +
| -
 +
| -
 
|-
 
|-
|  
+
| nocompcache
root@igep00x0:/dev# lsmod
+
| Configure nocompcache variable
 
+
| =1  
Module&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Size&nbsp;&nbsp;&nbsp; Used by
+
| -
 
 
rfcomm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 48522&nbsp;&nbsp; 0
 
 
 
hidp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13311 &nbsp; 0
 
 
 
l2cap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; 49001&nbsp;&nbsp; 4 rfcomm,hidp
 
 
 
bluetooth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 67643&nbsp;&nbsp; 3 rfcomm,hidp,l2cap
 
 
 
libertas_sdio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 13887 &nbsp; 0
 
 
 
libertas&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 99318 &nbsp; 1 libertas_sdio
 
 
 
option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 13044 &nbsp; 0
 
 
 
usb_wwan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7196 &nbsp; 1 option
 
 
 
usbserial&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 23870 &nbsp; 2 option,usb_wwan
 
 
 
'''spidev&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4898 &nbsp; 0&nbsp;'''
 
 
 
root@igep00x0:/dev# ls /dev/spidev1.2
 
 
 
/dev/spidev1.2
 
 
 
|}
 
 
 
“spidev1.2”: refers at McSPI1 bus 2. Now we can communicate to accelerometer using spi driver functions.
 
 
 
== SPI Test program  ==
 
 
 
=== Overview  ===
 
 
 
This program is based in [http://git.isee.biz/?p=pub/scm/linux-omap-2.6.git;a=blob;f=Documentation/spi/spidev_test.c;h=16feda9014692a87a4996bf51d759ab9e7500ee5;hb=refs/heads/linux-2.6.37.y spidev_test] and it was edited to run with LIS3DH accelerometer, program can be explained in four parts:
 
 
 
'''Connection properties:''' program lets change via parameters SPI configurations like: device, max speed, delay, bits per word, clock phase, clock polarity, etc. If you don't use any of this parameters program will use default options for LIS3DH communication.
 
 
 
'''Read mode: '''Reads a word from a register.
 
 
 
'''Write mode: '''Writes a word in a register.
 
 
 
'''Test mode:''' Reads X, Y and Z axes from accelerometer.
 
 
 
We recommend to read peripheral datasheet before use or modify program.
 
 
 
=== Compile program  ===
 
 
 
The program source was compiled with Poky SDK but you can use other compilers like Linaro Toolchain:
 
<pre>arm-poky-linux-gnueabi-gcc spiexamplebeta2.c -o spiexampleb2  </pre>
 
Copy your final binary to rootfs.
 
 
 
== Test program<br>  ==
 
 
 
=== Read WHO_AM_I register(0Fh)  ===
 
 
 
LIS3DH has this dummy register (See 8.6 chapter) as a device identification. Its value is 0x33:
 
<pre>root@igep00x0:~# ./spiexampleb2 -R 0F
 
spi mode: 0
 
bits per word: 8
 
max speed: 1000000 Hz (1000 KHz)
 
Value from 0F is: 33
 
root@igep00x0:~#  </pre>
 
=== Read and Write CTRL_REG1 (20h)  ===
 
 
 
This register is used to enable/disable: accelerometer and XYZ axes (See 8.8 chapter). The default value at startup is:
 
<pre>root@igep00x0:~# ./spiexampleb2 -R 20
 
spi mode: 0
 
bits per word: 8
 
max speed: 1000000 Hz (1000 KHz)
 
Value from 20 is: 07
 
root@igep00x0:~#  </pre>
 
It means that accelerometer was disabled and X, Y and Z axes was enabled. For example we can disable X axe typing:
 
<pre>root@igep00x0:~# ./spiexampleb2 -W 20 -V 06
 
spi mode: 0
 
bits per word: 8
 
max speed: 1000000 Hz (1000 KHz)
 
Register to write 20 with value 06
 
root@igep00x0:~# ./spiexampleb2 -R 20     
 
spi mode: 0
 
bits per word: 8
 
max speed: 1000000 Hz (1000 KHz)
 
Value from 20 is: 06
 
root@igep00x0:~#
 
</pre>
 
=== Read accelerometer axes  ===
 
 
 
{| cellspacing="1" cellpadding="1" border="1" width="500"
 
 
|-
 
|-
| Finally we are going to read gravity force: LIS3DH has ±2g/±4g/±8g/±16g dynamically selectable full scale (See chapter 8.11). The axes values are expressed in two’s complement in 16 bits (See chapters 8.16, 8.17 and 8.18).  
+
| omapfb.mode
| [[Image:Lis3dhxyzaxes.png|150x159px]]
+
| Configure frame bugger configuration
|}
+
| =dvi:hd720-16@50
<pre>root@igep00x0:~# ./spiexampleb2 -T
+
| &nbsp;;Other configuration<br>=dvi:1280x720MR-16@60
spi mode: 0
 
bits per word: 8
 
max speed: 1000000 Hz (1000 KHz)
 
Accelerometer TEST
 
Values from X -64, Values from Y -15872 and Values from Z -256
 
root@igep00x0:~#
 
</pre>  
 
The next table shows results at different positions:  
 
 
 
{| cellspacing="1" cellpadding="1" border="1" width="600"
 
 
|-
 
|-
| Position
+
| vram
| ±2g scale
+
| Configure Video RAM assigned to every frame buffer
| ±4g scale
+
| -
| ±8g scale
+
| -
| ±16g scale
 
 
|-
 
|-
| [[Image:NYtopimagetest.png|center|100x100px]]
+
| omapfb.vram
| X = 832
+
| Configure Video RAM assigned to every frame buffer
Y = 1024
+
| -
 
+
| -
Z = 15680
 
 
 
|
 
X = 256
 
 
 
Y = 128
 
 
 
Z = 7872
 
 
 
|  
 
X = 128
 
 
 
Y = 128
 
 
 
Z = 4032
 
 
 
|  
 
X = 64
 
 
 
Y = 128
 
 
 
Z = 1280
 
 
 
 
|-
 
|-
| [[Image:NYbotimagetest.png|center|100x100px]]
+
| omapfb.debug
|  
+
| Configure frame buffer debug output
X = 256
+
| -  
 
+
| -
Y = 704
 
 
 
Z = -17216
 
 
 
|
 
X = 256
 
 
 
Y = 256
 
 
 
Z = -8320
 
 
 
|  
 
X = 64
 
 
 
Y = 128
 
 
 
Z = -4096
 
 
 
|  
 
X = 128
 
 
 
Y = 128
 
 
 
Z = -1344
 
 
 
 
|-
 
|-
| [[Image:NYtophoritzontalimagetest.png|center|100x100px]]
+
| omapdss.debug
|  
+
| Configure DSS Video debug output
X = -15872
+
| -  
 
+
| -
Y = 64
 
 
 
Z = -320
 
 
 
|
 
X = -7936
 
 
 
Y = 64
 
 
 
Z = -512
 
 
 
|  
 
X = -3968
 
 
 
Y = 128
 
 
 
Z = -192
 
 
 
|  
 
X = -1280
 
 
 
Y = 64
 
 
 
Z = -128
 
 
 
 
|-
 
|-
| [[Image:NYbothoritzontalimagetest.png|center|100x100px]]
+
| smsc911x.mac0
|  
+
| Configure Board Ethernet Mac Address
X = 16448
+
| =0xb2,0xb0,0x14,0xb5,0xcd,0xde
 
+
| For IGEP BERLIN
Y = 640
 
 
 
Z = 640
 
 
 
|  
 
X = 8128
 
 
 
Y = 192
 
 
 
Z = 384
 
 
 
|  
 
X = 4032
 
 
 
Y = 64
 
 
 
Z = 64
 
 
 
|
 
X = 1344
 
 
 
Y = 64
 
 
 
Z = 192
 
 
 
 
|-
 
|-
| [[Image:NYtopverticalimagetest.png|center|100x100px]]
+
| smsc911x.mac1
|  
+
| Configure Board Ethernet Mac Address
X = 896
+
| =0xb2,0xb0,0x14,0xb5,0xcd,0xdf
 
+
| For IGEP BERLIN (only with IGEP PROTON)
Y = 16512
 
 
 
Z = -576
 
 
 
|  
 
X = 320
 
 
 
Y = 8128
 
 
 
Z = -128
 
 
 
|  
 
X = 192
 
 
 
Y = 4096
 
 
 
Z = -64
 
 
 
|
 
X = 128
 
 
 
Y = 1344
 
 
 
Z = -128
 
 
 
 
|-
 
|-
| [[Image:NYbotverticalimagetest.png|center|100x100px]]
+
| smsc911x.mac
|  
+
| Configure Board Ethernet Mac Address
X = -64
+
| =0xb2,0xb0,0x14,0xb5,0xcd,0xde
 
+
| For IGEPv2, IGEP PROTON, IGEP PARIS and IGEP BERLIN
Y = -15872
 
 
 
Z = -256
 
 
 
|  
 
X = -512
 
 
 
Y = -7808
 
 
 
Z = -384
 
 
 
|  
 
X = -64
 
 
 
&gt;Y = -3840
 
 
 
Z = -384
 
 
 
|
 
X = -128
 
 
 
Y = -1216
 
 
 
Z = -128
 
 
 
|}
 
 
 
= BACKUP 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. <br>
 
 
 
== Requirements  ==
 
 
 
There are some requisites to follow this guide:
 
 
 
*[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")<br>
 
*[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")
 
*[http://isee.biz/products/processor-boards/igep-com-module IGEP&nbsp;COM&nbsp;MODULE] and [http://isee.biz/products/expansion-boards/product-igep-new-york IGEP NEW&nbsp;YORK]<br>
 
*SPI example program '''(link program)'''
 
*MicroSD Card (at least 2Gbytes)
 
 
 
== 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.
 
 
 
{| cellspacing="1" cellpadding="1" border="1" width="200"
 
 
|-
 
|-
| [[Image:Spi linux schematic.png|501x600px]]
+
| ubi.mtd
|}
+
| Fot UBI FS boot
 
+
| -  
<br> More information about Linux Kernel SPI at:
+
| -
 
 
*[http://git.isee.biz/?p=pub/scm/linux-omap-2.6.git;a=blob;f=Documentation/spi/spi-summary;h=4884cb33845d7629987f60610eeedb863561006e;hb=refs/heads/linux-2.6.37.y SPI Overview]
 
 
 
*[http://git.isee.biz/?p=pub/scm/linux-omap-2.6.git;a=blob;f=Documentation/spi/spidev;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.
 
 
 
{| cellspacing="1" cellpadding="1" border="1" width="500"
 
 
|-
 
|-
|  
+
| root
static struct spi_board_info lis3lv02d_spi_board_info __initdata = {
+
| Configure root directory for MMC, NFS or UBI
 
+
| &nbsp;;For mmc memory<br>=/dev/mmcblk0p2 rw rootwait
&nbsp;&nbsp;&nbsp;&nbsp;'''.modalias = "spidev",'''
+
| &nbsp;;For flash memory<br>=/dev/mtdblock2
 
 
&nbsp;&nbsp;&nbsp; '''//.modalias&nbsp;&nbsp;&nbsp; = "lis3lv02d_spi",'''
 
 
 
&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_init(int bus_num, int cs, int irq)
 
 
 
{
 
 
 
&nbsp;&nbsp;&nbsp; struct spi_board_info *spi = &amp;lis3lv02d_spi_board_info;
 
 
 
&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 (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]) 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:
 
 
 
{| cellspacing="1" cellpadding="1" border="1" width="500"
 
 
|-
 
|-
| &nbsp;; Machine configuration
+
| nfsroot
'''&nbsp;&nbsp;&nbsp;&nbsp;;buddy=base0010 buddy.revision=B '''
+
| For NFS boot
 
+
| -
'''&nbsp;&nbsp;&nbsp; buddy=ilms0015'''
+
| -
 
 
|}
 
 
 
=== Test changes  ===
 
 
 
Once you copy your new Kernel binaries and edit igep.ini. Power up your board, log in and check your changes:
 
 
 
{| cellspacing="1" cellpadding="1" border="1" width="500"
 
 
|-
 
|-
|  
+
| rootfstype
root@igep00x0:/dev# lsmod
+
| For UBI FS boot
 
+
| -  
Module&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Size&nbsp;&nbsp;&nbsp; Used by
+
| -
 
 
rfcomm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 48522&nbsp;&nbsp; 0
 
 
 
hidp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13311 &nbsp; 0
 
 
 
l2cap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; 49001&nbsp;&nbsp; 4 rfcomm,hidp
 
 
 
bluetooth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 67643&nbsp;&nbsp; 3 rfcomm,hidp,l2cap
 
 
 
libertas_sdio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 13887 &nbsp; 0
 
 
 
libertas&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 99318 &nbsp; 1 libertas_sdio
 
 
 
option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 13044 &nbsp; 0
 
 
 
usb_wwan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7196 &nbsp; 1 option
 
 
 
usbserial&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 23870 &nbsp; 2 option,usb_wwan
 
 
 
'''spidev&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4898 &nbsp; 0&nbsp;'''
 
 
 
root@igep00x0:/dev# ls /dev/spidev1.2
 
 
 
/dev/spidev1.2
 
 
 
|}
 
 
 
“spidev1.2”: refers at McSPI1 bus 2. Now we can communicate to accelerometer using spi driver functions.
 
 
 
== SPI Test program  ==
 
 
 
=== Overview  ===
 
 
 
This program is based in [http://git.isee.biz/?p=pub/scm/linux-omap-2.6.git;a=blob;f=Documentation/spi/spidev_test.c;h=16feda9014692a87a4996bf51d759ab9e7500ee5;hb=refs/heads/linux-2.6.37.y spidev_test] and it was edited to run with LIS3DH accelerometer, program can be explained in four parts:
 
 
 
'''Connection properties:''' program lets change via parameters SPI configurations like: device, max speed, delay, bits per word, clock phase, clock polarity, etc. If you don't use any of this parameters program will use default options for LIS3DH communication.
 
 
 
'''Read mode: '''Reads a word from a register.
 
 
 
'''Write mode: '''Writes a word in a register.
 
 
 
'''Test mode:''' Reads X, Y and Z axes from accelerometer.
 
 
 
We recommend to read peripheral datasheet before use or modify program.
 
 
 
=== Compile program  ===
 
 
 
The program source was compiled with Poky SDK but you can use other compilers like Linaro Toolchain:
 
<pre>arm-poky-linux-gnueabi-gcc spiexamplebeta2.c -o spiexampleb2  </pre>
 
Copy your final binary to rootfs.
 
 
 
== Test program<br>  ==
 
 
 
=== Read WHO_AM_I register(0Fh)  ===
 
 
 
LIS3DH has this dummy register (See 8.6 chapter) as a device identification. Its value is 0x33:
 
<pre>root@igep00x0:~# ./spiexampleb2 -R 0F
 
spi mode: 0
 
bits per word: 8
 
max speed: 1000000 Hz (1000 KHz)
 
Value from 0F is: 33
 
root@igep00x0:~#  </pre>
 
=== Read and Write CTRL_REG1 (20h)  ===
 
 
 
This register is used to enable/disable: accelerometer and XYZ axes (See 8.8 chapter). The default value at startup is:
 
<pre>root@igep00x0:~# ./spiexampleb2 -R 20
 
spi mode: 0
 
bits per word: 8
 
max speed: 1000000 Hz (1000 KHz)
 
Value from 20 is: 07
 
root@igep00x0:~#  </pre>
 
It means that accelerometer was disabled and X, Y and Z axes was enabled. For example we can disable X axe typing:
 
<pre>root@igep00x0:~# ./spiexampleb2 -W 20 -V 06
 
spi mode: 0
 
bits per word: 8
 
max speed: 1000000 Hz (1000 KHz)
 
Register to write 20 with value 06
 
root@igep00x0:~# ./spiexampleb2 -R 20     
 
spi mode: 0
 
bits per word: 8
 
max speed: 1000000 Hz (1000 KHz)
 
Value from 20 is: 06
 
root@igep00x0:~#
 
</pre>
 
=== Read accelerometer axes  ===
 
 
 
{| cellspacing="1" cellpadding="1" border="1" width="500"
 
 
|-
 
|-
| Finally we are going to read gravity force: LIS3DH has ±2g/±4g/±8g/±16g dynamically selectable full scale (See chapter 8.11). The axes values are expressed in two’s complement in 16 bits (See chapters 8.16, 8.17 and 8.18).
+
| ip
| [[Image:Lis3dhxyzaxes.png|150x159px]]
+
| For NFS boot
|}
+
| -  
<pre>root@igep00x0:~# ./spiexampleb2 -T
+
| -
spi mode: 0
 
bits per word: 8
 
max speed: 1000000 Hz (1000 KHz)
 
Accelerometer TEST
 
Values from X -64, Values from Y -15872 and Values from Z -256
 
root@igep00x0:~#
 
</pre>
 
The next table shows results at different positions:
 
 
 
{| cellspacing="1" cellpadding="1" border="1" width="600"
 
 
|-
 
|-
| Position
+
| init
| ±2g scale
+
| Assign init program
| ±4g scale
+
| -
| ±8g scale
+
| -
| ±16g scale
 
 
|-
 
|-
| [[Image:NYtopimagetest.png|center|100x100px]]
+
| musb_hdrc.debug
| X = 832
+
| USB debug
Y = 1024
+
| -
 
+
| -
Z = 15680
 
 
 
|
 
X = 256
 
 
 
Y = 128
 
 
 
Z = 7872
 
 
 
|  
 
X = 128
 
 
 
Y = 128
 
 
 
Z = 4032
 
 
 
|  
 
X = 64
 
 
 
Y = 128
 
 
 
Z = 1280
 
 
 
 
|-
 
|-
| [[Image:NYbotimagetest.png|center|100x100px]]
+
| musb_hdrc.use_dma
|  
+
| USB over network
X = 256
+
| -  
 
+
| -
Y = 704
 
 
 
Z = -17216
 
 
 
|
 
X = 256
 
 
 
Y = 256
 
 
 
Z = -8320
 
 
 
|  
 
X = 64
 
 
 
Y = 128
 
 
 
Z = -4096
 
 
 
|  
 
X = 128
 
 
 
Y = 128
 
 
 
Z = -1344
 
 
 
 
|-
 
|-
| [[Image:NYtophoritzontalimagetest.png|center|100x100px]]
+
| libertas.libertas_debug
|  
+
| Configure libertas debug
X = -15872
+
| -  
 
+
| -
Y = 64
 
 
 
Z = -320
 
 
 
|
 
X = -7936
 
 
 
Y = 64
 
 
 
Z = -512
 
 
 
|  
 
X = -3968
 
 
 
Y = 128
 
 
 
Z = -192
 
 
 
|  
 
X = -1280
 
 
 
Y = 64
 
 
 
Z = -128
 
 
 
 
|-
 
|-
| [[Image:NYbothoritzontalimagetest.png|center|100x100px]]
+
| board.ei485
|  
+
| Enable/disable RS485
X = 16448
+
| &nbsp;;Enable RS485<br>=yes
 
+
| &nbsp;;Disable RS485<br>=no
Y = 640
 
 
 
Z = 640
 
 
 
|
 
X = 8128
 
 
 
Y = 192
 
 
 
Z = 384
 
 
 
|  
 
X = 4032
 
 
 
Y = 64
 
 
 
Z = 64
 
 
 
|  
 
X = 1344
 
 
 
Y = 64
 
 
 
Z = 192
 
 
 
 
|-
 
|-
| [[Image:NYtopverticalimagetest.png|center|100x100px]]
+
| board.modem
|  
+
| Enable/disable GPRS modem
X = 896
+
| &nbsp;;Enable modem (IGEPv2 Expansion)<br>=no
 
+
| &nbsp;;Enable modem (IGEPv2 Expansion)<br>=yes
Y = 16512
 
 
 
Z = -576
 
 
 
|
 
X = 320
 
 
 
Y = 8128
 
 
 
Z = -128
 
 
 
|  
 
X = 192
 
 
 
Y = 4096
 
 
 
Z = -64
 
 
 
|  
 
X = 128
 
 
 
Y = 1344
 
 
 
Z = -128
 
 
 
 
|-
 
|-
| [[Image:NYbotverticalimagetest.png|center|100x100px]]
+
| buddy.revision
|
+
| Enable hardware buddy revision [A or B]  
X = -64
+
| Only for base0010<br>=A
 
+
| Only for base0010<br>=B
Y = -15872
 
 
 
Z = -256
 
 
 
|
 
X = -512
 
 
 
Y = -7808
 
 
 
Z = -384
 
 
 
|  
 
X = -64
 
 
 
&gt;Y = -3840
 
 
 
Z = -384
 
 
 
|  
 
X = -128
 
 
 
Y = -1216
 
 
 
Z = -128
 
 
 
 
|}
 
|}
 
= How to install Qt Creator (under construction)  =
 
 
= How to install Eclipse (under construction) =
 

Latest revision as of 15:28, 5 September 2014

TODO:

Categorize new tutorials

How to manage the kernel modules on Linux

How do I edit my kernel command line

AUDIO DSP-ARM

Included (IGEP GST DSP):

AACHEDEC -> DEC AACHE (OK)

http://download.wavetlan.com/SVV/Media/HTTP/FAAC-HE-AAC.aac

gst-launch --gst-debug-level=2 filesrc location=sampleaache.m4a ! TIAuddec1 codecName=aachedec engineName=codecServer ! volume volume=0.25 ! alsasink sync=false

outofthebox->ok


MP3DEC -> DEC MP3 (AUDIO ERRORS)

- Followed README file from ISEE - IGEP DSP - GST + DMAI Support Package 3.40.00

http://www.stephaniequinn.com/Music/Canon.mp3

gst-launch --gst-debug-level=2 filesrc location=Canon.mp3 ! TIAuddec1 codecName=mp3dec engineName=codecServer ! volume volume=0.25 ! alsasink sync=false

Random fatal bit error

mp3-plugin doesn't resolve the error


G711DEC -> DEC PCM uLAW (speech) (NOT TESTED)

G711ENC -> ENC PCM uLAW (speech) (NOT TESTED)

Not included (IGEP GST DSP):

ACCLCDEC -> DEC AACLE (NOT TESTED)

AACLDDEC -> DEC AACLD (NOT TESTED)

WMA9 -> DEC WMA9 (COMPILING ISSUES)

ACCLCENC -> ENC AACLE (NOT TESTED)

ACCHEENC -> ENC AACHE (NOT TESTED)

AACLDENC -> ENC AACLD (NOT TESTED)

WMA8 -> ENC WMA8 (NOT TESTED)

Problems adding codecs into igep-gst-dsp

DM3730

DM3730: Decode a MP3 file (OK) (ADDED TO REPOSISTORIES)

under contruction

does not have an accelerated audio decoder element

- Compiled gst-plugins-ugly using yocto tools

- rpm -igst-plugins-ugly-0.*.rpm

- rpm -i libmad0-0.*.rpm

- rpm -i gst-plugins-ugly-mad-0.*.rpm

- gst-launch filesrc location=sample.mp3 ! mad ! volume volume=0.25 ! alsasink

DM3730: Decode a RA or RM audio file (ERRORS)

gst-launch --gst-debug-level=3 filesrc location=sample.ra ! rmdemux ! volume volume=0.25 ! alsasink

http://www.superluminal.com/andalib/ra/listen.ra

gst-plugins-ugly-rmdemux-0.10.19-r1.armv7a.rpm

libgstsdp-0.10-0-0.10.36-r3.armv7a.rpm: libgstsdp-0.10-0 libgstsdp-0.10.so.0

libgstrtsp-0.10-0-0.10.36-r3.armv7a.rpm: libgstrtsp-0.10-0 libgstrtsp-0.10.so.0

Error:

0:00:00.084839071 1550 0xa137b0 WARN rmdemux rmdemux.c:1012:gst_rmdemux_chain:<rmdemux0> Bogus looking header, unprintable FOURCC

0:00:00.085052695 1550 0xa137b0 WARN rmdemux rmdemux.c:1012:gst_rmdemux_chain:<rmdemux0> Bogus looking header, unprintable FOURCC

0:00:00.085540976 1550 0xa137b0 WARN rmdemux rmdemux.c:1057:gst_rmdemux_chain:<rmdemux0> Unknown object_id .ra4

0:00:00.085693564 1550 0xa137b0 WARN rmdemux rmdemux.c:1012:gst_rmdemux_chain:<rmdemux0> Bogus looking header, unprintable FOURCC

0:00:00.085815634 1550 0xa137b0 WARN rmdemux rmdemux.c:1012:gst_rmdemux_chain:<rmdemux0> Bogus looking header, unprintable FOURCC

0:00:00.085907187 1550 0xa137b0 WARN rmdemux rmdemux.c:1057:gst_rmdemux_chain:<rmdemux0> Unknown object_id RaTC

DM3730: Decode an AAC audio file (OK)

EXTRA_OECONF += "--disable-examples --disable-experimental --disable-sdl --disable-cdaudio --disable-directfb \

                --with-plugins=musicbrainz,wavpack,ivorbis,mpegvideoparse,faad2 --disable-vdpau --disable-apexsink \
                --disable-orc"

Install:


faad2-2.7-r2.armv7a.rpm libfaad2-2.7-r2.armv7a.rpm gst-plugins-bad-faad-0.10.23-r2.armv7a.rpm

maybe there are necessary more packages, compare actual gst-bad-recipe and add changes. Necessary add faad2 recipe

bitbake faad2 gst-plugins-bad
 rpm -i faad2-2.7-r2.armv7a.rpm
rpm -i libfaad2-2.7-r2.armv7a.rpm
rpm -i gst-plugins-bad-faad-0.10.23-r2.1.armv7a.rpm
 

gst-launch --gst-debug-level=3 filesrc location=sample.aac ! faad ! volume volume=0.10 ! alsasink

DM3730: Decode an WMA audio file (OK)

bitbake gst-ffmpeg
gst-launch -v filesrc location=sample.wma ! asfdemux ! decodebin ! audioconvert ! volume volume=0.25 ! alsasink  

DM3730: Decode an OGG audio file (OK)

Into repositories (base plugins):

http://upload.wikimedia.org/wikipedia/en/0/04/Rayman_2_music_sample.ogg

gst-launch -v filesrc location=sample.ogg ! oggdemux ! vorbisdec ! audioconvert ! volume volume=0.25 ! alsasink

BASE0033 CONNECTOR SUMMARY TABLE

Configure a static IP using the same private network range

under construction

IGEP Firmware Yocto uses the following Ethernet network configuration (IP addresses)

  • eth0 − 192.168.5.1
  • eth0:0 − assigned via dhcp.

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 communicate easily with your board and eth0:0 device to get Internet acces using dhcp protocol.

But some scenarios this network configuration is not useful, for example: if you use a non-Linux operating system, connect to two IP private range interfaces is not simple. This How-to can be useful to

(Make diagram one: IGEP and Linux defualt communication. Diagram 2 IGEP and other SO alternative configuration)

igep.ini parameters

The kernel command line syntax is name=value1. These next parameters are supported in igep.ini since IGEP-X_Loader 2.4.0-2:

[kernel]

Parameter Name Description Default value Comments
kaddress Kernel copy address =0x80008000 Hex memory address
rdaddress Ram Disk location address =0x81600000 Hex memory address;
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
=2344
 ;Module
=2717
;Proton
=3203
Mode Boot Mode  ;Linux kernel
=kernel
 ;Other image (like uboot)
[binary image]

[kparams]

Parameter Name Description Default value Comments
buddy Enable/disable expansion board support  ;IGEPv2 Expansion Board support
=igep0022
 ;Berlin and Paris Expansion Board support
=base0010
New York Expansion
=ilms0015
console Setup the kernel console parameters =ttyO2,115200n8 -
earlyprintk Enable early printk - -
mem Setup the Board Memory Configuration =430M -
boot_delay Setup the boot delay =0 -
mpurate Setup ARM Processor Speed - -
loglevel Setup the loglevel - -
debug Enable kernel debug output - -
fixrtc Fix RTC variable - -
nocompcache Configure nocompcache variable =1 -
omapfb.mode Configure frame bugger configuration =dvi:hd720-16@50  ;Other configuration
=dvi:1280x720MR-16@60
vram Configure Video RAM assigned to every frame buffer - -
omapfb.vram Configure Video RAM assigned to every frame buffer - -
omapfb.debug Configure frame buffer debug output - -
omapdss.debug Configure DSS Video debug output - -
smsc911x.mac0 Configure Board Ethernet Mac Address =0xb2,0xb0,0x14,0xb5,0xcd,0xde For IGEP BERLIN
smsc911x.mac1 Configure Board Ethernet Mac Address =0xb2,0xb0,0x14,0xb5,0xcd,0xdf For IGEP BERLIN (only with IGEP PROTON)
smsc911x.mac Configure Board Ethernet Mac Address =0xb2,0xb0,0x14,0xb5,0xcd,0xde For IGEPv2, IGEP PROTON, IGEP PARIS and IGEP BERLIN
ubi.mtd Fot UBI FS boot - -
root Configure root directory for MMC, NFS or UBI  ;For mmc memory
=/dev/mmcblk0p2 rw rootwait
 ;For flash memory
=/dev/mtdblock2
nfsroot For NFS boot - -
rootfstype For UBI FS boot - -
ip For NFS boot - -
init Assign init program - -
musb_hdrc.debug USB debug - -
musb_hdrc.use_dma USB over network - -
libertas.libertas_debug Configure libertas debug - -
board.ei485 Enable/disable RS485  ;Enable RS485
=yes
 ;Disable RS485
=no
board.modem Enable/disable GPRS modem  ;Enable modem (IGEPv2 Expansion)
=no
 ;Enable modem (IGEPv2 Expansion)
=yes
buddy.revision Enable hardware buddy revision [A or B] Only for base0010
=A
Only for base0010
=B