我购买了一台只销往中国国内市场的不起眼的NAS(Zspace Z4Pro),因为它是基于intel的(i3-N305),所以想在上面使用另一个操作系统
出于未知原因,驱动器托架的电源由 GPIO 驱动的 npn + mosfet 单独控制。
默认状态是关闭的,然后从库存操作系统内切换 - 可能作为防止使用另一个操作系统的基本措施,或者可能(考虑到 SMBIOS 充满了“默认字符串”)他们只是不知道自己在做什么。
gpio_名称 | gpio_number | pad_name | DW0 | DW1 | DW2 |
---|---|---|---|---|---|
sata0_power_gpio | 681 | GPPC_B_17 | 0x04000201 | 0x00000029 | 0x00000100 |
sata1_power_gpio | 680 | GPPC_B_16 | 0x04000201 | 0x00000028 | 0x00000100 |
sata2_power_gpio | 672 | GPPC_B_8 | 0x04000201 | 0x00000020 | 0x00000100 |
sata3_power_gpio | 671 | GPPC_B_7 | 0x04000201 | 0x0000001f | 0x00000100 |
位范围 | 字段名称 | 描述 | 价值 |
---|---|---|---|
31-30 | PADRSTCFG | 焊盘重置配置 | 0x0(力量好) |
29-29 | RXPADSTSEL | RX 垫状态选择 | 0x0(直接来自 CFIO RX 缓冲区的原始 RX pad 状态) |
28-28 | RXRAW1 | RX 原始覆盖为“1” | 0x0(无覆盖) |
27-27 | NAF_VWE | 本机功能虚拟线消息启用 | 0x0(禁用 pad 输入事件采样和 VW 消息生成。) |
26-25 | RXEVCFG | RX 电平/边缘配置 | 0x2(禁用) |
24-24 | PREGFRXSEL | 预毛刺滤波器级 RX 垫状态选择 | 0x0(选择同步、非过滤 RX pad 状态) |
23-23 | RXINV | RX 反转 | 0x0(无反转) |
22-21 | RXTXENCFG | RX/TX 启用配置 | 0x0(Pad 模式中定义的函数控制 TX 和 RX 启用) |
20-20 | GPIROUTIOXAPIC | GPIO 输入路由 IOxAPIC | 0x0(路由不会引起外设IRQ) |
19-19 | GPIROUTSCI | GPIO 输入路由 SCI | 0x0(路由不会导致SCI) |
18-18 | GPIROUTSMI | GPIO输入路由SMI | 0x0(路由不会导致SMI) |
17-17 | GPIROUTNMI | GPIO 输入路由 NMI | 0x0(路由不会引起NMI) |
16-13 | 保留 | 保留 | 0x0 |
12-10 | P模式 | 打击垫模式 | 0x0(GPIO 控制Pad) |
9-9 | GPIORXDIS | GPIO 接收禁用 | 0x1(禁用pad的输入缓冲区) |
8-8 | GPIOTXDIS | GPIO TX 禁用 | 0x0(使能焊盘的输出缓冲器(低电平有效使能)) |
7-2 | 保留 | 保留 | 0x0 |
1-1 | GPIORX状态 | GPIO 接收状态 | 0x0(当前内部RX pad状态为0) |
0-0 | GPIOTXSTATE | GPIO 发送状态 | 0x1(将电平“1”驱动到 TX 输出焊盘) |
我只需手动设置 GPIO 即可在操作系统中为托架供电:
echo 0 > /sys/class/gpio/gpio681/value
我想了解这些焊盘的寄存器是在哪里初始化的。
另外我有点困惑,好像我在linux中设置了gpio(即给驱动器加电),重新启动后电源立即断开(当然对磁盘来说不太好) 但如果我对电源状态和 PADRSTCFG 的理解是正确的,这不应该发生?
Z 计划是硬件方法。
一般BIOS会初始化GPIO,所以重启后BIOS会重新初始化