急!!开发板上ROM块设备驱动问题!

发布于 2022-09-24 02:35:48 字数 2622 浏览 11 评论 0

我的开发板上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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

×纯※雪 2022-10-01 02:35:48

解决了!!!! 搞了好几天,漠然发现是开发板ROM配置寄存器的rom write enable被关闭了......
一直以为是内核管理的部分问题......

把问题复杂化了, 惨痛教训!

大家引以为戒.......

难以启齿的温柔 2022-10-01 02:35:48

恩。有时候极小的失误都要焦头烂额搞几天。
前些时候,我还因为把两个寄存器初始顺序弄反了,结果系统一直idle,过了两天才看出来。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文