Intel® Joule™ 570x Developer Kit - Review

Table of contents

RoadTest: Intel® Joule™ 570x Developer Kit

Author: micwide

Creation date:

Evaluation Type: Evaluation Boards

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: I've consider comparation with Rapsberry Pi3

What were the biggest problems encountered?: Minor problems for experienced Embedded Engieeers.

Detailed Review:

Detailed Review

I applied for to road test [1] the Intel Joule 570X because it is one of the most powerfull soultions in market.

I'm Embedded Software Engieer focused on such solutions.

My plan is to attempt 3 phases of road testing:

1. Setup device to run Windows and Linux enviroment

2. Run and deploy Hello World applications on both enviroments.

3. Run and deploy some GPIO connected applicaiton.

Specification

Intel Joule 570X [2,3]:

  • 1.7GHz Quad Core, Atom T5700 CPU
  • 4GB RAM
  • 4MB Cache
  • Dimensions of core: 2mm x 48 mm x 24 mm
  • 48 GPIO
  • 16 GB Flash
  • 802.11ac dual band wi-fi card
  • Micro USB, Micro HDMI, USB 3.0 Type A-Port, USB 3.0 Type C-Port,

 

Unboxing

I've recived mine package on time. Intel Joule 570x will be shipped in a small package - Pic.1

Pic.1 Received Pacage.image

 

Inside grey package is colorfull one - Pic.2

Pic 2. Package in Package.image

Here is the detail content of package after unboxing. Detailed Content is presented on Pic.3

image

Pic.3 Detailed content of received Pacage.

Software Development Enviroment

After setup of Intel SystemStudio IoT Edition you will get "This machine is missing Docker Toolbox software required by the Intel® System Studio IoT Edition. Installation will abort. Please install Docker Toolbox version 1.11 or higher from here: https://www.docker.com/products/docker-toolbox before installing the Intel® System Studio IoT Edition and ensure Docker Toolbox is in the PATH."

After installing Docker, you probably see Java requirement. "Please install Java* SE Runtime version 8 (JRE 8) 64-bit or higher from http://www.oracle.com/technetwork/java/javase/downloads/index.html in order to launch the Intel® System Studio IoT Edition. If you wish to develop Intel IoT Projects with Java then please install Java* SE Development Kit 64-bit version 8 (JDK 8) or higher which includes Java JRE and ensure Java is in the PATH. "

Install it as well.

image

Pic.4. Intel SystemStudio install screen.

Then I leave only Joule set and hit Next.

Then next fail will appear. After calling Intel® System Studio IoT Edition from windows start menu Enviroment will claim that need JDK.

Yes. First it want's JRE - then JDK. I've installed JRE and JDK and added JRE to path.

Then I've put this JDK into WIndows->Preferences->Java->Installed JREs and manually added JRE and make it default by clicking checkbox.

This make Intel System Studio Happy after restart.

image

Pic. 5 Java Install setup.

I hope this help.

 

Windows on Joule

If you want to try windows on this - you need to get access to Insider program. Login into your windows account and try: https://www.microsoft.com/en-us/software-download/windowsiot?wa=wsignin1.0

There is Windows 10 IOT Core Insider Preview web page and links that will be vaild for 24 hours after getting access. File that I have download was Windows10_InsiderPreview_IoTCore_IntelJoule_ARM32ARM64_en-us_16193.iso

Road is expalined at https://developer.microsoft.com/en-us/windows/iot/Docs/GetStarted/joule/GetStartedStep1.htm

First Run

To run this Joule you need power supply. 12DC, 3A. I've bought micro hdmi -> hdmi cable and power supply. Monitor and keyboard I have alredy. In the set there is also small SD card with system image. In the set there is also small radiator.

Setup of this radiator is documented in Passive Heatsink Assembly document - Intel webpage. After proper setup we will see following picture on the bench:

image

Pic.6 First proper run of Intel Joule 570X - After power plugin

On the monitor screen I saw following picture.

image

Pic. 7 Boot screen of Intel Joule 570X with Ostro on board.

