NXP i.MX RT1170 High End Processor Evaluation Kit - Review

Table of contents

RoadTest: NXP i.MX RT1170 High End Processor Evaluation Kit

Author: skruglewicz

Creation date:

Evaluation Type: Development Boards & Tools

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?: Advent Azure Sphere Dev KIT, Arduino Nano 33 IOT, NXP LPC55S69-EVK included in the Advent Monarch LTE-M Dev Kit.

What were the biggest problems encountered?: 1) ---- During Unboxing, I realized that both the camera sensor module and the TFT LED display were not attached to the EVK. I looked through online documentation for the kit and could not find any indication on the orientation and how to attach these components to the EVK.I created 2 tickets on the online NXP customer support portal at https://support.nxp.com/s/ , And I received my 2 answers in a day. I did end up braking a part on the connector for the TFT display ribbon cable. the details of these 2 cases re mentioned in the review. 2) ---- Connecting the TFT was difficult. I was able to get help from customer support and the forum community. But broke the piece of the connector that secured the ribbon cable to the connector on the EVK. I had to order another connector that had the piece the secure the TFT ribbon. 3) --- I had trouble with an error in the NXP software graphics GuiGuider. I posted a question to the NXP GuiGUider Forum. The Response: was that I needed the Java Runtime Environment (JRE) installed on my machine. I had the development environment JDK but I needed to install the JRE. I installed the JRE and the problem was solved. This prerequisite was in the User Manual which I shold have caught. 4) ----

Detailed Review:

New PUBLISHED   07/03/2021

This review will dive into embedded software development using the i.MX RT1170-EVK PCB. The evaluation kit (EVK) helps you take your design to the next level by reducing complexity and accelerating time to market. NXP’s MCUXpresso software and tools offer comprehensive development solutions designed to optimize, ease and accelerate embedded system development of applications based on Cortex-M core devices from NXP. At the center of the EVK is NXP part# MIMXRT1176DVMAA processor. The EVK PCB allows embedded software developers to experiment with the powerful capabilities of the processor.  The i.MX RT1170 MCU Family of processors are setting speed records at 1GHz. This ground-breaking family combines superior computing power and multiple media capabilities with ease of use and real-time functionality. I will be experimenting with some of these capabilities using the MCUXpresso SDK for the i.MX RT1170 Board. The evaluation kit supplied also contains a  5.5" 720 TFT LCD DISPLAY, and a camera module .which I also plan on experimenting with.

 

I do not have an electronics background, but I am interested in IoT. My background is more on the software side, with a Bachelors of Science Degree in Computer Science from Boston University. I Graduated from BU in 1980 and had been working as a Software Engineer since then until I retired in 2018.  I've been presently experimenting with IoT and I've used a few Development kits. I'm not keen on soldering (my dexterity is not as good as it use to be !)  So, Development Kits allow me to experiment without soldering.

 

I have evaluated another NXP product, the LPC55S69 EVK for a review on the  AVNET Monarch LTE-M Development Kit -- EU . This kit uses the NXP LPC55S69-EVK as the base MCU PCB with an attached Avnet Monarch Go Arduino Shield. Attached to this Shield, is a Sequans Monarch Go LTE modem. This kit is comprised of hardware components from 3 hardware companies (NXP, Advent, Sequens) and 1 Telecom company (Verizon). The Ultimate goal of this product is to develop, prototype and test embedded software for use with the Sequans Monarch Go LTE Modem.

 

The Development for NXP boards is done through NXP's  free Software development tools. You will need to become a member, to use them, but it's all FREE. I will describe the use of these tools and give you valuable links to them in this review.

 

So let's get started shall we.....

Unboxing of the Kit

The .MIMXRT1170-EVK arrived as scheduled on Thursday May 27 2021 late in the day via UPS. I did not get to the Unboxing till a day later on Saturday May 29 2021, about midday. Here are some images and a video of the unboxing. Now its time to dive into the review.

 

Unboxing Video and Picture.

image

 

Camera module image sensor

