Other Parts Discussed in Thread: TPS65217
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:BEAGLEBK
工具/软件:Linux
您好!
我使用的是运行最新 Debian Stretch 的 BeagleBone Black。
Debian@BeagleBone:~$ cat /etc/os-release
相当名="Debian GNU/Linux 9 (扩展版)"
name="Debian GNU/Linux"
version_ID="9"
版本="9 (拉伸)"
Id=debian
home_url="https://www.debian.org/"
support_url="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Debian@BeagleBone:~$ uname -a
Linux BeagleBone 4.4.9.91-ti-R133 #1 SMP 星期二10月10日05:18:08 UTC 2017 armv7l GNU/Linux
我从下面下载了 Linux 内核源代码、以编译和使用自定义器件树。
https://github.com/beagleboard/linux.git
diff --git a/arch/arm/boot/dts/am335x-bonebblack-custom.dts b/arch/arm/boot/dts/am335x-bonebblack-custom.dts
索引0c68a88..a85990d 100644
--- a/arch/arm/boot/dts/am335x-bonebblack-custom.dts
++ b/arch/arm/boot/dts/AM335x-bonebblack-custom.dts
@@-10 + 10、49 @@
#include "am33xx.dtsi"
#include "am335x-bone-common-no-capemgr.dtsi"
#include
+#include
/{
型号="TI AM335x BeagleBone Black";
兼容="ti、am335x-bone-black"、"ti、am335x-bone-"、"ti、am33xx";
+
+ GPIO 键{
+ compatible ="GPIO-keys";
+ pinctrl-names ="default";
+ pinctrl-0 = <&WAKEUP_GPIO_PINs>;
+
+ power1{
+ label ="CAN1_Wakeb";
+ GPIO =<&GPIO2 GPIO_ACTIVE_HIGH_>;
+ Linux、代码= ;
+ 去抖间隔=<10>;
+ 唤醒源;
+} ;
+
+ power2{
+ label ="CAN1_WakeA";
+ GPIO =<&GPIO1 13 GPIO_ACTIVE_HIGH_>;
+ Linux、代码= ;
+ 去抖间隔=<10>;
+ 唤醒源;
+} ;
+
+ power3{
+ label ="CAN0_Wakeb";
+ GPIO =<&GPIO1 15 GPIO_ACTIVE_HIGH_>;
+ Linux、代码= ;
+ 去抖间隔=<10>;
+ 唤醒源;
+} ;
+
+ Power4{
+ label ="CAN0_WakeA";
+ GPIO =<&GPIO2 22 GPIO_ACTIVE_HIGH_>;
+ Linux、代码= ;
+ 去抖间隔=<10>;
+ 唤醒源;
+} ;
+} ;
};
ldo3_reg{(&L)
@@-52、6 +91、15 @@
BON_P9_17 (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE3)
>;
};
+
+ WAKEUP_GPIO_Pins:pinmux_WAKEUP{
+ pinctrl-single、pins =<
+ BON_P8_07 (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE7)
+ BON_P8_11 (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE7)
+ BON_P8_15 (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE7)
+ BON_P8_27 (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE7)
+ >;
+} ;
};
我可以看到事件是使用"evtest"生成的。
root@BeagleBone:/home/debian evtest
未指定设备,正在尝试扫描所有/dev/input/event
可用器件:
/dev/input/event0: tps65217_pwer_but
/dev/input/event1: GPIO 键
选择器件事件编号[0-1]:1.
输入驱动程序版本为1.0.1
输入设备 ID:总线0x19供应商0x1产品0x1版本0x100
输入器件名称:"GPIO 密钥"
支持的事件:
事件类型0 (EV_SYN)
事件类型1 (EV_KEY)
事件代码143 (key_wakeup)
属性:
正在测试... (中断以退出)
事件:时间1517970542.951410、类型1 (EV_KEY)、代码143 (KEY_WAKEUP)、值0
事件:时间1517970542.951410,--- SYN_REPORT --------
事件:时间1517970544.088480、类型1 (EV_KEY)、代码143 (KEY_WAKEUP)、值1
事件:时间1517970544.088480,--- SYN_REPORT --------
事件:时间1517970544.163876、类型1 (EV_KEY)、代码143 (KEY_WAKEUP)、值0
事件:时间1517970544.163876,--- SYN_REPORT --------
事件:时间1517970546.154112、类型1 (EV_KEY)、代码143 (KEY_WAKEUP)、值1
事件:时间1517970546.154112,--- SYN_REPORT --------
事件:时间1517970546.217212、类型1 (EV_KEY)、代码143 (KEY_WAKEUP)、值0
事件:时间1517970546.217212,--- SYN_REPORT --------
但是、进入内存挂起时、通过执行"echo mem >/sys/power/state "、不会在引脚上发生任何活动时唤醒。
root@BeagleBone:/home/debian 回波 mem >/sys/power/state
[377.767576] PM:正在同步文件系统... 完成。
[379.788251] 冻结用户空间进程... (已用0.001秒)。
[379.797231] 冻结剩余可自由执行的任务... (已用0.001秒)。
[379.929843] PM:122.411毫秒后设备挂起完成
[379.940029] PM:3.962m 秒后器件延迟挂起完成
[379.950444] PM:3.970毫秒后器件挂起完成
[379.957124] 正在禁用非引导 CPU ...
不过、从 RTC 唤醒会起作用
root@BeagleBone:/home/debian echo +15 >/sys/class/rtc/rtc0/wakealarm;echo mem >/sys/power/state
[75.428962] PM:正在同步文件系统... 完成。
[86.901348] 冻结用户空间进程... (已用0.001秒)。
[86.910330] 冻结剩余可自由执行的任务... (已用0.001秒)。
[87.042805] PM:122.277毫秒后设备挂起完成
[87.053071] PM:4.023毫秒后器件延迟挂起完成
[87.063483] PM:3.947ms 后器件挂起完成
[87.070025] 正在禁用非引导 CPU ...
[87.073988] PM:成功地将所有电源域置于目标状态
[87.093775] PM:19.523ms 后器件恢复完成
[87.103980] PM:2.689ms 后器件的早期恢复完成
[87.280782] net eth0:正在初始化 cpsw 版本1.12 (0)
[87.286247] Net eth0:初始化 cpsw ale 版本1.4
[87.291537] 净 eth0:ALE 表大小1024
[87.298751] net eth0:找到 PHY:id:0x7c0F1
[87.424691] PM:314.316毫秒后器件恢复完成
[87.435170] 正在重新启动任务... 完成。
这是已知问题吗? 有人尝试过这种方法吗? 我是否需要为 TI 的功勋尝试主线内核或内核? 还有人知道 CAN 唤醒是否正常工作吗?
谢谢、此致、
Sanchayan Maity。
我使用的是运行最新 Debian Stretch 的 BeagleBone Black。
Debian@BeagleBone:~$ cat /etc/os-release
相当名="Debian GNU/Linux 9 (扩展版)"
name="Debian GNU/Linux"
version_ID="9"
版本="9 (拉伸)"
Id=debian
home_url="https://www.debian.org/"
support_url="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Debian@BeagleBone:~$ uname -a
Linux BeagleBone 4.4.9.91-ti-R133 #1 SMP 星期二10月10日05:18:08 UTC 2017 armv7l GNU/Linux
我从下面下载了 Linux 内核源代码、以编译和使用自定义器件树。
https://github.com/beagleboard/linux.git
diff --git a/arch/arm/boot/dts/am335x-bonebblack-custom.dts b/arch/arm/boot/dts/am335x-bonebblack-custom.dts
索引0c68a88..a85990d 100644
--- a/arch/arm/boot/dts/am335x-bonebblack-custom.dts
++ b/arch/arm/boot/dts/AM335x-bonebblack-custom.dts
@@-10 + 10、49 @@
#include "am33xx.dtsi"
#include "am335x-bone-common-no-capemgr.dtsi"
#include
+#include
/{
型号="TI AM335x BeagleBone Black";
兼容="ti、am335x-bone-black"、"ti、am335x-bone-"、"ti、am33xx";
+
+ GPIO 键{
+ compatible ="GPIO-keys";
+ pinctrl-names ="default";
+ pinctrl-0 = <&WAKEUP_GPIO_PINs>;
+
+ power1{
+ label ="CAN1_Wakeb";
+ GPIO =<&GPIO2 GPIO_ACTIVE_HIGH_>;
+ Linux、代码= ;
+ 去抖间隔=<10>;
+ 唤醒源;
+} ;
+
+ power2{
+ label ="CAN1_WakeA";
+ GPIO =<&GPIO1 13 GPIO_ACTIVE_HIGH_>;
+ Linux、代码= ;
+ 去抖间隔=<10>;
+ 唤醒源;
+} ;
+
+ power3{
+ label ="CAN0_Wakeb";
+ GPIO =<&GPIO1 15 GPIO_ACTIVE_HIGH_>;
+ Linux、代码= ;
+ 去抖间隔=<10>;
+ 唤醒源;
+} ;
+
+ Power4{
+ label ="CAN0_WakeA";
+ GPIO =<&GPIO2 22 GPIO_ACTIVE_HIGH_>;
+ Linux、代码= ;
+ 去抖间隔=<10>;
+ 唤醒源;
+} ;
+} ;
};
ldo3_reg{(&L)
@@-52、6 +91、15 @@
BON_P9_17 (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE3)
>;
};
+
+ WAKEUP_GPIO_Pins:pinmux_WAKEUP{
+ pinctrl-single、pins =<
+ BON_P8_07 (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE7)
+ BON_P8_11 (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE7)
+ BON_P8_15 (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE7)
+ BON_P8_27 (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE7)
+ >;
+} ;
};
我可以看到事件是使用"evtest"生成的。
root@BeagleBone:/home/debian evtest
未指定设备,正在尝试扫描所有/dev/input/event
可用器件:
/dev/input/event0: tps65217_pwer_but
/dev/input/event1: GPIO 键
选择器件事件编号[0-1]:1.
输入驱动程序版本为1.0.1
输入设备 ID:总线0x19供应商0x1产品0x1版本0x100
输入器件名称:"GPIO 密钥"
支持的事件:
事件类型0 (EV_SYN)
事件类型1 (EV_KEY)
事件代码143 (key_wakeup)
属性:
正在测试... (中断以退出)
事件:时间1517970542.951410、类型1 (EV_KEY)、代码143 (KEY_WAKEUP)、值0
事件:时间1517970542.951410,--- SYN_REPORT --------
事件:时间1517970544.088480、类型1 (EV_KEY)、代码143 (KEY_WAKEUP)、值1
事件:时间1517970544.088480,--- SYN_REPORT --------
事件:时间1517970544.163876、类型1 (EV_KEY)、代码143 (KEY_WAKEUP)、值0
事件:时间1517970544.163876,--- SYN_REPORT --------
事件:时间1517970546.154112、类型1 (EV_KEY)、代码143 (KEY_WAKEUP)、值1
事件:时间1517970546.154112,--- SYN_REPORT --------
事件:时间1517970546.217212、类型1 (EV_KEY)、代码143 (KEY_WAKEUP)、值0
事件:时间1517970546.217212,--- SYN_REPORT --------
但是、进入内存挂起时、通过执行"echo mem >/sys/power/state "、不会在引脚上发生任何活动时唤醒。
root@BeagleBone:/home/debian 回波 mem >/sys/power/state
[377.767576] PM:正在同步文件系统... 完成。
[379.788251] 冻结用户空间进程... (已用0.001秒)。
[379.797231] 冻结剩余可自由执行的任务... (已用0.001秒)。
[379.929843] PM:122.411毫秒后设备挂起完成
[379.940029] PM:3.962m 秒后器件延迟挂起完成
[379.950444] PM:3.970毫秒后器件挂起完成
[379.957124] 正在禁用非引导 CPU ...
不过、从 RTC 唤醒会起作用
root@BeagleBone:/home/debian echo +15 >/sys/class/rtc/rtc0/wakealarm;echo mem >/sys/power/state
[75.428962] PM:正在同步文件系统... 完成。
[86.901348] 冻结用户空间进程... (已用0.001秒)。
[86.910330] 冻结剩余可自由执行的任务... (已用0.001秒)。
[87.042805] PM:122.277毫秒后设备挂起完成
[87.053071] PM:4.023毫秒后器件延迟挂起完成
[87.063483] PM:3.947ms 后器件挂起完成
[87.070025] 正在禁用非引导 CPU ...
[87.073988] PM:成功地将所有电源域置于目标状态
[87.093775] PM:19.523ms 后器件恢复完成
[87.103980] PM:2.689ms 后器件的早期恢复完成
[87.280782] net eth0:正在初始化 cpsw 版本1.12 (0)
[87.286247] Net eth0:初始化 cpsw ale 版本1.4
[87.291537] 净 eth0:ALE 表大小1024
[87.298751] net eth0:找到 PHY:id:0x7c0F1
[87.424691] PM:314.316毫秒后器件恢复完成
[87.435170] 正在重新启动任务... 完成。
这是已知问题吗? 有人尝试过这种方法吗? 我是否需要为 TI 的功勋尝试主线内核或内核? 还有人知道 CAN 唤醒是否正常工作吗?
谢谢、此致、
Sanchayan Maity。