indie iND83405 Setup guide

iND83405 Quick Start User
Guide
ENG-6114
1

ENG-6114
iND83405 Quick Start User Guide
Introduction
iND83405 is a high-reliability general-purpose microcontroller based on ARM Cortex M4 CPU
running up to 112MHz with a generous 2MB of embedded Flash memory and 256kB of SRAM.
Thirty-one low-voltage 3.3V GPIO can be controlled with software or hardware mode using
internal UART, SPI, I2C or CAN controllers. Thirteen additional robust 5V tolerant IOs with strong
drive are suitable for high noise environments. ECC protection on the internal flash memory
ensures reliable operation, and a 16kB instruction cache allows full speed operation up to the
maximum CPU frequency.
This document is a guide which will show how to set up a working system and use the demo
applications that have been included. The kit includes an evaluation board (EVB) and
downloadable software design kit (SDK). To complete the bench setup, instructions for setting
up a number of necessary tools will be discussed. The demo applications that are included as
part of the SDK provide a quick way to examine chip functionality.
About ındie Semiconductor
ındie is empowering the Autotech revolution with next generation automotive semiconductors
and software platforms. We focus on edge sensors for Advanced Driver Assistance Systems
including LiDAR, connected car, user experience and electrification applications. These
technologies represent the core underpinnings of both electric and autonomous vehicles, while
the advanced user interfaces transform the in-cabin experience to mirror and seamlessly
connect to the mobile platforms we rely on every day. We are an approved vendor to Tier 1
partners and our solutions can be found in marquee automotive OEMs around the world.
Headquartered in Aliso Viejo, CA, ındie has design centers and sales offices in Austin, TX;
Boston, MA; Detroit, MI; San Francisco and San Jose, CA; Budapest, Hungary; Dresden, Germany;
Edinburgh, Scotland and various locations throughout China.
Please visit us at www.indiesemi.com to learn more.
indie Semiconductor
Rev 1.0 | Page 2

ENG-6114
iND83405 Quick Start User Guide
Introduction 2
About ındie Semiconductor 2
About this Guide 5
Setting Up 5
Required Equipment 5
PC 5
Debug Probe 5
UART to USB Bridge 6
Cables 6
Unbox the Hardware 6
The Board 6
Connectors 6
Jumpers 7
Switches 7
System Image 7
Download and Unbox the SDK 7
SDK Download 7
Directory Structure 8
Demonstrations 8
demo 9
rtos 9
bootloader 9
app 9
Set Up the PC Tools 9
Virtual Unix Environment 9
GNU Compiler 10
GNU Make 12
Segger J-Link Setup 13
Install J-Link Support Files For iND83405 16
PuTTY Setup 19
Additional Application Development Tool Support 21
Building the Applications Using Make 21
About the Make command and the Makefile 21
indie Semiconductor
Rev 1.0 | Page 3

ENG-6114
iND83405 Quick Start User Guide
Using make to Build the Applications 22
Programming the Controller 25
Test the J-Link Connection 25
Program the Board Using Make 29
Using make to Build and Program the Applications 29
Using make to Clean the Build Directories 29
Programming the Board from the J-Link Prompt 30
Programming a Blank Chip 31
Running the Demonstration Applications 34
Demo 34
Rtos 34
Bootloader 34
App 36
Troubleshooting 38
Errors Running Jlink.exe 38
J-Link, Make or GCC Not Recognized As A Command 39
J-Link Device Not Recognized 42
J-Link Can’t Connect To The Target 43
J-Link Doesn’t Work 45
Flash Write And Erase Does Not Work 46
No COM Port For Terminal 47
Document Revision History 48
Important Notice 49
indie Semiconductor
Rev 1.0 | Page 4

