原来我们在dm365上运行linux2.6.18(dvsdk_2_10_生成),利用mmap函数读写spi的寄存器,实现dm365与FPGA通信,读写都没有问题。
但是由于其他功能的需要把内核换成了linux2.6.32(dvsdk_4_02_生成),相同的程序,硬件平台是同一个,程序运行不报错,但是无法读写数据。
请问这是因为内核有什么不同吗?
Shine:
请问其他外设寄存器可以用mmap读写吗?还是只有SPI口不成功?
Chris Meng:
回复 Shine:
你好,
可以对比程序运行后SPI相关寄存器,看看是否是新的内核的相关驱动配置有差异?
user5174990:
回复 Shine:
其他的可以,在新旧两个内核下都可以用mmap读写EMIF的寄存器使其正常工作,但是spi相关寄存器只能在旧内核可以,新内核不可以。
新内核启动时,日志中有下图的信息,linux启动时把这些不用的外设的clock关了(其中就有我用的spi4)(您在另一个帖子中回答我了)。
我在linux配置选项中没有找到clock使能相关选项,想在linux源码中给spi4的clock使能,正在尝试修改但是对源码不熟,如果有人改过帮忙回个帖,谢谢啦
user5174990:
回复 Chris Meng:
spi的相关驱动配置基本一致(虽然两个版本内核选项的名字有点差别)
Chris Meng:
回复 user5174990:
你好,
建议你看看dm36x arm subsystem guide里面的PSC相关章节,看看SPI4相关的电源是否关闭了(LPSC 39 for SPI4). 如果是,按照流程打开。
user5174990:
回复 Chris Meng:
电源没有关闭,而且用的是同一个硬件平台,加载低版本内核,运行同样的程序都是可以的。
下面是低版本内核启动时的日志,和上面新版本内核启动日志对比相同的位置,没有出现Clocks disable unused…