emtrion SBC (GOAL)
Introduction
The emtrion SBC is a platform based on the Renesas RZN1D cpu. It consists of a CM3 core and a A7 core. For the CM3 core a firmware containing PROFINET, EtherNet/IP and EtherCAT stack is available. Ethernet ports J8 and J9 are exclusively used by the CM3 core. Ethernet ports J1 and J2 are exclusively used by linux.
Â
Features
features on par with port’s SoM module, while providing better performance due to parallel connection between host CPU (A7/Linux) and CM3 core
full featured embedded linux system with additional communication core (SoM like)
PROFINET, EtherNet/IP and EtherCAT support
Limitations
The currently delivered CM3 firmware has following restrictions:
firmware update functionality from A7 or over Ethernet (HTTP, EtherCAT) not implemented, required to do using u-boot
Exception Log not supported
CM3 reset not possible, a restart of the A7 application requires reboot of the whole system
Required resources
Emtrion SBC
24 V power adapter
USB Serial converter
Network cables
a ARM (arm-none-eabi) gcc compiler (e.g. version 9.2.1 20191025)
optionally the Emtrion SBC SDK: https://cloud.emtrion.de/index.php/s/Fd7XWdmjZrBlOhI
Emtrion hardware documentation (SBC-RZN1D-Hardware_Manual_v008en.pdf)
Emtrion SDK and software documentation (sbc-rzn1d-yocto-manual_v005en.pdf)
updated device tree
updated uboot
cm3 firmware
port application sdk
Industrial Communication Explorer
Delivery
The port SDK is provided in the form of an zip archive. Beside the sources required for building applications for the protocol stacks and some examples following files are provided:
CM3 firmware: projects/2021015/cc/dtb/cm3_fw.bin
this is the firmware for the CM3 core containing the protocol stacks
DTB: projects/2021015/cc/dtb/sbc-rzn1d.dtb
this is the device tree for the A7 (Linux) core required to fully support the CM3 core functionality
Device setup
Entering the boot loader
You will need a USB serial converter connected to the device (header J5). UART speed is 115200 baud. After bootup of the device you will have the possibility to enter the uboot boot loader. From there the following steps can be executed.
Programming of the CM3 firmware
This step is done from the u-boot bootloader. Following commands show the procedure. Update is done using tftp here:
# set cm3_max_fw_size
env set cm3_max_fw_size 0xC0000
env set CM3 yes
env save
# load scripts
run import.uboot_script
# set mode to tftp
setenv lmode tftp
# set ip mode to dhcp
setenv ip-method dhcp
# get ip address
dhcp
# set server ip address
setenv serverip 192.168.178.103
# set nfsroot to anything, even required of tftp is used
setenv nfsroot "/System/Volumes/Data/Users/Shared/nfs"
# set boot for tftp mode
setenv bootdir /private/tftpboot
# update the cm3
run update_cm3
If successful, following log messages are shown:
SBC-RZN1D U-Boot > run update_cm3
Speed: 1000, full duplex
Using dwmac.44002000 device
TFTP from server 192.168.2.1; our IP address is 192.168.2.2
Filename '/private/tftpboot/cm3_fw.bin'.
Load address: 0x80008000
Loading: #############
3.4 MiB/s
done
Bytes transferred = 180287 (2c03f hex)
SF: Detected s25fl128s_64k with page size 256 Bytes, erase size 64 KiB, total 16 MiB, mapped at 10000000
SF: 196608 bytes @ 0xe0000 Erased: OK
device 0 offset 0xe0000, size 0x2c03f
SF: 180287 bytes @ 0xe0000 Written: OK
Update of the device tree
Now you need to boot into linux (power cycle or u-boot command "boot"). The device is initially configured to use DHCP. Ethernet ports J1 and J2 are used by the linux system. To login into linux, use the account root with no password (default settings).
Please place the dtb into the /boot folder of the filesystem accessible within linux.
Setup of the port SDK
The port SDK can be be used on any linux machine capable of cross compiling for the arm platform (see compiler requirements). To install the SDK create a folder and unpack the delivered archive (0860_012_SDK_2_23_0__EMTRIONSBC_LINUX_GCC.zip).
To compile a profinet example application, do the following steps:
> cd projects/2015013_irj45/ac/01_pnio_io_mirror/gcc
> make select
No platform selected, choose a platform - OR - press <CTRL+c> and set the
PLATFORM environment variable.
Choose platform:
[ 1] emtrion_sbc_rzn1d_a7 (gcc)
[ 2] linux_x86 (gcc)
Choice [1-2]:
> 1
> make
[CC] appl/2015013_irj45/ac/01_pnio_io_mirror/goal_appl.c
[CC] appl/2015013_irj45/ac/01_pnio_io_mirror/goal_appl_http.c
[CC] appl/2015013_irj45/rpc/ccm_rpc_ac.c
[CC] goal/cm/goal_cm_cm.c
[CC] goal/cm/goal_eth_cm.c
[CC] goal/cm/goal_lm_cm.c
[CC] goal/cm/goal_queue_cm.c
[CC] goal/goal_alloc.c
[CC] goal/goal_bm.c
[CC] goal/goal_cm.c
[CC] goal/goal_heap.c
[CC] goal/goal_inst.c
[CC] goal/goal_lm.c
[CC] goal/goal_lock.c
[CC] goal/goal_log.c
[CC] goal/goal_main.c
[CC] goal/goal_queue.c
[CC] goal/goal_rb.c
[CC] goal/goal_reg.c
[CC] goal/goal_stat.c
[CC] goal/goal_task.c
[CC] goal/goal_timer.c
[CC] goal/goal_util.c
[CC] goal_global/goal_global.c
[CC] goal_media/cm/goal_mi_mctc_cm.c
[CC] goal_media/goal_ma_led.c
[CC] goal_media/goal_ma_mbox.c
[CC] goal_media/goal_ma_nvs.c
[CC] goal_media/goal_ma_uart.c
[CC] goal_media/goal_mi_dm.c
[CC] goal_media/goal_mi_mctc.c
[CC] goal_media/goal_mi_mctc_ram.c
[CC] goal_media/goal_mi_nvs.c
[CC] plat/arch/linux/goal_target.c
[CC] plat/arch/linux/goal_target_cmdline.c
[CC] plat/board/emtrion/sbc_rzn1d_a7/goal_target_board.c
[CC] plat/drv/led/linux/led_emtrion_sbc.c
[CC] plat/drv/mbox/kernel/mbox_kernel.c
[CC] plat/drv/nvs/file/nvs_file_posix.c
[CC] plat/drv/uart/linux/uart_linux.c
[CC] protos/dd/rpc/goal_dd_rpc_ac.c
[CC] protos/goal_mctc/src/goal_mctc.c
[CC] protos/goal_mctc/src/goal_mctc_rb.c
[CC] protos/http/goal_http_ac.c
[CC] protos/lm_emit/goal_lm_emit.c
[CC] protos/lm_emit/goal_lm_emit_ma_uart.c
[CC] protos/lm_emit/goal_lm_emit_raw.c
[CC] protos/pnio/targets/goal/goal_pnio_rpc_ac.c
[CC] protos/snmp/server/goal_snmp_ac.c
[CC] ext/base64/src/cdecode.c
[CC] ext/base64/src/cencode.c
[LD] projects/2015013_irj45/ac/01_pnio_io_mirror/gcc/build/emtrion_sbc_rzn1d_a7/goal_emtrion_sbc_rzn1d_a7.bin
If you need to specify the cross compiler, you can do so by calling make in the following way:
The resulting binary is located in the sub folder build/emtrion_sbc_rzn1d_a7. It can be transfered to the device using scp:
The binary can be started on the device:
Automatic start of the firmware
There is an init script /etc/init.d/goal_app.sh provided, which if a binary under /home/root/goal_emtrion_sbc_rzn1d_a7.bin is available, this is started at boot time.
Installation of the port Industrial Communication Explorer
The Industrial Communication Explorer is a management tool including PLC capabilities for EtherCAT, PROFINET and EtherNet/IP. Please refer to it’s documentation for installation and usage:
Industrial Communication Explorer
Example Applications
Frequently asked questions
 |  |
---|---|
How to configure static IP configuration for the linux ethernet interface? | The initial ip configuration of the interface eth0 is configued in u-boot (see emtrion manual). Â If IP configuration shall be done through linux, clear all uboot variables related to IP address: If done so, a static IP address or DHCP can be enabled through an init script. |
How to automatically start an application. | Put application into home folder /home/root under name goal_rzn1d_a7_linux.bin. After a reboot the application will be started automatically. |
How to disable waiting for network connection during startup of the device. | Once all IP address related variables in uboot are deleted, this check is disabled. |