Linux Kernel Module Programming for embedded platform

Overview

Most developed processor boards are run under control of OS Linux and its various modifications. Almost always the hardware configuration on concluded controller boards and single-board computers is different from configuration and composition of reference board design for a specific platform, therefore to make the operating system has been successfully run on designed board and can work with all stipulated peripherals and interfaces under developed board, necessary to make changes in source code of OS Linux, modify the configuration file, apply changes to file system, write or modify modules for plug-in microchips and sometimes make changes to the very core of OS Linux.

  • Used languages C/C++, assembler
  • Used technologies Linux kernel, BSP, LKMPG, PROC, MMAP
  • Interfaces I2C, UART, SPI, PCI, ISA, USB-EHCI, USB-OTG I2S, CSI, MII, SGMII and more
  • Memory DDR, DDR2, DDR3, NAND, NOR, MRAM, SRAM, EEPROM

What we did

Parameter setting, change the source code to current needs, writing OS Linux kernel module for new hardware of developed boards, preparing images for firmware to the device. Software control of various interfaces, protocols implementation of different levels, software setting and work with varied types of RAM, ROM memory. System and modules testing, performance measurement.

Project list

  • Controller module base on Freescale P1011/P2020 processor (Configuring OS setup options on the board: processor frequency and memory, RAM size, support bitwise access to MRAM, porting modules for PEX8311 microchip, high speed data transfer modules to work with code inside FPGA, writing diagnostic software)
  • Colibri evaluation board based on microcontroller TI AM3359 (Configuring OS setup options on the board: processor frequency and memory, RAM size, file system, peripheral chips)
  • Video wall board based on Hisilicon Hi3531 processor (Configuring OS setup options on the board: processor frequency and memory, RAM size, file system, peripheral chips)
  • High resolution IP camera base on TI DM368 processor (Configuring OS setup options on the board: processor frequency and memory, RAM size and type, change of file system type, writing drivers for several video sensors modules, modification of video capture driver, writing motor control driver zoom/focus)
  • Standard resolution IP camera based on processor i.MX27 (Configuring OS setup options on the board: processor frequency and memory, writing drivers for several video sensors, modification of video capture driver, setting gstreamer)
  • High resolution IP camera based on processor i.MX27 and FPGA Spartan 6 (Configuring OS setup options on the board: processor frequency and memory, writing drivers for connect to FPGA, modification of video capture driver, setting gstreamer)
  • TV tuner board base on i.MX27 processor (Setting parameters of board launch: processor frequency and memory, writing drivers for connect to TV tuner microchip, modification of video capture driver, setting gstreamer)

More projects

project

HTML5 RTSP player

html5_rtsp_player.js is a Javascript library which implements RTSP client for watching live streams over websocket in your browser that works directly on top of a standard HTML element.

project

U-Boot and RedBoot modification for embedded boards

Changes to the boot code in accordance with the peculiarities and differences from the reference designed board to prepare the board to boot the OS.

project

VHDL/Verilog FPGA programming

Converting physical interfaces on the fly. Implement algorithms in real time. The implementation of high-speed data bus. Parallel, pipelined processing.