If you have just purchased your phyCORE-AM57x development kit and want to know how to get started, this guide will help you.This guide is specifically written to boot PHYTEC's Embedded Linux Board Support Package (BSP) on the hardware. The Linux BSP utilizes Yocto and OpenEmbedded as well as TI's Linux Processor SDK. Follow the guide below to learn how to set up your host machine, connect to the device, and get started with your development.

Requirements


All PHYTEC development kits ship with the necessary cables to get started. For this kit you should have received:

Power Supply

12V 2A (or higher) 

SD Card

Prebuilt with phyCORE-AM65x

ALPHA-LINUX

Ethernet cableStandard CAT5e or CAT6

Micro USB cableUSB A-Male to Micro-B 

2x DB-sub 9 cables2x5 header to DB-sub 9

You will also need a host/development machine to communicate with the hardware. The requirements for your machine depend on your use case, a couple recommendations are provided below.

For Basic Evaluation 

If you simply want to turn the kit on, communicate over a serial shell, and run basic commands on the device, your host system can vary. In this environment it's understood that you are not compiling code on your host machine to run on the target, therefore requirements are minimal.


WindowsLinuxmacOS
Tested operating system versionWindows 10Ubuntu 16.04Mojave
Machine RAM>4GB>4GB>4GB
Machine CPU>2 cores>2 cores>2 cores
Free disk space >5GB>5GB>5GB

For BSP or Application Development

If you are designing a custom carrier board and need to make boot-loader and kernel level changes, the host machine must meet the criteria below. In this environment you will be able to build the software BSP and develop custom Yocto meta layers.


Linux
Tested operating system versionUbuntu 16.04 64-bit
Machine RAM>4GB
Machine CPU>4 cores
Free disk space >100GB

Virtual machine platforms such as Virtual BOX, VMWare, and Docker can be used to host your development environment. Certain SD-card readers, USB serial adapters, and other peripherals have proven to be unstable when working with Virtual Machines. Please keep this in mind or contact PHYTEC Support for a recommendation.

Prepare the Hardware


Before turning on the hardware, ensure the phyCORE-AM65x SOM is properly mounted to the Carrier Board.

  • Press firmly down on the SOM with equal pressure on both sides

  • Insert the SD card (phyCORE-AM65x Linux BSP) included with your kit.


Your development kit comes with this SD card. If your kit does not have an SD card or your existing card has been corrupted you can follow the instructions for how to make a new SD card here: Create a bootable SD card


  • Development kits are by default set to boot from SD Card. Locate the boot switches on the Carrier Board and verify the switches are set as follows: 

Connect the Peripherals


You only need to make a few connections to get up and running with your development kit. First you will make all the connections between the development kit and your computer, then in following steps, we will guide you on how to set up your serial terminal and establish a console session with the phyCORE-AM65x SOM.


CableDevelopment Kit ConnectionConnect To
Ethernet CableConnect to X29 ETH0

An Ethernet switch that is connected to the same network as your host/development machine. Ensure your network has DHCP enabled. See the diagram to the right.


USB Connect to X19Your host/development machine's USB A port
Power AdapterConnect to X16Wall power outlet

Set up a Serial Terminal


If you don't already have a terminal application set up on your host machine, we have provided a few different methods below depending on your host operating system.

Windows 10

Determine the COM port associated with the development kit:

  • Open Device Manager
  • Expand Ports (COM & LPT)
  • You should see two "USB Serial Port" devices that correspond to UART1 and UART2 on the development kit.

  • The lowest number COM, of the two associated with your development kit, is the correct choice when setting up your terminal session in the steps below. Remember this port number.
  • If you are having trouble determining which COM port to use:
    • Unplug/re-plug the USB cable from your computer and see what disappears/reappears in Device Manager.
    • Check Other Devices 

Configure your Terminal Session:

  • Download or open the terminal emulator of your preference. There are many options such as PuTTY and TeraTerm.
  • Configuration of your terminal will vary slightly depending on the terminal emulator software you are using.
  • Specify that you will connect using "Serial" to the COM port (found in previous step)
  • Other parameters include: 115200 Baud, 8 bit data, no parity bits, 1 stop bit and no flow control.

