Forum Discussion

wchen50's avatar
wchen50
Icon for New Contributor rankNew Contributor
8 years ago

Altera DE0-Nano gpio

In my testing, I want to access the fpga gpio. I can use set the fpga gpio pin from user space (open /dev/mem, then use mmap, etc). However I cannot set the fpga from kernel space.

In my kernel code, I tried to ioremap the gpio0 based, and then set the gpio pin, but it doesn't work as expected.

void *ptr = ioremap(0xff708000, 0x10 );

*(ptr+offset) = 0b1;

where offset is the memory mapped slave as shown in platform designer.

I tried many ways but it doesn't work.

Any suggestion?

2 Replies

  • FawazJ_Altera's avatar
    FawazJ_Altera
    Icon for Frequent Contributor rankFrequent Contributor

    Hello,

    We are still investigating this case.

    i will post my feedback once I find useful information.,

    Thanks

    Fawaz

  • FawazJ_Altera's avatar
    FawazJ_Altera
    Icon for Frequent Contributor rankFrequent Contributor

    Hello,

    I found this useful link:

    https://lwn.net/Articles/532714/

    Please refer to it, the summary of accessing GPIO:

    1- include the driver:

    #include <linux/gpio.h>

    2- GPIOs must be allocated before use:

    int gpio_request(unsigned int gpio, const char *label);

    3- And GPIO can be returned to the system with:

    void gpio_free(unsigned int gpio);

    4- Configure GPIO as Input/Output:

    int gpio_direction_input(unsigned int gpio);

    int gpio_direction_output(unsigned int gpio, int value);

    5- Run GPIO:

    int gpio_get_value(unsigned int gpio);

    void gpio_set_value(unsigned int gpio, int value);

    Hope this might help.

    Thanks