Modifications

Sauter à la navigation Sauter à la recherche
925 octets ajoutés ,  24 mars 2020 à 16:24
Ligne 81 : Ligne 81 :  
Beaucoup de bibliothèque sont disponibles. Afin de pouvoir les utiliser dans vos projets, il est nécessaire de les porter. En effet, chaque outil a sa propre HAL (Hardware Abstraction Layer) et il est donc nécessaire de modifier cette partie du code pour que la bibliothèque soit fonctionnelle. En général, les bibliothèques que vous aurez besoin d’utiliser seront des bibliothèques interfaçant des composants, capteurs, actionneurs et donc les parties du code que vous aurez à modifier concernent les liaisons série, UART, I2C etc.
 
Beaucoup de bibliothèque sont disponibles. Afin de pouvoir les utiliser dans vos projets, il est nécessaire de les porter. En effet, chaque outil a sa propre HAL (Hardware Abstraction Layer) et il est donc nécessaire de modifier cette partie du code pour que la bibliothèque soit fonctionnelle. En général, les bibliothèques que vous aurez besoin d’utiliser seront des bibliothèques interfaçant des composants, capteurs, actionneurs et donc les parties du code que vous aurez à modifier concernent les liaisons série, UART, I2C etc.
   −
Par exemple le code Mbed suivant:
+
Par exemple les code Mbed suivants:
    
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
void exemple()
+
void VL53L0X::writeReg(uint8_t reg, uint8_t value)
 
{
 
{
     wait_ms(100);
+
     char data_write[2];
 +
    data_write[0]=reg;
 +
    data_write[1]=value;
 +
 
 +
    handler_i2c.write(address,data_write,2);
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
   −
Sera traduit ainsi avec l'HAL fourni par STMicroelectronics:
+
<syntaxhighlight lang="cpp">
 +
void wait_custom(int nb_ms)
 +
{
 +
    wait_ms(nb_ms);
 +
}
 +
</syntaxhighlight>
 +
 
 +
Seront traduit ainsi avec l'HAL fourni par STMicroelectronics:
    
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
void exemple()
+
void VL53L0X::writeReg(uint8_t reg, uint8_t value)
 
{
 
{
     HAL_Delay(100);
+
     uint8_t data_write[2];
 +
    data_write[0]=reg;
 +
    data_write[1]=value;
 +
 
 +
    HAL_I2C_Master_Transmit(&handler_i2c, address, data_write, 2, 10);
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
<syntaxhighlight lang="cpp">
 +
void wait_custom(int nb_ms)
 +
{
 +
    HAL_Delay(nb_ms);
 +
}
 +
</syntaxhighlight>
 +
 +
Afin de réaliser un portage avec succès, il est nécessaire de lire les documentations des HAL sources et destinations, afin de comprendre leurs differences et points communs. Dans notre exemple, il a été necessaire de changer le type de données envoyer sur la liaison I2C, la fonction du HAL Mbed acceptait des données de type ''char'' tandis que le HAL fourni par ST accepte des données de type ''uint8_t''.

Menu de navigation