You might not see anything in your serial terminal once it opens. That is OK, if the board was powered on for more than a minute while setting up the terminal session, then it has already booted. Simply press 'enter' in the terminal to get a new line OR press the "Cold Reset" button (S1). Otherwise, make sure your hardware is plugged in and powered on and the correct COM port has been selected.


MacOS Mojave

 Click here to expand...

On your host machine open up a Terminal and type the following command to list all of the USB serial devices

Host (MacOS)

ls -ltl /dev/cu.usb*
CODE

Verify the output is similar to:

Start a serial terminal session using screen. From the list choose the USB device that ends in 'A'. In this case, that will be /dev/cu.usbserial-00002014A. 

Now type the following command: 

Host (MacOS)

screen /dev/cu.usbserial-00002014A 115200 
CODE

The '115200' is the default baud rate. 

You might not see anything in your serial terminal once it opens. That is OK, if the board was powered on for more than a minute while setting up the terminal session, then it has already booted. Simply press 'enter' in the terminal to get a new line OR press the "Cold Reset" button (S1). Otherwise, make sure your hardware is plugged in and powered on and the correct COM port has been selected.

Boot the Board


  • If you have not already powered on the development kit, you can do this now.
  • The board will begin booting and the output will look similar to the one below:

  • If you are not getting any output and have already plugged in power, you might need to reset the board. You can press the "Cold Reset" button (S1) to reset the board:

  • On your serial console you should reach a login prompt.

    Expected Output

    PHYTEC: BSP-Yocto-TI-AM65xx-ALPHA1
    am65xx-phycore-rdk login:
    CODE
  • Login using root (no password is required). 

That is it, now you are at a Linux prompt and can start working with the development kit. Check out Using Peripherals articles for ideas of what to do next. 

You may find that commands and text wrap over themselves if they extend too far on a single line in your Terminal Window. To improve usability and to prevent text from wrapping over itself use the following command: 

Target (Linux)

shopt -s checkwinsize && resize
CODE

Turn Off the Device


Before removing power from the development kit, you must make sure that the operating system has safely shutdown.

  • To initiate a shutdown run the following command:

    Target (Linux)

    poweroff
    CODE
  • Once you have seen Reached target Shutdown it is safe to remove the power from the development kit:

    Expected Output

    Reached target Shutdown.
    CODE

Known Issue

A kernel panic inadvertently happens after the "poweroff" command. This is planned to be fixed in the next TI SDK BSP release. See Known Issues for more information. 

 Click here to expand...

Expected Output

root@am65xx-phycore-rdk:~# poweroff
[  OK  ] Stopped target Multi-User System.
         Stopping strongSwan IPsec IKEv1/IKEv2 daemon using ipsec.conf...
         Stopping Session c1 of user root. With Light System Requirements...
[  OK  ] Stopped Daily rotation of log files.
[  OK  ] Stopped target System Time Synchronized.
         Stopping NFS status monitor for NFSv2/3 locking....
[  OK  ] Stopped target Login Prompts.
         Stopping Getty on tty1...
         Stopping Serial Getty on ttyS3...
         Stopping User Manager for UID 0...
         Stopping TI IPC Daemon...
[  OK  ] Stopped Kernel Logging Service.
[  OK  ] Stopped System Logging Service.
[  OK  ] Stopped Periodic Command Scheduler.
[  OK  ] Stopped Hardware RNG Entropy Gatherer Daemon.
[  OK  ] Stopped D-Bus System Message Bus.
[  OK  ] Stopped strongSwan IPsec IKEv1/IKEv2 daemon using ipsec.conf.
[  OK  ] Stopped Job spooling tools.
[  OK  ] Stopped TI IPC Daemon.
[  OK  ] Stopped Simple Network Management Protocol (SNMP) Daemon..
[  OK  ] Stopped Serial Getty on ttyS3.
[  OK  ] Stopped Getty on tty1.
[  OK  ] Stopped NFS status monitor for NFSv2/3 locking..
[  OK  ] Stopped Lightning Fast Webserver With Light System Requirements.
[  OK  ] Stopped User Manager for UID 0.
[  OK  ] Stopped thermal-zone-init.service.
[  OK  ] Stopped Session c1 of user root.
         Stopping rng-tools.service...
