At the start of a project, you need to look into a number of aspects that will drive your design choices. The complete combination of Hardware and Software must be taken into account in order to get a performing, cost-efficient and future-safe design. An important issue for instance is to obtain a future-safe design that avoids vendor lock-in and provides a seamless upgrade path as technology and product requirements advance. Mind has strong experience in both HW and SW fields and can suggest different possibilities for the system architecture and the software platform for your specific application.
Criteria that are taken into consideration typically include:
General and Business considerations
- manufacturing volume of the product (from single pieces to millions of devices)
- need for third party application development on the platform (languages ( C, C++, Java), application protection, ...)
- security functions on the platform (protection by the OS, Java model, ...)
- networking (wireless, TCP/IP, bandwidth requirements, ...)
- portability (battery powered, size, ...)
- target unit price
- virtual memory (MMU required/available in hardware and OS ?)
- real-time functionality required (on a single processor or mulit-core ?)
- interactions with FPGA, ASIC and DSP (as peripherals)
- CPU choice (separate CPU or hard-core and soft-core CPU integrated inside FPGA ?)
- networking and busses (TCP/IP, Ethernet, USB, firewire, 802.11, IPv6, firewalling, ...)
- power requirements (low-power processors, RAM vs. ROM, XIP)
- storage (NOR/NAND Flash, Compact Flash, IDE)
- filesystems (JFFS2, (V)FAT, EXT3, NFS, SMB)
- reliability (reliability of Flash ROM technologies, watchdog, redundancy)
Taking into account the above criteria, system suggestions are made for the optimal processor (standard CPU core, System-On-Chip with integrated interface functionality or a CPU core embedded in an ASIC or FPGA), the optimal Operating System, but also bus structures, RAM and Flash technologies, external interfacing technologies, etc...
To better motivate your choice of Operating System, we can also offer an initial short training, e.g. on the use of the GNU tool chain for development with Embedded Linux and/or eCos for instance. With this short training, you will obtain some hands-on experience on the use of a GNU based tool chain and can validate that choice before start of development.