天嵌 ARM开发社区

 找回密码
 注册
查看: 1439|回复: 1

内存操作的错误,求解

[复制链接]
liyingjun 发表于 2014-5-15 10:17:14 | 显示全部楼层 |阅读模式
加载一个内核,出现内存地址不可操作,请问下大家这是作何解释。谢谢了
错误内容如下:
[root@EmbedSky /home]# insmod TEST_mem.ko
Unable to handle kernel paging request at virtual address ba000000
pgd = c3b58000
[ba000000] *pgd=00000000
Internal error: Oops: 805 [#1]
last sysfs file: /sys/devices/virtual/vc/vcsa4/dev
Modules linked in: TEST_mem(+)
CPU: 0    Not tainted  (2.6.30.4 #30)
PC is at s3c_dma_init+0x54/0x104 [TEST_mem]
LR is at s3c_dma_init+0x4c/0x104 [TEST_mem]
pc : [<bf00010c>]    lr : [<bf000104>]    psr: 60000013
sp : c3bddf48  ip : 00001d08  fp : 00000000
r10: 00000001  r9 : c3bdc000  r8 : 00000000
r7 : bf0000b8  r6 : 00000000  r5 : bf0001ec  r4 : bf0003ec
r3 : ba000000  r2 : 00000012  r1 : bf000205  r0 : 0000000a
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: c000717f  Table: 33b58000  DAC: 00000015
Process insmod (pid: 817, stack limit = 0xc3bdc270)
Stack: (0xc3bddf48 to 0xc3bde000)
df40:                   bf0000b8 00000000 c3bdc000 00000000 bf0002a8 c003537c
df60: bf0000b8 00000000 00000001 00000000 00000000 bf0002a8 00000000 000b5038
df80: c0036024 c0069818 000b5038 00015422 000a18b7 4001d838 00000000 beb0fe88
dfa0: 00000080 c0035ea0 4001d838 00000000 000b5038 00015422 000a18b7 00000000
dfc0: 4001d838 00000000 beb0fe88 00000080 beb0fe84 beb0fe88 00000001 00000000
dfe0: 00000069 beb0fb54 0001778c 401d3c24 60000010 000b5038 00000000 00000000
[<bf00010c>] (s3c_dma_init+0x54/0x104 [TEST_mem]) from [<c003537c>] (do_one_init
call+0x5c/0x1b4)
[<c003537c>] (do_one_initcall+0x5c/0x1b4) from [<c0069818>] (sys_init_module+0xb
c/0x1e8)
[<c0069818>] (sys_init_module+0xbc/0x1e8) from [<c0035ea0>] (ret_fast_syscall+0x
0/0x28)
Code: e5843010 eb4bcab6 e5943010 e3a02012 (e1c320b0)
---[ end trace 01e1a2c0bd6f9b26 ]---
Segmentation fault
[root@EmbedSky /home]# reboot
save exit: isCheckpointed 1
 楼主| liyingjun 发表于 2014-5-15 10:20:23 | 显示全部楼层
初始化的程序是这样的请问是啥原因!!
void s3c_dma_address_map(void)       
{  
    rGPACON    =(unsigned long)          ioremap( 0x56000000, 4 );       
}

static void s3c_dma_gpio_init( void )       
{  
    r_GPACON        |=((0x1<<16)|(0x1<<14));
}

static int s3c_dma_init(void)
{
                s3c_dma_address_map();
                s3c_dma_gpio_init();

         src_phys=0x2a000000;
         src=bus_to_virt(src_phys);
         (*src)=0x12;
        printk("%x\n",(*src));
        major = register_chrdev(0, "s3c_dma", &dma_fops);//注册字符设备


        /* 为了自动创建设备节点 */
        cls = class_create(THIS_MODULE, "s3c_dma");
        device_create(cls, NULL, MKDEV(major, 0), NULL, "dma"); /* /dev/dma */
        dma_regs = ioremap(DMA0_BASE_ADDR, sizeof(struct s3c_dma_regs));
        return 0;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-8-3 19:09 , Processed in 2.038668 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表