Ah ! Since John is mentioning starterware + bare metal, I must mention that it is not necessary to run bare metal in order to use the starterware driver files. The github project above that I linked to is an example of how to do that(also).
This is not to say that you can not , or should not run bare metal. I'm just putting it out there that it is not a requirement. On Mon, Nov 2, 2015 at 10:49 AM, John Syne <john3...@gmail.com> wrote: > A few pieces of advise on how to get these examples to work. Make sure to > boot with the custom MLO provided with Starterware as this sets up memory > and clocks required by Starterware. Also don’t forget to use the GEL file > when launching CCSV6. I also had to add a watchdog disable to the GEL file > or else BBB just keeps on rebooting. I have attached my custom GEL file. > > -- > For more options, visit http://beagleboard.org/discuss > --- > You received this message because you are subscribed to the Google Groups > "BeagleBoard" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to beagleboard+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > > > > Regards, > John > > > > > On Nov 2, 2015, at 9:29 AM, William Hermans <yyrk...@gmail.com> wrote: > > Here is one such project, although I'm not sure this is the one I was > thinking of > > https://github.com/BeaglePilot/PRUSS-C > > the starterware stuff is located in the PRUSS_LIB sub directory. > > On Mon, Nov 2, 2015 at 10:21 AM, William Hermans <yyrk...@gmail.com> > wrote: > >> Yeah that link John gave out seems good. I've been meaning to follow it >> myself for a couple weeks now. But I've been doing other things waiting for >> remoteproc / rpmsg to settle down. >> >> I really like the idea of remoteproc / rpmsg, it seems very intuitive / >> natural. >> >> Also Micka, there is *some* github project that uses starterware too . . >> . demonstrating how to use starterware inside a ti_cgt C compiler project . >> . . I do not remember which it is, so may not be able to find a link to it >> . . . >> >> On Mon, Nov 2, 2015 at 8:37 AM, John Syne <john3...@gmail.com> wrote: >> >>> Hi Micka, >>> >>> Follow this tutorial: >>> >>> http://processors.wiki.ti.com/index.php/PRU_Training:_Hands-on_Labs >>> >>> Regards, >>> John >>> >>> >>> >>> >>> On Nov 2, 2015, at 1:26 AM, Micka <mickamus...@gmail.com> wrote: >>> >>> Ok, the problem is that in a PRU project you don't have access to the >>> I2C function that you have in the starterware :'( . >>> >>> >>> I guess that I need to code in ASM then ^^ . >>> >>> Le lun. 2 nov. 2015 à 10:01, Micka <mickamus...@gmail.com> a écrit : >>> >>>> I found that : >>>> >>>> >>>> http://www.element14.com/community/community/designcenter/single-board-computers/next-gen_beaglebone//blog/2014/04/30/bbb--pru-c-compiler >>>> >>>> >>>> Le lun. 2 nov. 2015 à 09:48, Micka <mickamus...@gmail.com> a écrit : >>>> >>>>> Ok, thx for the tips. >>>>> >>>>> I've CCS & starterware installed. I found the I2C driver. But how do >>>>> you create a PRU project for the beaglebone black ? >>>>> >>>>> In the CCS App center, the PRU compiler is installed, but I can't find >>>>> how to create a PRU project ? >>>>> >>>>> >>>>> Micka, >>>>> >>>>> >>>>> Le lun. 2 nov. 2015 à 01:30, John Syne <john3...@gmail.com> a écrit : >>>>> >>>>>> Hi Micka, >>>>>> >>>>>> With a few tweaks, you can use the drivers from Staterware[1] and use >>>>>> the PRU C compiler. My advice is to use Starterware on the CortexA8 to >>>>>> get >>>>>> familiar with the examples, utilities and driver code. Next you want to >>>>>> pull out just the driver and utility code you need and put it into one >>>>>> file, compile with the PRU C compiler and fix errors and warnings. Don’t >>>>>> forget to add CT_CFG.SYSCFG_bit.STANDBY_INIT = 0;[2] to the start of >>>>>> main(). >>>>>> >>>>>> I do this all with a JTAG emulator. Not sure how you will be able to >>>>>> debug this code otherwise. >>>>>> >>>>>> [1] http://www.ti.com/tool/starterware-sitara >>>>>> [2] https://git.ti.com/pru-software-support-package >>>>>> >>>>>> >>>>>> Regards, >>>>>> John >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Nov 1, 2015, at 4:06 PM, William Hermans <yyrk...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> By the way, I keep seeing stuff like "C2" in PASM assembly in regard >>>>>> to the PRU's. Wish I could figure out what it is . . . Seems to be some >>>>>> sort of constant "register" ? And there is more than just C2, but I have >>>>>> not found any reference to those yet :/ >>>>>> >>>>>> On Sun, Nov 1, 2015 at 5:01 PM, William Hermans <yyrk...@gmail.com> >>>>>> wrote: >>>>>> >>>>>>> Hi Micka, >>>>>>> >>>>>>> I do not think he is using and driver. When speaking of the I2C >>>>>>> module, I believe hes speaking of the physical on chip module. But this >>>>>>> . . >>>>>>> . >>>>>>> >>>>>>> #define I2C1_BASE C2 //base registri I2C1 >>>>>>> nella tabella >>>>>>> >>>>>>> translated from Italian to English . . . *I2C1 base registers in >>>>>>> the table *which seems to me he is setting up the I2C hardware >>>>>>> module directly through it's registers in memory. But the other link, he >>>>>>> pasted I do not know if you saw it or not >>>>>>> http://beagleboard.org/Community/Forums/?place=msg%2Fbeagleboard%2FDAXyYJOrDIc%2FDZ8WKkRWaC0J >>>>>>> he talks about the problem being solved and he was not bringing the >>>>>>> hardware module out of reset, which is similar to how the ADC module >>>>>>> works. >>>>>>> >>>>>>> Wish I could help you more, but I know nearly nothing about I2C. I >>>>>>> know what it is, and vaguely how it's done, but have never used I2C . . >>>>>>> . >>>>>>> >>>>>>> On Sun, Nov 1, 2015 at 2:45 PM, Micka <mickamus...@gmail.com> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> I'm interested by what you have done. I want to use i2c to read >>>>>>>> analog value from a component. >>>>>>>> >>>>>>>> The first solution that I found was to bitbang the i2c. But you, >>>>>>>> you use the i2c driver which is nice. >>>>>>>> >>>>>>>> Could you give us the peace of asm code that you use to interface >>>>>>>> with the MCP23017. And if you have the c code also it would be great. >>>>>>>> >>>>>>>> ( if possible, also the part of you managed to activate the module >>>>>>>> by writing MODULEMODE field into register CM_PER_I2C1_CLKCTRL register >>>>>>>> and >>>>>>>> also the code that wait for IDLEST field to confirm that module is >>>>>>>> ready). >>>>>>>> >>>>>>>> Micka, >>>>>>>> >>>>>>>> Le dim. 19 juil. 2015 21:45, Gianfranco Rosso < >>>>>>>> gianfranco.ro...@tiscali.it> a écrit : >>>>>>>> >>>>>>>> I've also posted this in I2C topic, the solution is there: >>>>>>>> >>>>>>>> >>>>>>>> http://beagleboard.org/Community/Forums/?place=msg%2Fbeagleboard%2FDAXyYJOrDIc%2FDZ8WKkRWaC0J >>>>>>>> >>>>>>>> >>>>>>>> Il giorno lunedì 13 luglio 2015 09:49:20 UTC+2, Gianfranco Rosso ha >>>>>>>> scritto: >>>>>>>> >>>>>>>> I want to manage the I2C1 module by the PRU, in order to interface >>>>>>>> some I/O expanders (MCP23017 by Microchip). >>>>>>>> I use may own "cape" without the plug-n' play eeprom (one of the >>>>>>>> next steps will be adding management for DCAN0 and DCAN1 so i'll need >>>>>>>> these >>>>>>>> pins too...). >>>>>>>> So, at present, there are just 2 MCP23017 connected to the P9.17 >>>>>>>> and P9.18. >>>>>>>> >>>>>>>> I load the *cape-universal* into slots and then I use >>>>>>>> *configure-pin* command to set P9.17 and P9.18 as *i2c* >>>>>>>> >>>>>>>> I've started from an example into the *am335x_pru_package-master* >>>>>>>> and wrote my own C PRU loader. >>>>>>>> Very simple, it just: >>>>>>>> >>>>>>>> loads the PRU codeinit the data exhanged with the PRUstart the >>>>>>>> PRUwait for ESC key presssignal to the PRU to stopwait for the PRU >>>>>>>> stopexit. >>>>>>>> >>>>>>>> >>>>>>>> Also the assembly PRU code is simple: >>>>>>>> >>>>>>>> init I2C1 module (by writing registers PSC, SCLL, SCLH, CON)init >>>>>>>> 1st I/O expander as 16 inputs (even if at power on it's already set as >>>>>>>> input)init 2nd I/O expander as 16 outputscicle reading status of inputs >>>>>>>> from 1st expander and echoing to the outputs of 2nd expanderexit cycle >>>>>>>> and >>>>>>>> halt when receive stop flag from the loader >>>>>>>> >>>>>>>> for send and receive I2C messages I use register SA, CNT, DATA and >>>>>>>> CON. >>>>>>>> >>>>>>>> That's very simple and linear... pity, it doesn't work. >>>>>>>> >>>>>>>> *I didn't see any activity at all in P9.17 and P9.18*. >>>>>>>> >>>>>>>> The PRU code is surely running, as I add a cycle counter and show >>>>>>>> it in the loader while it's waiting for ESC keypress, and also the PRU >>>>>>>> code >>>>>>>> correctly stops at the loader command. >>>>>>>> >>>>>>>> I was expecting that the PRU code stalls if I2C bus doesn't work, >>>>>>>> as there are waiting cycles both for STOP condition or for CNT reaching >>>>>>>> zero (depending on the write or read message sending). >>>>>>>> >>>>>>>> But it seems running, and running very fast also: the cycle counter >>>>>>>> is incremented to a very fast rate (over 550 kcycles/s) that's not >>>>>>>> compatible with the correct executing of I2C sequences (I've setted the >>>>>>>> module for 400Kbps rate... so the PRU cycle it's even faster than a >>>>>>>> single >>>>>>>> I2C bit time!). >>>>>>>> >>>>>>>> I'm surely doing something wrong, but I cant fugure what. >>>>>>>> >>>>>>>> Any idea? >>>>>>>> >>>>>>>> Suggestions? >>>>>>>> >>>>>>>> Inserisci qui il codice... >>>>>>>> >>>>>>>> .origin 0 >>>>>>>> .entrypoint START >>>>>>>> >>>>>>>> #include "iic_ioexp.hp" >>>>>>>> >>>>>>>> //costanti per l'accesso al modulo I2C1 >>>>>>>> #define I2C1_BASE C2 //base registri I2C1 >>>>>>>> nella tabella costanti >>>>>>>> #define I2C_SYSC 0x10 //offset del registro >>>>>>>> I2C_SYSC >>>>>>>> #define I2C_STAT_RAW 0x24 //offset del registro >>>>>>>> I2C_STATUS_RAW >>>>>>>> #define I2C_SYSS 0x90 //offset del registro >>>>>>>> I2C_SYSS >>>>>>>> #define I2C_CNT 0x98 //offset del >>>>>>>> registro I2C_CNT >>>>>>>> #define I2C_DATA 0x9C //offset del registro >>>>>>>> I2C_DATA >>>>>>>> #define I2C_CON 0xA4 //offset del >>>>>>>> registro I2C_CON >>>>>>>> #define I2C_SA 0xAC //offset del registro >>>>>>>> I2C_SA >>>>>>>> #define I2C_PSC 0xB0 //offset del >>>>>>>> registro I2C_PSC >>>>>>>> #define I2C_SCLL 0xB4 //offset del registro >>>>>>>> I2C_SCLL >>>>>>>> #define I2C_SCLH 0xB8 //offset del registro >>>>>>>> I2C_SCLH >>>>>>>> >>>>>>>> #define I2C_CMD_ENABLE 0x8400 //modulo I2C >>>>>>>> abilitato come master >>>>>>>> #define I2C_CMD_TX 0x0200 //modulo I2C in >>>>>>>> trasmissione >>>>>>>> #define I2C_CMD_RX 0x0000 //modulo I2C in >>>>>>>> ricezione >>>>>>>> #define I2C_CMD_START 0x0001 //modulo I2C >>>>>>>> richiesta generazione sequenza START >>>>>>>> #define I2C_CMD_STOP 0x0002 //modulo I2C >>>>>>>> richiesta generazione sequenza STOP >>>>>>>> >>>>>>>> //costanti per l'accesso all'I/O expander MCP23017 >>>>>>>> #define IO_EXP0 0x20 //7bit I2C address >>>>>>>> dell'I/O expander 0 (ingressi) >>>>>>>> #define IO_EXP1 0x21 //7bit I2C address >>>>>>>> dell'I/O expander 1 (uscite) >>>>>>>> >>>>>>>> #define IO_EXP_IODIRA 0x00 //indirizzo registro >>>>>>>> IODIRA dell'I/O expander >>>>>>>> #define IO_EXP_GPIOA 0x12 //indirizzo registro >>>>>>>> GPIOA dell'I/O expander >>>>>>>> >>>>>>>> >>>>>>>> //====================================================================== >>>>>>>> >>>>>>>> //macro che attende fine sequenza verificando generazione seqeunza >>>>>>>> di STOP >>>>>>>> .macro I2C_WAIT_BY_STOP >>>>>>>> _CHECK: >>>>>>>> LBCO r1.w0, I2C1_BASE, I2C_CON, 2 >>>>>>>> QBBS _CHECK, r1.t1 >>>>>>>> .endm >>>>>>>> >>>>>>>> //macro che attende fine sequenza verificando generazione seqeunza >>>>>>>> di STOP >>>>>>>> .macro I2C_WAIT_BY_COUNT >>>>>>>> _CHECK: >>>>>>>> LBCO r1.w0, I2C1_BASE, I2C_CNT, 2 >>>>>>>> QBNE _CHECK, r1.w0, 0 >>>>>>>> .endm >>>>>>>> >>>>>>>> >>>>>>>> //====================================================================== >>>>>>>> >>>>>>>> START: >>>>>>>> // clear that bit >>>>>>>> LBCO r0, >>>>>>>> >>>>>>>> on >>>>>>>> >>>>>>>> , 4, 4 >>>>>>>> CLR r0, r0, 4 >>>>>>>> SBCO r0, C4, 4, 4 >>>>>>>> >>>>>>>> >>>>>>>> //------------------------------------------------------------------ >>>>>>>> //configurazione modulo I2C1 >>>>>>>> >>>>>>>> //reset del modulo I2C1 >>>>>>>> MOV r1.w0, 0x0002 >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_SYSC, 2 >>>>>>>> >>>>>>>> MOV r1.w0, 0x0000 >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_SYSC, 2 >>>>>>>> >>>>>>>> // //attesa fine reset modulo >>>>>>>> //_WAIT_RDONE: >>>>>>>> // LBCO r1, I2C1_BASE, I2C_SYSS, 4 >>>>>>>> // QBBC _WAIT_RDONE, r1.t0 >>>>>>>> >>>>>>>> //configura prescaler e durata SCL H/L per avere 400kHz >>>>>>>> MOV r1.b0, 4 //prescaler=4+1 --> >>>>>>>> ICLK=SCLK/prescaler=100/5=20MHz (nel reference manual raccomandano >>>>>>>> circa >>>>>>>> 24Mhz) >>>>>>>> SBCO r1.b0, I2C1_BASE, I2C_PSC, 1 >>>>>>>> >>>>>>>> MOV r1.b0, 18 //durata SCL L=18+7 --> >>>>>>>> tLOW=1/ICLK*(SCLL+7)=1/20E6*(18+7)=1.25us >>>>>>>> SBCO r1.b0, I2C1_BASE, I2C_SCLL, 1 >>>>>>>> >>>>>>>> MOV r1.b0, 20 //durata SCL H=20+5 --> >>>>>>>> tHIGH=1/ICLK*(SCLH+5)=1/20E6*(20+5)=1.25us >>>>>>>> SBCO r1.b0, I2C1_BASE, I2C_SCLH, 1 >>>>>>>> >>>>>>>> //abilita modulo >>>>>>>> MOV r1.w0, I2C_CMD_ENABLE >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_CON, 2 >>>>>>>> >>>>>>>> >>>>>>>> //------------------------------------------------------------------ >>>>>>>> //inizializzazione IOEXP 0 >>>>>>>> >>>>>>>> //indirizzo slave >>>>>>>> MOV r1.w0, IO_EXP0 >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_SA, 2 >>>>>>>> >>>>>>>> //n. byte da spedire >>>>>>>> MOV r1.w0, 3 >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_CNT, 2 >>>>>>>> >>>>>>>> //riempie FIFO >>>>>>>> MOV r1, IO_EXP_IODIRA | 0x00FFFF00 //tutti i pin come >>>>>>>> ingressi (in realta' e' gia' cosi' dal POR) >>>>>>>> SBCO r1.b0, I2C1_BASE, I2C_DATA, 1 >>>>>>>> SBCO r1.b1, I2C1_BASE, I2C_DATA, 1 >>>>>>>> SBCO r1.b2, I2C1_BASE, I2C_DATA, 1 >>>>>>>> >>>>>>>> //attesa bus free >>>>>>>> _WAIT_BB: >>>>>>>> LBCO r1, I2C1_BASE, I2C_STAT_RAW, 4 >>>>>>>> QBBS _WAIT_BB, r1.t12 >>>>>>>> >>>>>>>> //comando scrittura >>>>>>>> MOV r1.w0, I2C_CMD_ENABLE | I2C_CMD_TX | I2C_CMD_START | >>>>>>>> I2C_CMD_STOP >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_CON, 2 >>>>>>>> >>>>>>>> I2C_WAIT_BY_STOP >>>>>>>> >>>>>>>> >>>>>>>> //------------------------------------------------------------------ >>>>>>>> //inizializzazione IOEXP 1 >>>>>>>> >>>>>>>> //indirizzo slave >>>>>>>> MOV r1.w0, IO_EXP1 >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_SA, 2 >>>>>>>> >>>>>>>> //n. byte da spedire gia' impostato >>>>>>>> >>>>>>>> //riempie FIFO >>>>>>>> MOV r1, IO_EXP_IODIRA | 0x00000000 //tutti pin come >>>>>>>> uscita >>>>>>>> SBCO r1.b0, I2C1_BASE, I2C_DATA, 1 >>>>>>>> SBCO r1.b1, I2C1_BASE, I2C_DATA, 1 >>>>>>>> SBCO r1.b2, I2C1_BASE, I2C_DATA, 1 >>>>>>>> >>>>>>>> //comando scrittura >>>>>>>> MOV r1.w0, I2C_CMD_ENABLE | I2C_CMD_TX | I2C_CMD_START | >>>>>>>> I2C_CMD_STOP >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_CON, 2 >>>>>>>> >>>>>>>> I2C_WAIT_BY_STOP >>>>>>>> >>>>>>>> >>>>>>>> //------------------------------------------------------------------ >>>>>>>> //ciclo rinfresco I/O >>>>>>>> >>>>>>>> _LOOP: >>>>>>>> >>>>>>>> >>>>>>>> //------------------------------------------------------------------ >>>>>>>> //legge ingressi >>>>>>>> >>>>>>>> //indirizzo slave >>>>>>>> MOV r1.w0, IO_EXP0 >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_SA, 2 >>>>>>>> >>>>>>>> //n. byte da spedire >>>>>>>> MOV r1.w0, 1 >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_CNT, 2 >>>>>>>> >>>>>>>> //riempie FIFO >>>>>>>> MOV r1, IO_EXP_GPIOA >>>>>>>> SBCO r1.b0, I2C1_BASE, I2C_DATA, 1 >>>>>>>> >>>>>>>> //comando scrittura >>>>>>>> MOV r1.w0, I2C_CMD_ENABLE | I2C_CMD_TX | I2C_CMD_START >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_CON, 2 >>>>>>>> >>>>>>>> I2C_WAIT_BY_COUNT >>>>>>>> >>>>>>>> //n. byte da ricevere >>>>>>>> MOV r1.w0, 2 >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_CNT, 2 >>>>>>>> >>>>>>>> //comando lettura >>>>>>>> MOV r1.w0, I2C_CMD_ENABLE | I2C_CMD_RX | I2C_CMD_START | >>>>>>>> I2C_CMD_STOP >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_CON, 2 >>>>>>>> >>>>>>>> I2C_WAIT_BY_STOP >>>>>>>> >>>>>>>> //legge i byte ricevuti >>>>>>>> LBCO r2.b1, I2C1_BASE, I2C_DATA, 1 >>>>>>>> LBCO r2.b2, I2C1_BASE, I2C_DATA, 1 >>>>>>>> >>>>>>>> >>>>>>>> //------------------------------------------------------------------ >>>>>>>> //scrive uscite >>>>>>>> >>>>>>>> //indirizzo slave >>>>>>>> MOV r1.w0, IO_EXP1 >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_SA, 2 >>>>>>>> >>>>>>>> //n. byte da spedire >>>>>>>> MOV r1.w0, 3 >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_CNT, 2 >>>>>>>> >>>>>>>> //riempie FIFO >>>>>>>> MOV r2.b0, IO_EXP_GPIOA >>>>>>>> SBCO r2.b0, I2C1_BASE, I2C_DATA, 1 >>>>>>>> SBCO r2.b0, I2C1_BASE, I2C_DATA, 1 >>>>>>>> SBCO r2.b0, I2C1_BASE, I2C_DATA, 1 >>>>>>>> >>>>>>>> //comando scrittura >>>>>>>> MOV r1.w0, I2C_CMD_ENABLE | I2C_CMD_TX | I2C_CMD_START | >>>>>>>> I2C_CMD_STOP >>>>>>>> SBCO r1.w0, I2C1_BASE, I2C_CON, 2 >>>>>>>> >>>>>>>> I2C_WAIT_BY_STOP >>>>>>>> >>>>>>>> >>>>>>>> //------------------------------------------------------------------ >>>>>>>> LBCO r2, CONST_PRUDRAM, 0, 4 >>>>>>>> ADD r2, r2, 1 >>>>>>>> SBCO r2, CONST_PRUDRAM, 0, 4 >>>>>>>> >>>>>>>> >>>>>>>> //------------------------------------------------------------------ >>>>>>>> //esce dal ciclo e se il flag di uscita nella ram condivisa e' >>>>>>>> azzerato >>>>>>>> LBCO r2, CONST_PRUDRAM, 4, 1 >>>>>>>> QBNE _LOOP, r2.b0, 0 >>>>>>>> >>>>>>>> _EXIT: >>>>>>>> //invia all'host la notifica di programma completato >>>>>>>> MOV R31.b0, PRU0_ARM_INTERRUPT+16 >>>>>>>> >>>>>>>> HALT >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> For more options, visit http://beagleboard.org/discuss >>>>>>>> --- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "BeagleBoard" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to beagleboard+unsubscr...@googlegroups.com. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> For more options, visit http://beagleboard.org/discuss >>>>>>>> --- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "BeagleBoard" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to beagleboard+unsubscr...@googlegroups.com. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> For more options, visit http://beagleboard.org/discuss >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "BeagleBoard" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to beagleboard+unsubscr...@googlegroups.com. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> For more options, visit http://beagleboard.org/discuss >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "BeagleBoard" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to beagleboard+unsubscr...@googlegroups.com. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>> -- >>> For more options, visit http://beagleboard.org/discuss >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "BeagleBoard" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to beagleboard+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >>> >>> >>> -- >>> For more options, visit http://beagleboard.org/discuss >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "BeagleBoard" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to beagleboard+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> > > -- > For more options, visit http://beagleboard.org/discuss > --- > You received this message because you are subscribed to the Google Groups > "BeagleBoard" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to beagleboard+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > > > -- > For more options, visit http://beagleboard.org/discuss > --- > You received this message because you are subscribed to the Google Groups > "BeagleBoard" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to beagleboard+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.