Embedded Software

 

In it's raw form it's invisible.  Nothing more than "clumps" of negatively charged particles or lack thereof.  It's mass is essentially zero.  Making it one of lightest products of human ingenuity.  Yet, embedded software can cost more than 10 times your weight in gold to develop.  The selection of the wrong processor, the use of improper development techniques, the lack of debugging skills and more can result in project delays, bugs, and redesigns which lead to project delays and ballooning project costs.

Beningo Engineering has the experience and expertise to safely navigate the challenges of embedded software development.  We have a wide range of industry experience extending from developing embedded software for automotive applications, consumer electronics, military defense, mobile devices and space systems.

Our primary software services are focused on the development of firmware for embedded applications.  In addition, we also provide extended services in order to meet all of our customers needs.  Below are a few examples of our firmware and extended services.  If you have questions about our capabilities please feel free to contact us.

Firmware Services

  • Software Architecture Design and Modeling
  • Start-up code
  • Bootloaders
  • Driver Development
  • Application Code

Extended Services

  • Code Reviews
  • Training
  • Windows / Web Interface Software

How we develop software

One of the advantages of Beningo Engineering is our software development process.  With over 10 years of embedded software experience, we understand how to assist our customers in the development of software requirements that meet the needs of our customers.  If the customer has the next big idea but doesn't know how to go about designing it, we can assist in developing the requirements.  For customers that have designed their own requirements, we know how to verify, validate and make sure that our software meets those requirements.

When we start begin software development, we use the requirements that we've developed with our customers to develop a software architecture.  The architecture dictates the way in which the software will behave, function and interface with the world.  In order to design the architecture, we use the latest in software modeling techniques to design state diagrams, state charts, flow charts using the Universal Modeling Language (UML).  In addition we have used Matlab to perform analysis of our modeling and perform rapid prototyping to get our embedded systems up and running quickly.  In fact, we recommend to our customers (and follow our own recommendations) that they purchase and develop prototype software on development kits of the target processor family.  This allows insight into the target hardware which often decreases the BOM cost, decreases hardware revisions and ultimately decreasing time and cost to market.

During development, we following the strictest coding procedures which include the use of revision tracking systems (such as SVN) and bug tracking software.  At every stage of the development process as we develop drivers and application code we are continually testing and validating the code which we write in order to reveal bugs within the software.  We use bug tracking software to identify these issues and determine the root cause in order to continually improve our development process.  This has led to the identification of a number of strict techniques and procedures in order to produce high quality code with no bugs.

The Right Techniques

At Beningo Engineering, we take pride in providing high quality software that is written the right way the first time.  We follow strict industry standards such as ISO, IEEE and MISRA in order to develop software with a flexible architecture that allows easier portability.  The code that we develop is modular and aimed at being reusable and configurable.  This allows us to develop software quicker and cheaper.

We also adhere to proper coding techniques.  These include the use of encapsulation and the minimization of global variables.  This technique decreases the chances of bugs being introduced into the software by limiting the scope of access to important system variables.  The code that we develop is easy to read, well document and we keep functions simple and short so that they are easy to understand and maintain.  We use static analysis tools such as lint in order to reveal potential flaws in the code.

We understand that in embedded systems there are two primary elements which require managing; Space and Time.  These two parameters often need to be traded in order to optimize system performance.  Space is the amount of code space and RAM that is required to run while time is the time that it takes to run an algorithm.  We have the expertise and skills necessary to manage these system parameters.

Result You can Expect

When we develop embedded software, there are 7 key results which you can expect.  You can expect that the code will be

  • Fault Tolerant
  • Bug Free
  • Tested
  • Affordable to develop
  • Manageable and Maintainable
  • High Quality
  • Reusable Code

To find out more feel free to contact us at This e-mail address is being protected from spambots. You need JavaScript enabled to view it .

 

Polls

What language do you use to develop your embedded firmware?