添加新设备的疑惑

jackydi 2015-01-14 01:37:41
有一个疑惑,希望能够得到解答。

是这样的,我有一个子卡,使用的是VxWorks内核,但是使用U-boot引导,现在想添加一个设备,挂接在localbus总线上,我应该修改VxWorks的BSP呢还是修改u-boot呢?如果修改VxWorks bsp中的rominit.s和sysLib.c,并添加设备片选的话,编译VxWorks的时候并不会包含这部分代码,这个文件是编译bootrom时用的,sysLib.c在编译VxWorks时倒是用到,但是没有初始化话片选的话,这个设备也不能正常工作。有谁能帮我解答一下?怎么样修改才能达到目的。
...全文
503 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackydi 2015-03-23
  • 打赏
  • 举报
回复
忘记说了,我的是e500v2内核的p1021子卡。使用u-boot启动,但我不想修改u-boot。
jackydi 2015-03-23
  • 打赏
  • 举报
回复
引用 1 楼 zhangyf90 的回复:
设备初始化代码放在哪儿都是有可能的啊,引导部分的初始化代码和VxWorks启动时候的初始化代码可以不相关的。VxWorks在启动后对设备又有重新初始化,你可以放在这部分代码里面、
谢谢您的回复。这么长时间才来回复您,真是不好意思,一直在忙别的事情,这段时间才回头来重新修改这个。 目前我是这样修改的,但是还有问题。 我在sysLib.c的sysPhysMemDesc[]数组中添加了一个地址段如下:

    {
    (VIRT_ADDR) 0xf9000000,
    (PHYS_ADDR) 0xf9000000,
    0x10000,
    VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE | \
    VM_STATE_MASK_GUARDED,
    VM_STATE_VALID      | VM_STATE_WRITABLE      | VM_STATE_CACHEABLE_NOT | \
    VM_STATE_GUARDED
    },

在sysHwInit()函数中添加了如下代码:

    * (VINT32 *) M85XX_LAWBAR6(CCSBAR) = (0xf9000000>>12) & LAWBAR_MASK;
    * (VINT32 *) M85XX_LAWAR6(CCSBAR) = LAWAR_ENABLE | (LAWAR_TRGT_ELBC << LAWAR_TRGT_ELBC_SHIFT) | LAWAR_SIZE_64KB;

    WRS_ASM("isync");

    * (VINT32 *) M85XX_BR3(CCSBAR) = 0xf9000000|ELBC_BR_Valid|ELBC_BR_PS_8|ELBC_BR_MSEL_GPCM;
    * (VINT32 *) M85XX_OR3(CCSBAR) = 0xffff09f7;

    WRS_ASM("isync");
但是这个CS3是在u-boot中初始化过的,原来是定位在0xf8020000这个地址的,但不可访问(访问时返回异常)。 我使用d命令查看0xf9000000这个地址时,可以正常输出,但是内容明显是错误的,而且使用示波器抓取CS3的信号也不对,每次读取应该只有一个片选输出,但是每次读取的时候都有很多片选输出,不知道为什么,是否哪里修改的不完全?
i80428048 2015-01-16
  • 打赏
  • 举报
回复
设备初始化代码放在哪儿都是有可能的啊,引导部分的初始化代码和VxWorks启动时候的初始化代码可以不相关的。VxWorks在启动后对设备又有重新初始化,你可以放在这部分代码里面、

2,184

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