Tag Archives: linux

Linux syscall and RISC-V assembly

Sample of RISC-V assembly code

Syscall in Linux kernel, is an interface to access to kernel basic functions. They are described in section 2 of man pages. The introduction is in man 2 syscall (indirect system call), and the list of functions are described in man 2 syscalls. Update: System Calls in lectures of official Linux kernel documentation including « Linux system calls implementation », « VDSO and virtual syscalls » and « Accessing user space from system calls »

This article follow previous one about RISC-V overall progress and available tools to play with, I will try to make a short article here about Linux syscall usage and the RISC-V assembly case.

Table of Content

* Description section of the man page
* Getting the list of function and how to access them
* Passing parameters
* Function number and registers of return values
* Return values and error code
* Compiling and executing on virtual environment
* Update: Bronzebeard assembler and its baremetal environment for real hardware

Continue reading

Tablette Wacom et autres périphériques USB sur système Android

J’ai fais quelques petits test sur un Galaxy Note III lite avec des périphériques USB via un cable µUSB <=> USB femelle. Comem Android utilise un noyau Linux, il est normal qu’au moins tous les périphériques reconnus par ce dernier soient reconnus. Qu’ils soient interfacés avec une application est un autre problème.

Dans les exemples que je site, j’ai eu un problème une fois lors d’une connexion, peut être problème d’alimentation USB après avoir branché la wacom, en essayant ensuite avec un câble deux prises (comme pour les disques durs externes), la Wacom ayant le même type de connecteur miniUSB (et non microUSB). le clavier ne fonctionnait pas après. J’ai du rebooter le téléphone, et tout fonctionnait directement ensuite.

Joypad type PSX2

Un joypad type PSX2 en USB à l’avantage d’avoir pleins de boutons, deux manches analogiques dont un peut être passé au choix en analogique ou digital), ce qui offre pas mal de possibilité pour l’interaction avec des tonnes d’applications.

J’ai un Saitek Rumble depuis un tas d’années, le retour de force ne marche pas pour ce modèle sous Linux, je me disais que je ingénierie-inverserais bien le pilote histoire de, ça a pas l’air compliqué, mais ça n’a pas réussi à franchir le cap de la TODO vaporeuse et du regard rapide de l’API bien foutu de Linux sur ce point. Il me sert pour quelques expérimentations de bidouilles et sur des jeux ou abandonwares émulés (bornes Mame/Mess ou vieilles consoles en abandonware comme GameCube/Wii, PSX2, etc…). Pour le simulateur de vol (Flightgear Flight Simulator), je préfère souris+clavier, sans doute à tort. Il est immédiatement. J’ai envie d’expérimenter un peu plus des applications interactives dans un futur proche, mais on en est encore dans le TODO à tendance vaporeuse. Bon, donc, j’ai testé sur Android, il est bien détecté, sous l’émulateur de terminal, terminal IDE, il permet de remonter à la ligne précédente de l’historique ^^). Testé avec l’émulateur PSP (PPSSPP, également disponible sur f-droid), ça marche impeccablement. Il faut penser à reconfigurer les boutons dans le menu commandes.

Clavier USB

bon, ben là presque rien à dire, ça marche directement. Par contre, autant sur les tablette chinoises, on peut choisir la disposition du clavier (AZERTY/QWERTY/Bépo…), autant là, rien pour le clavier physique.

Tablette graphique Wacom

Alors là, ça se gatte, elle est détecté comme une souris, mais ne semble gérée par aucune application, et encore une fois, comme pour le clavier, rien dans les préférences. J’essairais de la brancher sur une tablette/téléphone chinoise quand j’en aurais une sous la main.

Pour vérifier la détection dans Terminal IDE :

terminal++@172.0.0.1:-$ lsusb
Bus 001 Device 002: ID 1519:0443
Bus 002 Device 011: ID 056a:00ba <= Wacom
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0003

Au niveau du système, sur un Note III lite qui contient un stylet Wacom avec gestion de pression, on pourrait s'attendre à un éventuel fonctionnement de base (on peut toujours rêver), et bien non. Pourtant, Wacom fourni une API pour les senseurs intégrés et tablettes en USB ou bluetooth. Ça marche pas avec Markers, ni avec les applications de dessin fournis par Samsung. Il n'y a rien dans les préférences du système Samsung qui ne permette de le configurer non plus. Dommage. C'est pareil sur une tablette Galaxy Note.

Maral (Марал), méthode mongol cyrillique pour ibus et mise à jour de paquets archlinuxARM

Méthode de saisie du mongol cyrillique pour ibus

J’ai fais un paquet ibus-table-mongolian ou Maral (Марал), méthode de saisie du mongol cyrillique pour ibus pour archLinux (testé sur ARM avec ArchLinuxARM et x86_64 (avec Antergos), en fait c’est du any), par contre, j’ai quelque chose de bizarre. Il faudrait peut être un rapport d’anomalie.

Le clavier devrait être indépendant de la disposition du clavier, la disposition phonétique ne correspondant pas du tout à celle des claviers en écritures latines. Le clavier fonctionne très bien sur ARM, mais pas aussi bien sur x86, car il s’adapte au clavier local. Le même problème apparaît sur Ubuntu 14.04 pour x86_64 qui utilise une beaucoup plus ancienne version.

Par défaut dans les scripts de l’auteur Ochko, on voit la variable des version 1.3 d’ibus-table :

KEYBOARD_LAYOUT = US_Default

Sur les versions récentes, il faudrait :

LAYOUT = us

J’ai essayé tout les cas, j’ai toujours le même problème. Je suppose que la différence entre ARM et x86_64 est un problème subtile du type de l’Endianess ou quelque chose comme ça, sans vraiment trop voir pourquoi ? Vous pouvez tourours utilisez la disposition système mongol après avoir installé la langue, mais c’est moins souple qu’ibus.

Mise à jour de paquets archlinuxARM

J’ai profité de la sortie de Entangle 0.7.0, l’outil de contrôle à distance d’appareil photo réflexe numérique (et autre contrôlable) et de 0AD a18 (un logiciel ludique libre de stratégie temps réel) pour mettre à jour les paquet ArchlinuxARM.

Récupérer tout ça

Vous pouvez récupérer les paquets et les PKGBUILD dans mon dossier-dépôt dédié.

Noyau Linux 4.0 (4.1 le 25 juin) sur Allwinner A20/Cubieboard2

Grâce aux travaux de développement électronique et logiciel, aux efforts de la communauté Linux-sunxi pour l’amélioration et l’intégration des pilotes dans le tronc principal des sources de Linux et au travail d’intégration des communauté ArchLinux et ArchLinuxARM, la Cubieboard2 (basée sur le SoC AllWinner A20) avec la distribution ArchlinuxARM utilise depuis cette nuit le noyau 4.0 par défaut. Auparavant, elle utilisait une branche 3.x du noyau en retard par rapport aux avancées de la branche principale.

* Linux XXX 4.0.5-2-ARCH #1 SMP Fri Jun 12 20:03:44 MDT 2015 armv7l GNU/Linux

Grâce à cela :
* Une grande partie des flash NAND peuvent être utilisée pour le système.
* La gestion de la fréquence CPU dynamique est bien gérée maintenant.
* La plupart des pilotes sont intégrées et à priori très stable.

Mise à jour du 25 juin, 11 jours après le 4.0 : Mise à jour vers noyau linux 4.1 effectuée ce soir
* Linux XXX 4.1.0-1-ARCH #1 SMP Tue Jun 23 23:24:14 MDT 2015 armv7l GNU/Linux