欢迎光临散文网 会员登陆 & 注册

Sharp Zaurus (基于 PXA270) 的上探索“内置”无线网络

2023-04-14 09:15 作者:尘风svp  | 我要投稿

免责声明:请注意,如果您考虑阅读本文,我对您的 Zaurus 可能造成的任何损坏不承担任何责任。此处发布的任何信息均不构成建议,您的任何行为均由您自行负责。对于任何错误信息、拼写错误、错误和/或遗漏,我概不负责。


好吧,就是说,我们都知道我们希望在 Z 上拥有内部无线网络,但除非由有焊接经验的人完成,否则 Zaurus 可能不是最好的练习对象。另一件需要考虑的事情是,任何硬件修改都会使夏普的保修失效。


USB主机控制器的端口1

Intel PXA270 中的 OHCI USB 主机控制器具有三个端口。其中两个(端口 1 和端口 2)具有差分信号线。端口 2 的数据线(D+ 和 D-)多路复用到 Zaurus 背面的 USB OTG 连接器。端口 1 未使用,但在 PCB 上进行了跟踪,如下图所示(单击图像可查看大图):

仅跟踪数据线,不跟踪电源控制线。


Zaurus 的 PCB 上的走线很小,因此需要格外小心,不要损坏 PCB。



在这张照片中,接头处覆盖有透明的非导电胶,以防止意外拉动电线可能造成的损坏。图中显示了 SL-C1000,但 PCB 设计在所有基于 PXA270 的 Zaurus - C1000/C3000/C3100 之间共享。


由于port1有差分数据线,接线原理图可以简单如下:


____________ ____________

| | | |

| D+ o-----------------------------o D+ |

| D- o-----------------------------o D- |

| | | |

| VCC o-----------------------------o VCC |    

| GND o--------------------------------o GND |

| | | |

| 主机 | | 客户 |

--------------------------       


假设 VCC 由 HOST - Zaurus 提供。

BTUART

这是一些看起来非常像夏普在 Zaurus SL-6000 系列中使用的 Mitsumi WML-C19 蓝牙模块的引脚:



请注意,在上图中,RX连接到 BTUART 的TX,反之亦然,因此无需交叉。CTS和RTS也是如此。


要启用到 Mitsumi WML-C19 焊盘的走线,需要在 CPU 隔间(位于金属屏蔽下方)中使用电阻阵列连接以下触点(英特尔建议使用第 [1] 中的 10 - 25 欧姆标称电阻) .20-2):


如果 BTUART 未使用或与基于 CSR 的蓝牙模块的 BCSP 协议一起使用,则 CTS 和 RTS 线可以重新用作 GPIO 引脚 44 和 45。


USB OTG电源域

Zaurus 具有专用的 5V OTG 电源域,可为连接到 USB OTG 连接器的设备供电。它使用 TOKO 的 TK3850 5V 稳压器,输入电压来自 5V 域。TK3850 的 PCL 引脚上有一个 5.7K 电阻实现了一个 ~200mA 的截止过流保护。


这个限制可以提高到:


~400-450mA 带 2K 电阻

~500mA 带 1.6K 电阻

~600-650mA 带 1K 电阻

如果 PCL 接地,则没有截止限制。根据 TK3850 的数据表, 在 500mA 负载下有大约 170mV 的压降。


以下是 数据表 在第 4 页上关于功耗的说明:


安装在 PCB 基板上时,预期功耗为 1.1W 或更低。当输入电压为12V或更高时,因短路引起的瞬时功耗可达13W。这种情况会导致温度迅速上升,并可能导致芯片着火。试验这部分时请注意,如果输入电压为 12V 或更高且未使用 PCL 功能,则没有瞬时短路保护。但是,如果使用 PCL 功能将短路电流设置为 500mA 或更小,即使输入电位很高,最大输入功率也会受到限制,因此不会损坏任何东西。(如果输入电压升高,输出电流增加,或环境温度升高,内部热关断传感器将保护 IC)。当热传感器工作时,调节器将关闭。随着结温的降低,稳压器将再次开始工作。在持续故障条件下,稳压器输出会随着器件关闭然后复位而振荡。请改善散热或降低输入功率。


