mar 04

Robotics 101 : Using a .gdbinit

In this course you will learn some of gdb uses : creating your own functions/macros and using it to check if your code does what it is supposed to do.
Gdb is a very powerful tool, well mastered it can make a huge difference between a regular programmer and a good one.

Using the .gdbinit file

In order to create your macros and others you need to create .gdbinit file in the folder where you launch gdb from.

Creating macros

You may have noticed that we always use the same 3 instruction when launching gdb, you may also have cursed the moron who coded gdb without thinking of this problem. Hopefully this guy is not a moron, he is even quite clever as you have the possibility to create your own macros and function, thus allowing you to only type a single instruction.
In order to define a macro you have to use the following syntax:


define macro_name
first_instruction
...
...
...
last_instruction
end

Here are some useful macros :


define ri
mon reset init
end
define rc
ri
continue
end
define rl
ri
load
rc
end
define recon
target extended-remote localhost:3333
end

Automatically launching functions when starting gdb

This one is quite easy, simply add at the end of the file (after the definition of the functions you are going to use is actually enough, but it is considered a good practice to write them at the end of the file) the instructions you want to execute (as if you wrote them in a gdb prompt)

ex:

a lot of define
...
...

target extend-remote localhost:3333
mon reset init
load

This would allow you to automatically connect to openocd, reset the board and load your code when you launch gdb.

recon

Last tricks

Using:
print VARIABLE_NAME
Allows you to print the current value of your variable, if you haven’t written a way to communicate with your board yet, it may help you. It can also be shortened to:
p VARIABLE_NAME

Gdb is also quite clever and is able to guess the commands you meant if you only type in their beginnings. An example will be clearer I guess:
tar ext :3333
will be understood as
target extended-remote localhost:3333

As the only command starting by tar is target, the only thing starting by ext is extended-remote, and so on …

Hope this will help you to spare some time while debugging ;)

Felix

jan 23

Petit mot sur les dimensions des composants CMS

En ce mois de janvier 2014, je reprends des bonnes résolutions et re-rédige quelques articles !

Tout d’abord, Bonne Année !!! Et surtout Bons Robots !!

Et attaquons un sujet « d’actualité » pour Telecom Robotics.

En effet, comme nous sommes en pleine phase de soudure, j’en profite pour glisser un petit mot sur les composants CMS (Composant Monté en Surface) par opposition aux composants traversants (avec des pattes qui traverseront une plaque à trou)

Il existe plusieurs tailles pour les résistances et condensateurs CMS, dont voici les principales.

- 0805 : 2mm x 1,25mm
- 0603 : 1,6mm x 0,80mm
- 0402 : 1mm x 0.50mm

Mais par exemple, certains condensateurs étant de capacité élevés, ils n’existent que dans des « grandes dimensions » comme du 1210 : 3,20mm x 2,50mm  ou du 1812 : 4,50mm x 3,20mm

Autant dire, même « grand », c’est déjà tout petit ! Plutôt pas mal pour avoir des cartes électroniques compactes !

En fait, les chiffres donnés 08-05 correspondent aux tailles en « inch ». Et le truc vraiment bête prêtant à confusion, c’est que la résistance taille 0603 (en inch), mesure « 08″ en mm.  Attention donc à bien vérifier les unités : si c’est 0805 (tailles en inch), ou si c’est 08 mm, donc du 0603 !!!

Pour les membres de Telecom Robotics : nous utilisons des résistances  CMS 0805, c’est à dire les relativement grandes résistances. De surcroît, elles sont significativement plus faciles à souder que des 0603 !

Pour les concepteurs de cartes électroniques, pensez à vérifier les réglages du logiciel et contrôler la référence et les dimensions des composants que vous utilisez avant de passer à la phase routage =) !

Et pour les trésoriers, mon conseil : demandez en amont la BOM (Bills of Material) pour éviter ce genre de surprise, et ne pas avoir à acheter une série de résistances 0603 en plus du stock de 18 000 résistances 0805 ;-)

