windows10环境下PS驱动的开发
一:开发环境的准备
主机开发环境:
- Visual Studio 2013 professional
- Windows SDK 8.2
- Windows Driver Kit 8.2
- Windows ADK for windows 8.1 update
目标板
- Windows10 build 9879 for x86
- Shark cove BSP
二. 目标板配置
二:编写light sensor的驱动代码。
- 打开SpbAccelerometer.inx,修改ACPI。代码修改如下:
修改前:%SpbAccelerometer.DeviceDesc% = SpbAccelerometer_Install,ACPI\SpbAccelerometer
修改后:%SpbAccelerometer.DeviceDesc% = SpbAccelerometer_Install,ACPI\PS
- 打开Adx1345.h, 根据将要使用的ps sensor的规格书修改寄存器地址和寄存器配置。
- 打开AccelerometerDevice.cpp,修改芯片初始化配置和中断处理函数.
- 修改BIOS部分的配置
(1) 将ASL.exe 拷贝至 the Sharks Cove board.
(2) 打开命令行工具, 输入命令 asl /tab=ssdt。该命令创建文件ssdt.asl
(3) 打开ssdt.asl,修改bios配置。黑体字部分是默认设置。可根据实际情况修改配置。
DefinitionBlock("SSDT.AML", "SSDT", 0x01, "Intel_", "ADebTabl", 0x00001000)
{
Scope(¥)
{
Name(DPTR, 0x3bf2d000)
Name(EPTR, 0x3bf3d000)
Name(CPTR, 0x3bf2d010)
Mutex(MMUT, 0x0)
Method(MDBG, 0x1, Serialized)
{
Store(Acquire(MMUT, 0x3e8), Local0)
If(LEqual(Local0, Zero))
{
OperationRegion(ABLK, SystemMemory, CPTR, 0x10)
Field(ABLK, ByteAcc, NoLock, Preserve)
{
AAAA, 128
}
Store(Arg0, AAAA)
Add(CPTR, 0x10, CPTR)
If(LNot(LLess(CPTR, EPTR)))
{
Add(DPTR, 0x10, CPTR)
}
Release(MMUT)
}
Return(Local0)
}
}
Scope(_SB_)
{
Device(SPBA)
{
Name(_HID, "PS")
Name(_UID, 1)
Method(_CRS, 0x0, NotSerialized)
{
Name(RBUF, ResourceTemplate()
{
I2CSerialBus(0x38, ControllerInitiated, 400000, AddressingMode7Bit, "¥¥_SB.I2C3", 0, ResourceConsumer)
GpioInt(Edge, ActiveHigh, Exclusive, PullDown, 0, "¥¥_SB.GPO2") {0x6}
})
Return(RBUF)
}
} // Device(SPBA)
} // Scope(_SB_)
}
(4) 输入命令asl ssdt.asl,生成ssdt.aml文件。
(5) 确认shark cove上的test signing是ON的状态
(6) 输入命令asl /loadtable ssdt.aml加载ssdt文件
- 重新启动shark cove。在设备管理其中查看器件是否被正确加载。
- 使用traceview.exe查看log信息。