[  OK  ] Removed slice User Slice of root.
         Stopping Login Service...
         Stopping RPC Bind Service...
[  OK  ] Stopped target Host and Network Name Lookups.
         Stopping Network Name Resolution...
[  OK  ] Removed slice system-getty.slice.
[  OK  ] Removed slice system-serial\x2dgetty.slice.
         Stopping Permit User Sessions...
[  OK  ] Stopped RPC Bind Service.
[  OK  ] Stopped Login Service.
[  OK  ] Stopped Network Name Resolution.
[  OK  ] Stopped rng-tools.service.
[  OK  ] Stopped Permit User Sessions.
         Stopping thttpd.service...
[  OK  ] Stopped target Network.
         Stopping Network Service...
[  OK  ] Stopped thttpd.service.
         Stopping telnetd.service...
[  OK  ] Stopped telnetd.service.
         Stopping weston.service...
[  OK  ] Stopped Network Service.
[  OK  ] Stopped weston.service.
         Stopping rc.pvr.service...
[  OK  ] Stopped target Remote File Systems.
[  OK  ] Stopped rc.pvr.service.
[  OK  ] Stopped target Basic System.
[  OK  ] Stopped target Sockets.
[  OK  ] Closed RPCbind Server Activation Socket.
[  OK  ] Closed D-Bus System Message Bus Socket.
[  OK  ] Closed Syslog Socket.
[  OK  ] Closed dropbear.socket.
[  OK  ] Stopped target System Initialization.
         Stopping Network Time Synchronization...
         Stopping Load/Save Screen Backlight… of backlight:display_backlight...
         Stopping Load/Save Random Seed...
         Stopping Update UTMP about System Boot/Shutdown...
[  OK  ] Stopped Apply Kernel Variables.
[  OK  ] Stopped Load Kernel Modules.
[  OK  ] Stopped target Slices.
[  OK  ] Removed slice User and Session Slice.
[  OK  ] Stopped target Paths.
[  OK  ] Stopped Dispatch Password Requests to Console Directory Watch.
[  OK  ] Stopped Forward Password Requests to Wall Directory Watch.
[  OK  ] Stopped Network Time Synchronization.
[  OK  ] Stopped Load/Save Screen Backlight …ss of backlight:display_backlight.
[  OK  ] Stopped Load/Save Random Seed.
[  OK  ] Removed slice system-systemd\x2dbacklight.slice.
[  OK  ] Stopped Update UTMP about System Boot/Shutdown.
[  OK  ] Stopped Create Volatile Files and Directories.
[  OK  ] Stopped target Local File Systems.
         Unmounting /var/volatile...
         Unmounting /run/user/0...
         Unmounting /run/media/mmcblk1p1...
         Unmounting /media/ram...
         Unmounting Temporary Directory (/tmp)...
         Unmounting /run/media/mmcblk0p1...
