• Implementation from scratch of an LWM2M stack based on the Zephyr OS Coap library.
• Functional requirement specification.
• Software architecture design.
• Porting the Zephyr OS Coap library
• Programming Languages used : C
• Software environment: gcc, MakeFile, Kconfig, FreeRtos, JLink, GitHub
• Hardware environment: nRF52840 cortex M4
• Implementation of a vehicle fleet management solution through the addition of LoRaWAN connectivity to the
CarAlgo dongle.
• Functional requirement specification.
• Software architecture design.
• Porting the Semtech LoRaMac stack 4.3.3
• Programming Languages used : C
• Software environment: Mcuxpresso, FreeRtos, Objenious, JLink, GitLab
• Hardware environment: NXP-kinetis cortex M0+, Semtech sx1272
• Design and implementation of a secured mini stick HDMI/USB dongle named ANAIS for presentation and video
play uses.
• Functional requirement analysis.
• Task, kernel side:
– Building customized linux kernel distribution (modification of Makefile, Kconfig and device tree files).
– Generating root file system.
– Customize spl and u-boot for the target supported Bsp.
– Integration of the fingerprint driver.
• Tasks, Application side:
– Software architecture design.
– Developing an application based on Bluez, to remotely interact with the Anais dongle via Ble connectivity.
– Adding a desktop daemon service to handle multimedia functionalities.
– Developing an application to lock and unlock the Anais dongle using the fingerprint module.
– Development of an application for the battery charge display managemen.
• Software environment: Gnu Linux eco-system, Makefile, C, shell
• Hardware environment: Beaglebone black, SIP Octavo osd335x, TI Wl18xx.
• Implementation of an OBD dongle device for connected vehicles application.
• Define functional requirements and specifications.
• Software architecture design.
• Implementation of a BLE protocol to exchange with smartphone devices
• Developing device driver (External flash memory, Accelerometer).
• Implementation of an approach to redirect the three axis of the accelerometer using quaternions rotation matrix
• Programming Languages used : C
• Drafting of technical requirements and constraints.
• Software environment: Mcuxpresso, FreeRtos, JLink, GitLab
• Hardware environment: NXP-kinetis cortex M0+
• In cooperation with Quicklogic and SierraWirless, I participated in the software design and implementation of a
connected watch to remotely monitor elderly patients
• Functional requirement analysis.
• Task, kernel side:
– Building customized linux kernel distribution Using Yocto project.
– Integrate SPI driver of the Quicklogic EOS3 chip.
– Integrate SDIO/UART driver of the TI WL18xx wifi/Ble module.
• Tasks, Application side:
– Software architecture design.
• Software environment: C, Yocto, shell, bitbake, ssh, VIM, linux kernel
• Hardware environment: SIP WP7607, GPP EOS3 module Wifi/Ble Wl18xx.
• Functional requirement analysis.
• Tasks:
– Correct bugs, participate to new feature design and implementation, elaborate and execute unit and integration tests.
• Programming Languages used : C/C++and Python.
• Platform : Smart Meters with the following communication protocols : MBUS, WMBUS, G3 PLC, PRIME, etc...
• MCUs : STM32F4xx, STM32F1xx and STM32F0xx.
• Clients : Enedis, Enexis, Lux.
• The assistant teacher role in Tunisia is different than elsewhere. A TA is allowed to teach courses and participate
in the academic life as a full faculty member.
• Taught the following courses :
– Hardware Description Languages for FPGA Design.
• Taught the following labs :
– C programming, VHDL, Embedded Systems Programming STM32, Digital Signal Processing(Matlab).
Assistant Teacher High Engineering School of Tunis
(SUP’COM), Tunisia
2013 - 2015
• Taught the following labs :
– Programmable circuits (VHDL), Embedded Processor (ARM7), LabView and Tutored Projects.
• Hardware architecture of multipath MIMO channel emulator for Mobile-To-Mobile systems
– High level synthesis of a hardware architecture for MIMO Mobile-to-Mobile channel emulation( C/C++, VivadoHLS, Xilinx Zynq).
– Cuda GPU acceleration of a MIMO Mobile-to-Mobile channel simulator (CC++, Cuda 8.0, parallel computing).
– Co-design and implementation of an IP for random Gaussian number generation on Xilinx Zync FPGA.
• Publications :
– ********, Souhail, et al. ”A novel filter-based model for mobile-to-mobile double-Rayleigh fading channels.”
• LIRIS-V3 Porject: OSMOS has developed a range of structural health monitoring solutions. Among them, they
designed autonomous sensors called LIRIS, that are installed on key points of the structure to measure the effects
of deformations, cracks, bearing conditions or external stresses. The main tasks that I have conducted are:
– Maintaining the LIRIS_V3 source code: bug fix and new features implementation.
– Implement and test the LIRIS-420mA module.
– Integrate the crack-Meter module.
– Integrate an SMS module.
– Implement low lovel driver for ADC and DAC based on SPI interface.
– Implement a driver for the Lora-Grove to synchronize LIRIS for OSMOS WIM+D uses case project
– Programming Languages used : C
– Software environment: Keil, JLink, GitLab
– Hardware environment: nRF52832 cortex M4
• LIRIS LTE-M/Nb-iot: In order to reinforce the aspect of autonomous sensors, OSMOS has developed an extension
board that host an LWM2M client module which uses LTE-M/Nb-iot technologies to communicate with the server.
The main tasks that I have conducted are as follow:
– Participate in specifications elaboration.
– Definition of the software architecture.
– Define the project skeleton based on zephyr OS project.
– Implement driver to communicate with the LIRIS-V3 via asynchronous interface.
– Implement the LWM2M client side with customized objects.
– Reduce power consumption with respect to the specifications.
– Implement a flusk based micro-server with python.
– Programming Languages used : C, python, Makefile
– Software environment: Zephyr, MC-UBOOT, Arm-GCC, GDB, JLink, GitLab
– Hardware environment: nRF9160 cortex M33