If you watch the unboxing video I mentioned a empty static bag (in the image it's to the left). Well it was not empty the MIMXRT1170-EVK Packing List. has an item that I could not find.

"Item: 901-77346 Description: Full resolution 2592x1944 Pixel Size 1.4um x 1.4um camera module image sensor with Huatian technology"

Well it was in that static bag, but was too small to see at first. The bag was marked clearly with "901-77346".Luckly I did not throw the bag out in the trash!!! LOL

 

 

image

camera module image sensor with Huatian technology. that will plug into the  camera module connector on the board.

The Quick Start Guide Card Closeup

  • I thought I would take a closeup of the 4 pages of the guide. The link given on the last page http://www.nxp.com/MIMXRT1170-EVK/startnow should be your first landing page on the NXP website. If you have not already done so, I recommend you become a member. They have great resources and I have given links to them also in my REFERENCES section at the end of this review.
    • Page1 describes all the components of the EVK.
    • Page 2 shows you how to plug in the power supply and describes the demo that is run when you turn on the board.
    • The real fun comes when you explore the getting started page link on the back cover . this will be describe in the next section.
COVER PAGE 1
image image
PAGE 2 Back Cover
image image

 

 

GET STARTED -  http://www.nxp.com/MIMXRT1170-EVK/startnow

image

Follow the link   http://www.nxp.com/MIMXRT1170-EVK/startnow to this landing page

I'll describe the navigation links on the Left side that when Selected display the Topic content in the right Frame.

I have followed similar getting started pages when I evaluated another NXP product, the LPC55S69 EVK for a review on the  AVNET Monarch LTE-M Development Kit -- EU .. It was very helpful and guided me through the steps I needed to run my experiments with that EVK. experimentation with the

Header 1 Header 2
On the right hand side of the page you should go through every option on the menu. At the end you will have the Software tools (MCUXpresso IDE & SDK) and examples that you will need to start exploring the capabilities of the EVK.As you click on these links A page is open to the right with the content on the topic. image
This is similar to the 2 pages in the Quick Start Guide pictured above. image
These links will get your embedded software tools installed and running. It demonstrates how to Build and Debug the numerous examples in the SDK.You will learn how to build an SDK complete with examples for this specific EVK and the RT1170 family of MCU's image
These links will get you to explore the examples by building and debugging one of the examples in the SDK image

 

I have gone thru these steps and have my software development environment ready to start some of my experiments on this review. But first I'd like to describe my wonderful experience with the NXP support portal. They were able to answer my questions and led me on the right path to success with the EVK.

 

NXP Support

NXP Customer Support Portal.

Attaching the Camera module and the TFT Ribbon cable

  • I realized  both the camera sensor module and the TFT LED display were not attached to the EVK. I looked through online documentation for the kit and could not find any indication on the orientation and how to attach these components to the EVK. I created 2 tickets on the online NXP customer support portal at https://support.nxp.com/s/ , And I received my 2 answer in a day. I've included the screen shots for these 2 cases as they appear on the customer Support Portal. very nice experience with getting the problem solved. I highly recommend it.
  • image

Ticket#1 Camera module

  • Screen shot of my case support request on the right and the Support Solution on the Left
  • image

 

 

Ticket#2 TFT Ribbon cable

  • Screen shot of my case support request on the right and the Support Solution on the Left
  • image

 

NXP Community Forums

  • Another great place to get answers on the the nxp.com site is through the Community Forums. I use the i.MX Forums page for questions on the i.RXMX1170-EVK.
  • I received an answer to my question about the camera module SDK examples. Here is my question and my reply posted to the i.MX RT Forum.

image

 

  • The information proved to be correct and I was able to load in the example into the IDE. I did respond to the contributor of this reply post and marked the reply as "ACCEPT AS SOLUTION".
  • Next, I'll list some highlights and chip architecture of the EVK. and then some capabilities of the EVK and Finally the RT1170 line of processors.

 

Some Facts about the i.MXRT1170-EVK

I thought to Include these picture suppled from the FACT SHEET for discussion in this review.

 

Product Highlights

The EVK contains an MCU from the family of processors known as the NXP i.MX RT1170 family. The following list was taken from the fact sheet and all the features of the MCU.

Ok, some of the highlights of the i.MX RT1170 family for me, include:

The multicore capabilities with the M4 and the M7 Cortex processors.

The integrated multimedia for GUI & HMI.  The graphics accelerator and display interfaces available.

The multiple memory options available.

the Security options available.

 

Here are the highlights:

image

 

i.MX RT1170 MCU FAMILY CONFIGURATIONS

According to the "Quick Start Guide" on Page 1, the MCU on the EVK is part number is MIMXRT1176.

image

The following configuration grid from the fact sheet, shows this MCU on the EVK at the top of the pack with only a  NO "Tamper Protection" feature.

image

 

Chip Architecture

The following Chip Architecture Diagram, is included in a lot of Presentations and Literature on the MCU family. The dotted lines represent features not supported on all MCU's in the i.MXRT1170 family.

Notices that " Tamper Detection" in the "Security" section is not on all MCU's in the family. In fact it is only available on the industrial only qualifying chip, the  i.MXRT1173. Not sure what "Target Detection" is, but it might have something to do with qualifying the chip as Industrial Only. Some of the other chips in the family do not support a "Secondary CPU" and/or "Multimedia".  The chip included on the EVK however, does include all these features.

Notice there is an abundance of Connectivity features and an abundance of Times, Multimedia, System Control and Security features.

 

image

 

EVK Board Capabilities

This list all the neat features available for you to experiment with on the EVK. There are plenty of interesting interfaces and features packed into this kit.

image

 

NXP Development Software

If you have gone through the Getting started exercise on the NXP getting started Page, then you will have experienced and should have your development environment set up .The following section will describe the NXP Toolchain available to developers for FREE.

 

1. MCUXpresso IDE

     If you have not gone thru the getting started page and want to install the latest version of the editor, goto MCUXpresso Page

  • According to the user manual, the MCUXpresso IDE is a fully featured software development environment for NXP’s ARM based MCUs, and includes all the tools necessary to develop high-quality embedded software.
    • The MCUXpresso IDE is based on the Eclipse IDE and includes the industry standard ARM GNU toolchain. It brings developers an easy-to-use and unlimited code size development environment for NXP MCUs based on Cortex-M cores (LPC, Kinetis and iMX RT). The IDE combines the best of the widely popular LPCXpresso and Kinetis Design Studio IDE’s, providing a common platform for all NXP Cortex-M microcontrollers.
    • MCUXpresso IDE is a free toolchain providing developers with no restrictions on code or debug sizes. It provides an intuitive and powerful interface with profiling, power measurement on supported boards, GNU tool integration and library, multicore capable debugger, trace functionality and more.
    • MCUXpresso IDE debug connections support Freedom, Tower, EVK,LPCXpresso and custom development boards with industry leading open-source and commercial debug probes including MCU-Link, LPC-Link2, PEmicro and SEGGER.
    • The fully featured debugger supports both SWD and JTAG debugging, and features direct download to on-chip and external flash memory.
  • I am running the IDE on 2 of the 3 Host operating systems:
    • Microsoft® Windows® 10 (64 bit)
    • Ubuntu Linux® 18.04 LTS (64-bit host OS)
  • Refer to the users guide pdf file named "MCUXpresso_IDE_User_Guide.pdf" located in the installation directory on your installation for more instructions on How to use the IDE.
  • The getting started page, does a great job of getting you running SDK examples on the board quickly.

 

2. MCUXpresso SDK for i.MXRT1170-evk

Again the getting started page will have taken thru the installation of the SDK for the i.mxRT1170-EVK, but if you have not already installed it yet or want to update the SDK this section might help.

  • NXP provides SDKs for toolchains (including MCUXpresso IDE) via their SDK Builder site.
  • These SDKs can be installed via a simple ‘drag and drop’ mechanism which will then automatically enhance the IDE with new part and board knowledge (and usually a large range of examples). SDKs for MCUXpresso IDE can be generated and downloaded as required using the SDK Builder on the MCUXpresso Tools website at: MCUXpresso SDK Builder
  • Shown below, is my 2 SDK builds for Windows 10 and Ubuntu on the SDK Builder portal dashboard.. For windows I selected all the features and for Ubuntu I selected the default. Notice the difference in size between the two. The Ubuntu version does not contain some of the experiments that I want to do so I'll do those on the Windows 10 machine.  But if  I wanted to have those features on Ubuntu, I could generate another SDK with those features only. This is a very cool way of supplying an SDK. and I have not seen it used in any other IDE's.
  • image
  • Obtaining and Installing an SDK via SDK Builder
    • Users of earlier versions of the IDE may be more familiar with this model of SDK build and installation.
    • SDKs are installed and managed via the Installed SDKs view, which is located by default as the first tab within the Console view.
    • SDKs are free to download (login is required); MCUXpresso IDE offers a link to the SDK portal (shown below) from the Installed SDK Console view. From this portal, required SDKs can be downloaded onto the host machine. Alternatively, go to Help -> Additional Resources ->MCUXpresso SDK Builder ... to open this portal in an external browser.
        • SDK IMPORT

image

 

    • Once downloaded, an SDK package(s) can be installed by simply dragging from the downloaded location into the Installed SDKs view. Once dropped, you be prompted with a dialog asking you to confirm the import – click OK. The SDK package(s) will then be automatically installed into MCUXpresso IDE part support repository.
    • Once complete the “Installed SDKs” view will update to show you the package(s) that you have just installed.
      • SDK Import View

image

 

    • By default, SDKs will install into a Common folder and will therefore be available to any MCUXpresso IDE instance. Alternatively SDKs can be installed into the current Workspace so making their installation local to that Workspace. The selected install location is shown in the SDK Window text as highlighted above. Also highlighted is the new version information string (displayed in grey), this feature allows different SDK builds to be distinguishable. Please also see SDK Advanced Importing [34] for further information on SDK installation options.

 

  • Importing Example Projects (from installed SDKs)

  • In addition to drivers and part support, SDKs also deliver many example projects for the target MCU.
  • To import examples from an installed SDK, go to the Quickstart panel and select Import SDK example(s).
      • image
      • This option invokes the Import SDK Example Wizard that guides the user to import SDK example projects from installed SDKs. This will initially launch a page allowing MCU/board selection. Select the i.MXRT1170-evk board.
      • The SDK Example Import Page Comes up, allowing you to select the examples you would like to experiment with. You can select the entire examples , but you should only select the examples you want to work with. For example the screenshot below shows the blinky example run on the Cortex M7 processor. Pressing the "Finish" button  brings the example into the project.
    • image
    • The next screenshot shows the example in the project explorer after the FINISH button is pressed.
    • image

3. MCUXPRESSO Pin Tool

  • Enables you to configure the pins of a device.  The Pins tool enables you to create, inspect, change, and modify any aspect of the pin configuration and muxing of the device.
  • This tool is worth mentioning because it is used in all SDK examples to configure the MIMXRT1176 pins.
  • It seems complex at first glance, but there are videos available and the User Guide for MCUXpresso Config Tools is quite useful.
  • At the bottom of the IDE, in the "Miscellaneous" section press "MCUXpresso Config tools" and then press "Open Pins".  NOTE: be sure you have a project selected.
  • image
  • The tool perspective window opens as follows. A Perspective is basically a layout of windows that represent a task in the IDE.
  • image
  • I used the tool in another review of an Development kit that included the NXP LPC55s69-EVK board. I did an experiment to connect a "MikroE-RelayCLick"to the pins on the board.
  • Here is a link to the section in my review where I describe using the tool. Connecting a MikroE-RelayClick to the Kit
  • This is a very useful tool, in setting pins on the EVK that are to be called from your code. Based on the configuration in the tool, code is generated for your project. This mapping tool allows you to visualize the connections to pins.
  • Now on to some experiments width the SDK and the MXRX1170-EVK

 

Experiments

I did a few experiments to run some of the IMXRX1176 chip and the EVK capabilities through its paces. This section contains my notes on the experiments.

1. Graphics

The EVK came with a TFT  LCD display. I used this display to conduct experiments with the Graphics capabilities of the iMX RT1176 chip on the EVK

5.5 inch 720*1280 TFT LCD display with touch sensitive overlay, 2-lane or 4-lane MIPI interface Part#: RK055HDMIPI4M

image

There are several graphics libraries supported by the IMXRX1170-EVK, (refer to GUI solutions for NXP MCU) , but I used the Light and Versatile Graphics Library (LVGL) for my experiments. And the good news is that it is FREE to use with the open source license.

image

The SDK has a few examples using this library. They are mentioned in this section and are very useful for experimenting with the TFT Board connected to the IMMX1170-EVK. SO lets get into it, shall we.

 

Connecting the TFT board to the EVK

You will need to attach the Ribbon cable coming from the TFT board to the EVK.

image

On the Back of the board locate the "MIPI LCD connector"

image

1. Gently pull out the black piece on the connector, which is used to secure the ribbon cable to the MIPI LCD Connector.

image

 

2. Turn over the LCD Board and Insert the cable into the connector blue strip down

image

3. Snap the the black piece back into the connector to secure the cable end to the connector. It goes under the ribbon cable.

image

 

Now Turn both boards over and you ready to experiment.

image

You can piggy back the TFT display to the back side of the EVK board using spacers . I might try this out with spacers. Stay tune...

 

Running some SDK Graphics examples.

OK, I did some experiments with the SDK.  Import the examples from the littlevgl_example directory as follows.

image

Experiment 1 - littlevgl_demo_widgets_bm_cm7

  • This demo application shows lvgl widgets examples on the Display.
  • Controls like buttons, sliders, text entry, checkbox, single number, number range and ON/OFF slider.
  • Visuals like Line Charts and Bar Chart.
  • Selectors like Calendar for dates. Roller list and dropdown list.
  • Run the example and observe the widgets displayed on the TFT Display.
  • Here's a video of the demo running. Note the 3 section tabs (Controls, Visuals, Selectors) across the top of the screen. Each tab demonstrates the widgets listed above. Sorry for the blurred image! I was so happy to get this running

 

Experiment 2 - littlevgl_demo_widgets_cm7

Visually I did not see any differences in the widgets displayed on the screen between these 2 examples. I was unable to find any differences in each readme file? I'll have to walk through the code and try to discover the difference.

If anyone reading this review knows the answer , please leave a comment at the end of this review.

 

Experiment 3 - littlevgl_guider_cm7

Using NXP GUI Guider -- An HMI Editor

  • For this experiment you will need to have the FREE NXP Software Tool "GuiGuider ", Which you download from here Download GUI Guider
  • Here is the user guide and a great page and video Getting Started with GUI Guider which I followed and was very helpful getting my experiments running.
  • After downloading and installing GUI Guider I ran through the video on the getting started page. I did have a few problems but with the help of the NXP Forum and the User manual I was able to get me through it through it
  • The video  Getting Started with GUI Guider example takes you through
    • Using the editor to design your HMI GUI,
    • Running a simulator on your workstation,
    • Testing your design directly to the board,
    • Generating you code right to your sdk project. so you BUILD and Debug in MCUXpresso
      • This is important because you want to install the code within the sdk example. You will need to make some modification to the demo project described in Appendix A - Modifying the SDK demo (littlevgl_guider_cm7) project checklist. Doing it this way has it's benefits to allow you to modify your design in Gui Guider and generate the code and all that you need to do is rebuild the code.
      • another way of getting your code to your sdk project is to Export your design (I'll explain later in the review). This will generate folders that you can copy/replace to the same folders in the SDK project. This is much easier, in that you don't have to mess with the compiler structure, but you will need to copy the files to the project everytime you change your design. This is kind of awkward because every time you export code you need to move it from the export directory to the SDK project or the Project your Designing before Building and running it in MCUXpresso.
    • Design a Human Machine Interface.

      • Start by creating a project and follow along with the training video to design a simple HMI.

      • Then you can run your design through a simulator, send it directly to the target board to display on the connected TFT display and Generate code to place in the SDK example code to build and embed on the target device.

 

The first problem ...

      • I ran into was, I did not have the JAVA runtime installed
        • I was getting the following error when trying to generate code, run simulator,or run target
        • Error: opening registry key 'Software\Avast\Java Runtime Environment' Error: could not find java.ll Error: Could not find Java SE Runtime Environment.
        • skruglewicz_0-1623123614764.png

My Solution

        • The JRE was missing and I only had the JDK installed. I should have read the GuiGuider User Guide... I am no longer getting the following error:

          • Error: opening registry key 'Software\Avast\Java Runtime Environment' Error: could not find java.ll Error: Could not find Java SE Runtime Environment.

        • What I did to resolve this was to

          • 1) uninstall the 2 versions of the JDK as I wanted a fresh install.

            • I download the follow version.

            • And installed it. The install only installs the JRE because I don't need the JDK at the moment.

          • 3) I then added path "C:\Program Files\Java\jre1.8.0_291\bin" to the PATH System environment Variable.

          • 4) to test the installation from a command I ran the following java command , and it displayed the current version.

            • skruglewicz_0-1623434917502.png

 

