Hi,
I want to set/reset GPIO registers in freescale p1022 processor. I saw a
hello-mod kernel module in yocto and I added it to my image and it worked.
According to hello-mod kernel module, I created GPIO module like hello-mod.
But it GPIO module failed when I run it in kernel level. I checked several
times addresses of registers and it seems accurate. 
My code is here :


#include <linux/module.h>

int init_module(void)
{
        volatile uint32_t * Guts_Pmuxcr;
        volatile uint32_t * Gpio3_Gpdir;
        volatile uint32_t * Gpio3_Gpdat;
        
        // e500 Core View To Power Architecture CCSR: 0x0_FF70_0000

       // GUTS_PMUXCR:Alternate Function Signal Multiplex Control Register
        Guts_Pmuxcr = (volatile uint32_t *)(0xFF7E0060);
      
        // GPIO3_GPDIR: GPIO3 direction register
        Gpio3_Gpdir = (volatile uint32_t *)(0xFF70F200);

        // GPIO3_GPDAT: GPIO3 data register
        Gpio3_Gpdat = (volatile uint32_t *)(0xFF70F208); 
         

        // Enable GPIO3[10]: IRQ_DEBUG1_GPIO FIELD [BIT 26] set to "1"
        *(Guts_Pmuxcr) = 0x00000010;
         

        // Set Direction for GPIO3[10] to Output: FIELD DR10 [BIT 10] set to '1'
        *(Gpio3_Gpdir) = 0x00200000;
        
         
        // Set GPIO3[10] to '0': FIELD D10 [BIT 10] set to '0'
        *(Gpio3_Gpdat) = 0x00000000;
        
        printk("Hello World!\n");
        return 0;
}

void cleanup_module(void)
{
        printk("Goodbye Cruel World!\n");
}

MODULE_LICENSE("GPL");


When I write insmod GPIO.ko in the terminal I get error these errors:

Unable to handle kernel paging request for data at address 0xff7e0060
faulting instruction address: 0xf107e05c
Oops: Kernel access of bad area, sig: 11 [#1]
..........
.........


How can I solve this problem?


_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to