Giter VIP home page Giter VIP logo

bmz's Introduction

Introduction to BMZ

This is BMZ, a very simple embedded operating system and framework. The key idea of BMZ is that it provides not just OS style primitives (timers, tasks messaging etc.) but a framework for your embedded code. This means that to build your system you don't start from scratch with main(). Instead you start by effectively creating a block diagram in code. You name the blocks and the connections between them. BMZ provides the tasks to implement the blocks and the messages and queues to implement the connections. All you have to do is implement a group of up to five handlers per task. An init handler, a timeout handler, an idle time handler and message handlers to process received messages from up to two sources. All five are optional.

BMZ was created for Zilog 2004 Flash Nets Cash design competition run by Circuit Cellar magazine. I did receive a small prize and an honourable mention. The competition was really targetted at projects with a hardware component, and sadly as a 100% software guy (basically) I was limited to building something that just used the hardware on the provided development board. So the first BMZ project was a simple terminal server that served to make reasonable use of an ethernet port and two serial ports. It was a working project though and did require me to build a simple TCP/IP stack in BMZ.

BMZ stands for "Bare Metal Zilog" but nothing about it is really tied to the Zilog processor and hardware it originally ran on.

I decided to put BMZ up on Github to prevent it becoming lost forever. It is now necessary to use the Internet Archive to find anything of the original competition and project entry. I think the project has merit, the embedded framework concept is probably not novel, but I haven't ever seen anything exactly like it. I made use of BMZ on a few subsequent projects, and I would use it again without hesitation for the right kind of project. What is the right kind of project? Basically a simple bare metal embedded application on a small resource constrained microprocessor or microcomputer. Something with maybe a communications port of some kind, a few switches, LEDs, maybe a display. The sort of thing I made a living from back in the day.

I am starting today with the original, unaltered competition entry. I will tag that with Git as V1.00. I will endeavour to dig out some subsequent fixes and improvements from later projects.

What I would really love to do is use BMZ as the basis of scriptable simulation system that would enable you to develop and test your embedded code to the maximum extent possible on your desktop computer. That was an approach that was very successful for me back in the day, but all the code involved was proprietary to the companies I was working for at the time. I'd love to revive the ideas though, and BMZ could be an important building block in a complete system.

Bill Forster [email protected] Last update: 17Aug2017

bmz's People

Contributors

billforsternz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

linuxxiaolei

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.