THe SIMULATOR

 

    • Selecting the button "Run Simulator"  Generates the following screen. I have my GUI Guider workspace with my design sitting over the simulator.
    • Refer to the Video I mentioned, to run your design in a simulator on your OS.
    • I'm not sure why the simulator app takes up the whole screen?
    • I'image

  • Running your Design directly on the MXRX1070-EVK -- The RUN Target Button

    • This will embed and run your design the EVK and will be displayed on the TFT DISPLAY
    • I had a problem at the beginning, but I was able to resolve it, by unplugging the board and unplugging the USB cable from the board.
    • I keep on having to do this sometimes when running GUI Guider. Even other experiments stop working. I'm not sure why.?
    • Here's the error list I get.
      • Then error list is not complete:
      • ERROR:
      • [100%] Built target littlevgl_guider_cm7.elf
        Ns: MCUXpresso IDE RedlinkMulti Driver v11.3 (Mar 30 2021 16:50:12 - crt_emu_cm_redlink build 18)
        Wc(03). No cache support. Nc: Found chip XML file in C:\Users\skrug\Documents\MCUXpressoIDE_11.3.1_5262\workspace\evkmimxrt1170_littlevgl_guider_cm7_experiment1\test2\deploy\config\MIMXRT1176xxxxx.xml
        Nc: Restarted LinkServer process (PID 11448).
        Ns: redlink server client - failed to receive response (to op 26) from server after 2000ms - timed out (rc 138)
        Ns: redlink server client - failed to receive response (to op 26) from server after 2000ms - timed out (rc 138)
        Ns: redlink server client - failed to receive response (to op 26) from server after 2000ms - timed out (rc 138)
        Nc: Reconnected to existing LinkServer process.
        Ns: redlink server client - failed to receive response (to op 26) from server after 2000ms - timed out (rc 138)
        Nc: Server OK but no connection to probe 0 core -2(ANY) (after 3 attempts) - Ee(42). Could not connect to core. Ed:02: Failed on connect: Ee(42). Could not connect to core. Et:31: No connection to chip's debug port
    • My solution is...
      • to turn off the board, unplug it, disconnect Power and Debug cables.
      • wait a few minutes
      • then turn everything back on again.
      • Then the DEBUG connection is reestablished?
  • Generate Code -- To be embed in your GUI Guider supported Project

    • Press the generate code button and the code will be generated for your design.

