Evaluation Type: Independent Products
Application you used the part in: Development system for Stream Data Processing Delivery.
Was everything in the box required?: No, Additional Power Supply, optionally - Powered Hub, Keyboard, Mouse, LCD
Comparable Products/Other parts you considered: I've consider comparation with Rapsberry Pi3
What were the biggest problems encountered?: Minor problems for experienced Embedded Engieeers.
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
Inside grey package is colorfull one - Pic.2
Here is the detail content of package after unboxing. Detailed Content is presented on Pic.3
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.
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.
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:
Pic.6 First proper run of Intel Joule 570X - After power plugin
On the monitor screen I saw following picture.
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.
Pic. 8. Setup of Windows IoT
Then I've turn Bios with F2 during boot and set two parameters as specification says.
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 ...
Pic. 10 Windows is starting on Joule 570X
System windows 10 IoT is booting ...
Till ...
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.
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
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:
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)
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.
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.
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.
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:
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.
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.
Pic. 20 Visual Studio 2017 Builds Hello World.
After correct deployment visual studio will change look to following:
Pic. 21 Visual Studio 2017 Debugging Hello World.
On the device follwoing screen will appear:
Pic. 22 Screen of Joule 570X running Hello World under Windows IoT.
After hit Click Me! with mouse ... screen will show:
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.
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:
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
Top Comments