Et toujours pour les trésoriers, mon autre conseil : attention aussi en commandant à « l’unité de commande » : Ce serait dommage de se retrouver avec 100 rouleaux de 200 résistances, quand on voulait juste une centaine de résistances. Quoique parfois, c’est tellement plus économique d’acheter en grand volume.

Mises à jour de Statut

avatar

On a acheté le matériel pour faire les éléments de jeux!

pour vous tenir informé de notre avancement je posterai régulièrement des news comme celle ci.

Tout le matos pour faire les éléments de jeux pour préhistobot

Tout le matos pour faire les éléments de jeux pour préhistobot

(suite…)

sept 30

Présentation du règlement 2014

Bonjour à tous!

Ce samedi 28 septembre a eu lieu la présentation du règlement de la coupe pour l’édition 2014. Elle se tenait à la cité des sciences,  il y avait en même temps une rencontre avec les participants au hackaton Nao auquel je participe donc je n’ai pas pu voir la présentation en live, mais un membre de Planète Science nous a gentiment fait la présentation après.

Le thème cette année: La préhistoire.

En savoir plus »

sept 01

Robotics 101 : Multithreading with ChibiOS (1)

In embedded systems, one og the key features is multithreading : that is to say having multiple threads running. A thread is a processus running on your processor, it has its own memory and stack and can communicate with other threads through shared variables or function calls.
The main interest in having multiple threads running is that each of them handles a separate task, having many threads thus allows you to have multiple tasks running at the same time without having to manually manage how the processor handles it.
For example, you could have a thread receiving commands (a target angle for a servomotor), a thread driving the servomotor and eventually a thread transmitting information (the current angular position of the servomotor). Each one of these threads is very short in code and in complexity, allowing you to divide a complex task in small and easy ones.
En savoir plus »

août 29

Robotics 101 : Makefile Survival guide

In the last tutorial we mentioned the other files present in a basic project, let’s take a closer look on one of them : the Makefile.

This tutorial is going to be a short one, as only what you need to build your project will be explained. Nevertheless the Makefile is a really powerful tool and i highly encourage you to learn more about it.

Discover the Makefile :

As you may have noticed, you did not compile your files one at a time, but used the $ make shell command, you may have wondered how the compiler knew what to do with only one command. In facts this $ make command simply tells the compiler to look in the Makefile what do to.

Now open the Makefile, you should see something like this :
makefile1
As you can see, there are a LOOOOT of options, we are only going to cover how to add files, change the c compiler options and specify the location of ChibiOS.
En savoir plus »

août 27

Robotics 101 : Transmitting data with ChibiOS Serial Driver

Now that you know how to configure the devices and what the serial driver does, let’s put it in practice.

For this tutorial you will need:

serialCable
En savoir plus »

août 26

Robotics 101 : Serial Driver, the basics

Communication

minicom

Well, we are now able to do so cool stuff with GPIOs and PWM, but we still lack something really important : communication. As a matter of fact you cannot communicate at all right now, and that’s what we will work on with the serial driver.
But first we will discover UART is.
En savoir plus »

août 26

Robotics 101 : PWM (2)

Using a PWM

You now know how to configure a PWM, great ! Now let’s see how to use it.
En savoir plus »

août 26

Robotics 101 : PWM (1)

You said PWM ?

A Pulse Width Modulation signal is a binary (that’s to say that there are only two different output voltages: HIGH or LOW) signal of a given fixed period. The output is HIGH for the first part of the period, then stays LOW untill the next period. The interesting point about this type of signal is that you are able to control how long the output stays high in a given period (you can change it at each period). This way you are able to simulate an analog output very easily if the pwm frequency is high enough (your eyes and mechanical devices are low-pass filter, they will average the output value). It is also used by some sensors, usually by those measuring a frequency (the width of the high part is proportional to the measured frequency).

pwmSignal

ChibiOS provides an « easy » way, that we will see, to generate this kind of signal. First you will have to learn how to configure a PWM, then you will see how to use it.
En savoir plus »

Articles plus anciens «