Giter Club home page Giter Club logo

cc-fw's Introduction

Cloud Chaser

Primary Contact: Phillip Sitbon [email protected]

Purpose

Cloud Chaser is a sub-GHz radio platform designed to provide robust and reliable wireless communications with mobile systems (e.g. wearable and IoT) in a small form factor. Capabilities include high-bandwidth sensor streaming, ultra-low latency response, long range (1km+) and high speed (up to 1Mbps) configurations, easy programmability, and full regulatory compliance within the 915MHz/868MHz bands.

Project Summary

This project supports the Cloud Chaser v1 and v2 boards, which have:

  • An NXP (Formerly Freescale) Kinetis K66 180MHz CPU (MK66FX1M0VMD18)
  • Two CC1200 radios (v2 has one)
  • Two CC1190 range extenders (v2 has one)

The base system code here is largely an adaptation of the Kinetis SDK v2.0. It has been converted to use CMake but otherwise efforts were taken to leave the SDK code as unchanged as possible.

Project Structure

  • fw: The base firmware project directory.
    • config.cmake: Defines the project name, loaded from fw/project/<name>.
  • fw/kinetis: The primary SDK codebase, organized into freertos, sdk, and middleware categories.
  • fw/board: SDK-integrated board parameters / support.
  • fw/project/cloudchaser: The default main project that implements application functionality.

Build & Flash

Currently only Linux is supported as a build/flash platform, but build on Mac have been reported as successful as well.

Building

CMake does most of the work, you lucky dog.

Prerequisites

Configuring

The default configuration builds the project in fw/project/cloudchaser, which is set in fw/config.cmake. The board selection for the project is defined in fw/project/cloudchaser/config.cmake, which is cloudchaser by default.

If any config.cmake parameters are changed, the build directory below needs to be wiped and cmake re-run.

Build

From the top level folder:

sky:cloudchaser$ mkdir build && cd $_
sky:build$ cmake ..
sky:build$ make

After this, the target .elf file is fw.elf in the build folder.

Flash

This process is currently a bit janky, and will eventually include a nice make command to go with it. For now, you have two options: a one-off flash or a flash & debug (with gdb).

One-off Flash

Connect your J-Link to Cloud Chaser and run the following:

sky:build$ ../flash.sh
Flash & Debug
sky:build$ ../jlink.sh

In a separate console:

sky:build$ ../debug.sh

At this point, the board is running and you can use Ctrl+C to halt and do fancy debug stuff. If you desire SWO (debug) output, in yet another window do:

sky:build$ telnet localhost 2332

You may need to install the telnet package.

Advanced Debugging

If you want to get serious about debugging and, like the maintainer don't know gdb very deeply, you might like Segger's J-Link Debugger from their software page. It has a graphical interface and is easy to use.

If you want to get going with it fast, point it to the settings file located at etc/fw.jdebug.

Usage

Currently the primary interface to Cloud Chaser is via Python (2.7+) scripts. Within the etc/scripts folder, cc.py defines the interface class and provides examples on how to send and receive packets.

cc-fw's People

Contributors

sitbon avatar

Watchers

 avatar  avatar

cc-fw's Issues

Remote channel recalibration

Maybe as the initial support for custom channel sets. Can already change cells, but th cell if defines the channel map. It would be better to define non-ovelapping sets, whether generated or user-specified.

SDR Mode

Have a second firmware application supporting SDR mode and read out raw I/Q data for programs like GNU radio.

Would need to validate all of the rdio_util functions that change the parameters, I know many of them were potentially inaccurate, and originally designed for a system with no FPU. That limitation will not be expected anymore, so now I can more closely design the conversion algorithms according to the datasheet using floating point.

FOTA

Manual updates over the air triggered via USB command and auto-propagation of newer versions (based on compile id), or at least pushing the current firmware via command.

Promiscuous mode

If it becomes useful, allow receiving packets up the stack even when the destination is not the current node.

May be good for tracking other peer activity at the net layer?

Channel modulation mode selection

Based off special bits in cell id, will switch between 4GFSK 200ksps (default, normal), 2GFSK 200ksps (long-range) and 4GFSK 600ksps (high-speed).

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.