Noble Dragon 1 - Introduction

Introduction and Planning

Big Picture Goals

  1. Create an application for multiple varieties of target hardware that supports testing and simulation of embedded systems. (e.g. think inexpensive single-board-computers with means to run Modbus/TCP server to simulate a device, as an example)

  2. Create an architecture which include multiple ports including but not limited to free-rtos / lwip, free-rtos-plus, windows, linux and support for unit-testing.

  3. Provide a means to dynamically configure the device rather than requiring a special build every time. This could be user added built-in simulated devices or potentially configured through json file or web interface.

  4. The build system is expected to use CMake and conan (no immediate plan to support IAR or equivalent)

  5. The platform should support web-based and/or thick client utility for configuration. Potentially Angular Framework or equivalent.

Reference

NameDescription
Github Repositoryhttps://github.com/ericjameszimmerman/nobledragon
Planning Toolhttps://mural.co/
Target Initial HardwareMicromint Lincoln 60 (NXP LPC 1769 Arm Cortex M3)
Target OSfree-rtos / lwip

Preliminary Plan

The goal is to start small and get a basic application completed first before going too crazy on overall architecture.

The following was roughly outlined in https://mural.co/ (which is pretty cool)

Testing Mural Embedding

Step 1 - Basic CMake Build

I've used IAR embedded workbench in the past, but I've been away from smaller micros for the past few years, instead focusing on embedded Linux. During that time, my build environment changed to VSCode, CMake, Conan, and Docker, replacing the traditional IDEs. The plan is to see how well that applies.

I have used Conan package manager quite extensively for separating libraries into different repositories. I'm planning to continue using Conan/CMake, but stay with a monorepo for simplicity.

Project Structure

The following is the general project structure at this time.

  • One or more applications within the 'app' folder.

  • Multiple static lib projects within the 'libs' folder

  • All third-party / open source with their own license is kept within the 'third-party' folder.

CMake Build

Steps for working through the initial build.

  1. Downloaded a trial of Embedded Workbench and made sure the old projects were still able to build successfully.

  2. Downloaded LPCXpresso and MPCXpresso for the toolchain. The LPCXpresso make.exe didn't work with CMake, but the MPCXpresso one did.

  3. I found the following project and used it as the first step for build flags. (https://github.com/phodina/ProjectConverter)

  4. Worked through building static libs and main application.

  5. Refactored with resultant prior screenshot.

  6. I have not yet tested (can't find JTAG cable, but on order), but plan to verify this works before getting too far.