编写设备驱动程序

映射设备

必须将设备映射到内存中才能进行测试。然后,可以使用 PROM 来验证设备是否正确操作,方法是使用数据传送命令来传送字节、字以及长字。如果可以通过 PROM 操作设备(即使使用受限的方法),则驱动程序也应该可以操作设备。

要设置设备以进行初始测试,请执行以下步骤:

  1. 确定设备所在的 S 总线插槽编号。

    在本示例中,cgsix 设备位于插槽 2 中。

  2. 确定设备使用的物理地址空间中的偏移。

    所使用的偏移特定于设备。在 cgsix 示例中,视频内存恰好在偏移 0x800000 开始。

  3. 使用 select-dev 可选择 S 总线设备以及在其中映射此设备的 map-in

    select-dev 采用设备路径的字符串作为其参数。map-in 采用偏移插槽编号以及大小作为映射的参数。与偏移一样,字节传送的大小也特定于设备。在 cgsix 示例中,大小设置为 0x100000 字节。

    在以下代码示例中,S 总线路径显示为字 select-dev 的参数,帧缓存器的偏移、插槽编号以及大小值显示为字 map-in 的参数。请注意 select-dev 参数中起始引号和 / 之间的空格。要使用的虚拟地址保留在栈的顶部。栈通过使用字 .s 进行显示。通过 constant 操作可为该栈分配一个名称。


    ok " sbus@1f,0" select-dev
    ok 800000 2 100000 map-in
    ok .s
    ffe98000
    ok constant fb