Professional Documents
Culture Documents
Trang 19
n tt nghip
Trang 20
n tt nghip
Trang 21
n tt nghip
Trang 22
n tt nghip
Trang 23
n tt nghip
Trang 24
Tc v ioctl:
S dng iu khin cc hnh vi khc nhau ca device bng cu trc
switch_case
Ty theo gi tr ca thng s cmd truyn t user, cc hm tng ng c
gi:
Gi hm gpio_get_value (arg) nhn trng thi hin ti ca chn vi tham s
arg l s th t chn.
Gi hm gpio_set_value(arg, 1) thit lp gi tr ti arg ln 1.
Gi hm gpio_set_value(arg, 0) thit lp gi tr ca arg ln 0.
Gi hm GPIO_DIR_IN(arg) thit lp chn ti arg thnh chn c ch vo.
Gi hm gpio_direction_output(arg, 0) thit lp chn ti arg thnh ch
ng ra.
cp software, h iu hnh Linux phn chia thnh 2 khng gian hot ng,
gi l user space v kernel space. Chng trnh ng dng (user program) thuc v
user space v kernel module, driver thuc v kernel space. Vi s phn chia trn, 1
chng trnh ng dng khng th truy xut trc tip cc gpio ca MPU theo kiu
lp trnh firmware truyn thng, trong khi kernel module, driver c th d dng thc
hin iu ny. Chng trnh ng dng truy xut gpio thng qua driver. V pha
driver, cc pin gpio_number ca AT91SAM9260 MPU c khai bo trong header
file: "arch/arm/mach-at91/include/mach/gpio.h"
AT91_PIN_PA0, AT91_PIN_PB0, AT91_PIN_PC0 ...
V d :
#defineAT91_PIN_PA0 (PIN_BASE + 0x00 + 0)
#defineAT91_PIN_PB0 (PIN_BASE + 0x20 + 0)
#defineAT91_PIN_PC0 (PIN_BASE + 0x40 + 0)
#defineAT91_PIN_PD0 (PIN_BASE + 0x60 + 0)
...
n tt nghip
Trang 25
Size Used by
gpio_dev
2432 0