European nearshore leader
Monica Jiman Deputy CEO
Web Content Display Web Content Display

Services

Design

Design

For many years, Pentalog has provided assistance to its clients in the design stage of their products. Our consultants, analysts, project managers and project leaders actively participate in understanding our clients' businesses and business logics, enabling us to propose an architecture which meets their requirements. Therefore, the generated added-value is stronger for all the duration of our collaboration.

Our Services

  • Requirements : we support our clients in designing their products by helping them to draft the requirements relating to their projects and by comparing their ideas in order to facilitate innovation.
  • Architecture : proposing hardware and software architectures for a module or for the whole product of our clients.

Requirements

The requirements clearly express new needs or improvement needs. They imply good understanding of the requesters' needs. Based on their experience, our employees are used to inquiring our clients' teams with a view to clearly understanding their needs and drafting the requirements concerning the project.

Here is a non-exhaustive list of requirements we have already implemented :

Functional requirements

  • Translated into use cases

Non-functional software requirements

  • Real-time constraints
  • Synchronous / asynchronous execution
  • Performance constraints
  • Security / profitability
  • Resource constraints (power, CPU, memory, etc.)
  • HCI constraints

Architecture requirements

  • Software constraints / hardware constraints
  • Distributed system / analogical system, mechanics, network

Physical requirements

  • Power consumption
  • Security / profitability
  • Size and weight
  • Protection and robustness

Life cycle requirements

  • Certifications
  • Maintenance requirements
  • Production line requirements

Business or industrial requirements

  • Robustness / Costs
  • Design / Production costs
  • Production time

Architecture

Our teams assist our clients in defining the architecture of the modules their project consists of. Our engineers are well-acquainted with industrial constraints: they often have to choose the components/modules to be implemented which are "just right/sufficient" to cover the necessary functions, minimizing the costs while complying with the specified requirements.

Here are several examples of software architecture which we can implement :

Simple control loop

  • The software has a simple loop.
  • The loop calls sub-programs, each of them managing a hardware or software segment.

Interrupt controlled system

  • The tasks performed by the system are generated by different types of events.
  • An interruption can be generated, for instance, by a timer with a predefined frequency or by a serial port controller which receives an octet.
  • The system is used when event processing software need a short waiting time and when event processing programs are short and simple.
  • Normally, these types of systems execute a simple task in a main loop, but, by using a complex task scheduler, this method brings the system closer to a multi-task kernel with discrete processes.

Cooperative multitasking mode (non-preemptive multitasking)

  • It is very similar to the simple control loop, except for the fact that the loop is hidden in an application programming interface.
  • The programmer defines a series of tasks. Each of them has its own environment in which it can operate. When a task is inactive, it calls an inactive sub-program.
  • The advantages and disadvantages are very similar to those of the control loop, except that it is easier to add new software by writing a new task or by making additions to the waiting queue interpreter.

Preemptive multitasking or multi-threading mode

  • A low-level piece of code switches between tasks or threads based on a timer (connected to an interrupt, it is generally considered that there is an "operating system" kernel).
  • It introduces various degrees of complexity related to managing multiple tasks running conceptually in parallel.
  • Access to shared data must be controlled through a synchronization strategy, such as message queues, semaphores or a non-blocking synchronization scheme.
  • Companies generally use real-time operating systems (RTOS) which enable software programmers to focus on device functionality rather than on operating system services, at least for large systems.

Microkernerls and exokernels

  • Microkernels have evolved logically from real-time operating systems. Usually, the operating system kernel allocates memory and switches the central processing unit to different threads. User-mode processes implement major functions such as file systems, network interfaces, etc.
  • In general, microkernerls succeed when the task switching and intertask communication are fast and fail when they are slow.
  • Exokernels communicate efficiently by normal subprogram calls. The hardware and all the software in the system are available to and extensible by application programmers.

Monolithic kernels

  • A relatively large kernel with sophisticated capabilities is adapted to suit an embedded environment (e.g. Embedded Linux and Windows CE).
  • Therefore, it is very productive for development; however, it requires far more substantial hardware resources, is often more expensive, and can be less predictable and reliable because of the complexity of these kernels.
  • Ports to embedded chip sets are available.
  • They enable us to reuse the publicly available code for device drivers, Web servers, firewalls, etc.
  • Development systems can start out with broad feature sets. The distribution can be configured to exclude unneeded functionalities in order to save memory.
  • Many engineers consider that executing the application code in user mode is more reliable, easier to debug and, consequently, the development process is easier and the code is more easily portable.
  • The features which require a faster response than we can provide can often be added to the hardware devices.

Exotic custom operating systems

  • A small fraction of embedded systems requires safe, timely, reliable and efficient behaviour which cannot be obtained with any of the above architectures.
  • In this case, an organization builds a suitable system. In some cases, the system may be partitioned into "mechanism controller" using special techniques, and a "display controller" with a conventional operating system. A communication system passes data between the two.

Additional software components

  • Many embedded systems have additional upper-layer software components.
  • These components consist of :
    • Networking protocol stacks like CAN, TCP/IP, FTP, HTTP and HTTPS
    • Included storage capabilities like FAT and flash memory management systems
    • If the embedded devices have audio and video capabilities, the appropriate drivers and codecs will be present in the system.
  • In case of monolithic kernels, many of these software layers are included. In the RTOS category, the availability of the additional software components depends on the commercial offer.

Fields Concerned

  • Energy / Home automation : developing the idea, turning it into functional requirements, and proposing the most appropriate architecture.
  • Industry : analyzing the functional requirements provided by our client in order to produce an architecture and develop it.
  • Telecommunication : analyzing the development requirements in order to define an architecture and implement it.












 

Contact

Mickael Hiver
Embedded Systems Business Line Manager
Centre d'Innovation, Bâtiment C
16 rue Léonard de Vinci
45100 Orléans
Tél. : +33 2 38 25 30 30
Fax : +33 2 38 25 30 31
Photos - All rights reserved