RoadTest: Atmel SAMA5D4 Xplained Ultra
Author: pettitda
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?: TI Sitara
What were the biggest problems encountered?: 1. Not able to get the recommended touchscreen to work correctly 2. Getting started is harder than necessary due to poor website and documentation spread out among several sites
Detailed Review:
I applied to road test the Atmel SAMA5D4 Xplained Ultra board in order to complete a proof of concept design for a kiosk. I had prior experience with TI Sitara family of processors as well as general knowledge of Linux. However, I did not have any experience with Atmel processors or with the Yocto embedded image build environment. So, there was a fairly steep learning curve to get started developing for this board. Atmel, in my opinion, hasn't done a very good job helping potential customers across this learning curve even for engineers with some prior experience with embedded Linux processors. In the end, I was only able to partially reach my goal working in my free time over the two month evaluation period.
Here's the test plan that I outlined when I applied to road test the Atmel SAMA5D4 Xplained Ultra board:
1. Setting it up using the quick start guide, user's guide, and online documentation.
2. Running any applicable demos designed to run on the development board
3. Setting up the development environment and create a "hello world" application
4. Testing modules for each of the peripherals to confirm everything is working
5. Testing the board with the intended add-on hardware to confirm compatibility
6. Setting up a skeleton application of my design idea
7. Adding as much functionality as possible to the application to prove out the board's suitability
I will outline my steps through this plan in the following paragraphs.
1. Setting it up using the quick start guide, user's guide, and online documentation.
There wasn't much of a quick start guide at least that I was able to find. In fact, the only documentation to come inside the box was this small glossy insert:
It simply directs you to Atmel's website via the address http://www.atmel.com/sama5d4xplained.
This website has a wealth of information about the processor itself including a 1776 page datasheet for the processor family. However, if you look to the right of the page and click on the link Start Now under Get Started, it takes you to a page which describes downloading Atmel Studio 6 (which isn't applicable to the SAMA5 family of parts). If you happen to make your way to the "tools" tab you can download a "software package" which is simply a zip file full of driver code for use in a bare metal implementation with no real direction on how to proceed. In the time since I started my evaluation, they have added a link to AT91SAM OS/RTOS solutions page which links to the Linux4SAM, Android4SAM, and Windows4SAM pages. So, there appears to be some slow improvement in the website.
The Atmel SAMA5D4 Xplained Ultra user's guide is very useful. It describes the hardware in great detail and even includes a full set of schematics for the board. However, very little is said about programming the board or setting up a development environment (just three sentences):
2. Running any applicable demos designed to run on the development board
After reading posts by road-testers and others on the forum, I found that there was actually only one demo with sub-versions for HDMI, PDA TM4301 display, and PDA TM7000 display as well as one for no display. The no display version is available through a link from this page:
GettingStarted < Linux4SAM < TWiki. However, all the subversions can be found on the FTP site at ftp://ftp.linux4sam.org/pub/demo/. For other demos, you need to replicate the build environment and build them from scratch. All of the demos loaded and ran without hiccups except that the touchscreen never worked which severely limited the usefulness of the demos. To get anything other than a pretty screen, I had to log in to the board using either the EDBG port or once the IP connection was configured use SSH to log in through the ethernet port.
3. Setting up the development environment and create a "hello world" application
As I eventually found, there are a couple options here. What is probably the easiest choice for most people is to simply download a pre-packaged SDK. However, there's not much documentation on what image the various available SDKs match up with. There are some here: ftp://ftp.linux4sam.org/pub/demo/yocto-qt5-sdk/ and there are some here: ftp://ftp.linux4sam.org/pub/demo/yocto-qte-sdk/. There are links to these from near the bottom of this page: SoftwareTools < Linux4SAM < TWiki. As far as I can tell, the SDKs under yocto-qt5-sdk match up with the atmel-qt5-demo-image-sama5d4-xplained image and the SDKs under yocto-qte-sdk match up with the atmel-qt4e-demo-image-sama5d4-xplained image which I will mention later. However, neither of these images are available for download as far as I have found. You have to build them yourself. Now does it matter if your SDK exactly matches the image you load on the board? I'm guessing probably not, but I don't know for sure.
The other option is to set up a Yocto build environment and build your own image and/or SDK. This takes a relatively powerful PC running Linux (or a virtual machine with Linux installed), at least 50 GB of free hard drive space, and several hours to complete. The process is explained fairly well on this page: PokyBuild < Linux4SAM < TWiki. Some of the images that you can build include core-image-minimal (a minimal linux distribution), core-image-sato (a minimal distribution with a Gtk based GUI), atmel-qt4e-demo-image (a full distribution with an example GUI built with QT4 embedded), and atmel-qt5-demo-image (a full distribution with a QT5 GUI). Some of the SDKs that you can build include meta-toolchain-qte or meta-toolchain-qt5. I assume these match up with the last two images I named. These SDK builds create shell scripts similar to those available for download above. When you execute the shell script, the SDK is installed in the /opt directory of your machine (unless you give it an alternative location). It gives you an environment setup script which you will have to run in order to setup your environment to compile applications for the board.
After I had went through the process of installing one of these SDKs, I found that I could have also simply set up the toolchain alongside the image in the build directory. This is documented in section 3.1.3 of this document: Yocto Project Application Developer's Guide.
There are several online manuals that you can use as references about building images, SDKs, and building applications. They are: Yocto Project Development Manual, Yocto Project Reference Manual, Yocto Project Application Developer's Guide, BitBake User Manual, http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html, and Poky Reference Manual.
I spent quite a bit of time trying to get Eclipse setup with the Yocto Eclipse Plug-in to develop applications. However, in the end, Eclipse was very unstable and crashed about once every five minutes making it unusable. So, don't waste your time on that...
In the end, building an application can be as simple as this: Atmel SAMA5D4 Xplained Ultra Road Test -- Building a QT application. Alternatively, see sections 5.1 and 5.2 of this document: Yocto Project Application Developer's Guide. Section 5.1 describes building an application with autotools and section 5.2 describes building an application using only make.
4. Testing modules for each of the peripherals to confirm everything is working
Here's where the evaluation of the Atmel SAMA5D4 Xplained Ultra went south for me. One of the main peripherals I wanted to use for my kiosk proof of concept was the touchscreen/display. The user's guide recommended the PDA TM-4301 display module. This module includes a 4.3 inch TFT display plus an Atmel Q-Touch chip with four capacitive touch "buttons" and an Atmel maxTouch MXT336 touch screen controller with projected capacitive touch screen. I spent the bulk of my time trying to get the MXT336S controller working with the board. While the driver appears to load, no touch screen data appears at the port. In discussions with other Road-testers, it appears that this touchscreen should and has worked for others. So, I suspect that the MXT336S chip and/or the IO pin used for the touch screen interrupt on the SAMA5D4 processor was defective. At any rate, I was unable to continue my evaluation past this point and the last three items of my test plan remain un-completed:
5. Testing the board with the intended add-on hardware to confirm compatibility
6. Setting up a skeleton application of my design idea
7. Adding as much functionality as possible to the application to prove out the board's suitability
In summary, it would appear that the Atmel SAMA5D4 Xplained Ultra is a decent hardware platform for early development of applications for embedded Linux products. However, Atmel could do much to improve both their software tools/resources and getting started documentation as well as their website(s). Engineers are frequently called upon to learn new technologies and expand their skill set (especially in small companies) so silicon manufacturers such as Atmel need to do all they can to ease the learning curve for those engineers.