We have experience in the following programming languages, operating systems and development platforms –
- Windows – C# .NET (VS 2005 – 2019) WinForms / WPF / Windows Services / Network (TCP/IP) / Web Services
- Windows – Visual Basic 6 / .NET
- Windows – C# .NET Compact – Windows CE / Windows Mobile (ARM) – EMDK
- Visual Studio Team Services
- Microsoft SQL Database (SSMS) / Oracle Database (SQL Developer)
- Linux – C – Application / Kernel Module
- Linux – Customised Gentoo Linux (x86) (including fast installation)
- Linux – Shell Scripting – BASH/KSH (x86/ARM)
- QNX – C – Application / Device Driver
- NetOS – C – Digi Embedded Wi-Fi Board (ARM)
- Linux – Network Programming (TCP/IP)
- Linux – C – Device Driver – 2.x/3.x/4.x Kernel (x86)
- Linux – Socket CAN / ISOTP
- Linux / QNX – Profibus (Hilscher/Softing)
- Maple Systems – EZwarePlus (HMI)
Vehicle Diagnostics / ECU Software Download (Development / Validation / End Of Line) –
Interpreting Vehicle Manufacturer and ECU Supplier specifications in order to perform the required level of diagnostic testing. Testing includes ECU diagnostics all the way to ECU software download processes.
Providing hardware interfaces and validation software to ECU suppliers and automotive manufacturers. Software used to validate interpretation / implementation of the ISO14229 (UDS) diagnostic standard as well as testing software download processes. Numerous standalone applications were developed to allow the individual modules to be tested in isolation to the complete vehicle (with all communications logged to text files).
Involved during all phases of the ECU suppliers development in order to validate the commands implemented. Remote / On-site support provided along with required software updates to implement new testing functionality as and when required. Directly involved at customer premises during the ECU diagnostic acceptance to ensure all implemented commands were performed correctly on the customers vehicle and to ensure the low level CAN message structure adhered to the ISO15765 standard.
Third party software / hardware (Intrepid / Kvaser) utilised during vehicle ECU communications testing to allow the vehicle CAN bus data to be captured and analysed (to ensure correct message segmentation performed).
ISO15765 (UDS) PC Driver Layer –
Development of a UDS PC side application driver to support both Kvaser and PEAK CAN hardware interfaces. This simplifies the top layer application development. Allowing the main applications to concentrate on the full message transfers thus decreasing development time.
Vehicle Communication Interface Driver –
Vehicle Interface (VCI) application level driver for Linux (developed in C). The driver was capable of automatically detecting the vehicle interface connection to the PC, either USB, Wi-Fi or Ethernet and passing application messages to/from the vehicle interface to allow vehicle communications. A number of intelligent communication mechanisms were implemented within the driver to allow fast message throughput between the PC and the VCI (message compression / streaming).
Vehicle (Automotive/Construction/Agriculture) ECU diagnostics and ECU software programming are all possible through the developed driver. Simultaneous communication sessions were supported using the VCI hardware supported interfaces – ISO9141 (K-Line) and ISO11898 (CAN). Input / Output control (LEDs and Barcode Reader) were also fully supported by the developed driver.
Developed Wi-Fi board firmware extensions and enhancements using DiGi NetOS development tools/environment. Implemented intelligent message passing mechanisms to improve the speed of communications between the PC and the Vehicle (specifically for ECU software programming).
Performed extensive testing of both the VCI firmware, the developed driver and the higher level application level software. Ensured all required messages were being transmitted to the required hardware bus correctly and all message segmentation was being performed to the implemented protocols requirements (ISO15765/Volvo D2/Volvo D2SD/MOST/Keyword 2000/DS2 …).
PC104 CAN Driver –
Developed a Linux Kernel (2.6.x) character device driver for a dual channel PC104 CAN adapter. The device driver implemented the ISO11898 and ISO15675 protocols (11 and 29 bit identifiers) allowing the higher level applications to send / receive ISO14229 ECU messages (up to the maximum permitted protocol limit). All emphasis was placed on making the driver as robust and fast as possible, to allow simultaneous ECU software programming (both channels performing ECU programming simultaneously).
The driver was used in high volume automotive production facilities, performing high speed software download and diagnostics to a number of on vehicle ECUs. The driver was also utilised within agriculture production environments, again performing high speed ECU programming and diagnostics.
ECU Session Control Application / Driver Framework –
A framework and session management application was designed and developed for Linux (developed in C) to allow simulations ECU communications by higher level system software. The framework utilises a configuration mechanism to allow for physical hardware to be changed, leaving the higher level application levels to remain independent from the hardware.
Implemented ECU session management and hardware protocol locking, ensuring higher level applications cannot cause hardware misconfigurations. The session management keeps track of active ECU communication sessions and also takes take of any ECU keepalive message requirements (removing this overhead from the higher level applications). Multiple drivers developed for this framework for ISO9141 (K-Line) and ISO11898 (CAN) hardware interfaces.
Mobile Data Capture –
Designed and developed a mobile critical component data capture solution for vehicle assembly facilities. The system is comprised of a Wi-Fi enabled barcode scanner and Wi-Fi enabled label printer.
Software developed for a handheld barcode scanner (Windows CE / Windows Mobile / C# .Net Compact / EMDK). The software being capable of identifying the exact components required for the vehicle being assembled (sub-assemblies). Ensuring the correct parts are fitted to the vehicle being assembled. All correctly scanned component data finally transmitted (TCP/IP) to a central database for storage (and later analysis).
User prompting, Barcode Scanning (including validation) and network connection code were all developed, including intelligent mechanisms to allow simple replacement hardware swap out / reconfiguration.
Telematics Test System –
Developed a system to test Telematics ECUs over a RS232 connection using a proprietary ECU supplier serial protocol. After successful testing an activation label is printed and all activation data sent to a central server (over SFTP or IBM MQ connection). Errors are reported to the operator, along with the option to retry the failed section of the test. Operator prompts shown in local language, ranging from English to Japanese.
TCP/IP Socket Programming –
Extensive experience in developing robust network based applications on Linux (C), DiGi NetOS (C) and Microsoft Windows platforms (C#/VB). Ranging from Vehicle Communication drivers, Network printer interfaces and message forwarding applications. All applications being used in vehicle production facilities thus requiring high availability.
Experienced in Wi-Fi and Ethernet networks, in terms of initial design / configuration / setup and onsite installation, right through to troubleshooting.
Network Design / Support –
Designed networks that are utilised within automotive production environments to ensure maximum uptime and throughput to support End Of Line vehicle testing requirements (both wired and wireless network architectures). On going network support also provided to ensure fast issue resolution.
Custom Linux Installation –
Developed and maintained a customised Gentoo Linux based installation, specific to the end systems requirements. The installation is designed to be simple to perform, with minimal user interactions. The complete OS was built to the end systems requirements and the kernel built to the hardware to be supported.
Please find further links for examples of completed projects. Should you require any further information then please feel free to contact us.