• Stars
    star
    130
  • Rank 277,575 (Top 6 %)
  • Language
    Python
  • License
    MIT License
  • Created over 4 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SIMATIC IOT2050 Isar/Debian Board Support Package

META-IOT2050

This Isar layer contains recipes, configuration and other artifacts that are specific to Debian-based IOT2050 product.

Build example image

Before building the system, you will need to install docker on build host. For example under Debian Linux

sudo apt install docker.io

If you want to run docker as non-root user then you need to add your user to the docker group:

sudo usermod -aG docker $USER

You may need to re-login or issue newgrp.

Then open the menu to select the desired image and options:

./kas-container menu

After the build completed, the final image is under

build/tmp/deploy/images/iot2050/iot2050-image-example-iot2050-debian-iot2050.wic

Build user SDK

Note: Current SDK only supports Linux x86-64 host machine

./kas-container build kas-iot2050-example.yml:kas/opt/sdk.yml

(or select SDK in kas menu)

After the build completed, the SDK tarball is located at

build/tmp/deploy/images/iot2050/sdk-isar-arm64.tar.xz

Please follow the further instruction file README.sdk in the SDK tarball.

The SDK is also available as docker image. To import it into a docker host, run

docker load -i build/tmp/deploy/images/iot2050/sdk-iot2050-debian-arm64-docker-archive.tar.xz

Build qemu image

To boot IOT2050 image from qemu, you need a customized image for proper booting. Please use kas menu with the following command and select qemu image for target build with example image or example image with swupdate support

./kas-container menu

Then below command can be used to boot qemu image on a platform that qemu-system-aarch64 is installed.

Run qemu:

/bin/sh start-qemu-iot2050.sh"

Clean build result

./kas-container --isar clean

Booting the image from SD card

Under Linux, insert an unused SD card. Assuming the SD card takes device /dev/mmcblk0, use dd to copy the image to it. For example:

$ sudo dd if=build/tmp/deploy/images/iot2050/iot2050-image-example-iot2050-debian-iot2050.wic \
          of=/dev/mmcblk0 bs=4M oflag=sync

Alternatively, install the bmap-tools package and run the following command which is generally faster and safer:

$ sudo bmaptool copy build/tmp/deploy/images/iot2050/iot2050-image-example-iot2050-debian-iot2050.wic /dev/mmcblk0

The example image starts with the IP 192.168.200.1 preconfigured on the first Ethernet interface, and use DHCP at another. You can use ssh to connect to the system.

The BSP image does not configure the network. If you want to ssh into the system, you can use the root terminal via UART to ifconfig the IP address and use that to ssh in.

NOTE: To login, the default username and password is root. And you are required to change the default password when first login.

Installing the image on the eMMC (IOT2050 Advanced only)

During the very first boot of the image from an SD card or USB stick, you can request the installation to the eMMC. For that, press the USER button while the status LED is blinking orange during that first boot. Hold the button for at least 5 seconds to start the installation.

NOTE: All content of the eMMC will be overwritten by this procedure!

The ongoing installation is signaled by a fast blinking status LED. Wait for several minutes until the LED stops blinking and the device reboots to the eMMC. You can safely remove the SD card or USB stick at that point.

The installation can also be triggered automatically by creating the file /etc/install-on-emmc on the vanilla image by mounting it under Linux and executing, e.g., touch <mountpoint>/etc/install-on-emmc.

Selecting a boot device

By default, the boot loader will pick the first bootable device. If that device may no longer fully start, you can select an alternative boot device in the U-Boot shell. Attach a USB-UART adapter to X14, connect it to a host PC and open a terminal program on that port. Reset the device and interrupt the boot when it counts down ("Hit any key to stop autoboot"). Then type

=> setenv boot_targets mmc0
=> run distro_bootcmd

to boot from the microSD card. Use usb0 for the first USB mass storage device.

NOTE: This selection is not persistent. The boot loader will fall back to its default boot order after reset.

Building with SWUpdate support

It is possible to create an image with a SWUpdate based double copy root file system for Over-The-Air updates by selecting the option Example image with SWUpdate support during the image configuration with ./kas-container menu. You can also build the image by calling:

./kas-container build kas-iot2050-example.yml:kas/opt/swupdate-example.yml

You can find the final image under build/tmp/deploy/images/iot2050/iot2050-image-swu-example-iot2050-debian-iot2050.wic. This image holds the necessary partition layout with two root file systems. The image iot2050-image-swu-example-iot2050-debian-iot2050.wic can be flashed directly to a SD card as described in section Booting the image from SD card.

NOTE: As the image contains 2 root file systems, it has a size of 7 Gigabytes.

It also will create a binary for updating the system at build/tmp/deploy/images/iot2050/iot2050-image-swu-example-iot2050-debian-iot2050.swu

Update an image with SWUpdate

The following steps are necessary to update an image created with SWUpdate support.

  1. Transfer the SWUpdate binary iot2050-image-swu-example-iot2050-debian-iot2050.swu to the target system.

  2. Update the system with SWUpdate by executing:

