Nothing Special   »   [go: up one dir, main page]

0% found this document useful (0 votes)
31 views6 pages

7815farhan Mahmood - CV

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 6

4 Old Glenaire Court, Baildon, Shipley,

West Yorkshire, BD175AY.


Cell: +447800858960
FARHAN MAHMOOD Email: farhan.mahmood1@gmail.com

SUMMARY
I have over nineteen years of C/C++ based diversified industry architecture, development and integration
experience ranging from Real Time Operating System (RTOS) to device drivers to firmware to debugger
and simulator development to SetTopBox development. It includes specification, design, development,
integration, testing and maintenance of embedded system software. I possess strong code development,
debugging (especially complex multi-threaded applications), problem solving, effective communication
and team management skills.

SKILLS

Languages: C/C++, Assembly Language (ARM, MIPS, 68K/ColdFire,


Altera NiosII, x86)
Configuration Management: Rational ClearCase, Subversion, CVS, Microsoft Visual
Source Safe.
Defect Tracking: Rational ClearQuest, TestTrack, Bugzilla.

IDEs: Mentor Graphics EDGE IDE, TI Code Composer Studio,


Metrowerks CodeWarrior, WindRiver SDS, Microsoft Visual
Studio, Eclipse.
Debuggers and Compilation Tools: Mentor Graphics EDGE, code|lab and XRAY debuggers,
WindRiver SDS debugger, TI debugger, Lauterbach Trace32
debugger and ARM RealView debugger.
Mentor Graphics Microtec tools, ARM RealView compilation
tools, WindRiver Diab tools, TI tools TMS470 and
TMS320C55X, GNU tools, Metaware High tools, Renesas
Super H tools, Paradigm C/C++ tools and Intel XScale tools,
IMAGECRAFT and HITECH compilation tools for PSOC.
Debug Connections: Mentor Graphics MAJIC, Macraigor Wiggler, Raven and
mpDemon, ARM RealView MultiICE, Abatron BDI2000,
PnE micro PnE cable, USB multilink and Cyclone Max, ST
Micro Connect.
Real Time Operating System: Mentor Graphics Nucleus PLUS, OSEK and VRTX,
Windriver VXWorks, Embedded Linux and ST OS21.
Embedded Architectures: ARM, XSCALE, MIPS, ColdFire, 68K, Hitachi SH4, TI
OMAP.
Development Platforms: Windows, Linux and Solaris.
SetTopBox: Very good experience of RDK, UHD, linear over IP, OTT
applications, multiroom streaming, transcoding, linear
dynamic ad replacement, IPVOD ad insertion, voice control
and other smart rcu features, Pace Tungsten middleware,
Zenterio ZIDS middleware, Iwedia Comedia middleware,
OpenTV middleware and network package, Irdeto Conditional
Access, DVB, transport stream analysis and generation /
multiplexing.

PROFESSIONAL EXPERIENCE

Software Architect (May 2016 – to date)


I worked as software architect on a new STB middleware based on RDK and architected leading edge
features i.e UHD, linear over IP, OTT applications, multiroom streaming, transcoding, linear dynamic ad
replacement, IPVOD ad insertion, voice control and other smart rcu features.

Pace Plc (Sept 2014 – May 2016)


I worked as Principal Systems Integration Engineer at Pace plc. My responsibilities include technically
leading the project from requirements, making sure that third parties are implementing requirements as per
the specification and highlight where they are deviating and propose solution, focal point of contact for
third parties and customer, stakeholder management, doing bug triage, integration of components from
third parties, performing end to end systems integration testing which quite often is on customer site.

Project which I have completed under this role is

Systems Integration of High Definition Satellite + Ter Zapper platform


(including USB PVR and OTT), Satellite + Ter PVR platform
(including OTT and PushVod).
For this project, I was responsible for end to end systems integration covering CPE, headend system
(proprietary system providing the service information, EPG data, channel logos and editorial
recommendations, PVOD). For the OTT solution which included Huawei backend, Verimatrix, Apple
HLS, xmpp, I was only responsible for CPE integration.

Pace plc (Nov 2007 – Sept 2014)


I worked as Principal Software Engineer at Pace plc. My responsibilities include network package, device
drivers, firmware, middleware integration, conditional access integration and bug fixing.

Projects which I completed under this role were

Software Development for High Definition Satellite PVR


For this project, having rest of the team in India, my responsibility was to dive in where the team is lagging
and provide them technical advice and also design and implement solution to the problems. This covered
all aspects of a set top box development life cycle.

OpenTV Network Package