ENG-6114
iND83405 Quick Start User Guide
About this Guide
Follow this guide to set up a basic application development suite for the iND83405 and walk
through a series of demonstrations. The demonstrations are designed to give the user an
overview of the product and create a jumping off point for the development of new applications.
A Troubleshooting section has been included at the end of the document to aid with the set up
and use of the tools.
Setting Up
Required Equipment
The following equipment is not provided with the kit but is necessary to experience the
demonstrations and develop applications.
PC
Any PC can be used as long as it is able to run the applications referenced in the guide. The PC
used in the following examples is running Windows 10.
Debug Probe
A debugger is required to program the board. Any may be chosen but the development kit has
been tested with Segger J-Link, including the J-Link base and J-Link edu.
UART to USB Bridge
A UART to USB adapter board (eg. HiLetgo CP2102 micro-USB to UART bridge with 6-pin
connector) is required to interact with the board while using the demonstration applications.
Jumper wires may be needed to connect the adapter board to the P2 connector. A USB cable
will also be needed to connect the adapter board to the PC.
indie Semiconductor
Rev 1.0 | Page 5

ENG-6114
iND83405 Quick Start User Guide
HiLetGo UART-to-USB board
Cables
A USB cable is required to connect port 1 (P1) to the PC to provide power to the board, if that
mode of power has been chosen.
Unbox the Hardware
The Board
Use the schematic as a guide to functionality when using the multi-pin headers that run down
either side of the board.
indie Semiconductor
Rev 1.0 | Page 6

ENG-6114
iND83405 Quick Start User Guide
Connectors
P1: USB B connector. Connect to PC to provide 5V to power the board.
P2: Port to connect the external UART-USB bridge.
P3: 20-pin J-Link connector.
Jumpers
JP1: Choose between powering the board with the P1 input or from the J-Link connector. Pins
2-3 are jumpered to power the board via P1 and 1-2 are jumpered to power the board via the
J-Link connector.
Switches
S1: Reset switch to reset the controller.
S2: Debug switch to choose whether J-Link accesses the aux (labeled AUX on the board) or
main (labeled ARM on the board) debug port. Because the EVB comes programmed,
this switch can be set for ARM.
indie Semiconductor
Rev 1.0 | Page 7

ENG-6114
iND83405 Quick Start User Guide
Powering the Board
Use the following guidelines when powering the board. Consult the schematic to relate the silk
screen labels on the J1 and J2 headers to pins on the chip.
When using A1-A15, the AGPIO pins, 8V-16V (nominal 12V) power must be supplied to the
P12V_IN pin which is pin 29 on the J1 connector.
When not using A1-A15, P12V_IN must not be connected to 12V and must be connected to the
P5V0_IN pin which is pin 30 on the J1 connector.
The board must be supplied with 5V using only one of the following:
● directly to the P5V0_IN pin
● With JP1 pins 2-3 jumpered and P1 connected to the PC
● With P2 pin 1 as long as a 0ohm resistor is present at R7
● With JP1 pins 1-2 jumpered and the J-Link connected at P3 and powered
System Image
In this image the board is connected to a debugger, a PC and a USB-to-UART bridge.
indie Semiconductor
Rev 1.0 | Page 8

ENG-6114
iND83405 Quick Start User Guide
Download and Unbox the SDK
SDK Download
The SDK is distributed via a private git repo:
https://gitlab.com/indie-public/ind83405-sdk
Once logged in, you can download the latest version of the software source code by clicking the
download button in the gitlab website as shown in this screen shot:
indie Semiconductor
Rev 1.0 | Page 9

ENG-6114
iND83405 Quick Start User Guide
When the download is complete unzip it into an easy to remember place like on your desktop.
Directory Structure
applications/ - This directory contains source code for the demonstration applications showing
the proper use of the iND83405 SDK. Each demonstration application is contained in its own
directory. You can start your own development by creating a new directory here.
sdk/ - This directory contains the iND83405 SDK. Within the sdk directory there is a
subdirectory for armcc which is only needed when the arm compiler 5 is used. The subdirectory
gcc is only needed when the gcc compiler is used. The maps subdirectory contains headers that
define structures that represent every hardware register in the device with comments describing
their purpose. The drivers directory contains source code that demonstrates proper use of each
of the iND83405 peripherals.
build/ - Output products of the build steps are placed here.
binaries/ - Some pre-built binaries are provided here. These can be used to run the
demonstrations without needing to install the build tools. This directory should be kept up to
date with the latest versions firmware.
docs/ - Human readable documents that describe the iND83405 features and capabilities, the
SDK and the demo kit.
thirdparty/ - C source code that is not produced by indie Semiconductor, but is used by one or
more demonstration applications.
tools/ - Programs and scripts that may be of use with the iND83405.
.git/ - This directory is related to source control of this development kit. It may be present in
your directory if you downloaded the software by cloning a git repository. If you are not using git
it is not required.
Demonstrations
The demo kit comes with four demonstration applications. All four demonstration applications
(and the provided flash loader) print to UART3, which is connected to P2 on the board. The
UART settings are: 115200 baud, 8-bit, 1-stop, no parity and no flow-control. All four
indie Semiconductor
Rev 1.0 | Page
10

