mardi 29 septembre 2009

Buzzer 2

Version 2, d'après le code source du driver linux il est possible de configurer différemment le port GPB0, en mode TOUT0. Dans ce mode l'horloge système permet d'envoyer une fréquence au buzzer.

1.Configurer GPBCON en mode TOUT0
[sourcecode]s2440IOP->rGPBCON = (s2440IOP->rGPBCON &~(3 << 0)) | (2<< 0);[/sourcecode]

lundi 28 septembre 2009

Création d'un driver (Buzzer)

Nous allons creer un driver pour le buzzer :
Première étape consiste a comprendre à quel patte du CPU, le buzzer est relié. Bon assez facile le port B, la patte GPB0.
On va donc cloner le driver de led pour creer le driver du buzzer.
Pour activer le GPB0 en mode output il faut setter les 2 premiers bit de GPBCON.
s2440IOP->rGPBCON = (s2440IOP->rGPBCON &~(3 << gpb0 ="="">rGPBDAT=s2440IOP->rGPBDAT&~(0x1<<0);>rGPBDAT=s2440IOP->rGPBDAT|(0x1<<0); pour désactiver (ou l'inverse se n'est pas préciser dans la doc).
On va donc crer un thread qui va alterner l'etat du GPB0.

Bon ce driver il faut bien l'inscrire quelque part cela doit ce faire dans mini2440\Files\platform.reg
On rajout donc
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\BUZdriver]
"Prefix"="BUZ"
"Dll"="Buzzer.dll"

Coté applicatif il faut ouvrir le driver :
driverFileHandle = CreateFile(L"BUZ0:",
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
0,
NULL
);
Puis appeler les IO contols définis dans le driver :
DeviceIoControl(driverFileHandle,
IO_CTL_BUZ_ON,
NULL,
0,
0,
0,
&returned,
NULL
);
Les drivers sont identifié par 3 lettres ici BUZ, pour savoir quel est le numéro correspondant à l'instance, on va dans la base de registre :
[HKEY_LOCAL_MACHINE\Drivers\Active]
Par exemple pour le driver de LED, on trouve la clef 27 avec Name = LED1:

source du driver : ici
source de l'application de test : ici

Presentation


Je viens de faire l'acquisition d'une carte de développement mini2440. C'est une carte qui utilise un processeur ARM920T qui tourne à 400 Mhz. Ce blog décrira mon avancement sur le développement sur cette carte sous Windows CE.

Voici la spécification complète :
CPU
• Samsung S3C2440A (ARM920T), 400MHz, max. 533Mhz
RAM
• 64MByte SDRAM
• 32bit Bus
• 100MHz Clock
Flash
• 64MByte Nand Flash
• 2MByte Nor Flash with Bios
System Clock
• 12Mhz Crystal
LCD
• 4 wire resistive touch screen interface
• STN-Displays
• 4bit dual scan, 4bit single scan or 8bit single scan display type
• monochrome, 4 gray levels, 16 gray levels, 256 colors or 4096 colors
• Max: 1024x768
• TFT-Display
• 1, 2, 4 or 8 bpp palletized color displays
• 16 or 24 bpp non-palletized true-color displays
• Max: 1024x768, 64k colors
Interface and Resource
• 1 10/100M Ethernet RJ-45 (DM9000)
• 3 Serial Ports (1 RS232)
• 1 USB Host
• 1 USB Device
• 1 SD-Card Interface
• 1 Audio Output
• 1 Audio Input
• 1 Microphone
• 4 User LEDs
• 6 User Buttons
• 1 PWM Buzzer
• 1 Adjustable Resistance (for ADC testing)
• 1 I2C EEPROM
• 1 Real Time Clock with Battery (RTC)
• 1 20pin Camera Interface (2.0mm)
• 1 34pin GPIO (2.0mm)
• 1 40poin System Bus (2.0mm)
• 1 10pin JTAG (2.0mm)
Power Supply
• 5V Connector
Dimension
• 10 x 10 cm
OS Support
• Linux 2.6
• Windows CE 5

Voici une description plus complete : ici