$ swupdate -i iot2050-image-swu-example-iot2050-debian-iot2050.swu

You can find more details and options for the command swupdate in the SWUpdate documentation.

NOTE: The used SWUpdate package does not contain a web-app example.

SWUpdate will write the image to the unused root partition and updates the EFI Boot Guard state. EFI Boot Guard is the bootloader that controls which of the two kernels and root file systems are booted.

  1. Reboot the system into the new root file system. The switch between the root file systems occurs automatically and requires no user interaction.

  2. Confirm that the new root file system is correctly booted.

After a reboot, the device boots into the new root file system. If the boot is successful the update process needs to be completed by calling:

$ complete_update.sh

The script sets the update state in the EFI Boot Guard configuration to the initial state.

If the update is deemed failed, resetting the device will select the previous root file system.

U-Boot environment

The bootloader environment needs to be adapted to select the correct root file system during boot. This adaptation occurs automatically during the first boot by executing the patch-u-boot-env.service. This systemd-service activates the hardware watchdog in the U-Boot environment, setting it to 60 seconds by default.

Revert to the default environment

If it is necessary to revert to the default U-Boot environment the following command can be used:

$ fw_setenv -f /etc/u-boot-initial-env

More Repositories

1

jailhouse

Linux-based partitioning hypervisor
C
1,720
star
2

ros-sharp

ROS# is a set of open source software libraries and tools in C# for communicating with ROS from .NET applications, in particular Unity3D
C#
956
star
3

kas

Setup tool for bitbake based projects
Python
358
star
4

edgeshark

Discover and capture container network traffic from your comfy desktop Wireshark, using a containerized service and a Wireshark plugin.
Markdown
244
star
5

confluence-dumper

Tool to export Confluence spaces and pages recursively via its API
Python
194
star
6

ix

Siemens Industrial Experience is a design system for designers and developers, to consistently create the perfect digital experience for industrial software products.
TypeScript
190
star
7

embb

Embedded Multicore Building Blocks (EMB²): Library for parallel programming of embedded systems. Star us on GitHub? +1
C++
179
star
8

meta-iot2000

SIMATIC IOT2000 Yocto Board Support Package
C
127
star
9

industrialbenchmark

Industrial Benchmark
Java
123
star
10

efibootguard

Simple UEFI boot loader with support for safely switching between current and updated partition sets
C
100
star
11

fluffi

FLUFFI (Fully Localized Utility For Fuzzing Instantaneously) - A distributed evolutionary binary fuzzer for pentesters
C++
99
star
12

simatic-s7-webserver-api

A .NET API Client Library for the SIMATIC S7 PLC Webserver API
C#
97
star
13

powergym

A Gym-like environment for Volt-Var control in power distribution systems.
Python
70
star
14

policy_search_bb-alpha

Python
69
star
15

codeface

Codeface is a framework for analysing technical and social aspects of software development
R
67
star
16

jailhouse-images

Jailhouse demonstration and testing images
C
56
star
17

linux-entra-sso

Browser plugin for Linux to SSO on Microsoft Entra ID using a locally running microsoft identity broker (Intune).
JavaScript
49
star
18

freertos-cell

FreeRTOS for Jailhouse Cells
C
47
star
19

dtasm

Digital Twin Assembly - A portable and sandboxed package format for executable simulation modules based on WebAssembly
Rust
39
star
20

wfx

a lightweight, general-purpose workflow executor
Go
37
star
21

sourcegrid

sourcegrid
C#
36
star
22

mtda

Multi-Tenant Device Access
Python
35
star
23

cshargextcap

[Edgeshark] Wireshark extcap plugin for container traffic capture live streaming.
Go
30
star
24

pycontainerd

Python bindings for containerd API
Python
30
star
25

restapidoc

A RESTful API documentation plugin for the Grails web application framework
Groovy
28
star
26

ix-icons

Icon library for @siemens/ix
TypeScript
25
star
27

opc-ua-pubsub-dotnet

opc-ua-pubsub-dotnet is a library which implements OPC UA PubSub encoding and decoding in a simplified way.
C#
25
star
28

continuous-clearing

The Continuous Clearing Tool scans and collects the 3rd party OSS components used in a NPM/NuGet/Debian/Maven/Python/Conan/Aipine project and uploads it to SW360 and Fossology by accepting respective project ID for license clearing.
C#
23
star
29

libuta

Unified Trust Anchor Library
C
20
star
30

xenomai

Mirror of xenomai-forge for pull requests
C
20
star
31

siapp-sdk

Software Development Kit to build SIAPPs
C++
20
star
32

ix-blazor

Siemens IX library for Blazor
CSS
19
star
33

cvss-suite

CvssSuite - This Ruby gem helps you to process the vector of the Common Vulnerability Scoring System.
Ruby
18
star
34

GoScans

Collection of network scan modules for infrastructure discovery and information gathering.
Go
17
star
35

Large-Scale-Discovery

