Can the Intel Edison MCU be used without the standard Yocto linux? - microcontroller

Is it possible to use the MCU on the Intel Edison without having the standard Yocto Linux installed?
At the moment I have downloaded the specific Eclipse MCU SDK and have been using that to program the MCU on the Edison. I have the newest version (from Intel's website) of Yocto on the Edison as well.
If I switch to e.g. Emutex's Ubilinux will I still be able to use the MCU in any way? With or without the standard Eclipse MCU SDK?
The main reason I want to switch to Ubilinux is to have an easier time using ROS (Robot Operating System), but this is not strictly relevant to the question.

The Quark core runs its own Zephyr based OS, but I do expect some sort of support to be required on the Linux side too for intercommunication between CPUs. As dwelch said, the required drivers might be there for Ubilinux too.
If you are specific about ROS someone is working on adding it to Yocto. A quick google search also returned an unfinished project of ROS on Edison.

Related

QT, understanding cross-compiling for Raspberry PI3

I'm trying to understand how to cross-compile for a Raspberry PI3.
First, let me check if I understood correctly the meaning of the cross-compiling: is it to compile for a hardware that is different from the machine I'm building my application? This means, building for example a linux application from a windows system?
Second, all the tutorials I found required the building of QT for the target platform. Is this because to build a QT application I need the target-hardware-specific-built-version of QT libraries? Why there are no pre-built versions?
Third, I don't understand why a raspberry image is required in all the tutorials I could find.
Those are some of the tutorials I found, I found really strange that such a long setup is needed to cross-compile an application and I'm just wondering if what I'm trying to do (compile from a Linux machine a raspberry-pi3 QT application) is what those articles are really describing.
Tutorial 1, Tutorial 2, QT official embedded device page
You are correct, cross-compiling is building on one type of hardware (Host) to run on a different type of hardware (Target).
If you are willing to go for a commercial version of Qt, Qt will provided a turnkey solution (Boot to Qt) for developing on a specific Raspberry Pi. By turn-key, I mean they have all the target tools for cross compiling and the correctly built libraries for the target, etc. It's not cheap, and probably not the way to go for the hobbyist.
If you go with the open source (free) version of Qt, you will need to do most of the setup work yourself. The reason you are having a hard time finding everything built for you are mostly related to two things: The size of the distribution, and what you are building for what (i.e. which Qt version for which Raspberry Pi and which Raspberry Pi Linux version and which drivers, etc.).
The Raspberry Pi image is needed as you need the correct libraries to build Qt against. The cross-compilation tools need to link against the target (Raspberry Pi) images.
Yes, it is a long process to setup a Qt cross compilation environment, but it only needs to be done when once for each Qt version. Once you have setup the environment, building and deploying a Qt application on the target Raspberry Pi is really quite fast and easy.

Altera Arria V latest software for OpenCL

I recently bought a new Altera Arria V board 1. I am planning to use it to design a certain application using OpenCL.
Unfortunately, I didn't find so far the required software to get it work. I mean by that the Altera RTE for OpenCL and the required driver (aclsoc_drv.ko).
I would be grateful if you could help me how I can find the latest software!
Thank you all
You need to read the manual about how to install and what you need to install which you should be able to find here: Arria V SoC Development Kit and SoC Embedded Design Suite
OpenCL runtime environment and SDK you can find here: Altera SDK for OpenCL
Also Altera OpenCL guides will be helpful.
If I understand to your problem correctly, you are missing the required BSP and the base design to support OpenCL development for your Arria V board.
For this problem, please check with the board vendor (customer support) for the availability of the two items.
To be able to develop under Altera OpenCL framework, you need to load a basic design file on to the flash ROM / configuration device on the board. This is to provide some necessary IP support for the basic PCIe and memory access. It is usually provided with the BSP from the board vendor.
Along with the basic design file, drivers should be included as well for your host to recognise the OpenCL device.
Until you sort out the above missing parts, your OpenCL development environment should be up and running. Good luck!

OpenCL for custom systems on SoC prototyping board

Is it possible to run OpenCL on a system designed by a user on a SoC prototyping board? To be more specific, I have a ZedBoard (Xilinx Zynq) that has Dual ARM cores and a Programmable Logic (PL) Area. If I design a simple system of my own that has a video processing accelerator implemented in the logic area, an ARM core and an AXI interconnect, what do I have to do to provide OpenCL support for this simple system? (In this simple system, the ARM core could be the "Host" and the video processing accelerator could be the "device").
I am a student and I have only some basic knowledge about OpenCL. I have researched about my question and have only ended up confusing myself. What are the things that have to be done to provide OpenCL support for a SoC? I understand that this may be a big project, but I need a guideline where to start and how to proceed.
what do I have to do to provide OpenCL support for this simple system?
Implement a OpenCL platform that makes either use of your ARM CPU or the FPGA (or both). I'd say that is pretty much impossible for you; ARM would surely offer one for the CPU if it was easy (and they definitely have the financial means to employ capable engineers/computer scientists), and implementing accelerators on an FPGA requires in-depth knowledge of FPGA development, as well as compiler theory and experience in systems design. I don't want to sound mean, but you seem to have none of these three.
You asked where to get started; I recommend just writing a first accelerator that e.g. adds up a vector of numbers; as soon as you have that, you will have a clearer idea of your task.
If you want to have a look at a reference: The Ettus USRP E310 is a zynq-based SDR device. Ettus has a technology called RFNoC, which allows users to write their own blocks to push data through. Notice that this took quite a few engineers and quite some time to get started. Notice further that it's much easier than implementing something that converts OpenCL to FPGA implementations.
If you have access to the Xilinx tools: Vivado HLS 15.1 System Edition should compile OpenCL kernels. This will also be included in the SDAccel tool suite.
Source: UG973: Vivado Design Suite User Guide Release Notes, Installation,and Licensing
An alternative might be switching to Altera. They provide some good examples for the Altera Cyclone V SoC which is comparable to Xilinx Zynq devices (also includes ARM Cortex-A9) :
AlteraSDK for OpenCL
I am also a student and my current project is also going on a similar direction, i have successfully installed a version of opencl called POCL on the zedboard, it successfully detects the arm cpu of the zedboard. To install pocl, you need llvm and a horde of other things as well. but basic steps to get pocl up on the zedboard are given below:-
Installing pocl:
http://www.hosseinabady.com/install-pocl-opencl
running example:
http://www.hosseinabady.com/embedded-system-by-examples/opencl_embedded_system/opencl-vector-addition
Lots of dependency: can resolved easily
but LLVM make sure you install 3.4 version for pocl 0.9
Steps to install llvm
https://github.com/pacs-course/pacs/wiki/Instructions-to-install-clang-3.1-on-ubuntu-12.04.1-and-12.10
POCL 0.9 is successfully working for me, as you do the installation you will face many other missing dependencies like hwloc, mesa libraries, open gl/cl headers icd loaders i hope you can resolve them as its a very big list to put up in stack overflow.
In order to detect your fpga as an open cl device, thats not going to be a trivial thing to do, you can refer to this link question i posted on github
https://github.com/pocl/pocl/issues/285
and also a research paper published by hosseinbady found on the publications link on the pocl website
http://pocl.sourceforge.net/publications.html
hope this helps you
Try the ARM OpenCL SDK. The Zedboard has an ARM A9 CPU, this should have a NEON SIMD vector unit http://www.arm.com/products/processors/technologies/neon.php which can run OpenCL. See http://www.arm.com/products/multimedia/mali-technologies/opencl-for-neon.php.
The Zedboard isn't listed as an OpenCL conformant platform https://www.khronos.org/conformance/adopters/conformant-products#opencl.
So there is a chance the ARM driver will not work.
Good luck!
If still relevant, try this paper OpenCL on ZYNQ [PDF]
Also note that Zynq-7000 is listed on https://www.khronos.org/conformance/adopters/conformant-products#opencl ( OpenCL_1_0 ), hence the compatibility.

Is ROS (Robotic Operating System) compatible with all robots?

I need to know if ROS can work with all kits? or needs specific requirements?
I mean, can I buy any kit and control it by ROS?
If yes, is there any needed chip, ports, or connectors?
Thanks in advance.
You should use http://answers.ros.org/questions/ for questions regarding ROS, but yes, it is in general robot-agnostic.
No, not all robots. Only robots with X86 or ARM hardware that can run Ubuntu Linux.
There are also experimental versions of ROS for OS X, Gentoo Linux, Arch Linux, and Android (NDK)
When choosing your hardware platform, consider ROS support for various sensors and actuators, as well as the library of packages that add other capabilities.
Here's a very long list of robots that use ROS.

Why do all Intel processors need a BIOS?

In the ARM world vendors supply their own BSPs to initialize board peripherals. Intel boards that you buy on the market all seems to come with some version of BIOS. Does BIOS do thing that BSPs cannot do? What if some hobbyist or engineer wants to do development using Intel processors but do not want anything to do with the BIOS? Why restrict programming with a layer of firmware that programmers have no source access to?
Typically the BIOS is no layer of firmware but rather the firmware to boot the system. After booting control is provided by the OS such as Windows or Linux.
This is not really my area, but ....
The initials BSP are heavily overloaded. It appears you mean board support package and not Boot-strap-processor or one of the other computer related terms that use those initials.
It is my understanding that BSP's (board support packages) are primarily used for embedded systems and indeed, when I did a web search on 'Intel bsp', most of the hits were discussing Intel Galileo and Intel Edison boards, which are targeted toward IoT (internet of things) projects and other embedded projects. But I also found BSP's, for sale and for free, in executable and in source form, for a wide variety of Intel boards. If you are working with Linux, you might want to check out https://www.yoctoproject.org/ .
I don't know if there are any vendors packaging a BSP with an Intel board, but it is certainly possible.
The only open source boot firmware for Intel processors that I know of is coreboot. It doesn't support every board. If you are building your own board, then you could customize it to work with your design. A typical modern BIOS has lots of bloat such as ACPI and UEFI that you may or may not want.

Resources