image

    • The code is generated to a folder under the SDK project folder with the name you gave it in GUI Guider. My example is using "test2"
    • You will have to change the compiler structure as explained in the training video in order to Build and Compile this.

 

Another way to Port LVGL C source file generated by GUI Guider to the Template project
      • To port LVGL C source files generated by GUI Guider to the Template project, perform the following steps.

1. Design the GUI APP by GUI Guider.

2. Click Generate Code to generate source code.

3. Click File > Export Code to export the GUI APP source code.

      • The source folder with source files generated by GUI Guider opens.
      • Go to the MCUXpresso project sdk littlevgl_guider
      • Replace the "custom", "generated" folders  and the "source/lv_conf.h" file  with the version generated by GUI Guider
      • Please NOTE.....  this will only work for an MCUXpresso project structure with this demo structure. In other words this demo can be used as an example of what is needed to be able to implement code that uses the VLG Library.

 

 

Build and debug the program.

  • I had a problem in the beginning with this, but I was able to run this eventually, by doing the same as I did with the problem I had with the RUN TARGET option in GUI Guider. I'm not sure why the debug port is disconnecting?
  • I eventually got it working described in this video.

PROBLEM -  Not able to debug/run?
      • I'm getting a "no connection to chips debug port" at the bottom of MCUXpresso?

      • I'm using this SDK on an i.MXRT1170-EVK

      • image

      • I'm connected to the Debug port on the i.MXRT1170 -EVK just as other examples.in the SDK example littlevgl_demo

        • image

      • I get the following message on the console?

        MCUXpresso IDE RedlinkMulti Driver v11.3 (Mar 30 2021 16:50:12 - crt_emu_cm_redlink build 18)

        Found chip XML file in C:/Users/skrug/Documents/MCUXpressoIDE_11.3.1_5262/workspace/evkmimxrt1170_littlevgl_guider_cm7_experiment1/Debug\MIMXRT1176xxxxx.xml

        Reconnected to existing LinkServer process.

        Connecting to probe 1 core 0 (using server started externally) reports:

        'Ee(42). Could not connect to core.'

        Retrying...

        Reconnected to existing LinkServer process.

        Server OK but no connection to probe 1 core 0 (after 3 attempts) - Ee(42). Could not connect to core.

 

      • I get the following dialogs when I try to debug?

        image

         