A network scanning solution for information gathering in large IT/OT network environments.
Go
16
star
36

u-boot

U-Boot
C
16
star
37

JMiniZinc

JMiniZinc
Java
15
star
38

CtrlppCheck

C++
14
star
39

simatic-ai-launcher

Get started with the toolbox of SIMATIC Artificial Intelligence Launcher.
Python
14
star
40

sparring

Network simulation for malware analysis.
Python
13
star
41

dfu-util

Device Firmware Upgrade Utilities
C
12
star
42

packetflix

[Edgeshark] container "binge watching" live packet streams for Wireshark(nado) nerds!
Go
11
star
43

pydcc

PyDCC is a software library for reading and automated processing of digital calibration certificates (DCCs).
Python
11
star
44

gencmpclient

generic CMP [RFC 4210, RFC 9483] client library and CLI, based on CMPforOpenSSL (https://github.com/mpeylo/cmpossl)
C
10
star
45

LightweightCmpRa

CLI-based Registration Authority application PoC
Java
10
star
46

ghostwire

[Edgeshark] Virtual communication discovery in container hosts
TypeScript
9
star
47

link-checker-service

The self-hosted Link Checker web service runs cached and otherwise optimized broken link checks
Go
8
star
48

meta-coral

ISAR Layer for Coral TPU
Smarty
7
star
49

OOASP

Jupyter Notebook
7
star
50

meta-efibootguard

Yocto layer for EFI Boot Guard
Python
7
star
51

evaluation-framework

Tools for specifying and evaluating many variants of a (Unity) simulation model and visualizing the results in a decision support system.
C#
7
star
52

isar-riscv

Isar layer to support RISC-V architecture for QEMU and also for upcoming NOEL-V hardware within SELENE EU project
Shell
6
star
53

tstomp

tStomp
Tcl
6
star
54

omniproperties

Think of java properties deluxe
Java
6
star
55

cyclonedx-property-taxonomy

CycloneDX Property Taxonomy for the 'siemens' namespace
6
star
56

spdx-licenselist

SPDX license list
5
star
57

libsecutils

Wrapper library for commonly used OpenSSL features, providing a simpler, more application-oriented API.
C
5
star
58

sicam-gridedge-configurationtemplates

this is a collection of templates which can be used in SICAM GridEdge product in order to collect data (measurements/asset information data) and publish the data to a cloud system.
5
star
59

cityhub-sdk

CityHub SDK
JavaScript
5
star
60

sinema-rc-tools

This repository contains tooling for the SINEMA-RC solution of Siemens.
Python
5
star
61

snap-to-bucket

A python tool to automate moving AWS snapshots into an AWS S3 bucket and restore backups from there as an AWS EBS volume.
Python
5
star
62

modular-application-creator-use-cases

HTML
5
star
63

tia-addin-build-package

4
star
64

csharg

[Edgeshark] client and CLI to packet capture streaming API
Go
4
star
65

turtlefinder

reusable container engine discovery, not only for Edgeshark
Go
4
star
66

embeddedCMP

proof-of-concept CMP client on the NXP FRDM-K64F platform
C
4
star
67

ix-starter

Siemens Industrial Experience is a design system for designers and developers, to consistently create the perfect digital experience for industrial software products.
TypeScript
4
star
68

androit_shmem

Androit: Real-time capable Android shared memory service
C++
3
star
69

cmp-ra-component

A CMP Registration Authority (RA)
Java
3
star
70

mkdocs-siemens

3
star
71

android-x86-siemens

Android-x86 build configuration for Siemens products, for upstream see http://git.android-x86.org/?p=device/siemens.git
Shell
3
star
72

k3-rti-wdt

RTI Watchdog Firmware for TI K3 SoCs
Assembly
3
star
73

vanilc

C++
2
star
74

.github

2
star
75

ProductConfigurationWithSHACL

Example code and models for a paper published at the Configuration Workshop 2018
Java
2
star
76

fact

fact
Python
2
star
77

lion

Code to reproduce experiments from "User-Interactive Offline Reinforcement Learning" (ICLR 2023)
Python
2
star
78

python-smime-email

Generate x509 SMIME signed emails with ease!
Python
2
star
79

simatic-s7-1500-tm-fast-vhdl-application-examples

VHDL Examples for the S7-1500 TM FAST Module from SIEMENS AG
VHDL
2
star
80

ASLanPPConnector

ASLan++ connector
Java
1
star
81

ix-docs

1
star
82

M-Fit

the M-Fit suite, a set of programs for testing and validating traffic controllers against the various ITE/AASHTO/NEMA ATC and Caltrans TEES 2009 standards
C
1
star
83

django-mantis-core

A wrapper around the Django Dingos app for the Mantis Cyber Threat Intelligence Mgmt. Framework.
Python
1
star
84

OOCSP

OOCSP
1
star
85

puppet-pam_pkcs11

A Puppet module to manage pam_pkcs11
Ruby
1
star
86

continuous-conformance

Azure DevOps extension to create automatically conformance work items.
TypeScript
1
star