Giter Club home page Giter Club logo

cb_lab4layer's Introduction

CB_Lab4Layer

This is the experimental CMSIS-Build Laboratory that uses project layers to compose multiple project examples from a set of different software packs.

CMSIS-Build can generate multiple reference examples for many different evaluation kits that demonstrate the functionality of complex software stacks. The range of examples is not limited, it can start from a simple RTOS based Blinky to more complex examples such as Cloud IoT connectors, or Machine Learning examples.

Directory Structure

Directory Content Description
./build Input: Scripts that generate reference examples from layers
./layer Output/Input: Layers extracted from master projects that are used to generate reference examples
./project Input: Master projects that are used to extract the layers
./docs Documentation that explains how to create the demo examples from scratch
./demo Demo examples (published on http://www.keil.com/iot)

Note: this is work in progress and there are several gaps that we will close in the near future:

Output projects are currently manually configured for MDK (uVision). In future, the Board pack should define the debug configuration of example projects. Board may have on-board debug adapters and therefore the debug settings depends on the target board that is used.

The various projects are based on software packs that public available.

Layers for IoT Cloud Examples

The following diagram shows the various layers that are used to compose the IoT Cloud examples.

Layers explained

Layer Implements
Board Base setup of a evaluation board; it includes CMSIS-Drivers and typically uses the device SDK
RTOS RTOS kernel used in the example application
Socket IP (internet) communication; frequently a TCP/IP stack
Module WiFi Shield used in the example; a separate layer to make it easy to change Arduino shields
App Application example; for IoT Cloud examples it contains typically a Cloud SDK

The examples are composed in a way that the device configuration is preserved and can be adopted to the requirements of a complex user application. It allows move this examples to bespoke hardware and extended it further with user code.

Working with the Examples

The following steps describe how to generate working examples from the content of the .\layer directory.

  1. Start bash shell: and set the .\build directory as base directory (start bash there or use the cd command).
      /c/Work/CB_Lab4Layer/build (master)
      $
  1. Setup CMSIS-Build: execute the CMSIS-Build setup script.
      $ source /c/CMSIS-Build/cbuild/etc/setup
      Set CMSIS_PACK_ROOT=/C/ARM/PACK
      Set CMSIS_BUILD_ROOT=/c/CMSIS-Build/cbuild/bin
      Set CMSIS_COMPILER_ROOT=/c/CMSIS-Build/cbuild/etc
      Added /c/CMSIS-Build/cbuild/bin into the PATH
  1. Compose a single project from layers: For this step it is necessary to understand which layers can be combined. Valid combinations are in the ProjectList.txt (# is a comment line that lists future combinations). The example below composes the project AWS_MQTT_Demo for 32F746GDISCOVERY board using ESP8266 module and WiFi socket with RTX as RTOS
      $ ./gen_proj.sh App=AWS_MQTT_Demo Board=32F746GDISCOVERY Module=ESP8266 Socket=WiFi RTOS=RTX --layer=../layer
      Generate project from layers
      Output:  AWS_MQTT_Demo/32F746GDISCOVERY_ESP8266_WiFi_RTX
      Project: AWS_MQTT_Demo.cprj
      (cbuildgen): Build Process Manager 0.9.0 (C) 2020 ARM
      M650: Command completed successfully.
  1. Compose multiple projects out of layers: The file ProjectList.txt provides the verified combinations. To compose all project combinations execute the following script:
      $ ./gen_proj_list.sh ProjectList.txt --layer=../layer
  1. Build a composed project: Invoke CMSIS-Build using the .cprj file directly from the build directory (or from the target sub-directory)
      $ cbuild.sh AWS_MQTT_Demo/32F746GDISCOVERY_ESP8266_WiFi_RTX/AWS_MQTT_Demo.cprj
      (cbuild.sh): Build Invocation 0.9.0 (C) 2019-2020 ARM
      ... 
      cbuild.sh finished successfully!

Layers can be extracted from the master projects by executing the following script:

      $ ./extract_layers.sh

cb_lab4layer's People

Contributors

robertrostohar avatar keilchris avatar zigamahne avatar reinhardkeil avatar guenthermartin avatar brondani avatar vladimirumek avatar jonatanantoni avatar miloradcvjetkovic avatar jkrech avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.