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