Linux Ostro starts and root account is enabled by default.

uname -a show us Intel-corei7-64.

Short analysis show us that delivered system is legacy.

New card and bios will be helpful - on Intel page I've found something from 2017.

My plan was - first blind shot - try to install Windows and try not to change Bios.

I've created SD Card with last Windows 10 IoT image.

I've used IoT Dashboard tool.

image

Pic. 8. Setup of Windows IoT

Then I've turn Bios with F2 during boot and set two parameters as specification says.

image

image

Pic. 8-9 Joule 570X Bios setting

Boot Option Menu - EFI uSD Device as boot device and OS Selection -> Windows in Boot option.

Then reboot and ...

image

Pic. 10 Windows is starting on Joule 570X

System windows 10 IoT is booting ...

Till ...

image

Pic. 11. Windows show green face. - BSOD on Windows IoT

Seems that we need to make more effort to run Windows IoT on our Joule.

 

My first suspicion was on legacy BIOS version. According to Microsoft Specification we need first upgrade BIOS of our Joule. How to upgrade BIOS is described on Intel Specification web page. I've take 1H3 from 6/8/2017 follow the steps and ... almost brick Joule.

After flashing white diode stays on and screen after boot is off. In that moment I've almost finished mine roadtest with fail and birck. Then I've try other bios.

I've take 1F1 from 5/8/2017 - This time flash was success and Joule wake up.

Note: if you take debug bios version - be patient - it starts very long. Do not use it if you do not need.

Roadtest is on the road again!

I've start Windows IoT booting and Green Screen - INACCESSIBLE_BOOT_DEVICE once again appears.

My second suspicion was Microsoft Image - I've take Legacy one. And INACCESSIBLE_BOOT_DEVICE once again appears.

I was stuck - only option remain was 1H3 with host device drivers from 1F1. That was very strange because I've done some research and some people are running windows 10 IoT on this board.

Next day I put Joule BIOS 1H3 into 1F1 folder and start flash.bat with this. It works and alive! Unfortunatellty that didn't help either to start Windows IoT ... Same green screen of BSOD (This should be called GSOD now I think) on both Images appear.

I use mechanical USB keyboard - Tesoro Ulitmate that contains USB Hub. My mouse is connected to this keyboard. There is one free USB slot. I created USB stick with Windows Image and plug this into keyboard hub. Joule and Windows works now! But ... it loads extermly slow from legacy USB Stick. I've found special adapter that can be used with Micro SD Card - that make booting time resonable.

Finally, after two days of fight Windows IoT on Joule started properly.

Final System Setup

I've ordered Powered USB HUB TP-Link UH720 and 7 inch HDMI LCD touch screen.

Standard keyboard and mouse as usual.

image

Pic. 12 Final Tool Set for building Joule Setup

All required parts are here (execpt HDMI > microHDMI converter) are above.

Then I've connected all the parts

image

Pic. 13. Windows IoT on final System Setup is Ready to get Software

And mine WIndows IoT started. (of course - First go setup and swtich boot sequenece)

Coding on Ostro

Running a first program on build-in ostro became not so easy part as I expected.

I've installed Intel SystemStudio IoT Edition already.

I've boot system direct into Ostro Linux.

And first problem Appears - cannot connect to root. There wasn't set root passowrd.

Moreover there was no internet connect to our system.

Here helps youtube presentation [1] Engieering Bench Talk Mouser Electornics.

Few commands and we have connection:

connmanctl

connmanctl> scan wifi

connmanctl> services

connmanctl> agent on

connmanctl> connect wifi__managed_psk

After reboot connection remains.

passwd will setup a password for root account as well.

Presented in youtube method of enablid root access looks wrong i think.

I've used vi /etc/ssh_ssd_config and directly put last line "PermitRootLogin yes" at the end of configuration file.

I've also added follwoing IPTABLES as well:

-P INPUT ACCEPT

-P FORWARD ACCEPT

-P OUTPUT ACCEPT

But after reboot this look like this:

root@intel-corei7-64:~# iptables -S

-P INPUT DROP