Customized Push VOD, Ethernet, UDF, service list management, OTA update and various other
functionalities in OpenTV network package for various operators.
Software Development for High Definition Cable Zapper

Under this project, I created the build system, did the board bring up, ported the testtask (command line
utility to test the hardware), developed various components of the interface layer between the middleware
and the low level drivers including kernel abstraction layer, layer for controlling debug traces, demux,
demod, output, flash and NVRAM. I was responsible for the integration of middleware, conditional access
and application with the low level drivers on our platform. That required number of integration sessions
with the third party. I was also responsible for merging the releases from third parties (buildmaster) and
also doing software releases to third parties and the customer. Also I did lot of bug fixing and onsite testing
at customer premises.

Device driver and Firmware for the front panel of Pace Next generation set
top box

I have written the device driver for the front panel of the next generation pace set top box. Front panel of
this set top box has a microcontroller on it to perform sophisticated operations. This driver allows the main
board to communicate with the front panel through the I2C interface. Also it has the capability for the in
circuit flash programming for front panel flash using the same I2C lines. Also I have implemented the
firmware for the front panel which involves display driver (OLED present on front panel), IR decoding (for
RCU), Cap sensing and other functionalities.

Mentor Graphics (July 2001 – Nov 2007)


I worked as Senior Embedded Software Engineer and Engineering Group Manager at Mentor Graphics,
Embedded System Division. As Embedded Software Engineer, my responsibilities included porting of
Nucleus PLUS RTOS and middleware to new platforms, design and development of IEEE POSIX.1a, .1b
and .1c glue layer over Nucleus PLUS RTOS and middleware, VRTX RTOS to Nucleus PLUS RTOS
wrapper, development and maintenance of various components of debuggers i.e Code|lab and XRAY for
embedded architectures: ARM, MIPS, PowerPC and 68K/ColdFire. Major projects which I have completed
are the following.

IEEE POSIX glue layer over Nucleus PLUS RTOS and middleware products
Designed and developed the IEEE POSIX (1003.1-2001 standard) glue layer over Nucleus PLUS RTOS
and middleware products (Nucleus FILE, IPC and DDL) (http://www.mentor.com/embedded-
software/nucleus/).

which covered the following

• 1003.1a / POSIX.1a (Base specification covering basic operating system functions).


• 1003.1b / POSIX.1b (Realtime extensions)
• 1003.1c / POSIX.1c (Realtime thread extensions)

The implementation conforms to PSE51 and PSE52 Real Time Application Environment Profile (AEP).

Implemented more than 286 POSIX API’s covering threads, semaphores, mutexes, condition variables,
message queues, signals, clocks and timers, execution scheduling, file / I/O, directory, asynchronous I/O, C
Runtime Library (stdlib, stdio, math, time, string, bstring, ctype).

Covered the Nucleus Inter Processor communication (IPC) API’s (a software library which is responsible
for providing the communication mechanism in asymmetric multiprocessor (AMP) environment) under the
POSIX I/O API’s.
Added the Nucleus POSIX support in Nucleus DDL (a software library which is responsible for
dynamically downloading and linking the applications).

VRTX RTOS to Nucleus PLUS RTOS wrapper


Designed and developed the Mentor Graphics VRTX RTOS to Mentor Graphics Nucleus PLUS RTOS
wrapper. This allowed the applications developed over the VRTX RTOS to run over Nucleus PLUS RTOS
without any change.

Nucleus PLUS RTOS, POSIX and Middleware products porting


Ported the Mentor Graphics Nucleus PLUS RTOS, POSIX and various middleware products (SHELL,
FILE, NET, SNMP, EMAIL) on ARM Integrator 7TDMI, XScale PXA25X, TI OMAP1510, OMAP1610,
ColdFire MCF5206, MCF5272, Hitachi SH4SP, architectures / platforms.

Nucleus OSEK RTOS kernel awareness dll for code|lab debugger using
OSEK Runtime Interface (ORTI)
Designed and developed the Mentor Graphics Nucleus OSEK (based on OSEK standard) real time
operating system (RTOS) kernel awareness (KA) dll for Mentor Graphics code|lab debugger using OSEK
Runtime Interface (ORTI).
Responsible for writing a dll for reading and parsing the ORTI file (make debugger understand the syntax
and semantics of it). Since OSEK is static OS, all the data is available at the build time. Then data (which is
in the form of valid C expressions to represent various kernel objects) is passed on to the expression
evaluator (debugger component) which evaluates these expressions and pass the results back to the dll,
which then display results on the graphical user interface.

Disassemblers for ARM, MIPS and ColdFire/68K architectures for code|lab