Graphics Summary & Conclusions

  • i was able to run all 3 examples in the littlevgl_demo directory. The 1st two ran flawlessly but I had a few problems with the 3rd one (littlevgl_guider_cm7) involving GUI Guider.
    • I had trouble at first locating the examples in the SDK. I was looking for "lgvl" and was informed by the NXP Community where to find the LGVL examples. Still not sure why they named the demo directory littlevgl_demo. I guess it was called little before it was called light? I did see some references somewhere to Little and Versatile Graphics.Library.
    • I still need to experiment more with LGVL and I'm interested interested to research if there using the "Graphics Acceleration" capabilities of the RT1176 chip?
  • I'll continue to experiment with using LGVL to implement projects using a HMI. I'll also try to get to experiment with the other graphics solutions supported by the EVK. I only scratched the surface here. I could have spent a whole review just on this topic, but I want to get on to some other experiments on the EVK.
  • The connection of the TFT display was a little tough, only because I had never connected one before. It would be nice, if the EVK is shipped with the display to have the ribbon attached. And it would also be nice to attach it to the EVK with spacer legs (there are 4 thru holes that line up to the TFT board Perfectly on the EVK) so that the unit can be accessed as one unit instead of hanging of to the side. As I have it connected here:
    • image
    • There was not much datasheet information on the TFT board. But I'm sure more experienced EE's will have no problems.
    • I ended up breaking the piece on the connector and had to purchase a connector to get a new piece so I could attach the ribbon. Luckily NXP Support gave me the part# for the $2 connector and I ordered and received 3 just in case.
    • I have some spacers coming in the mail that I ordered last week. I plan on trying to piggyback the TFT board onto the back of the EVK.
  • Gui Guider was a lot of fun to learn and play with. The training video  Getting Started with GUI Guider was an excellent learning tool. The user guide is very useful also.
  • The way the training video presenter created a project within an MCUXpresso project was daunting to me at first, but when I saw the benefits of being able to tweak the Design in GUI Guider and generate the code right to the source was neat. Also, I learned more about the compiler setting in MCUXpresso by following the exercise. Not sure what all the other directories that he had to disable in the project do? It would be nice to have an option in GUI Guider  to create code right to an MCUXpresso project and have all the includes set up for you so you would not need to mess with the compiler settings at all. WIll GUIGuider be offered in the MCUXpresso toolchain in the future? you never know?
  • The export option worked for me. I just had to copy the 2 folders and the config file to the source project. It works fine, sInce the compiler settings were all set up. But just remember that this is because the incudes were set in the SDK demo, you will need to set these if you create a project from scratch using the generated code.
  • The problems I had held me back and left me perplexed for a while, but I was able to eventually get the GUI Guider demo to work. The user manual contained the solution for the JAVA runtime problem. And I'm still getting my debug port problem intermittently. I have a ticket into the NXP Community Forum on this, maybe they will help me understand what I'm doing wrong?
  • All in all,  my experiments were successful and useful to have in my IoT toolbox. You never know when I might need a HMI for a project in the future.
  • Now on to another experiment.

