Booting Joule – great HW, some SW quirk remains

Booting Joule – great HW, some SW quirk remains

I powered-up the Joule and played around with its OS and did some basic programming tests. Everything went pretty smoothly, except few SW quirks that should be solved. First, I booted with the pre-installed Osto OS. In fact, it is a Yocto Linux intel-corei7-64 4.4.15-yocto-standard #1 SMP PREEMPT x86_64 GNU/Linux. The startup process is straight forward. On Windows, install the FTDI drivers, plug in the micro-USB cable into your PC. Once the COM port is recognized, open Putty and use the settings shown in the pictures I’ve attached – there are few un-expected settings, so using all defaults will not work. The Joule boots relatively fast (~9. 8 s) and you can somehow follow the progress by looking at the LEDs on the board (see attached video). But even better – and since the root account logs-in automatically –, you can track the boot very early on the terminal. Now of course, I would not let this happen in a deployment, but a message warns you anyway that this is not a production image. The shipped GCC version is 5.4.0. I didn’t check for other dev tools since I am using only C/C++. But you should be able to install them as you would in any other Linux distro. At this point you must bring-up the Wi-Fi interfaces. This is because there are no wired networking interfaces on the Joule, so you must go thru the Wi-Fi (see attached pictures for some details). You can then either start working, business as usual or opt for a cross-platform development approach. This is when the issues started to pile up. I used the Intel System Studio IoT Edition. This is a cross development/debugging tool running on top of Eclipse and uses Docker (be prepared for a lengthy installation). First issue is that you must disable Hyper-V support (and reboot) because in 64-bit, VirtualBox is incompatible! Really?! Then, be aware that if you change the default installation settings (and paths cannot contain spaces…), you will have to change manually your projects settings… Quite disappointing. When I finally succeeded to set-up everything (took me a good hour and a half), I am still having problems to upload the binary to the Joule (because it is using a path that doesn’t exist because I changed the installation folder). My issue is that I don’t know yet where the faulty options are set in the IDE. Well, I guess that this is part of the fun. Nonetheless, the UI is pretty cool and makes cross-development promising (once it is working). I’ve noticed that the projects to access sensors, gpios, etc are using the mraa library. When I re-built the lib from the latest sources, the CPU was pretty busy for a while, but it was still possible to touch the heatsink without experiencing pain (will take some measurements later on). Next step for me will be to code with the Joule and wait for the availability of the Windows 10 Core files from Microsoft, so I can switch.

“GCC Target: x86_64-ostro-linux. Configured with: ../gcc-5.4.0/configure build=x86_64-linux -host=x86_64-ostro-linux –target=x86_64-ostro-linux –prefix=/usr –exec_prefix=/usr –bindir=/usr/bin –sbindir=/usr/sbin –libexecdir=/usr/libexec –datadir=/usr/share –sysconfdir=/etc –sharedstatedir=/com –localstatedir=/var –libdir=/usr/lib –includedir=/usr/include –oldincludedir=/usr/include –infodir=/usr/share/info –mandir=/usr/share/man –disable-silent-rules –disable-dependency-tracking –with-libtool-sysroot=/var/lib/jenkins/workspace/builder-slot-1/build/tmp-glibc/sysroots/intel-corei7-64 –with-gnu-ld –enable-shared –enable-languages=c,c++ –enable-threads=posix –enable-multilib –enable-c99 –enable-long-long –enable-symvers=gnu –enable-libstdcxx-pch –program-prefix=x86_64-ostro-linux -without-local-prefix –enable-lto –enable-libssp –enable-libitm –disable-bootstrap –disable-libmudflap –with-system-zlib –with-linker-hash-style=gnu –enable-linker-build-id –with-ppl=no –with-cloog=no –enable-checking=release –enable-cheaders=c_global –without-isl –with-sysroot=/ –with-build-sysroot=/var/lib/jenkins/workspace/builder-slot-1/build/tmp-glibc/sysroots/intel-corei7-64 –with-gxx-include-dir=/usr/include/c++/5.4.0 –without-long-double-128 –disable-static –enable-nls –enable__cxa_atexit. –

–Thread model: posix”

root@intel-corei7-64:~# mraa-gpio list

01 GPIO: GPIO

02 SPP1RX: GPIO SPI

03 PMICRST:

04 SPP1TX: GPIO SPI

05 19.2mhz: GPIO

06 SPP1FS0: GPIO SPI

07 UART0TX: UART

08 SPP1FS2: GPIO SPI

09 PWRGD:

10 SPP1CLK: GPIO SPI

11 I2C0SDA: I2C

12 I2S1SDI: GPIO

13 I2C0SCL: I2C

14 I2S1SDO: GPIO

15 I2C1SDA: I2C

16 I2S1WS: GPIO

17 I2C1SCL: I2C

18 I2S1CLK: GPIO

19 I2C2SDA: I2C

20 I2S1MCL: GPIO

21 I2C2SCL: I2C

22 UART1TX: UART

23 I2S4SDO:

24 UART1RX: UART

25 I2S4SDI:

26 PWM0: GPIO PWM

27 I2S4BLK: GPIO

28 PWM1: GPIO PWM

29 I2S4WS:

30 PWM2: GPIO PWM

31 I2S3SDO:

32 PWM3: GPIO PWM

33 I2S3SDI:

34 1.8V:

35 I2S4BLK: GPIO

36 GND:

37 GND:

38 GND:

39 GND:

40 3.3V:

41 GND:

42 5V:

43 GND:

44 5V:

45 GND:

46 3.3V:

47 GND:

48 3.3V:

49 GND:

50 1.8V:

51 GPIO: GPIO

52 1.8V:

53 PANEL: GPIO

54 GND:

55 PANEL: GPIO

56 CAMERA:

57 PANEL: GPIO

58 CAMERA:

59 SPP0FS0: GPIO SPI

60 CAMERA:

61 SPP0FS1: GPIO SPI

62 SPI_DAT:

63 SPP0FS2: GPIO SPI

64 SPICLKB: GPIO

65 SPP0FS3: GPIO SPI

66 SPICLKA: GPIO

67 SPP0TX: GPIO SPI

68 UART0RX: GPIO UART

69 SPP0RX: GPIO SPI

70 UART0RT: GPIO UART

71 I2C1SDA: GPIO I2C

72 UART0CT: GPIO UART

73 I2C1SCL: GPIO I2C

74 UART1TX: GPIO UART

75 I2C2SDA: GPIO I2C

76 UART1RX: GPIO UART

77 I2C1SCL: GPIO I2C

78 UART1RT: GPIO UART

79 RTC_CLK: GPIO

80 UART1CT: GPIO UART

100 LED100: GPIO

101 LED101: GPIO

102 LED102: GPIO

103 LED103: GPIO

104 LEDWIFI: GPIO

105 LEDBT: GPIO