根据 Boris 的以下帖子,从该调节器吸取 ~500mA 电流应该是安全的。我将它与 PCL 引脚上的 1K 电阻一起使用,它能够提供足够的电流来同时为内部 Wi-Fi 和蓝牙模块供电。


这是一张 5V OTG 电源稳压器的图片:


模块

该项目中使用了以下两个模块: 来自Billionton的基于CSR BC02-Ext的 USB 蓝牙 1.1 加密狗 的 旧版本和 来自Zonet的基于ZyDAS ZD1211的廉价802.11b/g USB 加密狗 :

 




模块下方有一个 CF 卡,因此您可以看到它在尺寸方面的比较情况。


这是另一张照片,展示了它如何适合 Z 的隔间:





ZyDAS在此处 提供 linux 驱动程序。虽然司机相当胖,凌乱且没有证件,但最近似乎变得有些稳定。它支持 2.4 和 2.6 内核、WPP/WPA2、主模式和监控模式。虽然 ZD1211 芯片组支持所有 802.11a/b/g 频率和调制,但驱动程序仅在连接到 USB 1.1 总线时才能在 802.11b 模式下工作。在理论吞吐量为 12Mb/s 的情况下,USB 1.1 有效传输速率最高可达 ~8.8Mbit/s(但实际上可能更糟),因此即使是 802.11b 也没有太多空间。关于 Zonet ZEW2501 加密狗的警告 - 有一份关于zd1211-dev 列表的报告 Zonet 现在制造了一个新版本,使用 ZD1211B 芯片代替旧的 ZD1211,但塑料外壳看起来一样。新的加密狗的 usb vid/id 是 0x0ace:0x1215 而旧的是 0x0ace:0x1211。


CSR BC02-Ext 在 Linux 蓝牙堆栈 - BlueZ、Affix 和 OpenBT 中得到很好的支持。它可以与专有的 BCSP 串行协议一起使用,这基本上允许在不使用硬件流控制的情况下逃脱,因此将 Zaurus 上的 CTS 和 RTS 线重新用作 GPIO 引脚 44 和 45。由于它作为 USB 加密狗出售,它使用默认为 USB 接口,但可以重新编程以切换到串行 UART 接口。我之前在以下项目中使用过相同的模块: Psion5mx和 Simpad。关于 CSR 模块需要注意的另一件事是它们具有所谓的“深度睡眠”省电模式,可以通过发送中断信号启用。该模块还有一个专用的复位线,可以通过 GPIO 引脚控制。


bluez-utils 包中的bccmd用于将模块从 USB 协议切换到 BCSP UART 协议。该模块在 Zaurus 上使用 BlueZ 时工作正常 @ 921600 波特。可以在此处找到模块引出线 。


概念证明

小切口是在键盘下方的金属屏蔽层中完成的,以减少对射频信号的阻塞。以下是此开口与天线位置的关系:






这是组装好的PCB图片:








有一个带飞线的 LED 连接到 ZD1211:




这是另一边的视图:




软件

由于经过简单的电阻更换修改后,5V OTG 电源调节器能够为蓝牙和 wi-fi 加密狗提供足够的电源,所以我使用它的输出为内部模块供电。以下原理图(感谢 Boris提供)用于控制各个模块的电源:







USB主机

我从未将 Zaurus 用作 USB 客户端(将来也不想这样做),所以我决定完全放弃 USB 客户端功能并相应地更改 Sharp 的 OHCI 胶水驱动程序。新驱动程序是旧驱动程序的直接替代品,可 在此处获取。它释放了两个额外的 GPIO 引脚(GPIO41 和 GPIO35),然后可以重新使用它们。


使用该驱动程序需要注意的几点:


usb-monitor不应与此驱动程序同时运行,否则会发生不可预测的(而且很可能是不愉快的)事情

Zaurus 不能作为 USB 设备使用此驱动程序

在任何情况下,其他提供自己电源的 USB 主机都不应连接到 Zaurii OTG 连接器

