问题标签 [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.

0 投票
4 回答
9603 浏览

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 官方网站或开发板网页上找到它吗?
0 投票
1 回答
623 浏览

android - android 会在定时闹钟唤醒后自动重新连接可用的 WIFI 吗?

  1. 我知道 WifiManager.WifiLock 这样的事情。我不必使用它,因为我不需要持久的 wifi 连接。相反,我只需要每隔 30 分钟尝试一次 wifi 连接。

  2. 我注册了一个 CONNECTIVITY_CHANGE 监听器。如果我设置了一个间隔 30 分钟的预定唤醒闹钟。唤醒后,android会自动重新连接可用的WIFI,所以我的CONNECTIVITY_CHANGE听者能听到吗?

0 投票
1 回答
1601 浏览

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 进入挂起状态

有没有什么办法。请帮助提前谢谢

0 投票
1 回答
3486 浏览

serial-port - Arduino DUE,从睡眠模式唤醒的串行中断程序

我想将 SAM3X 芯片置于睡眠模式,直到一个字符到达串行端口。我想在串行中断程序中使用辅助标志来触发唤醒程序?你怎么看?我应该遵循或尝试的任何建议或任何其他方式?

0 投票
1 回答
132 浏览

android - 从睡眠中拨打电话

我制作了一个监控手机加速度计的应用程序,当它倾斜时,它应该调用某个号码。

到目前为止,我让所有东西都运行起来,它甚至可以打电话,但只有在我用手解锁手机之后。

该应用程序旨在当有人试图从我的车上偷轮胎时给我打电话,所以手机必须在睡眠状态下给我打电话。

这是我的调用方法和相关变量:

...

编辑:哦,我也试过了:

就像我说的那样,他确实会打电话,但前提是屏幕已经解锁:(

edit2:必须在 Android 2.1(API 级别 7)上运行

请帮助:3

0 投票
1 回答
3180 浏览

android - Android:检测设备何时唤醒?

我知道名为WakefulBroadcastReceiver的 v4 辅助类,它旨在响应设备唤醒。

我想编写一个无头 Android 应用程序,它只是检测设备已唤醒,然后执行我想要的任何逻辑(在下面的测试应用程序中,它只是记录一条消息)。

但是,我找不到在应用程序清单中指定的意图,因此我的WakefulBroadcastReceiver将被解雇。

有谁知道如何配置这样的应用程序,以便WakefulBroadcastReceiver检测设备唤醒的所有实例?

首先,这是WakefulBroadcastReceiver

...这是运行的服务:

最后,这是我的清单。注意“WHAT_GOES_HERE????” 在意图过滤器中。

非常感谢。

0 投票
1 回答
427 浏览

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(); }

}

0 投票
3 回答
12387 浏览

android - 如何从睡眠中唤醒安卓手机?

如何以可编程的方式从睡眠中唤醒安卓手机(挂起到内存)?我不想获得任何唤醒锁,这意味着手机在禁用 cpu 的情况下进入“真正的”睡眠状态。我想我可以使用某种 RTC(实时时钟)机制?

有没有人有任何例子?

谢谢。

0 投票
2 回答
560 浏览

c# - 如何检测 Windows 系统是否支持唤醒定时器

我需要以编程方式检测我的计算机(Windows 7 / 8)是否支持唤醒计时器。到目前为止,我已经完成了以下工作:

这在大多数情况下都有效,但是当我重置电源计划设置时,效果不佳(不一致)。我还尝试了以下方法:

这在重置电源计划设置时不起作用,唤醒计时器 GUID 注册表项将被清除。有没有合适的方法可以检测我的系统是否支持唤醒计时器?

0 投票
1 回答
324 浏览

c++ - 在 Linux 上使用 C++ 检测唤醒计算机

我不知道如何检测计算机已被唤醒,甚至我更愿意检测局域网唤醒。我不知道常见的方法是什么,我发现在 /etc/pm/sleep.d 中我可以添加一个自定义脚本,但我需要在我的 C++ 应用程序中调用。现在我知道我还可以添加一个用 C++ 编写的自定义可执行文件并发送一个套接字并在其他地方监听它,但这听起来太复杂了。