This weekend I had some time to dive into my new Intel Edison, with companion Breakout Board.

There are already a lot of good resources online for getting started with the Edison, but I wanted to share the problems I ran into while starting working with the two boards.

IntelEdison_800x533

The first step I recommend is to watch this video by Kevin Sidwar, or follow his quickstart guide:

The next step for me was to upgrade the Edison to the latest version of the Yocto Linux. I found this guide on the Intel Community site to be especially helpful.


C/C++ Development on the Edison using Eclipse

I wanted to start doing development using C/C++, so I followed this guide from Intel.

One important thing that the guide doesn’t mention:

The Edison shows up in the Remote Systems window labeled as “galileo”. My first move was to rename it to “Edison”. I found that actually breaks the connection between Eclipse and the Edison, so at this point I definitely recommend that you do not rename the galileo in the Eclipse remote system directory to anything else:

01-18-15 160846

If you do change it, you will probably get the following error while trying to Run an application:

01-18-15 161251

For Google indexing sake, the error is:

  • Error during file upload.
  • Could not find the remote connection.

The problem was especially frustrating because Eclipse still allows you to make a connection to the renamed target, but you can’t run applications or open the terminal. I’ll need to do some more digging to understand why the name is hardcoded in this way.


Accessing the Breakout Board Pins using MRAA library

The next problem I ran into was trying to convert the 2_cpp_helloworld project into a simple test to toggle one of the GPIO pins. The first step I had to do was to add the following references. (Right click on the Project and Click properties)

  • ${DEVKIT_HOME}/devkit-x86/sysroots/i586-poky-linux/usr/include/c++/bits
  • ${DEVKIT_HOME}/devkit-x86/sysroots/i586-poky-linux/usr/include/mraa

01-18-15 161727

After the header files were added I was getting the following errors when compiling:

  • undefined reference to 'mraa_adc_raw_bits'

01-18-15 162053

The solution to this is to make a fix in the linker to include the mraa library.

Change the linker flags to the following:

${LDFLAGS} -lmraa

01-18-15 162025

Finally, when I was trying to run the application, the console was throwing the following error:

"Intel Edison Failed to initialize Arduino board TriState"

The fix for this is to upgrade the libmraa library on the Edison:

The method to upgrade is pretty easy, just run the following three commands on the Edison:

echo "src intel-iotdk http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/intel-iotdk.conf

opkg update

opkg upgrade


Breakout Board to MRAA Pin Number

The final tip I have to share is the location of the GPIO pins and their numbers:

This document  has the following useful table:

MRAA Number Physical Pin Edison Pin Notes Pinmode0 Pinmode1 Pinmode2
0 J17-1 GP182 GPIO-182 PWM2
1 J17-2 NC Nothing from mraa
2 J17-3 NC Nothing from mraa
3 J17-4 VIN Nothing from mraa
4 J17-5 GP135 GPIO-135 UART
5 J17-6 RCVR_MODE Nothing from mraa
6 J17-7 GP27 GPIO-27 I2C-6-SCL
7 J17-8 GP20 GPIO-20 I2C-1-SDA
8 J17-9 GP28 GPIO-28 I2C-6-SDA
9 J17-10 GP111 GPIO-111 SPI-5-CS1
10 J17-11 GP109 GPIO-109 SPI-5-SCK
11 J17-12 GP115 GPIO-115 SPI-5-MOSI
12 J17-13 OSC_CLK_OUT_0 Nothing from mraa/check
13 J17-14 GP128 GPIO-128 UART-1-CTS
14 J18-1 GP13 GPIO-13 PWM1
15 J18-2 GP165 GPIO-165
16 J18-3 GPI_PWRBTN_N Nothing from mraa
17 J18-4 MSIC_SLP_CLK2 Nothing from mraa
18 J18-5 V_VBAT_BKUP Nothing from mraa
19 J18-6 GP19 GPIO-19 I2C-1-SCL
20 J18-7 GP12 PWM0 GPIO-12 PWM0
21 J18-8 GP183 PWM3 GPIO-183 PWM3
22 J18-9 NC Nothing from mraa
23 J18-10 GP110 GPIO-110 SPI-5-CS0
24 J18-11 GP114 GPIO-114 SPI-5-MISO
25 J18-12 GP129 GPIO-129 UART-1-RTS
26 J18-13 GP130 GPIO-130 UART-1-RX
27 J18-14 FW_RCVR Nothing from mraa
28 J19-1 NC Nothing from mraa
29 J19-2 V_V1P80 Nothing from mraa
30 J19-3 GND Nothing from mraa
31 J19-4 GP44 GPIO-44
32 J19-5 GP46 GPIO-46
33 J19-6 GP48 GPIO-48
34 J19-7 RESET_OUT Nothing from mraa
35 J19-8 GP131 GPIO-131 UART-1-TX
36 J19-9 GP14 GPIO-14
37 J19-10 GP40 GPIO-40 SSP2_CLK
38 J19-11 GP43 GPIO-43 SSP2_TXD
39 J19-12 GP77 GPIO-77 SD
40 J19-13 GP82 GPIO-82 SD
41 J19-14 GP83 GPIO-83 SD
42 J20-1 V_VSYS Nothing from mraa
43 J20-2 V_V3P30 Nothing from mraa
44 J20-3 GP134
45 J20-4 GP45 GPIO-45
46 J20-5 GP47 GPIO-47
47 J20-6 GP49 GPIO-49
48 J20-7 GP15 GPIO-15
49 J20-8 GP84 GPIO-84 SD
50 J20-9 GP42 GPIO-42 SSP2_RXD
51 J20-10 GP41 GPIO-41 SSP2_FS
52 J20-11 GP78 GPIO-78 SD
53 J20-12 GP79 GPIO-79 SD
54 J20-13 GP80 GPIO-80 SD
55 J20-14 GP81 GPIO-81 SD

The rows 17-2o are shown in this diagram:

01-18-15 163253

Pin one is on the right side. The breakout board also shows the pin and row on the silkscreen.

Conclusion

Hopefully this post will help resolve some pesky problems, or at very least helped you avoid having the same problems I faced. If you found this article helpful, feel free to drop a note in the comments below.