十一@264

十一@264

0个粉丝

4

问答

0

专栏

0

资料

十一@264  发布于  2017-05-10 14:55:40
采纳率 0%
4个问答
5905

海思对内存空间寄存器的配置出现段错误

 
在海思驱动里对海思GPIO寄存器进行配置

adv7180.c
                        HI_GPIO_WRITE_REG(F_ADDR+F_OFFSET,0x0);//写管脚复用寄存器

                        f_input_dir = HI_GPIO_READ_REG(G_ADDR+G_D_ADDR_OFFSET);
                        f_input_dir |= 0x02;
                        HI_GPIO_WRITE_REG(G_ADDR+G_D_ADDR_OFFSET,f_input_dir);//设置GPIO的方向为输出

                        HI_GPIO_WRITE_REG(G_ADDR+G_DATA_OFFSET,0x0);

adv7180.h
                     #define  HI_GPIO_WRITE_REG(Addr, Value) ((*(volatile unsigned int *)(Addr)) = (Value))
                     #define  HI_GPIO_READ_REG(Addr)         (*(volatile unsigned int *)(Addr))


在加载adv7180.ko的时候出现段错误,哪位仁兄帮忙给指点个方向,谢谢了,在线等
我来回答
回答21个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-05-10 14:57:39
认可0
加载的log 放上来,不然又成猜谜啦

十一@264

0个粉丝

4

问答

0

专栏

0

资料

十一@264 2017-05-10 14:59:11
认可0
本帖最后由 十一@264 于 2017-5-10 15:00 编辑

loggggggggg

十一@264

0个粉丝

4

问答

0

专栏

0

资料

十一@264 2017-05-10 14:59:52
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49477&ptid=15138]zhuangweiye 发表于 2017-5-10 14:57[/url]
加载的log 放上来,不然又成猜谜啦[/quote]

