Software design & development (for embedded systems)

Creating embedded solutions requires fundamentally different skills compared to those required for standard IT solutions. Therefore Minds Creating Solutions have solid technical engineering backgrounds. We design and develop embedded applications, hardware and production test software, board-support-packs, OS porting, device drivers and protocol stacks. To do so we use cross development tool chains and in-circuit emulators that match the chosen hardware platform.

Operating Systems

Operating systems come in a multitude of styles, forms and shapes. As an independent development company we can select the most suitable one for the job. Because not all situations are the same we can make a choice from all mainstream operating systems. However situations exist in the embedded world where time is critical and the functionality of the system fixed and limited, there is always the choice of no OS.

Programming Languages

We have been active in the computer industry for over 20 years, so several programming languages have been used. When selecting a language for the job, the most efficient in terms of speed, portability, familiarity and maintainability is chosen. For portability across server and desktop platforms Java is a preferred choice, when developing hard real-time embedded systems we mostly use C/C++.

Scripting languages are used glueing together all sorts of development tasks. Tools and conversions help when either installing or testing software and systems. Perl and JavaScript are some of the more frequently used languages

Software development Tools

Tools can shorten development time. A few of the ones we have used are: Borland C++ Builder, Microsoft Visual Studio, GNU tool chains and Keil C. Tools that "generate" code are considered however today such tools in the embedded field often don't fulfil their promises.


Middleware

Middleware is almost mandatory nowadays when developing distributed, load balancing and fail-over capable applications. Middleware eases the development burden of these applications by providing a solution for all or part of the required features. Recently two concurrent technologies have emerged that can be used for distributed application development: .NET (Microsoft) and J2EE (Sun). Both offer roughly the same features, both of them having their strong points. We haven't made a definite choice for either of these technologies. As a vendor independent development company we select the best technology for the job at hand.

Web Services

Web services are a relatively new field in the ICT business. Evolved for interoperability between different vendors on different platforms they are rapidly becoming a preferred way to exchange information. They form a promising alternative for DCOM and CORBA. Based on open standards like SOAP, WSDL, UDDI and XML-encryption it is well-supported by a myriad of vendors. We expect this field to mature in transaction and security standardization in the very near future certainly when a protocol encapsulating technology like UPnP gets a foothold in the consumer markets. Another trend is creation of webbrowser based graphical user interfaces. Making use of a pc-based browser graphical capabilities relieves the functional unit from the implementation of a resource greedy user interface and thus can dramatically reduce the embedded software footprint

Advanced communications

Traditionally there always was a distinction between datacom and telecom. Today, from a technological, transport point of view, these differences have disappeared, while the architectural differences between packet-switched and circuit-switched networks still remain. Because we work with both architectures we are able to create communication systems that operate fully transparent to the user.

Wireless

Wireless technologies will become increasingly important in the years to come. We have already created solutions integrating and designing the various wireless technologies: Bluetooth, WIFI (802.11x), IrDA, RC5

Wired

RS232, RS422, RS485, 802.x, IEEE 1394 (FireWire), USB, 10/100 Ethernet

Protocols

Although not the only protocol available, TCP/IP and all its associated standards and products are the backbone of our modern, internet-based society. Therefore it is one of our core competences. We use TCP/IP from small 8-bit micro controllers to high-performance server systems. We used this technology to create our PCE platform, which can be used for embedded (media) web servers, POS networks, media rendering devices and many other systems that simply need to communicate.


Local busses

We have been designing software components for industry standard busses like PCI, miniPCI, but also high and low speed device to device serial communication busses like LVDS and I2C.

Microprocessor systems

Over the years we gained experience with products based on various microprocessors:

Intel

80x68, 8051, StrongArm, XScale

Motorola

68K, 6809

Atmel

AVR series

Altera

Nios, ARM9

NetSilicon

ARM7, ARM9

Philips

8051 series

Device drivers

Device drivers have been created for a multitude of different hardware solutions, including video scalers and codecs, MPEG accelerators, display controllers, firewire links, etc.

Use of standards

"Every standard can be improved. That doesn't happen, which is why it is a standard." Standardization is an important means to fight unmanageable complexity. It is however not a cure for all diseases and sometimes it is better just to build something yourself which works better in that one specific case. The consideration to do so must always be economically tested. Applying as many standards as possible without them having a restraining influence is preferable in general.