2 .Camera Module Sensor

  • The next experiments I conducted were utilizing the camera module and the MiPI camera sensor connector on the EVK.
  • The Camera module is Part# 901-77346 Description: Full resolution 2592x1944 Pixel Size 1.4um x 1.4um camera module image sensor with Huatian technology

 

  • Connecting the Camera to the EVK

  • The pictures below show how the camera module is attached to the EVk
  • Camera module MIPI camera sensor connector Showing Camera module orientation on on the EVK
    image image image

     

  • Experiment 1 --  SDK Demo evkmimxrt1170_csi_mipi_rgb_cm7

    • Import the SDK Example
      • Import the SDK example from the

        "driver_eamaples/csi/mipi_rgb_cm7" directory

        image

         

    • Overview

      • This project shows how to use the CSI with MIPI_CSI. In this example, the camera device output pixel format is RGB565, the MIPI_CSI converts it to RGB888 internally and sends to CSI. In other words, the CSI input data bus width is 24-bit. The CSI saves the frame as 32-bit format XRGB8888. PXP is used to convert the XRGB8888 to RGB565 and shown in the LCD panel.

      • It is an easy way to TEST if you have connected the Canara module to the connector properly.

    • Build

      • Build the project
    • DEBUG

      • Debug the project to help understand the code.
    • Show Results

Here is the program running showing the cover of one of my books, which is hanging over the camera. The book cover has a picture of our state bird, "the chickadee"

 image

    • PROBLEMS?

      • One problem I encountered was the following dialog box keeps popping up during debugging. I will investigate later as to why. The demo keeps displaying the camera feed though?
        image

         

  • Experiment 2 --  SDK Demo evkmimxrt1170_tensorflow_lite_micro_label_image_cm7

    • Build

      • Build the project.
    • DEBUG

      • Debug the project to help understand the code.
    • Show Results

      • According to the readme file in the doc directory of the project (refer to Appendix C - Readme file for tensorflow_lite_micro_label_image_cm7)  HOW TO USE THE APPLICATION: To classify an image, place an image in front of camera so that it fits in the white rectangle in the middle of the display. Note semihosting implementation causes slower or discontinuous video experience.  Select UART in 'Project Options' during project import for using external debug console  via UART (virtual COM port).

