急!!开发板上ROM块设备驱动问题!
我的开发板上0x00000000-0x000200000的地址空间分配给ROM,
我想把0x00100000-0x00200000地址段的ROM弄成一个块设备。
linux2.0内核 sparc体系CPU
ROM时序:
enum {
unlockAddress1 = 0x5555,
unlockData1 = 0xAAAAAAAA,
unlockAddress2 = 0x2AAA,
unlockData2 = 0x55555555,
manufacturerUnlockData = 0x90909090,
manufacturerAddress = 0x00,
deviceIdAddress = 0x01,
programUnlockData = 0xA0A0A0A0,
resetData = 0xF0F0F0F0,
sectorEraseUnlockData = 0x80808080,
sectorEraseUnlockData2 = 0x30303030 };
int rom_init()
{
flashStart = (unsigned int *)vremap(0x00100000, 1*024*1024);
/*read a num from rom address 0x00100000, test read*/
memcpy(&num, flashStart, 4);
safe_printk("the value of %x is: %x\n",flashStart, num);
/*the kernel stop here*/
flashStart[unlockAddress1] = unlockData1;
flashStart[unlockAddress2] = unlockData2;
flashStart[unlockAddress1] = resetData;
/* read manufacturer*/
flashStart[unlockAddress1] = unlockData1;
flashStart[unlockAddress2] = unlockData2;
flashStart[unlockAddress1] = manufacturerUnlockData;
.......................
}
safe_printk("the value of %x is: %x\n",flashStart, num);运行完好,可以从rom读,证明地址映射是没问题的。
但到执行:
/*the kernel stop here*/
flashStart[unlockAddress1] = unlockData1;
flashStart[unlockAddress2] = unlockData2;
flashStart[unlockAddress1] = resetData;
kernel就中止了,哪位大大帮帮忙,告诉下愿意或者建议!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
解决了!!!! 搞了好几天,漠然发现是开发板ROM配置寄存器的rom write enable被关闭了......
一直以为是内核管理的部分问题......
把问题复杂化了, 惨痛教训!
大家引以为戒.......
恩。有时候极小的失误都要焦头烂额搞几天。
前些时候,我还因为把两个寄存器初始顺序弄反了,结果系统一直idle,过了两天才看出来。