nmnmnmnmnmnmnm
Unable to handle kernel paging request at virtual address 200f001c
pgd = c0dbc000
[200f001c] *pgd=00000000
Internal error: Oops: 805 [#1]
Modules linked in: tvin_si2177(+) hi_i2c hi3518_adec(P) hi3518_aenc(P) hi3518_ao(P) hi3518_ai(P) hi3518_sio(P) hidmac acodec(P) pl2303 usbserial gpio pwm hi3518_ive(P) hi3518_vda(P) hi3518_region(P) hi3518_rc(P) hi3518_jpege(P) hi3518_h264e(P) hi3518_chnl(P) hi3518_group(P) hi3518_venc(P) hifb(P) hi3518_vou(P) hi3518_vpss(P) hi3518_isp(P) hi3518_viu(P) hi3518_dsu(P) hi3518_tde(P) hiuser hi3518_sys(P) hi3518_base(P) mmz [last unloaded: hi_i2c]
CPU: 0    Tainted: P             (3.0.8 #1)
PC is at setadv7180bamuxmode+0x27c/0x300 [tvin_si2177]
LR is at console_unlock+0x170/0x188
pc : []    lr : []    psr: 60000013
sp : c0dcdee8  ip : c0dcde20  fp : c0dcdf0c
r10: 00000000  r9 : c0dcc000  r8 : c001f084
r7 : 00000000  r6 : 00000000  r5 : bf2e2000  r4 : 00000000
r3 : 200f0000  r2 : 00000000  r1 : c02a7778  r0 : 00000012
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 0005317f  Table: 80dbc000  DAC: 00000015

LR: 0xc002cfcc:
cfcc  ebfffe5b e3e03000 e1540005 e587304c 1affffdb ea000007 e1a00004 e59f3070
cfec  e1a04007 e893000c e2433001 e1540005 1affffe5 e1a04000 e59f3054 e1a00004
d00c  e1a01005 e593204c ebfffe49 e121f006 eaffffb9 e5931010 e3a02000 e1510002
d02c  e583201c 15832010 e59f0018 eb006dc0 e121f006 e3580000 089da9f8 ebfffe87
d04c  e89da9f8 c02b8cb8 c02a7774 c0268e7a 000002a7 c02a7734 e1a0c00d e92dd800
d06c  e24cb004 e59f2024 e5923000 e3530000 089da800 e3a03000 e3a01001 e5823000
d08c  e59f000c e1a02001 ebffe90e e89da800 c02a7730 c02a7750 e1a0c00d e92dd800
d0ac  e24cb004 e3500000 0a000000 ebffffe9 e59f3004 e5930000 e89da800 c02a7730

SP: 0xc0dcde68:
de68  c0dcdeac c0dcde78 bf2cf1c0 bf2cf010 00000001 00000001 ffffffff c0dcded4
de88  00000000 00000000 c0dcdf0c c0dcdea0 c001eacc c001e238 00000012 c02a7778
dea8  00000000 200f0000 00000000 bf2e2000 00000000 00000000 c001f084 c0dcc000
dec8  00000000 c0dcdf0c c0dcde20 c0dcdee8 c002d04c bf2dbf10 60000013 ffffffff
dee8  00000000 c020ac94 c0dcdf0c 00dcdf00 c0037874 00000000 c0dcdf24 c0dcdf10
df08  bf2dc06c bf2dbca4 0000001e bf2debe0 c0dcdf44 c0dcdf28 bf2e2050 bf2dbfa4
df28  00000000 1e000009 00000000 bf2debe0 c0dcdf7c c0dcdf48 c001e394 bf2e2010
df48  009ae008 00000000 00011341 c001f084 bf2debe0 009ae008 00000000 00011341

IP: 0xc0dcdda0:
dda0  c182f000 00000f01 0000000f 00000805 c02a6ae4 200f001c c0dcdea0 c001f084
ddc0  20000013 00000000 c0dcddf4 c0dcddd8 c0023e2c c0023bcc 00000805 c02a6ae4
dde0  200f001c c0dcdea0 c0dcde9c c0dcddf8 c001e264 c0023e18 c0dcde1c c0dcde08
de00  c002c9c0 c002c8c4 c02b8cb8 000031db c0dcde44 c0dcde20 c002d04c c002ca7c
de20  c02a7734 00000012 00000000 0000000f c02b8d74 00000000 c0dcdebc c0dcde48
de40  c002dbc0 c002ceec c0dcde6c 60000013 c020a1c0 c002d8d4 bf2d844c c0dcde74
de60  c0dcdeac c0dcde80 c0dcdeac c0dcde78 bf2cf1c0 bf2cf010 00000001 00000001
de80  ffffffff c0dcded4 00000000 00000000 c0dcdf0c c0dcdea0 c001eacc c001e238

FP: 0xc0dcde8c:
de8c  00000000 c0dcdf0c c0dcdea0 c001eacc c001e238 00000012 c02a7778 00000000
deac  200f0000 00000000 bf2e2000 00000000 00000000 c001f084 c0dcc000 00000000
decc  c0dcdf0c c0dcde20 c0dcdee8 c002d04c bf2dbf10 60000013 ffffffff 00000000
deec  c020ac94 c0dcdf0c 00dcdf00 c0037874 00000000 c0dcdf24 c0dcdf10 bf2dc06c
df0c  bf2dbca4 0000001e bf2debe0 c0dcdf44 c0dcdf28 bf2e2050 bf2dbfa4 00000000
df2c  1e000009 00000000 bf2debe0 c0dcdf7c c0dcdf48 c001e394 bf2e2010 009ae008
df4c  00000000 00011341 c001f084 bf2debe0 009ae008 00000000 00011341 c001f084
df6c  c0dcc000 c0dcdfa4 c0dcdf80 c00534bc c001e304 c0dcdfa4 c0dcdf90 bef83f45

R1: 0xc02a76f8:
76f8  00000012 00000013 00000014 00000015 00000016 00000017 00000018 00000019
7718  0000001a 0000001b 0000001c 0000001d 0000001e 0000001f 00000000 c02b9178
7738  00004000 0000000f 00000004 00000001 00000007 00000001 c02a7750 c02a7750
7758  c02a7758 c02a7758 000001f4 0000000a 00000000 00000000 00000000 00000001
7778  c02a7778 c02a7778 00000004 ffffffff 00000000 ffffffff 00000000 00000000
7798  00000001 c027ca34 c0269249 c0269218 c026921f c0269226 c026922c c0269239
77b8  c0269241 c0269247 c026924f 00000000 c02a77c4 00000000 c02a77cc c02a77d4
77d8  c02a77d4 c02a77dc c02a77dc c02a77e4 c02a77e4 c02a77ec c02a77ec c02a77f4

R8: 0xc001f004:
f004  e92d0030 e31a0c01 1a000008 e3570f5e e24fef47 3798f107 e28d1008 e3a08000
f024  e357080f e2270000 2a000d95 ea0099b5 e1a02007 e28d1008 e3a00000 eb0004db
f044  e28fe014 e1a07000 e28d1008 e3570f5e 3891000f 3798f107 eaffffef e5ad0008
f064  e1a02007 e1a0100d e3a00001 eb0004cf eaffffb8 e1a00000 e1a00000 c02a671c
f084  c0038030 c003000c c001f68c c007bcac c007ba74 c00799b4 c007958c c004570c
f0a4  c00799e0 c0086f74 c00870f0 c001f69c c007a32c c004570c c0087520 c007a208
f0c4  c004fe68 c004570c c004570c c007ab80 c0037910 c0094094 c004570c c004fd9c
f0e4  c004fab0 c004570c c0036974 c004570c c004570c c0038384 c004570c c004570c

R9: 0xc0dcbf80:
bf80  10000452 10100452 20000452 20100452 20200452 20300452 20400452 20500452
bfa0  20600452 00000000 00000000 00000000 00000000 00000000 00000000 00000000
bfc0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
bfe0  00000000 00000000 00000000 00000000 81838811 81838c11 81ffe831 81ffec31
c000  00000002 00000001 00000000 c181b680 c02a7684 00000000 00000017 c181b680
c020  c0dcc000 00000000 c02a5b00 c1174480 c0dcc000 00000000 c0dcde74 c0dcde48
c040  c020a958 00000000 00000000 00000000 00000000 00000000 00000000 00000000
c060  40030490 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Process insmod (pid: 530, stack limit = 0xc0dcc270)
Stack: (0xc0dcdee8 to 0xc0dce000)
dee0:                   00000000 c020ac94 c0dcdf0c 00dcdf00 c0037874 00000000
df00: c0dcdf24 c0dcdf10 bf2dc06c bf2dbca4 0000001e bf2debe0 c0dcdf44 c0dcdf28
df20: bf2e2050 bf2dbfa4 00000000 1e000009 00000000 bf2debe0 c0dcdf7c c0dcdf48
df40: c001e394 bf2e2010 009ae008 00000000 00011341 c001f084 bf2debe0 009ae008
df60: 00000000 00011341 c001f084 c0dcc000 c0dcdfa4 c0dcdf80 c00534bc c001e304
df80: c0dcdfa4 c0dcdf90 bef83f45 40157008 009ae008 00000080 00000000 c0dcdfa8
dfa0: c001ef00 c0053450 bef83f45 40157008 40157008 00011341 009ae008 00000000
dfc0: bef83f45 40157008 009ae008 00000080 00000000 00000000 00000307 00000000
dfe0: 400cacf4 bef83c2c 00020f6c 400cad04 20000010 40157008 00000000 00000000
Backtrace:
[] (setadv7180bamuxmode+0x0/0x300 [tvin_si2177]) from [] (adv7180b_init_regs+0xd8/0xe8 [tvin_si2177])
r4:00000000
[] (adv7180b_init_regs+0x0/0xe8 [tvin_si2177]) from [] (adv7180_module_init+0x50/0x88 [tvin_si2177])
r4:bf2debe0 r3:0000001e
[] (adv7180_module_init+0x0/0x88 [tvin_si2177]) from [] (do_one_initcall+0xa0/0x178)
r4:bf2debe0
[] (do_one_initcall+0x0/0x178) from [] (sys_init_module+0x7c/0x198)
r9:c0dcc000 r8:c001f084 r7:00011341 r6:00000000 r5:009ae008
r4:bf2debe0
[] (sys_init_module+0x0/0x198) from [] (ret_fast_syscall+0x0/0x2c)
r7:00000080 r6:009ae008 r5:40157008 r4:bef83f45
Code: e59f0080 eb3cb8a4 e59f307c e3a02000 (e583201c)
---[ end trace 063b0ede4c725317 ]---
Segmentation fault

十一@264

0个粉丝

4

问答

0

专栏

0

资料

十一@264 2017-05-10 15:09:54
认可0
#define    F_ADDR    0x200F0000
#define    F_OFFSET   0x01C
#define    G_ADDR   0x20160000
#define    G_D_ADDR_OFFSET   0x400
#define    G_DATA_OFFSET    0x008

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-05-10 15:22:52
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49482&ptid=15138]十一@264 发表于 2017-5-10 15:09[/url]
#define    F_ADDR    0x200F0000
#define    F_OFFSET   0x01C
#define    G_ADDR   0x20160000
[/quote]

Unable to handle kernel paging request at virtual address 200f001c

这个地址有问题

HI_GPIO_WRITE_REG(F_ADDR+F_OFFSET,0x0);//写管脚复用寄存器

#define  HI_GPIO_WRITE_REG(Addr, Value) ((*(volatile unsigned int *)(Addr)) = (Value))

一般来说这个Addr应该是 ioremap_nocache过后的地址而不是直接写

十一@264

0个粉丝

4

问答

0

专栏

0

资料

十一@264 2017-05-10 15:33:13
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49485&ptid=15138]zhuangweiye 发表于 2017-5-10 15:22[/url]
Unable to handle kernel paging request at virtual address 200f001c

