The main goal of the project is to design an embedded hardware and software core for our client’s industrial product.
Why bother to design a custom core, considering the multiple massive and cheap options existing nowadays like, for instance, the Raspberry Pi?

1. The short working temperature range: from 0ºC to 50ºC. Thus making the board useless in a non-domestic environment.
2. The SD card, where the Operating System is stored, is sensitive to vibrations and the file system can be corrupted if the device is powered off during a write operation cycle on the SD Card. Also, the low number of write cycles and its low storage capacity makes it easy to reach the limit of write cycles.
3. The fact that our client’s product needed the CE certification. The certification is a thorough process that includes strict EMC compliant specifications that differ depending on the country-areas where the product is going to be sold. It’s not possible to get the certification using these kinds of modules together with some peripherals or cable connections. It always requires very fine-tuning of both electronic and mechanical components.
4. Stocking problems. Shortage avoidance. Depending on complete solutions to base a product on (like Beagle board, Raspberry, or Arduino), it’s not a good idea when the product scales up, because its main important component will have a huge dependency on the market (other manufacturers, etc.) and, more importantly, it will depend on the criteria of the manufacturer of that module.

5. Last but not least: the price. Using these modules seems cheap at the beginning of the project and, indeed, it is! But once the project it’s been validated, and the mass production process starts being analyzed, the price reduction is one of the most important things to be considered. You will find no mass product on the market based on these kinds of modules.
The project was structured in different phases, thus providing a lean approach development to the client’s idea:
1. Building an MVP based on Raspberry Pi and several USB-connected modules, thus providing Bluetooth, Rs485, CAN, and other peripheral communications.



Using Arduino or a Raspberry kind of HW is a good choice in the MVP project phase. Because it allows us to quickly develop and measure if the client expectations are being matched, or the client needs to modify its specifications.

2. Once the prototype was validated, it was time to develop the whole custom embedded HW and SW core. To do that we did perform several tasks:
- Study of the different ARM architecture microcontrollers existing on the market.
- Choice of Freescale’s i.MX258 as the main CPU.
- Hardware Design (schematic). The most notable features of the design are:
- ARM9 @ 400 MHz processor.
- Two DRAMs of 64 MB each.
- A FLASH memory of 512 MB.
- An ethernet controller at the physical level.
- A switched power supply system based on the MC34704B.
- A 6-layer PCB design with class 6.
- PCI Express connector.
- PCB design.
- High-speed traces with impedance matching and length tuning.
- Software design (embedded Linux)
- PCB manufacturing.
- Prototype Testing phase.



3. After all prototypes were tested under both general and specific circumstances, the mass production definition process and the certification process took place.
4. The project it’s been a success and our client’s product is present in 5 countries on 3 different continents and more than 300 units have been deployed (March 2010).