Aller au contenu principal
Vianney Marticou
Mr. VyM @ EPITA
View All Authors

Understanding and mastering inter-processor communication on STM32MP

· 6 minutes de lecture
Vianney Marticou
Mr. VyM @ EPITA

In modern embedded systems, it is common to find multiple processor cores (CPUs) working together, each potentially running a different operating system — for example, Linux on a Cortex-A core and an RTOS such as FreeRTOS on a Cortex-M.

Communication between these cores is essential, but there is no single standard to achieve this. OpenAMP, with its RPMsg and RemoteProc components, provides a flexible and widely adopted solution for intercommunication between Linux and RTOS or bare-metal systems.

Désactiver les pinsyscalls sur OpenBSD

· 4 minutes de lecture
Vianney Marticou
Mr. VyM @ EPITA

Les versions récentes d'OpenBSD empêchent l'utilisation directe des syscalls depuis le code utilisateur, en imposant une vérification dans le linker (ld.so). Cela renforce la sécurité en rendant les exploits plus difficiles. Cet article explore la mise en place de cette protection, son fonctionnement, et comment la désactiver en modifiant le code source du kernel.

How copy-paste works on Linux ?

· 3 minutes de lecture
Vianney Marticou
Mr. VyM @ EPITA

In this article, we will explore the internal workings of copy and paste in Linux. First, let me provide some context. There is a manual, almost like an RFC.

The Inter-Communication Client Conventions Manual (ICCCM for short), which lays down some rules. The first version was published in July 1989, the second in 1994. This manual, written 30 years ago, is therefore the reference for the subject.

Le plus petit segfault

· 8 minutes de lecture
Vianney Marticou
Mr. VyM @ EPITA

Dans cet article, on va voir comment créer un code qui crash le plus efficacement possible.
Cela veut dire comprendre ce qu'est un segfault, comment marche la fonction main, ainsi que le code exécuté avant.

Une magnifique occasion de faire de l'assembleur !

Tester c'est tricher, compiler c'est douter

· 4 minutes de lecture
Vianney Marticou
Mr. VyM @ EPITA

Dans cet article, nous allons voir le concept de Continuous Integration (CI), son intérêt et ses inconvénients et une démonstration.

Histoire

Mais d'abord, comme à mon habitude, un petit point histoire.

En 1999, Kent Beck a approfondi le sujet dans son premier livre sur l'Extreme Programming. En 2001, CruiseControl, l'un des premiers outils open-source de CI, a vu le jour.

Introduction à Terraform avec Proxmox

· 5 minutes de lecture
Vianney Marticou
Mr. VyM @ EPITA

Le but de Terraform est de déployer une infrastructure ou une entité de manière idempotente. Cela signifie que l’on doit pouvoir relancer le script 100 fois et obtenir le même résultat à chaque exécution.
Pour cela, nous utilisons un provider, qui est essentiellement une bibliothèque permettant de se connecter à notre serveur.

Dans ce cas pratique, nous allons utiliser Proxmox et BPG. Il existe deux principaux providers pour Proxmox :

  • Telmate
    C’est une bibliothèque qui permet de déployer très simplement des VMs et des LXCs.
    Inconvénient : elle n’implémente pas de fonctionnalités avancées. Cependant, elle est fréquemment mise à jour.

  • Bpg
    Cette bibliothèque est légèrement plus complexe à prendre en main, mais elle est bien plus puissante.

#define INC(a) INC(a+1)

· 8 minutes de lecture
Vianney Marticou
Mr. VyM @ EPITA

Le but de cet article est de vous faire découvrir le magnifique univers des macros en C.

En C, les lignes qui commencent par un # sont interprétées par le compilateur lors de la compilation des fichiers sources. On les appelle des directives du préprocesseur. Les macros en font partie.

Petit point historique :

Les macros en langage C ont été introduites avec la première norme du langage C, appelée ANSI C (ou C89), qui a été standardisée par l'American National Standards Institute (ANSI) en 1989.

Cependant, avant cette standardisation, les macros faisaient déjà partie du langage C classique (ou K&R C) utilisé dans les années 1970. Le compilateur C original, développé par Dennis Ritchie pour le système d'exploitation UNIX, incluait déjà une forme rudimentaire de macros via le préprocesseur, permettant des définitions avec #define.

Le Merveilleux Monde de Make

· 8 minutes de lecture
Vianney Marticou
Mr. VyM @ EPITA

Les Makefiles constituent un outil essentiel dans le développement de logiciels que ce soit en C/C++ ou autre. Ils permettent une gestion efficace des projets en automatisant le processus de compilation, de nettoyage et de tests.

Dans cet article, nous explorerons les bonnes pratiques pour la création et l'utilisation de Makefiles dans des projets C quelque soit leurs complexités.