ENG-6114
iND83405 Quick Start User Guide
applications will begin printing messages immediately upon booting and whenever S1 (reset) is
depressed.
demo
demo is an application that presents a menu in a terminal (on UART3) with options to test each
of the hardware drivers in a typical configuration.
rtos
A demonstration of FreeRTOS correctly configured for this chip. The application just prints some
busy messages to UART3.
bootloader
A demonstration bootloader, showing how to build without the standard library to save text area.
It looks for an image at offset 0 + 1MB and jumps to it. This application is intended to be used
with the app application.
app
A very simple application that prints some numbers to UART3. This application loads from
offset 0 + 1MB, therefore it cannot be used without a bootloader. It is intended to be loaded
simultaneously with the bootloader demonstration application.
See the section called Running the Demonstration Applications for more instruction. The board
has been pre-programmed with the demo demonstration.
Set Up the PC Tools
Virtual Unix Environment
The provided build system requires a Unix-like environment. On Windows, several environments
have been tested (MinGW, Cygwin, WSL or Powershell), however this document will describe
only the procedure to set up and build using the MinGW environment that is packaged with Git
for Windows.
To install MinGW, download git for windows:
github.com/git-for-windows/git/releases/download/v2.35.3.windows.1/Git-2.35.3-64-bit.exe
indie Semiconductor
Rev 1.0 | Page
11

ENG-6114
iND83405 Quick Start User Guide
Once this is installed, the Unix-like environment can be opened by right-clicking the mouse
anywhere on the desktop and selecting “Git Bash Here…” from the popup context menu as
shown here:
Once the Git Bash window is open Unix commands such as ls, cd and date can be used.
GNU Compiler
GNU’s GCC will be used as the default compiler. The user interacts with GCC using the MinGW
Git Bash window. The installation steps are as follows.
1. Download and install the latest GNU Arm Embedded Toolchain from ARM website (the
downloading should start):
https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-non
e-eabi-10.3-2021.10-win32.exe
2. Start the installation process by allowing the changes and selecting the language. When
completed select Next, satisfy the license agreement and start the installation process.
indie Semiconductor
Rev 1.0 | Page
12

ENG-6114
iND83405 Quick Start User Guide
3. Before selecting Finish, the following boxes should be marked:
4. Check that the toolchain is installed properly by typing the following command at the
prompt in your Git Bash window.
arm-none-eabi-gcc --version
indie Semiconductor
Rev 1.0 | Page
13

ENG-6114
iND83405 Quick Start User Guide
If the error “Command not found” or “arm-none-eabi-gcc is not recognized as an internal or
external command” is returned, the path to the bin folder in the GNU Arm Embedded Toolchain
directory may need to be added to the system path.
Eg. C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin\
See the troubleshooting guide for more information regarding adding an item to the system
path.
GNU Make
The make command will be used in the Git Bash window to create a firmware image for the
controller from the source files that were downloaded from the GitLab repository. The make
command uses the rules from the SDK Makefile to build the firmware. In the Makefile GCC is
the specified compiler that will be used.
An installed for windows-native Make can be found here:
http://gnuwin32.sourceforge.net/packages/make.htm
To check if the installation was successful, query the version number of the make application.
To do this open a Git Bash window by right clicking the mouse anywhere on the desktop and
choosing “Git Bash Here”. At the prompt, type the following command.
>make --version
This is the expected return.
indie Semiconductor
Rev 1.0 | Page
14