-P FORWARD DROP

-P OUTPUT ACCEPT

-A INPUT -i ve-+ -p udp -m udp --dport 53 -j ACCEPT

-A INPUT -i ve-+ -p udp -m udp --dport 67 -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p udp -m udp --dport 5353 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

-A FORWARD -o ve-+ -j ACCEPT

-A FORWARD -i ve-+ -j ACCEPT

But works fine.

Expecialy with  installed Intel SystemStudio IoT Edition .

I've started this Intel tool. This tool have found mine board on the net and connected properly.

root/password is needed to connect.

I've started from hello world. Project has been created. I've hit run button:

image

Pic. 14. Intel SystemStudio IoT Edition problem with Build In Ostro.

And following information is displayed (Pic.14).

I've typed https://software.intel.com/en-us/flashing-ostro-on-joule and I've see 404 - Dev Humor from intel (Pic. 15)

image

Pic. 15 Intel flashing-ostro-on-joule web page

Look's like we have small problem. On the other hand there is only a warrning and world probably make some hope. So I've ok and follow that path.

Hello world was displayed - on the host screen.

image

Pic.16 Intel SystemStudio IoT Edition builds hello world.

But I want to see that on real system. Then I've type:

 

root@intel-corei7-64:~# cd /tmp

root@intel-corei7-64:/tmp# ls

Hello_World

root@intel-corei7-64:/tmp# ./Hello_World

Hello, This is a road test for Element14

 

And we have first program running on Build In Ostro. Then I've make something more complicated. I've take Led Blink example. Unfortunatelly Led Blink example program does not compile.

There is missing INTEL_JOULE_EXPANSION definition in include files. I've make some patches ... And mine program for Led Blinking looks like this:

 

#include <mraa.hpp>

#include <iostream>

#include <unistd.h>

int main()

{

  // select onboard LED pin based on the platform type

  // create a GPIO object from MRAA using it

  mraa::Gpio* d_pin = NULL;

  d_pin = new mraa::Gpio(100, true, false);

  if (d_pin == NULL) {

    std::cerr << "Can't create mraa::Gpio object, exiting" << std::endl;

    return mraa::ERROR_UNSPECIFIED;

  }

 

  // set the pin as output

  if (d_pin->dir(mraa::DIR_OUT) != mraa::SUCCESS) {

    std::cerr << "Can't set digital pin as output, exiting" << std::endl;

    return MRAA_ERROR_UNSPECIFIED;

  }

 

  // loop forever toggling the on board LED every second

  for (;;) {

    d_pin->write(1);

    sleep(1);

    d_pin->write(0);

    sleep(1);

   }

 

  return mraa::SUCCESS;

}

 

This will help and led's now Joule is blinking.

 

Coding on Windows IoT

Note: If you want store permament system setting in BIOS - buy battery. Otherwise, each time you will use F9.

After booting into Windows IoT I've started to make some hello world on Windows Setup. System give us nice web interface.

Note: Magic username/password for Windows IoT bare install is Administrator/p@ssw0rd

This interface look's like Pic.17.

image

Pic. 17 Windows IoT on Joule 570X Web Management Page

On the first I thought that Hello World example on this device will be simple. Under Apps->Quick-run samples there was 3 applications, including hello world. Unfortunatelly - not working.

image

Pic. 18 Build not working Quick-run samples

I've hit link 'source code' and found https://github.com/ms-iot/samples/tree/develop/HelloWorld/CS

I've downloaded entire https://github.com/ms-iot/samples  repository and start work with Visual Studio 2017 Community Edition. After few clicks you will find following page:

https://marketplace.visualstudio.com/items?itemName=MicrosoftIoT.WindowsIoTCoreProjectTemplatesforVS15

There is a picture - where new Project is Windows IoT Core I've installed almost all tools under Visual Studio Installer tool. No one shows Windows IoT core.

image

Pic. 19 Web Page with Windows IoT Core download component required to build Joule 570X Examples.

Then I've found BIG GREEN BUTTON - Download. After download this and run magic Windows IoT Core Appear on Visual Studio 2017 Build Enviroment.

