Outils pour utilisateurs

Outils du site


tns_nucleo_prof

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

tns_nucleo_prof [2017/03/31 13:15]
bvandepo [Jonathan Piat <jonathan.piat@iut-tlse3.fr> a écrit]
tns_nucleo_prof [2021/02/19 21:20]
Ligne 1: Ligne 1:
-Outils de développement en ligne:  https://developer.mbed.org/compiler/#nav:/Nucleo_blink_led/main.cpp; 
- 
-https://developer.mbed.org/teams/ST-Americas-mbed-Team/wiki/Preparing-the-STM32-Nucleo-Board 
- 
- 
-====Présentation des broches de la carte==== 
-https://developer.mbed.org/platforms/ST-Nucleo-F334R8/ 
- 
-Nommage des broches dans:  https://developer.mbed.org/users/mbed_official/code/mbed-dev/file/default/targets/TARGET_STM/TARGET_STM32F3/TARGET_STM32F334x8/TARGET_NUCLEO_F334R8/PinNames.h 
- 
-Nommage des périphériques dans: https://developer.mbed.org/users/mbed_official/code/mbed-dev/file/default/targets/TARGET_STM/TARGET_STM32F3/TARGET_STM32F334x8/TARGET_NUCLEO_F334R8/PeripheralPins.c 
- 
- 
-User manual: http://www.st.com/content/ccc/resource/technical/document/user_manual/98/2e/fa/4b/e0/82/43/b7/DM00105823.pdf/files/DM00105823.pdf/jcr:content/translations/en.DM00105823.pdf 
- 
-ressources: http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-nucleo/nucleo-f334r8.html 
- 
-schémas cartes etc: www.st.com/resource/en/schematic_pack/nucleo_64pins_sch.zip 
- 
-Par rapport aux autres cartes stm32: http://www.st.com/en/evaluation-tools/stm32-mcu-nucleo.html?querycriteria=productId=LN1847 
- 
- 
- 
- 
-===Upload sur la carte=== 
-Sous linux, si on copie le .bin via console, les données sont bufferisées, utiliser sync après la copie pour effectuer l'écriture et vérifier que la led de couleur clignote 
- 
- 
-====Utilisation console==== 
-helloworld: https://developer.mbed.org/teams/ST-Americas-mbed-Team/wiki/Creating-Console-Output 
- 
-Recette: http://wiki.labaixbidouille.com/index.php/Communiquer_entre_un_PC_et_la_carte_STM32_Nucleo 
- 
- 
-Problème avec des ports USB3, la console n'affiche pas les caractères émis, fonctionne en ER sur port USB2 des pc étudiants. 
- 
-https://developer.mbed.org/questions/3017/STM32F401RE-Nucleo-Virtual-COM-Port-is-n/ 
- 
- 
- 
-https://superuser.com/questions/812022/force-a-single-usb-3-0-port-to-work-as-usb-2-0 
- 
- 
-https://ubuntuforums.org/showthread.php?t=2218891 
- 
-https://forum.ubuntu-fr.org/viewtopic.php?id=1015891 
- 
- 
- 
-====Upgrade firmware de la carte ==== 
-http://www.st.com/content/ccc/resource/technical/document/release_note/98/de/c7/1b/08/82/44/38/DM00107009.pdf/files/DM00107009.pdf/jcr:content/translations/en.DM00107009.pdf 
- 
-comment jojo l'a fait sur une des cartes? 
- 
- 
- 
- 
-====Le 23/03/2017 à 16:59, Hugues Gilliard a écrit ==== 
- 
-Des infos sur FPU et interruptions https://community.arm.com/processors/b/blog/posts/10-useful-tips-to-using-the-floating-point-unit-on-the-arm-cortex--m4-processor ? 
- 
- 
-====Jonathan Piat <jonathan.piat@iut-tlse3.fr> a écrit ==== 
- 
-J'ai finalement réussi à comprendre ce qui pouvait déconner pour la génération du sinus (en plus du problème de sin dans libmath. J'ai un résultat plutot inatendu pour le bout de code suivant : 
- 
-  #define SAMPLING_RATE  ( 48000.0f) 
-  #define SIN_FREQ  ( 480.0f) 
-   ... 
-  if (t >= SAMPLING_RATE/SIN_FREQ) 
-     t = 0; 
- 
-donne l'assembleur suivant : 
- 
-    .loc 1 102 0 
-    fmsr    s14, r3    @ int    @ D.8604, D.8604 
-    fsitos    s14, s14    @ D.8606, D.8604 
-    .loc 1 109 0 
-    mov    r0, #1207959552    @, 
-    .loc 1 102 0 
-    fcmpes    s14, s15    @ D.8606, tmp128 
-    fmstat 
-    .loc 1 103 0$ 
- 
-le code assemblé fait : 
- 
-  - charge SAMPLING_RATE/SIN_FREQ (pré-calculé)  dans un registre floating point 
-  - convertit "t" de integer vers floating point et le charge dans un registre floating point 
-  - fait la comparaison floating point des deux valeurs 
-  - transfert le flag résultat de l'unité floating point vers le flag du processeur pour la prise de décision 
- 
-En utilisant SAMPLING_RATE et SIN_FREQ en unsigned int, la comparaison prend une instruction. J'ai d'abord cru qu'il y avait un problème de division non précalculé, et j'ai donc casté les opérandes SAMPLING_RATE et SIN_FREQ en (const) ce qui avait réglé le problème ... mais j'ai fini par réaliser que (const) = (const int) et que donc que le résultat de la division est un entier. 
- 
- 
-Donc l'utilisation de la FPU n'est pas gratuit du tout car elle utilise des registres spécifiques et non les registres processeurs ce qui implique des transferts depuis/vers la FPU. L'assembleur du code FIR le montre bien : 
- 
-  vfma.f32    s15, s14, s12    @ output_val, tmp176, tmp177 
-  add    r4, r2, r3, lsl #2    @, tmp181, tmp161, tmp178, 
-  subs    r3, r3, #1    @ read_index, tmp178, 
-  flds    s14, [r4]    @ tmp182, signal_samples 
- 
- 
-le produit accumulation est fait en une instruction (visiblement trois cycles), mais il faut ajouter le chargement de de l'échantillon k-1 avec flds. Après optimisation, la boucle du FIR est déroulée sur 8 itérations, ce qui permet de faire le chargement de 8 coéfficients, de faire 8 itérations de la boucle et de recommencer. Initialement, j'accédais au résultat du FIR par un pointeur (variable retour du FIR passée en argument) et en fait ça fout la grosse merde. Lorsque on utilise un pointeur sur le résultat, ça implique pour chaque itération de déréférencer le pointeur, copier le contenu dans un registre processeur, copier vers un registre FPU, calculer le MAC, recopier vers un registre CPU pour pouvoir stocker la valeur résultat au travers du pointeur. 
- 
- 
-Du coup je vais retester demain le temps de clacul, mais au vu de l'ASM, ça devrait dépoter. 
- 
- 
-Autre truc sympa pour l'optimisation du FIR en  fixed point : 
- 
- 
-https://www.arm.com/files/pdf/DSPConceptsM4Presentation.pdf 
- 
- 
-=====pb utilisation projet qt5 de windows sous linux===== 
-http://homepages.laas.fr/bvandepo/files/iut/tp_tns/TP_TNS_3bdes.zip 
- 
- 
-fait sur une des machines 
-  cd /usr 
-  find . | grep QAudioOutput 
-  find . | grep QAudioDeviceInfo 
-  find . | grep QMulti 
-  apt-cache search qtmultimedia 
-  sudo apt-get install qtmultimedia5-dev 
-  find . | grep QAudioDeviceInfo 
-  
-QAudioDeviceInfo 
-  find . | grep QAudioDeviceInfo 
-    ./include/x86_64-linux-gnu/qt5/QtMultimedia/QAudioDeviceInfo 
-bertrand.vandeportae@p-ge2i-tfen-e23:/usr$ kate ./include/x86_64-linux-gnu/qt5/QtMultimedia    /QAudioDeviceInfo 
- 
-  find . | grep qaudiodeviceinfo.h 
-    ./include/x86_64-linux-gnu/qt5/QtMultimedia/qaudiodeviceinfo.h 
- 
- 
-dans le projets->environnement de compilation, 
-QTDIR est réglé à /usr/share/qt4 
-qt4 apparait également dans le PATH 
- 
-  qmake --version 
-    QMake version 2.01a 
-    Using Qt version 4.8.6 in /usr/lib/x86_64-linux-gnu 
- 
-  export QTDIR=/usr/share/qt5  
-  qmake --version 
-    QMake version 2.01a 
-    Using Qt version 4.8.6 in /usr/lib/x86_64-linux-gnu 
- 
-  ll /usr/share/qt5 
-    total 12K 
-    drwxr-xr-x 3 root root 4,0K mars  21 09:42 doc 
-    drwxr-xr-x 2 root root 4,0K nov.  26  2014 phrasebooks 
-    drwxr-xr-x 2 root root 4,0K nov.  26  2014 translations 
-  ll /usr/share/qt4 
-    drwxr-xr-x   2 root root 4,0K févr.  8  2016 bin 
-    drwxr-xr-x   3 root root 4,0K nov.  26  2014 doc 
-    lrwxrwxrwx   1 root root   17 oct.  16  2014 include -> ../../include/qt4 
-    drwxr-xr-x 112 root root 4,0K févr.  8  2016 mkspecs 
-    lrwxrwxrwx   1 root root   21 mai    4  2015 plugins -> ../../lib/qt4/plugins 
-    -rw-r--r--   1 root root 326K août  23  2014 q3porting.xml 
-    drwxr-xr-x   2 root root 4,0K févr.  8  2016 translations 
-  
-http://unix.stackexchange.com/questions/116254/how-do-i-change-which-version-of-qt-is-used-for-qmake 
-  
-  
-  qmake --version 
-    QMake version 2.01a 
-    Using Qt version 4.8.7 in /usr/lib/x86_64-linux-gnu 
- 
-  qmake -qt=qt5 --version 
-    QMake version 3.0 
-    Using Qt version 5.5.1 in /usr/lib/x86_64-linux-gnu 
- 
-  QT_SELECT=qt5 qmake --version 
-    QMake version 3.0 
-    Using Qt version 5.5.1 in /usr/lib/x86_64-linux-gnu 
-  
-  
-  
- 
  
tns_nucleo_prof.txt · Dernière modification: 2021/02/19 21:20 (modification externe)