7815farhan Mahmood - CV
7815farhan Mahmood - CV
7815farhan Mahmood - CV
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
PROFESSIONAL EXPERIENCE
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.
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/).
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).
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.
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.
• 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)
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
SHORT COURSES