Here is an example of the program running. The picture of the book cover the "chickadee" is showing up on the display. But the bird is not identified on the debug terminal?

 

      • PROBLEMS?

        • Problem#1

        • When I run the program I keep getting the terminal message "Detected: No label detected (0%)"

          I also get several "no source available for """ as shown in the following pic.

          Not sure why?

          I'll have to do more digging.

          image

           

    • Camera Summary & Conclusions

      • I was able to get the camera connected to the EVK with the help of NXP Customer support online.
      • At first I was having trouble determining if the display was connected right. The NXP community Forum pointed me to the test program that I used in experiment 1.
      • I was able to get experiment 1 running and was comfortable that the Camera Module was working properly
      • I did however, experienced a problem that I described above.
      • Then on to experiment2. Iwas able to build and debug the example but was unable to get it to regogine images.
      • I'll keep on working on this after I finish this review. If anyone knows what I'm doing wrong, please let me know.

     

    Summary & Conclusions

    1.Summary

    • NXP has done a great job in creating this kit to evaluate the capabilities of the the mcu chip part# i.MXRT1176.
    • The unboxing revealed one of the biggest PCB boards I have ever used. The TFT display was included with the kit and I was unable to find documentation on the display. The camera was almost missed as I described in the review. It was very small and there was also no documentation that I could find on the Internet.
    • If the TFT and Camera are provided with the EVK, then they should be connected to the EVK. The TFT display can be mounted on the underside of the board with 4 spacer holes. This would make it easier to work with when using the camera and display. Just my humble opinion.
    • I have just scratched the surface on experimenting with this board and I plan on continuing my experiments. I've included my possible experiments later in this review.
    • Using the development environment is very easy to use. The debugger is one of the best I've used on MCU's. The SDK examples are very useful to test the extensive capabilities of the EVK.
    • This is a very intesting kit to work with.

     

    2.Conclusions

    I would like to touch upon my scoring at the beginning of this review.

     

    Product Performed to Expectations: 8

    I gave this an 8,  because even though the TFT and camera were not connected,the specifications that I discovered before getting accepted for the Roadtest did live up to my expectations. This is a feature rich evk and I was very excited when I was selected and received this kit to review.

    Specifications were sufficient to design with: 7

    I gave this a 7, because the lack of specs for the Camera and TFT display. The specs on the EVK seem useful but to be honest I haven't used them yet.

    Demo Software was of good quality: 9

    I gave this a 9, because I can't stress enough how useful the SDK examples are for all NXP EVK's. I'm particularly impressed the building of the SDK online with the capabilities you need. The sdk example are a great tool to understand the capabilities of the EVK. I wish more MCU vendors would follow NXP's lead in supplying an SDK to the embedded development community.

    Product was easy to use: 9

    The i.MXRT1170-EVK  was easy to use with all the training and SDK examples to experiment with.  The switch is very handy to have and a first for me on an EVK. Again the MCUXpresso IDE  is  very easy to navigate and  great to work with.

    Support materials were available: 9

    I gave this a 9, because the NXP online support portal is very responsive to help with problems . In addition, the Community Forum is a wealth of information and I got my answers that I needed to solve my problems that I ran into.

    The price to performance ratio was good: 7

    I gave this a 7, but didn't know how to rate this category. The price is a little steep for me to purchase , since I am a retired home hobbiest.  I did not do any performance benchmarking for this product, since I was concentrating more on evaluating the product for usage in embedded software development.

     

    Possible Future Experiments

    • Audio

    • Connectivity

      • Connect i.mxrt1070 to NXP lpc55S69-EVK

    • Azure RTOS & FreeRTOS

    • GPIO

     

    APPENDICES

    Appendix A - Modifying the SDK demo (littlevgl_guider_cm7) project checklist

    • In order to include ta GUI Guider project within the this demo, you will need to change some things so the compiler in MCUXpresso can build the project with the Generated code. This Appendix will list the steps from the video in order to get the project to build the generated project.

    1. exclude and include directories in the demo project for the build

        • Since the structure of the demo project now includes the generated code you will need to go to compiler settings for each directory. On each directory you want to work with
          • Right mouse click on the directory
          • Select Properties
        • The Properties dialog for that directory will appear
        • Select C/C++ Build
        • And observe the " Exclude resource from build" check
        • image
        • For each of the following directories Check(exclude) or uncheck(include) the checkbox
        • UnCheck --- your generated folder (in video its guider_training)
          • Under that folder Check each of these directories:

            • deploy
            • import
            • lvgl
            • lvgl-simulator
            • temp
        • Now under the demo folder
          • UnCheck the folders
            • custom
            • generated
        • Here is how my demo product structure looks, after I have gone through this exercise on my demo project. The included folder (in green) now has a little circle on the folder icon and the excluded folders below it have a folder crossed out. also note the the custom and generated folder are excluded and appear at the bottom of the folder tree.
        • image

    2. modify some compiler include paths

        • in order for the compiler to build the code using the new folders under the GUI Guider project folder, you will need to check the includes
        • you will need to delete the includes that are pointing to the root folder.
        • go to settings again and select "Includes" then multi-select the folders as following pic describes and select the delete icon to delete them.
          • image
        • now you will add the new directories in the Gui Guider project to do this :
        • Press the add icon in the upper right of the window and press the "workspace button"
        • image
        • Multi-select the folders as described in this pic.
        • image
        • Press OK and then press Apply and Close from the settings dialog.

    3. include the font file

      • One more include is needed for code that has the lv_ font.h include.in project folder under generate/guider_fonts/guider_fonts.h
      • image
      • Go back to setting and the include paths and copy and paste the following directory.
      • image
      • then modify it as follows.
      • image
      • press of then apply and close.
    • Now if you did everything right you should be able to build the code.

     

    Appendix B - Readme file for csi_mipi_rgb_cm7

    Overview

    ========

    This project shows how to use the CSI with MIPI_CSI. In this example, the

    camera device output pixel format is RGB565, the MIPI_CSI converts it to

    RGB888 internally and sends to CSI. In other words, the CSI input data bus

    width is 24-bit. The CSI saves the frame as 32-bit format XRGB8888. PXP

    is used to convert the XRGB8888 to RGB565 and shown in the LCD panel.

     

    Toolchain supported

    ===================

    - IAR embedded Workbench  8.50.9

    - Keil MDK  5.33

    - GCC ARM Embedded  9.3.1

    - MCUXpresso  11.3.1

     

    Hardware requirements

    =====================

    - Mini/micro USB cable

    - MIMXRT1170-EVK board

    - Personal Computer

    - RK055AHD091 panel

    - OV5640 camera

     

    Board settings

    ==============

    Connect the panel to J48

    Connect camera to J2

    Connect 5V power to J43, set J38 to 1-2

     

    Prepare the Demo

    ================

    1.  Connect a USB cable between the host PC and the OpenSDA USB port on the target board.

    2.  Open a serial terminal with the following settings:

        - 115200 baud rate

        - 8 data bits

        - No parity

        - One stop bit

        - No flow control

    3.  Build the project.

    3.  Download the program to the target board.

    4.  Either press the reset button on your board or launch the debugger in your IDE to begin running the demo.

     

    Running the demo

    ================

    When the example runs, the screen shows the camera input frame.

     

    Appendix C - Readme file for tensorflow_lite_micro_label_image_cm7

    Overview

    ========

    TensorFlow Lite model based implementation of object detector based on

    TensorFlow Lite example [2] adjusted to run on MCUs.

     

    A 3-channel color image is set as an input to a quantized Mobilenet

    convolutional neural network model [1] that classifies the input image into

    one of 1000 output classes.

     

    Firstly a static stopwatch image is set as input regardless camera is connected or not.

    Secondly runtime image processing from camera in the case camera and display

    is connected. Camera data are displayed on LCD.

     

    HOW TO USE THE APPLICATION:

    To classify an image, place an image in front of camera so that it fits in the

    white rectangle in the middle of the display.

    Note semihosting implementation causes slower or discontinuous video experience.

    Select UART in 'Project Options' during project import for using external debug console

    via UART (virtual COM port).

     

    [1] https://www.tensorflow.org/lite/models

    [2] https://github.com/tensorflow/tensorflow/tree/r2.3/tensorflow/lite/examples/label_image

     

    Files:

      main.cpp - example main function

      image_data.h - image file converted into a C language array using

        the xxd tool (distributed with the Vim editor at www.vim.org)

      labels.h - names of object classes

      mobilenet_v1_0.25_128_quant_int8.tflite - pre-trained TensorFlow Lite model quantized

        using TF Lite converter (for more details see the eIQ TensorFlow Lite User's Guide, which

        can be downloaded with the MCUXpresso SDK package)

        (source: http://download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_0.25_128.tgz)

      stopwatch.bmp - image file of the object to recognize

        (source: https://commons.wikimedia.org/wiki/File:Stopwatch2.jpg)

      timer.c - timer source code

      image/* - image capture and pre-processing code

      model/get_top_n.cpp - top results retrieval

      model/model_data.h - model data from the .tflite file

        converted to a C language array using the xxd tool (distributed

        with the Vim editor at www.vim.org)

      model/model.cpp - model initialization and inference code

      model/model_mobilenet_ops.cpp - model operations registration

      model/output_postproc.cpp - model output processing

      video/* - camera and display handling

     

    Toolchain supported

    ===================

    - IAR embedded Workbench  8.50.9

    - Keil MDK  5.33

    - GCC ARM Embedded  9.3.1

    - MCUXpresso  11.3.1

     

    Hardware requirements

    =====================

    - Mini/micro USB cable

    - EVK-MIMXRT1170 board

    - Personal computer

    - RK055AHD091 display (optional)

    - OV5640 camera (optional)

     

    Board settings

    ==============

    Connect the display to J48 (optional)

    Connect the camera to J2 (optional)

    Connect external 5V power to J43, set J38 to 1-2

     

    Prepare the Demo

    ================

    1. Connect a USB cable between the host PC and the OpenSDA USB port on the target board.

    2. Open a serial terminal with the following settings:

       - 115200 baud rate

       - 8 data bits

       - No parity

       - One stop bit

       - No flow control

    3. Download the program to the target board.

    4. Either press the reset button on your board or launch the debugger in your IDE to begin running the demo.

     

    Running the demo

    ================

    The log below shows the output of the demo in the terminal window (compiled with ARM GCC):

     

    Label image object recognition example using a TensorFlow Lite Micro model.

    Detection threshold: 23%

    Expected category: stopwatch

    Model: mobilenet_v1_0.25_128_quant_int8

     

    Static data processing:

    ----------------------------------------

         Inference time: 88 ms

         Detected:  stopwatch (87%)

    ----------------------------------------

     

    Camera data processing:

    Data for inference are ready

    ----------------------------------------

         Inference time: 88 ms

         Detected: No label detected (0%)

    ----------------------------------------

     

    Data for inference are ready

    ----------------------------------------

         Inference time: 88 ms

         Detected:     jaguar (92%)

    ----------------------------------------

     

    Data for inference are ready

    ----------------------------------------

         Inference time: 88 ms

         Detected:  pineapple (97%)

    ----------------------------------------

    REFERENCES

    NXP i.MX RT1170-EVK Development Environment Setup

     

    GUI Guider Resources

    NXP Design Resources

    Board Documents

    Chip Documents

    Software

    Additional Miscellaneous Resource Material

    • Hardware Development Guide
      • This document’s purpose is to help hardware engineers design and test their MIMXRT1170 processor-based designs. It provides information about board layout recommendations and design checklists to ensure first-pass success and avoid board bring-up problems.
    • LVGL Open-Source Graphics Library (Downloads)
      • download page for the Graphics Library
      • Software Development Kit for Arm® Cortex®-M Cores including Kinetis®, LPC MCUs and i.MX RT, with optional FreeRTOS and MCU Bootloader
    • Light and Versatile Graphics Library LVGL: open-source graphics library
      • Github,release notes,docs,and forums for the lvgl Graphics library
      • LVGL is an open-source graphics library providing everything you need to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint.

    NXP Training Webinars

      • Here are just a few training on- demand videos available on the NXP training site. One of the many benefits of being a member of the NXP site.
    • ON-DEMAND
    • i.MX RT1170 Crossover MCUs - Training

      Learn more about this ground-breaking family that combines superior computing power and multiple media capabilities with ease of use and real-time functionality.
      • 60 min
    Anonymous