I was blinded. Now path goes straight.

Open Visual Studio 2017.

Open Soultion HelloWorld in C# (yes ... C# not C++ that was small suprise for Embedded Engieeer)

Remember to set on project setting as Universal Windows -> Extensions (Windows IoT Extension for UWP)  as requred SDK for Joule.

Then I've set Debug/x64/Remote Machine and just hit green right Arrow as run.

It will deploy and run our software.

image

Pic. 20 Visual Studio 2017 Builds Hello World.

After correct deployment visual studio will change look to following:

image

Pic. 21 Visual Studio 2017 Debugging Hello World.

On the device follwoing screen will appear:

image

Pic. 22 Screen of Joule 570X running Hello World under Windows IoT.

 

After hit Click Me! with mouse ... screen will show:

image

Pic. 23 Screen of Joule 570X running Hello World under Windows IoT - hit Click Me! with mouse.

Yeah, small change in MainPage.xaml.cs was made:

        private void ClickMe_Click(object sender, RoutedEventArgs e)

        {

            HelloMessage.Text = "Hello, element14 Joule Road Test";

        }

Next I've start to blink. I've stopped debbuger. Viusal Studio 2017 and Device was restored to main state.

image

Pic. 24 Default Starting Screen of Windows IoT

Then I've open BlinkyCpp.sln from downloaded repository.

Hit build and deploy ...

And on device screen appears foolowing picture:

image

Pic. 25 Screen of Joule 570X running GPIO Example.

 

And big red point changes red/white blinking. Acutally that wasn't expected result. I thought that some diode wil blink as in Ostro solution. Therefore I've look into the code.

In file MainPage.xaml.cpp there was following code:

 

pin_ = gpio->OpenPin(LED_PIN);

pin_->Write(pinValue_);

pin_->SetDriveMode(GpioPinDriveMode::Output)

 

Where PIN_LED was binded to 5. I've changed it to:

 

pin_ = gpio->OpenPin(0);

pin_->Write(pinValue_);

pin_->SetDriveMode(GpioPinDriveMode::Output);

 

Compiled and deployed. This time big red/white point was blinking and diode on Joule board was blinking also.

 

Summary

Intel Joule 570X is a very good piece of silicon. Powerful and nice to work with. All is well documented and there was no such sitiuation on entire road test that I was lost. Either from Microsoft and Linux/Intel side.

Most of the things work as expected. I didn't have strong problems with that.

During this test I've prepared functional devleopment enviroment for mine Stream Engine Processing - Both functional and ready to develop and deploy software.

On the other hand sad news appear during this road test - I've get sad notice of End of Life of this chip [5] - my entire enthusiasm just drop away. This info makes me sad.

Nice idea - maybe too powerfull for embedded developement but this could be one of the most powerfull solutions on the market.

I think that reasons of this decission could be found on market analysys [6] - but I'll be still crossing my fingers for this nice piece of silicon.

 

Bibliography

1. Intel® Joule™ 570x Developer Kit

2. Engieering Bench Talk Mouser Electornics

3. Getting Started Guide Arrow Electronics

4. Official Intel Board Specification

5. Intel End of Life Notice

6. Rabsperry PI 3 still rulez

Anonymous
  • You have right, there are lot's of pitfalls. There is no easy way. Actually I work in prototypes and staging and I'm used to work with such stuff. Therefore I've write "Minor problems for experienced Embedded Engieeers.". But If someone have less experience with this - this could be very shot road test - with brick. But I've confirm - I see big potencial in this device.

     

    Michal

     

    BTW, In new BIOS I've found options that have no description - just empty spaces that switch somthing - Pure prototype stuff, LOL.

  • Nice honest road test report.

     

    You confirmed the main reason I did not apply for this road test.  Too many bugs yet.

     

    With my ADD, I would have been stymied early and would have probably just given up.  I really hate obtusely written software and startup procedures.

     

    So you have my thanks for verifying that the Joule, while a great device, is not quite ready for the lesser prepared maker.

     

    DAB