Mark Sullivan
EMBEDDED SYSTEM SOFTWARE DEVELOPER & BS( Electronics and
communication)
Cell : 408-***-****
LINUX KERNEL SPECIALIS
Professional Synopsis:
I'm a software engineer with more than 10 years programming experience. My primary expertise has been
in the embedded devices domain writing mostly application software and some kernel programming as
well. I've also been an architect for a video streaming set-top box product that I co-created. I was
responsible for the system architecture & design, hardware & software component selection, system
software implementation, testing and building prototypes. I have a good understanding of the complete
software stack used for building embedded products, right from the kernel space up to user applications.
I've written robust multi-threaded, portable, networking applications in resource constrained embedded
systems (in Linux).
I'm inclined to working on consumer electronic devices in the multimedia/networking domain. I'm good
at arts and have co-designed the UI of our client product .
SKILL SET :
Programming Languages - C, C++, Java.
RTOS (Real time operating system) - Linux, VxWork RTOS, VDK (Visual DSP kernel) - A proprietary
RTOS from ADI supporting all the features of a standard, fully fledged RTOS.
Software Packages -MATLAB 6.0, Visual DSP++ (IDDE for Analog Devices Processor family), MS
Office, Linux Development Tool chain.
Embedded Architecture - Knowledge of RTOS architecture, scheduling methodologies, embedded
software framework design. Experience in customizing linux kernel for specific hardware board.
Experience in driver development for devices like SD-Card, Hard Disk and Boot Loader. Experience in
integrating various audio decoders like MP3, WMA, AC3, DTS and Digital Dolby. Experience in making
FAT32/16(File system) libraries reentrant, porting USB stack to BF-539 platform. Experience in
development in the CAN interface. Experience in HDMI (High Definition Multimedia Interface).
Tools and libraries : OpenMax, Gstreamer, QT 4.7 and Android, Qt/QtWebkit, DirectFB, DBUS,
Network Manager, OpenTV SDK
Communication Protocols: CAN, SPI, TCP/IP, CAN-FD (Overview)
Operating System : Linux (Fedora), Tizen and Windows, Android
Platform : ARMv6, Intel Sandybridge and Valleyview
Database : SQLite (SQL)
Debugging tool : GDB, Visual Studio 2008 and Eclipse.
Miscellaneous Tools : Source insight, Beyond Compare, GIT, Tortoise CVS, clearcase and VMware.
Embedded Communication - Exposure to Bluetooth and WiFi
Project Details:
1. Streaming multimedia client middleware
Role: Product Architect
Co-created a video streaming solution for on-demand and live content. I'm responsible for design and
development of the frontend client for the streaming service. The client works on a variety of devices
from STBs, desktop PCs to tablets and mobile phones.
It is a lightweight middleware for streaming multimedia devices, capable of running on a variety of
hardware, from low-end media SoC's to powerful desktops. My work included:
Design and implementation of a unique finite state machine base UIX framework. UI programmers
could independently develop their UI widgets/screens and then interface with the framework using it's
APIs to build UX flow and cohesive application.
Design of a hybrid UI, where performance intensive parts were implemented as native widgets while
dynamic UIs were implemented as web views.
Creating a portable multimedia plugin:
Supports common trick-mode for multimedia playback
Supports our custom version of dynamic bitrate streaming
Provides a state-machine based `stability layer' which provided consistent performance across various
platforms
Supports multimedia backends for different OS platforms.
Implementation of multi-threaded data abstraction libraries for fetching video catalogue information
from different backends (from OTT and VoD services).
Implemented a unique software upgrade mechanism for the STB platform. Automatic, secure, power-
down resistant and extremely fast.
Design of a Notification framework for various events like USB plug/unplug, network state change and
user messages via XMPP.
Created a multi-platform build system for building firmware images and integrating with chip vendor
SDKs.
Design of a secure video streaming scheme using SSL mutual authentication.
Added support for a new IR remote control driver (DirectFB and kernel).
Design of system init. SysV init was used for running services like NetworkManager, DBus and DLNA
service (DJmount).
Designed NAND Flash partition for supporting power-down resistant firmware upgrade and reducing
rejection rate during factory provisioning.
Implemented a secure storage are using EncryptFS for storing sensitive information on Flash.
Fixing bugs in chip vendors SDK - boot-loader, low-level media libraries and Qt.
2. Interactive TV Application Suite:
Role: Solution Architect
Co-created a suite of interactive TV applications for the satellite TV domain. Applications consisted of
interactive widgets, pizza order application, dynamic yellow-pages, traffic display, educational &
personalized stock market app and a configurable application launcher. The applications were deployed
on DSMCC carousels and as resident applications for a leading Indian DTH service provider. My
responsibilities include:
Design and implementation of an interactive widgets framework for displaying dynamic content over
DSMCC carousels.
Developed a unique order compression codec for compressing pizza orders to a few typeable
characters. Gave compression of around 60% when compared to uncompressed order.
Design and implementation of an application framework for writing stacked screen applications for
NDS MediaHighway middleware.
3. Wireless Protocol Development
Role: Design And Development
TransferJet is a Close Proximity Wireless Transfer technology featuring simple operation, safe
connection and efficient transfer of data with very high speed. It is a new wireless technology that
combines the speed of UWB (Ultra-Wide Band) with the ease of NFC (Near Field Communications). It
would be mainly used for large data transfers between two electronic products such as mobile phones,
digital cameras, camcorders, computers, TVs, game products, and printers. My responsibilities include:
TransferJet protocol understanding.
Requirement gathering from hardware members.
Creation of functional Specification document and Design document for the TransferJet protocol.
Design, Implementation, Testing and Debugging of TransferJet protocol.
Hardware validation activities for this newly implemented protocol using FPGA boards.
Understanding different lower layer stack interfaces for TransferJet. (SDIO, PCI and MSPROIO).
Bug Fixing and Test suite creation.
Coordinating with offshore for integration of different modules.
4. CAR Multimedia - In Vehicle Infotainment
Role: Design And Development
The Main focus of this project is to build a complete In Vehicle Infotainment (IVI) system for General
Motors for car model year 13 and beyond. The system will be built on a multicore ARMv6
SystemOnChip with T-Engine (1 core) and Linux (2 cores). Our contribution is on infotainment part. This
will cover all media playback (USB, Ipod, Bluetooth), telematics, phone and internet application (GPS,
weather, browsing). The entire project is developed by C++ and QT. The communication between each
module is done by CCA framework (MOST standard). In this project there is an integration module called
IVI controller which has the responsible of integrating all the data from different module and presenting
to HMI (client). The client (HMI) is a browser based and it's implemented by QTwebkit. My
responsibilities include:
Development of IVI controller module using C++ and QT.
Implementation of Internet Application controller module using C++ and QT Webkit.
Development of Client handler for Bluetooth and Internet radio module.
Development of Javascript extension component using C++ and QTwebkit bridge.
Development of Application manager and download manager using QT.
Development of audio recording (using gstreamer) and Speech recognition .
5. Serial communication of Build and Parse Rings:
Role: Design And Development
The main objective of the project is to develop algorithm and software to build and Parse the serial
communication of CAN (Control Area Network) messages across the ECU's.
Packing and Unpacking of messages according to transmit or receive ECU. The range, conversion
factors, length of each signal is taken care of, without losing any precision of values.
Alive Rolling Count for sequencing and protection value mechanism for secure messages.
Differentiation of First busoff (short bus off) and consecutive bus-offs.
Allow retry of CAN message transmission if transmit queue is full.
6. Development of Hardware Check software for Transfer case systems:
Role: Design And Development
This project involved developing hardware check software for verifying transfer case ECU. It tests the
hardware functionality of the ECU like the CAN, A-to-D channels, I/O ports, memory, input/output
capture, and motor control. CANape tool was used for CAN communication. Also involved in
development of Labview application to measure parasitic current of the ECU in sleep mode. Developed
validation software to test the reliability of ECUs during production. The Labview application developed
was also integrated to the validation software to periodically measure parasitic current. The validation
software interacts with the ECU software to test the A-to-D channels, I/O port channels, I/O Capture
modules of the micro under different thermal and humidity conditions when the motor/Coil is PWMed at
different duty cycles. The code was developed using VC++ MFC and NEOVI CAN Hardware was used
for CAN communication. My responsibilities include:
Development of Hardware Check software for Transfer Case ECUs
Development of Validation software for Transfer Case ECUs
7. Development of Digital Filter Module for Instrument Cluster:
Role: Design And Development
The Digital Filter Module (DFM) is a CAN evaluation module, which reads and evaluates the messages
and signals directly from CAN. Based on the signals or the messages received it updates the memory
which is used by Digital Vehicle Messages module to display status icons, telltales, warning or error
popup in the display. The status icons, telltales and popup indicate the occurrence of any fault in the truck
to the driver. My responsibilities include:
Analysis of requirements, design, development and unit testing of Graphic objects module