ENG-6114
iND83405 Quick Start User Guide
If the error “Command not found” or “'make' is not recognized as an internal or external
command” is seen, the make application may need to be added to the system path. See the
troubleshooting guide for more information.
Instructions for using the make command to build the firmware image, download the firmware
to the board, and clean the build directories will be addressed in later sections of this document,
but first the Segger J-Link debug tool must be set up.
Segger J-Link Setup
The demonstrations in this kit use Segger J-Link as the debugger. Following are instructions for
downloading their PC tools.
1) Download the Segger J-Link software by accepting the Terms of Use and starting the
installation.
https://www.segger.com/downloads/jlink/JLink_Windows_x86_64.exe
2) There is no need to choose any optional components. After clicking on Install allow the
changes in the pop-up window.
indie Semiconductor
Rev 1.0 | Page
15

ENG-6114
iND83405 Quick Start User Guide
3) If there is an update, install it, then click on Ok and finish the installation.
To verify the connection between the PC and the J-Link tool type jlink at a Windows command
line prompt. To ensure that the command is accessible from anywhere in the directory
indie Semiconductor
Rev 1.0 | Page
16

ENG-6114
iND83405 Quick Start User Guide
structure, add the J-Link directory to the system path. See the troubleshooting section J-Link,
Make or GCC not recognized as a command for instructions on modifying the system path.
To access the Windows command line, left-click on the Windows icon and type “command
prompt” into the search line and select Open
If after typing jlink at the prompt the command is recognized but the PC cannot connect to the
J-Link, as is shown in the box below, ensure that the J-Link’s USB cable is good and is securely
attached to the PC and J-Link.
C:\Users\hayward>jlink
SEGGER J-Link Commander V7.64b (Compiled Mar 16 2021 12:20:44)
DLL version V6.98c, compiled Mar 16 2021 12:19:26
Connecting to J-Link via USB...FAILED: Cannot connect to J-Link.
J-Link>
A reference for all things related to Segger J-Link can be found at
https://wiki.segger.com/Main_Page.
indie Semiconductor
Rev 1.0 | Page
17

ENG-6114
iND83405 Quick Start User Guide
The package downloaded from SEGGER will contain PC applications for the J-Link such as
Commander and J-Flash. To use these applications and connect the J-Link with the EVB
requires files that are specific to the ind83405 chip. This process will be explained in the
section called J-Link Support Files for iND83405.
The J-Link is connected to the demo board using the 20-pin connector at P3.
Install J-Link Support Files For iND83405
The following process unpacks files from the SDK that will be used by the J-Link to support the
ind83405.
1) Start the installation by double-clicking on the IndieFlashloader_setup.exe and then allow
the changes.
If windows prevents installation of unsigned binaries, you will see this screen:
indie Semiconductor
Rev 1.0 | Page
18

ENG-6114
iND83405 Quick Start User Guide
Click on “more info..” then on “Run anyway”
2) Change the installation folder if needed.
indie Semiconductor
Rev 1.0 | Page
19

ENG-6114
iND83405 Quick Start User Guide
3) Start the installation by clicking on Install.
A manual check can be done to ensure the installer loaded the necessary files into the correct
directories.
1. Open the file C:\Program Files (x86)\SEGGER\JLink\JLinkDevices.xml with a text editor.
In the file there should be an entry with the following information.
ChipInfo Vendor = “Indie Semiconductor”
Name = “Onboard”
Core = “JLINK_CORE_CORTEX_M4”
WorkRAMAddr = “0x20000000”’
WorkRAMSize = “0x40000”
JLinkScriptFile = “Devices/IndieSemi/M4/onboard.JLinkScript”
FlashBankInfo Name = “Internal Flash”
BaseAddr = “0x00000000”
MaxSize = “0x00200000”
Loader=”Devices/IndieSemi/M4/indie_ornella_v14_r2673.flm”
LoaderType=”FLASH_ALSO_TYPE_CMSIS”
indie Semiconductor
Rev 1.0 | Page
20
Table of contents