问题标签 [wakeup]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arm - ARM:启动/唤醒/启动其他 CPU 内核/AP 并传递执行起始地址?
在过去的 3-4 天里,我一直在为此苦苦思索,但找不到合适的解释性文档(来自 ARM 或非官方)来帮助我。我有一个ODROID-XU 板(big.LITTLE 2 x Cortex-A15 + 2 x Cortex-A7)板,我正在尝试更多地了解 ARM 架构。在我的“实验”代码中,我现在已经到了想要从 WFI(等待中断)状态唤醒其他内核的阶段。
我仍在尝试查找的缺失信息是:
1.获取内存映射的GIC的基地址时明白需要读取CBAR;但是没有任何文档解释应该如何安排 CBAR 中的位(2 个 PERIPHBASE 值)以到达最终的 GIC 基地址
2、通过GICD_SGIR寄存器发送SGI时,0到15之间的中断ID应该选择什么?有关系吗?
3.通过 GICD_SGIR 寄存器发送 SGI 时,如何告诉其他内核从哪里开始执行?
4.我的代码由 U-BOOT 引导加载程序加载这一事实如何影响此上下文?
Cortex-A 系列程序员指南 v3.0(可在此处找到:链接)在第 22.5.2 节(Linux 中的 SMP 启动,第271页)中陈述了以下内容:
当主核心启动时,辅助核心将使用 WFI 指令保持在待机状态。它(主内核)将向辅助内核提供启动地址并使用处理器间中断(IPI)唤醒它们,这意味着通过 GIC 发出 SGI 信号
Linux 是如何做到这一点的?文档-S没有提供有关“它将为辅助内核提供启动地址”的任何其他详细信息。
我的挫败感越来越大,我将非常感谢您的回答。非常感谢您!
额外细节
我使用的文档:
- ARMv7-A&R 架构参考手册
- Cortex-A15 TRM(技术参考手册)
- Cortex-A15 MPCore TRM
- Cortex-A 系列程序员指南 v3.0
- GICv2 架构规范
我现在所做的:
- UBOOT 在 0x40008000 加载我;我已经设置了转换表 (TTB),相应地编写了 TTBR0 和 TTBCR,并将 0x40008000 映射到 0x8000_0000 (2GB),所以我还启用了 MMU
- 设置我自己的异常处理程序
- 我通过串口获得了 Printf 功能(ODROID-XU 上的 UART2)
以上所有似乎都可以正常工作。
我现在正在尝试做的事情:
- 获取 GIC 基地址 => 在我读取 CBAR 的那一刻,我只需将其值与 0xFFFF8000 与(&)它的值并将其用作 GIC 基地址,尽管我几乎可以肯定这不正确
- 通过写入值为 0x1 的 GICD_CTLR 来启用 GIC 分发器(从 GIC 基地址偏移 0x1000 处?)
- 使用以下参数构造一个 SGI:Group = 0, ID = 0, TargetListFilter = "All CPUs except Me" 并通过 GICD_SGIR GIC 寄存器发送(写入)
- 由于我没有传递其他内核的任何执行起始地址,所以在这一切之后什么都没有发生
....更新....
我已经开始查看 Linux 内核和 QEMU 源代码以寻找答案。这是我发现的(如果我错了,请纠正我):
- 当给电路板加电时,所有内核都从复位向量开始执行
- 软件(固件)组件在辅助核心上执行 WFI 和一些其他代码,这些代码将充当这些辅助核心和主核心之间的协议,当后者想要再次唤醒它们时
- 例如,EnergyCore ECX-1000 (Highbank)板上使用的协议如下:
**(1)** the secondary cores enter WFI and when
**(2)** the primary core sends an SGI to wake them up
**(3)** they check if the value at address (0x40 + 0x10 * coreid) is non-null;
**(4)** if it is non-null, they use it as an address to jump to (execute a BX)
**(5)** otherwise, they re-enter standby state, by re-executing WFI
**(6)** So, if I had an EnergyCore ECX-1000 board, I should write (0x40 + 0x10 * coreid) with the address I want each of the cores to jump to and send an SGI
问题:
- 1. 执行此操作的软件组件是什么?是我写在 SD 卡上的 BL1 二进制文件,还是 U-BOOT?
- 2. 据我了解,此软件协议因板而异。是这样,还是仅取决于底层处理器?
- 3. 我在哪里可以找到有关pick-one ARM 板的此协议的信息?- 我可以在 ARM 官方网站或开发板网页上找到它吗?
android - android 会在定时闹钟唤醒后自动重新连接可用的 WIFI 吗?
我知道 WifiManager.WifiLock 这样的事情。我不必使用它,因为我不需要持久的 wifi 连接。相反,我只需要每隔 30 分钟尝试一次 wifi 连接。
我注册了一个 CONNECTIVITY_CHANGE 监听器。如果我设置了一个间隔 30 分钟的预定唤醒闹钟。唤醒后,android会自动重新连接可用的WIFI,所以我的CONNECTIVITY_CHANGE听者能听到吗?
linux - 如何使用 sys 文件系统将 RTC 设置为唤醒源并设置全天的特定时间
我正在使用 imx6 SabreSD。我需要将 RTC 设置为唤醒源,并且我需要在全天设置一个特定时间,比如午夜 12 点(当时可能没有处于断电模式)我有一个示例 echo +x > /sys /class/rtc/rtc0/wakealarm;RTC 将在 x 秒后唤醒系统
使用它我可以在 x 秒后唤醒系统。但我需要这个时间为 00:00:01
我通过 echo standby > /sys/power/state 进入挂起状态
有没有什么办法。请帮助提前谢谢
serial-port - Arduino DUE,从睡眠模式唤醒的串行中断程序
我想将 SAM3X 芯片置于睡眠模式,直到一个字符到达串行端口。我想在串行中断程序中使用辅助标志来触发唤醒程序?你怎么看?我应该遵循或尝试的任何建议或任何其他方式?
android - 从睡眠中拨打电话
我制作了一个监控手机加速度计的应用程序,当它倾斜时,它应该调用某个号码。
到目前为止,我让所有东西都运行起来,它甚至可以打电话,但只有在我用手解锁手机之后。
该应用程序旨在当有人试图从我的车上偷轮胎时给我打电话,所以手机必须在睡眠状态下给我打电话。
这是我的调用方法和相关变量:
...
编辑:哦,我也试过了:
就像我说的那样,他确实会打电话,但前提是屏幕已经解锁:(
edit2:必须在 Android 2.1(API 级别 7)上运行
请帮助:3
android - Android:检测设备何时唤醒?
我知道名为WakefulBroadcastReceiver的 v4 辅助类,它旨在响应设备唤醒。
我想编写一个无头 Android 应用程序,它只是检测设备已唤醒,然后执行我想要的任何逻辑(在下面的测试应用程序中,它只是记录一条消息)。
但是,我找不到在应用程序清单中指定的意图,因此我的WakefulBroadcastReceiver将被解雇。
有谁知道如何配置这样的应用程序,以便WakefulBroadcastReceiver检测设备唤醒的所有实例?
首先,这是WakefulBroadcastReceiver:
...这是运行的服务:
最后,这是我的清单。注意“WHAT_GOES_HERE????” 在意图过滤器中。
非常感谢。
client - How to display a client ip address in a ListView when client connected and shutdown or wakeup client using c#
![Server][1]
Code Server : public partial class Form1 : Form { private TcpClient tcpclient;
![client][2] Code Client namespace CLIENT { public partial class Form1 : Form { private TcpClient tcpclient; public Form1() { InitializeComponent(); }
}
android - 如何从睡眠中唤醒安卓手机?
如何以可编程的方式从睡眠中唤醒安卓手机(挂起到内存)?我不想获得任何唤醒锁,这意味着手机在禁用 cpu 的情况下进入“真正的”睡眠状态。我想我可以使用某种 RTC(实时时钟)机制?
有没有人有任何例子?
谢谢。
c# - 如何检测 Windows 系统是否支持唤醒定时器
我需要以编程方式检测我的计算机(Windows 7 / 8)是否支持唤醒计时器。到目前为止,我已经完成了以下工作:
这在大多数情况下都有效,但是当我重置电源计划设置时,效果不佳(不一致)。我还尝试了以下方法:
这在重置电源计划设置时不起作用,唤醒计时器 GUID 注册表项将被清除。有没有合适的方法可以检测我的系统是否支持唤醒计时器?
c++ - 在 Linux 上使用 C++ 检测唤醒计算机
我不知道如何检测计算机已被唤醒,甚至我更愿意检测局域网唤醒。我不知道常见的方法是什么,我发现在 /etc/pm/sleep.d 中我可以添加一个自定义脚本,但我需要在我的 C++ 应用程序中调用。现在我知道我还可以添加一个用 C++ 编写的自定义可执行文件并发送一个套接字并在其他地方监听它,但这听起来太复杂了。