这个地址有问题
[/quote]

海思SDK里面就是这么写的,如果这个地址不能写,怎么配置这个脚为GPIO模式呢

hanfei69882

2个粉丝

26

问答

0

专栏

2

资料

hanfei69882 2017-05-10 15:36:48
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49487&ptid=15138]十一@264 发表于 2017-5-10 15:33[/url]
海思SDK里面就是这么写的,如果这个地址不能写,怎么配置这个脚为GPIO模式呢[/quote]

可以用  
[code]writel(1, IO_ADDRESS(0x200F00E8));[/code]

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-05-10 15:38:54
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49488&ptid=15138]hanfei69882 发表于 2017-5-10 15:36[/url]
可以用[/quote]

ipc的SDK好像没有 IO_ADDRESS了

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-05-10 15:41:48
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49487&ptid=15138]十一@264 发表于 2017-5-10 15:33[/url]
海思SDK里面就是这么写的,如果这个地址不能写,怎么配置这个脚为GPIO模式呢[/quote]

用标准的linux驱动的方式来写

试试
在初始化中
reg_base_va = ioremap_nocache(0x200f0000, 0x1000);

然后
HI_GPIO_WRITE_REG(reg_base_va + 0x1c, 0);

十一@264

0个粉丝

4

问答

0

专栏

