#include #include #include #include #include #include #define AM335X_GPIO_SIZE 0x00001000 #define AM335X_GPIO1_BASE 0x4804C000 #define GPIO_DATAOUT 0x13C #define GPIO_OE 0x134 #define LED0 (1<<21) #define LED1 (1<<22) #define LED2 (1<<23) #define LED3 (1<<24) #define LEDS(n) ((n&0xf)<<21) int main(int argc, char *argv[]) { int i = 0; uintptr_t gpio_base; uint32_t val; ThreadCtl (_NTO_TCTL_IO,NULL); // Map device registers gpio_base = mmap_device_io(AM335X_GPIO_SIZE, AM335X_GPIO1_BASE); if(gpio_base == MAP_DEVICE_FAILED) { perror("Can't map device I/O"); return 0; } // Read GPIO output enable register // 0 The corresponding GPIO port is configured as an output. // 1 The corresponding GPIO port is configured as an input. val = in32(gpio_base + GPIO_OE); val &= ~(LED0|LED1|LED2|LED3); out32(gpio_base + GPIO_OE, val); while(i<16) { printf("i = %i\n", i); // Write GPIO data output register val = in32(gpio_base + GPIO_DATAOUT); val &= ~(LED0|LED1|LED2|LED3); val |= (LEDS(i++)); out32(gpio_base + GPIO_DATAOUT, val); sleep(5); } munmap_device_io(gpio_base, AM335X_GPIO_SIZE); return 1; }