Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
sesiuni:kernel:embedded [2012/07/12 16:39]
avoinescu [Tasks]
sesiuni:kernel:embedded [2012/07/12 16:41]
avoinescu [Tasks]
Line 29: Line 29:
 Descărcați arhiva [[http://​workshop.rosedu.org/​res/​kernel/​sesiune-09-code.zip|sesiune-09]]. Descărcați arhiva [[http://​workshop.rosedu.org/​res/​kernel/​sesiune-09-code.zip|sesiune-09]].
  
-Interfața ''/​sys/​class/​leds''​ +1. Interfața ''/​sys/​class/​leds''​ 
-#* Explorați ''/​sys/​class/​leds''​ + ​Explorați ''/​sys/​class/​leds''​ 
-#* ''/​sys/​class/​leds/​a/''​ este folder-ul asociat led-ului A +  * ''/​sys/​class/​leds/​a/''​ este folder-ul asociat led-ului A 
-#* ''/​sys/​class/​leds/​a/​brightness/''​ controlează luminozitatea led-ului +  * ''/​sys/​class/​leds/​a/​brightness/''​ controlează luminozitatea led-ului 
-#* ''/​sys/​class/​leds/​a/​trigger/''​ declară un eveniment cu care să fie asociată aprinderea led-ului +  * ''/​sys/​class/​leds/​a/​trigger/''​ declară un eveniment cu care să fie asociată aprinderea led-ului 
-Interfața %%__raw_writel%% +2. Interfața %%__raw_writel%% 
-#* Până acum ați interacționat cu LED-urile prin interfața oferită de un driver în ''/​sys/​class/​leds''​. Acum vom avea ocazia să vedem ce se află în spatele acelei interfețe.  +Până acum ați interacționat cu LED-urile prin interfața oferită de un driver în ''/​sys/​class/​leds''​. Acum vom avea ocazia să vedem ce se află în spatele acelei interfețe.  
-#*AP7000 (procesorul de pe plăcuța de dezvoltare) are niște registre pentru "​General Purpose I/O". Pentru fiecare dintre cele 5 porturi (A,B,C,D,E) avem un set de registre, dintre care enunțăm:​ +AP7000 (procesorul de pe plăcuța de dezvoltare) are niște registre pentru "​General Purpose I/O". Pentru fiecare dintre cele 5 porturi (A,B,C,D,E) avem un set de registre, dintre care enunțăm:​ 
-#** PER - pin enable register +  * PER - pin enable register 
-#** OER - output enable register +  * OER - output enable register 
-#** CODR - clear output data register +  * CODR - clear output data register 
-#** SODR - set output data register +  * SODR - set output data register 
-#** Registrele sunt pe 32 de biți, fiecare bit configurând un anumit pin, de la cel mai semnificativ (asociat pinului 0), la cel mai nesemnificativ (asociat pinului 31 de pe portul respectiv). Registrele suportă scriere cu măști, astfel încât doar pinii biților 1 vor fi afectați. + 
-#**De exemplu, pentru a aprinde LED-ul de pe pinul 12 al portului E vom scrie:+Registrele sunt pe 32 de biți, fiecare bit configurând un anumit pin, de la cel mai semnificativ (asociat pinului 0), la cel mai nesemnificativ (asociat pinului 31 de pe portul respectiv). Registrele suportă scriere cu măști, astfel încât doar pinii biților 1 vor fi afectați. 
 +De exemplu, pentru a aprinde LED-ul de pe pinul 12 al portului E vom scrie:
  
 <​code>​ <​code>​
Line 64: Line 65:
 #define CODR 0x0034 ​ #define CODR 0x0034 ​
 </​code> ​   </​code> ​  
-#** Toate registrele pentru GPIO ale unui port se găsesc în aceeași locație, cu offset-i diferiți față de aceeași adresă de bază. Atât adresa de bază a fiecărui port cât și offset-ii pentru toți regiștrii se găsesc atât în datasheet cât și ca definiții în header-ele nucleului.+Toate registrele pentru GPIO ale unui port se găsesc în aceeași locație, cu offset-i diferiți față de aceeași adresă de bază. Atât adresa de bază a fiecărui port cât și offset-ii pentru toți regiștrii se găsesc atât în datasheet cât și ca definiții în header-ele nucleului.
  
 Regiștrii se pot modifica direct cu %%__raw_writel%% sau cu biblioteca gpio. Biblioteca face în plus verificări de concurență,​ apoi apelează tot %%__raw_writel%%. Funcțiile puse la dispoziție sunt următoarele:​ Regiștrii se pot modifica direct cu %%__raw_writel%% sau cu biblioteca gpio. Biblioteca face în plus verificări de concurență,​ apoi apelează tot %%__raw_writel%%. Funcțiile puse la dispoziție sunt următoarele:​
sesiuni/kernel/embedded.txt · Last modified: 2012/07/12 16:42 by avoinescu