0

资料

十一@264 2017-05-10 15:43:09
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49488&ptid=15138]hanfei69882 发表于 2017-5-10 15:36[/url]
可以用[/quote]

最终不都是写这个地址的寄存器吗,有什么区别

hanfei69882

2个粉丝

26

问答

0

专栏

2

资料

hanfei69882 2017-05-10 15:43:55
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49491&ptid=15138]zhuangweiye 发表于 2017-5-10 15:38[/url]
ipc的SDK好像没有 IO_ADDRESS了[/quote]

我这边是3518eV200 里面是有的:P

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-05-10 15:47:22
认可0
本帖最后由 zhuangweiye 于 2017-5-10 15:49 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=49493&ptid=15138]十一@264 发表于 2017-5-10 15:43[/url]
最终不都是写这个地址的寄存器吗,有什么区别[/quote]

区别是转换后不会是0x200f001c

0x200f001c是物理地址,而内核能用的是内核地址,两者不一样的, 一般情况下,内核会统一把寄存器用ioremap的方式映射出来,然后定义一个宏给其他驱动来用,不然每个驱动都要去ioremap会出现冲突

十一@264

0个粉丝

4

问答

0

专栏

0

资料

十一@264 2017-05-10 15:52:13
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49495&ptid=15138]zhuangweiye 发表于 2017-5-10 15:47[/url]
区别是转换后不会是0x200f001c

0x200f001c是物理地址,而内核能用的是内核地址,两者不一样的, 一 ...[/quote]

我这边i2c驱动里面是这么写的

#define I2C_ADRESS_BASE         0x200D0000


void __iomem * reg_i2c_base_va = 0;
#define HI_IO_ADDRESS(x) (reg_i2c_base_va + ((x)-(I2C_ADRESS_BASE)))