[FAILED] Failed unmounting /var/volatile.
[  OK  ] Unmounted /run/user/0.
[  OK  ] Unmounted /media/ram.
[FAILED] Failed unmounting Temporary Directory (/tmp).
[  OK  ] Unmounted /run/media/mmcblk0p1.
[FAILED] Failed unmounting /run/media/mmcblk1p1.
[  OK  ] Stopped target Swap.
[  OK  ] Reached target Unmount All Filesystems.
[  OK  ] Stopped target Local File Systems (Pre).
[  OK  ] Stopped Remount Root and Kernel File Systems.
[  OK  ] Stopped Create Static Device Nodes in /dev.
[  OK  ] Reached target Shutdown.
[   59.641766] systemd-shutdow: 24 output lines suppressed due to ratelimiting
[   59.769015] systemd-shutdown[1]: Sending SIGTERM to remaining processes...
[   59.788154] systemd-journald[144]: Received SIGTERM from PID 1 (systemd-shutdow).
[   59.974473] systemd-shutdown[1]: Sending SIGKILL to remaining processes...
[   59.993008] systemd-shutdown[1]: Unmounting file systems.
[   59.999420] systemd-shutdown[1]: Remounting '/var/volatile' read-only with options 'size=51200k'.
[   60.010306] systemd-shutdown[1]: Unmounting /var/volatile.
[   60.036049] systemd-shutdown[1]: Remounting '/tmp' read-only with options ''.
[   60.045078] systemd-shutdown[1]: Unmounting /tmp.
[   60.064231] systemd-shutdown[1]: Remounting '/' read-only with options 'data=ordered'.
[   60.108305] EXT4-fs (mmcblk1p2): re-mounted. Opts: data=ordered
[   60.119112] systemd-shutdown[1]: Remounting '/' read-only with options 'data=ordered'.
[   60.128912] EXT4-fs (mmcblk1p2): re-mounted. Opts: data=ordered
[   60.134905] systemd-shutdown[1]: Remounting '/' read-only with options 'data=ordered'.
[   60.144626] EXT4-fs (mmcblk1p2): re-mounted. Opts: data=ordered
[   60.191942] reboot: Power down
[   60.195503] systemd-shutdow: 8 output lines suppressed due to ratelimiting
[   60.202529] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
[   60.202529]
[   60.211652] CPU: 0 PID: 1 Comm: systemd-shutdow Tainted: G           O    4.14.79-gb2acb1c18e #1
[   60.220417] Hardware name: PHYTEC phyCORE-AM65xx Carrier Board (DT)
[   60.226668] Call trace:
[   60.229124] [<ffff000008088158>] dump_backtrace+0x0/0x3c0
[   60.234512] [<ffff00000808852c>] show_stack+0x14/0x20
[   60.239555] [<ffff00000878f548>] dump_stack+0x9c/0xbc
[   60.244598] [<ffff0000080a7e98>] panic+0x11c/0x28c
[   60.249380] [<ffff0000080abf34>] do_exit+0x92c/0x930
[   60.254335] [<ffff0000080c98a4>] SyS_reboot+0x14c/0x220
[   60.259548] Exception stack(0xffff000008d4fec0 to 0xffff000008d50000)
[   60.265976] fec0: fffffffffee1dead 0000000028121969 000000004321fedc 48839e0ad04b8500
[   60.273791] fee0: 0000000000000028 0000800000000000 631eff2d65656e1f 7f7f7f7f7f7f7f7f
[   60.281605] ff00: 000000000000008e 0000000000000001 0000ffffdd3d78f0 0000000000000020
[   60.289419] ff20: 0000000000000000 0000000000000000 0000000000000001 000000000000000a
[   60.297234] ff40: 0000aaaab301ff10 0000ffff87c828a8 0000ffffdd3d78ef 0000ffffdd3d8ad8
[   60.305048] ff60: 0000000000000000 0000ffffdd3d87d8 0000000000000000 0000000000000000
[   60.312863] ff80: 0000ffffdd3d8860 0000000000000000 0000000000000000 0000aaaab3005000
[   60.320678] ffa0: 0000aaaab3006800 0000ffffdd3d8700 0000aaaab3003df4 0000ffffdd3d86e0
[   60.328492] ffc0: 0000ffff87c828c4 0000000000000000 fffffffffee1dead 000000000000008e
[   60.336306] ffe0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[   60.344121] [<ffff0000080832c0>] el0_svc_naked+0x34/0x38
[   60.349425] Kernel Offset: disabled
[   60.352905] CPU features: 0x080200c
[   60.356382] Memory Limit: none
[   60.359433] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
[   60.359433]
CODE
  • Completely remove power from the board by unplugging the power cable

The command "poweroff" suspends all software running on the processor (including fan termination) but inadvertently causes a kernel panic. This kernel panic causes the Power Management IC to not properly shut down and keeps the SOM and Carrier Board powered if the power supply is left connected. This can cause the processor to overheat and potentially damage the board.

What's Next