此外,对 5V OTG 电源域的控制现在已与驱动程序分开,并作为可用的用户级实用程序实现。


连续剧

Sharp 的串行驱动程序不能胜任这项任务。“去锐化”驱动程序可 在此处获得。


杂项

这是 Sharp/Lineo 凌乱的内核代码的一些小片段(主要是清理)。


启动/暂停/恢复

我决定在 Zaurus 未暂停时保持 USB OHCI 驱动程序加载和 5V OTG 稳压器供电。这是 /etc/rc.d/rc.rofilesys 中的相关片段集:


/sbin/powerctl bt off >/dev/null 2>&1

/sbin/powerctl wifi off >/dev/null 2>&1

modprobe usb_ohci_pxa27x >/dev/null 2>&1

/sbin/powerctl otg on >/dev/null 2>&1

在关闭单个模块电源的情况下,5V OTG 稳压器的消耗似乎微不足道,这也是一个方便的问题,因为可以随时插入/拔出外部 USB 客户端设备。


PM 挂起/恢复事件似乎由 USB OHCI 和串行驱动程序处理得很好,我唯一需要添加的是以下/etc/scripts.d/otg脚本来控制挂起/恢复事件上的 5V OTG 电源调节器(它符号链接到 /etc/apm/suspend.d 和 /etc/apm/resume.d 目录)——我相信这可能是因为热插拔的时间问题,即如果我从 USB OHCI 驱动程序关闭 5V OTG在 PM 挂起事件上,热插拔脚本没有足够的时间在恢复事件发生之前完成,其他热插拔脚本必须运行。因此,通过 /etc/apm 脚本安排它可以给它更多的时间(在我的情况下几乎不够)来完成暂停和恢复事件之间的工作。


Wi-fi 模块初始化由 USB 热插拔处理,并通过打开/关闭模块来触发。蓝牙使用以下/etc/rc.d/init.d/bluetooth脚本。挂起时模块会重置,但由于 BlueZ 只能使用用户空间实用程序 (hciattach) 建立 BCSP 链接,因此该脚本也符号链接到 /etc/apm/suspend.d 和 /etc/apm/resume.d 目录以处理重新链接-建立。


在挂起期间,所有时钟均由 OHCI 和串行驱动器以及 5V OTG 稳压器的电源关闭。


XFCE4面板插件

我破解了一个XFCE 4.2 面板插件来控制 XFCE4 面板内部模块的电源。


SL-C1000-特定注意事项

SL-C1000 有几点值得注意:


由于缺少内部微驱动器和周围逻辑(包括 CF 缓冲器和功率调节器),外壳内部有更多可用空间

使用MAXIM MAX7310ATE I2C 8 位 I/O 端口扩展器代替 Scoop2(感谢 Piro帮助识别此 ASIC),它允许访问 I2C 总线。

有两个额外的 GPIO 引脚可用 - GPIO93 和 GPIO106。它们被C3000/C3100上的微驱动控制器使用,但夏普在C1000上没有使用:






我在我的 C1000 上使用这两个 GPIO 引脚来控制从 5V OTG 稳压器到内部 Wi-Fi 和蓝牙模块的电源,它似乎不会干扰 C1000 上的任何东西。


一些未经测试的位

下面是一些我个人没有使用过的小细节,因此没有机会测试。我有理由相信它可能有用,但请在尝试使用之前对其进行测试,因为它目前尚未经过测试。


有两个 GPIO 跟踪到测试/调试焊盘。它们似乎没有在 Zaurus 的 Linux 内核中使用,但可能被 Sharp 的引导加载程序或测试/维护软件使用:



这是 Sharp 的 OTG 实现使用的一些 GPIO 引脚。为了重新利用 GPIO41, 需要移除 R1电阻以断开与 OTG 连接器的线路。





有可能在 LCD 连接器的 1、2 和 3 针脚上发现 5V(请在使用前测试,因为目前尚未测试):


参考:

英特尔 PXA27x 处理器系列设计指南

结束符


Sharp Zaurus (基于 PXA270) 的上探索“内置”无线网络的评论 (共 条)

分享到微博请遵守国家法律