#define I2C_CTRL_REG      HI_IO_ADDRESS(I2C_ADRESS_BASE + 0x000)
#define I2C_COM_REB       HI_IO_ADDRESS(I2C_ADRESS_BASE + 0x004)
#define I2C_ICR_REG       HI_IO_ADDRESS(I2C_ADRESS_BASE + 0x008)
#define I2C_SR_REG        HI_IO_ADDRESS(I2C_ADRESS_BASE + 0x00C)
#define I2C_SCL_H_REG     HI_IO_ADDRESS(I2C_ADRESS_BASE + 0x010)
#define I2C_SCL_L_REG     HI_IO_ADDRESS(I2C_ADRESS_BASE + 0x014)
#define I2C_TXR_REG       HI_IO_ADDRESS(I2C_ADRESS_BASE + 0x018)
#define I2C_RXR_REG       HI_IO_ADDRESS(I2C_ADRESS_BASE + 0x01C)


#define  I2C_WRITE_REG(Addr, Value) ((*(volatile unsigned int *)(Addr)) = (Value))
#define  I2C_READ_REG(Addr)         (*(volatile unsigned int *)(Addr))

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-05-10 15:54:36
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49497&ptid=15138]十一@264 发表于 2017-5-10 15:52[/url]
我这边i2c驱动里面是这么写的

#define I2C_ADRESS_BASE         0x200D0000
[/quote]

reg_i2c_base_va会在初始化的时候 ioremap的

十一@264

0个粉丝

4

问答

0

专栏

0

资料

十一@264 2017-05-10 15:56:06
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49495&ptid=15138]zhuangweiye 发表于 2017-5-10 15:47[/url]
区别是转换后不会是0x200f001c

0x200f001c是物理地址,而内核能用的是内核地址,两者不一样的, 一 ...[/quote]

谢谢了。你说的意思我大体明白了,我自己实验下吧

十一@264

0个粉丝

4

问答

0

专栏

0

资料

十一@264 2017-05-10 15:56:46
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49494&ptid=15138]hanfei69882 发表于 2017-5-10 15:43[/url]
我这边是3518eV200 里面是有的[/quote]

谢谢了,我自己实验下吧

hanfei69882

2个粉丝

26

问答

0

专栏

2

资料

hanfei69882 2017-05-10 16:04:07
认可0
本帖最后由 hanfei69882 于 2017-5-10 16:13 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=49495&ptid=15138]zhuangweiye 发表于 2017-5-10 15:47[/url]
区别是转换后不会是0x200f001c

0x200f001c是物理地址,而内核能用的是内核地址,两者不一样的, 一 ...[/quote]

多谢庄工指点 收获很大:handshake
之前只是用,原理到没注意,刚Google了一下大概了解,有点类似用户空间和内核空间

[quote]默认外设I/O资源是不在Linux内核空间中的(如sram或硬件接口寄存器等),若需要访问该外设I/O资源,必须先将其地址映射到内核空间中来,然后才能在内核空间中访问它。
  Linux内核访问外设I/O内存资源的方式有两种:动态映射(ioremap)和静态映射(map_desc)。[/quote]

另外,使用writel感觉效率比海思的地址操作接口高一些:D

十一@264

0个粉丝

4

问答

0

专栏

0

资料

十一@264 2017-05-10 17:10:56
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49498&ptid=15138]zhuangweiye 发表于 2017-5-10 15:54[/url]
reg_i2c_base_va会在初始化的时候 ioremap的[/quote]

明白了,谢谢

十一@264

0个粉丝

4

问答

0

专栏

0

资料

十一@264 2017-05-11 10:58:54
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49498&ptid=15138]zhuangweiye 发表于 2017-5-10 15:54[/url]
reg_i2c_base_va会在初始化的时候 ioremap的[/quote]

谢谢,搞好了在初始化的时候ioremap_nocache   在exit的时候需要iounmap()

zxf_meian

0个粉丝

3

问答

0

专栏

0

资料

zxf_meian 2017-11-07 11:39:19
认可0
[quote]在加载adv7180.ko的时候[/quote]

请问什么时候需要加载这个文件呢?运行时直接执行./filename就可以了啊?我是新手,在练习例程sample_venc,把它传到板子上修改权限之后./sample_venc就行了啊
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区