当前位置: 技术问答>linux和unix
linux2.6.36 JPEG驱动问题
来源: 互联网 发布时间:2017-04-10
本文导语: 我用的S3C6410自带的jpeg驱动在linux2.6.28下可以正常使用,但是换到linux2.6.36 下面,系统加载JPEG驱动的时候会报错: S3C JPEG Driver, (c) 2007 Samsung Electronics phy_addr = 78800000..mem_size = 1034 phy_addr = 569f9000..mem_size = 79e00...
我用的S3C6410自带的jpeg驱动在linux2.6.28下可以正常使用,但是换到linux2.6.36 下面,系统加载JPEG驱动的时候会报错:
S3C JPEG Driver, (c) 2007 Samsung Electronics
phy_addr = 78800000..mem_size = 1034
phy_addr = 569f9000..mem_size = 79e000
BUG: Your driver calls ioremap() on system memory. This leads
to architecturally unpredictable behaviour on ARMv6+, and ioremap()
will fail in the next kernel release. Please fix your driver.
请教各位大牛,这个问题如何解决?
S3C JPEG Driver, (c) 2007 Samsung Electronics
phy_addr = 78800000..mem_size = 1034
phy_addr = 569f9000..mem_size = 79e000
BUG: Your driver calls ioremap() on system memory. This leads
to architecturally unpredictable behaviour on ARMv6+, and ioremap()
will fail in the next kernel release. Please fix your driver.
请教各位大牛,这个问题如何解决?
|
不是叫你改内核代码
你需要理解
phy_addr = 78800000..mem_size = 1034
phy_addr = 569f9000..mem_size = 79e000
这两个物理地址的含义
78800000 是一个固定的地址,是6410的JPEG的寄存器基址,对于所有6410的板子都一样
但是569f9000 或者52aec000 是什么就不知道了,这片地址属于自由配置的,可能属于ram,也可能属于nor flash
你需要看你自己板子的原理图,搞清楚这个物理地址属于你板子上的哪个设备,再搞清楚这个地址的用途
然后找到52aec000这个地址在你源码里定义的位置,修改2.6.36里的这个地址到52aec000 ,以及mem_size 也要改成一样
解决这个问题必须你自己心里清楚,你的板子你的源码只有你有
你需要理解
phy_addr = 78800000..mem_size = 1034
phy_addr = 569f9000..mem_size = 79e000
这两个物理地址的含义
78800000 是一个固定的地址,是6410的JPEG的寄存器基址,对于所有6410的板子都一样
但是569f9000 或者52aec000 是什么就不知道了,这片地址属于自由配置的,可能属于ram,也可能属于nor flash
你需要看你自己板子的原理图,搞清楚这个物理地址属于你板子上的哪个设备,再搞清楚这个地址的用途
然后找到52aec000这个地址在你源码里定义的位置,修改2.6.36里的这个地址到52aec000 ,以及mem_size 也要改成一样
解决这个问题必须你自己心里清楚,你的板子你的源码只有你有
|
你改这个void __init s3c64xx_reserve_bootmem(void)肯定是不对的,其他人也会用到。
你要改的是jpeg解码驱动,jpeg解码的时候,会需要指定你的jpg数据放在哪儿,解完后放在哪里,这里应该会有个#define的定义,你去jpeg的驱动找找就行了。
但直接改为52aec000,我估计很悬,首先你得搞清楚你的内存布局,jpeg解码内存的位置。
你要改的是jpeg解码驱动,jpeg解码的时候,会需要指定你的jpg数据放在哪儿,解完后放在哪里,这里应该会有个#define的定义,你去jpeg的驱动找找就行了。
但直接改为52aec000,我估计很悬,首先你得搞清楚你的内存布局,jpeg解码内存的位置。
|
phy_addr = 78800000..mem_size = 1034
phy_addr = 569f9000..mem_size = 79e000
78800000是对的,这是6410 JPEG的物理地址
569f9000不对劲 ,
你对比一下2个版本的打印
phy_addr = 569f9000..mem_size = 79e000
78800000是对的,这是6410 JPEG的物理地址
569f9000不对劲 ,
你对比一下2个版本的打印
|
我的意思是:把驱动include的头文件指向新内核编译,试试吧!
要根据bug提示进行分析!