debugger
Disassembler is a debugger component which translates machine code in to equivalent assembly
instruction/s. I wrote the disassembler for ARM, MIPS and ColdFire / 68K architectures for Mentor
Graphics code|lab debugger.

Call Trace module for ARM, MIPS and ColdFire/68K architectures for
code|lab debugger
Call module is a debugger component, which analyze the current thread stack according to the calling
convention of particular compiler for a particular architecture. It calculates the function call stack from start
to current location of the current thread. Also if the debugger is Kernel Aware for a particular RTOS, it also
analyzes the suspended thread stack (solicited and unsolicited) and calculate and display their call stack. I
wrote the call trace module for ARM, MIPS and ColdFire/68K architectures for code|lab debugger which is
also Nucleus PLUS RTOS aware.

Development of various transports for various debug connections


Transport is a debugger component which enables it to communicate it with debug connection devices,
monitors or simulators. It allows debugger to read/write registers/memory, controlling execution (go, halt,
step into, step out, step over) and putting breakpoints. I developed the following transports for code|lab
debugger.

• Gdb remote serial transport for gdb server. Gdb remote serial protocol is a serial protocol which is
used for communication between the debugger running on the host machine and the debugging
stub / agent i.e gdb server (which is usually incorporated in to the user program or burnt in the
ROM of the target) running on the target through the serial port. It is a quite inexpensive
debugging solution as the only hardware it requires is the serial port and the serial cable. It is quite
popular in debugging Linux as a target (Embedded Linux).
• OCD transport for Macraigor debug connection devices (Wiggler, Raven and mpDemon)

Support of new PowerPC and ColdFire variants in Mentor Graphics Nucleus


simulators for these architectures
I have added the support of many new variants of PowerPC and ColdFire processor families in the Mentor
Graphics Nucleus instruction set simulators (ISS) for these architectures.

As engineering group manager of tools group, my responsibilities


included
• Plan, organize, direct, control and evaluate the activities and operations of an engineering group.
• Develop and implement policies, standards and procedures for the engineering and technical work
performed in the group.
• Assign, co-ordinate and review the technical work of the group or project teams.
• Recruit engineers and oversee development and maintenance of staff competence in required
areas.
• Participate directly in the design, development and inspection of technical projects or in the
engineering work of the group.

I was responsible for an offshore team, doing development, maintenance and customer support of Mentor
Graphics EDGE debugger, XRAY debugger and Microtec Instruction Set simulator. Major projects
completed under my supervision are

• Core releases of XRAY and its flavors: XRAY for SPECTRA, XRAY for OSE, for PPC and
68k/ColdFire architecture for both Windows and Solaris host. In these releases, various new
variants were added, GUI was enhanced by developing various views in MFC and KA of Mentor
Graphics OSEK RTOS was added.
• Core releases of Microtec instruction set simulators for PPC and 68K/ColdFire architectures. In
these releases various new variants were added and also a new technology was introduced in PPC
simulator, with the help of which new variants can be added dynamically without recompilation of
the source code.
• Customer support of XRAY.
• Development of IEEE695, dwarf2 and dwarf3 debug format decoders for EDGE debugger.
• Porting of EDGE debugger to ColdFire, PPC and MIPS architectures.
• Development of C/C++ editor with syntax highlighting, content assist, tooltip assist, auto
completion, and content outlining features.
• Development of editors for editing the core, target and peripheral XML files for EDGE debugger.
• Development of graphical user interface of EDGE debugger: Kernel Awareness view, memory
view and custom controls.
• Development of engine tester plugin for EDGE debugger.
EDUCATION

• M.Sc Computer Engineering (Part time) 2002 – 2008


University of Engineering and Technology (UET), Lahore, Pakistan.

• B.Sc Electrical Engineering (with honors) 1997 - 2001


University of Engineering and Technology (UET), Lahore, Pakistan
Aggregate Percentage: 81.64

SHORT COURSES

• A 3-day course on Digital Video Broadcasting by BBC.


• A 4-day programme on Project Management at Rausing Executive Development Centre, Lahore
University of Management Sciences.
• A 3-day programme on Effective Communications in the Business World at Rausing Executive
Development Centre, Lahore University of Management Sciences.
• A 3-day programme on Result Driven Performance Management at Centre for Management
Development, Lahore.
• A 4-day programme on Building High Performance Teams at Rausing Executive Development
Centre, Lahore University of Management Sciences.
• A 3-month course on Visual Basic 6.0 from Department of Computer Sciences, University Of
Engineering and Technology, Lahore.
• A 4-month course on Oracle + Developer 2000 from Department of Computer Sciences,
University Of Engineering and Technology, Lahore.

You might also like