Lướt qua các diễn đàn và trang web tôi tìm ra câu trả lời sau đây cho những nghi ngờ của tôi. Tôi không hoàn toàn hài lòng nhưng nó giúp hiểu thêm.
Quản lý năng lượng của mọi thiết bị phụ thuộc vào một số suspend
/ resume
chính sách được triển khai trong phần sụn điều khiển thiết bị cụ thể đó.
Điều này phụ thuộc rất nhiều vào thiết bị: cách thức và thời điểm mỗi thiết bị tắt (tạm dừng) và thức dậy (sơ yếu lý lịch) phụ thuộc vào thông số kỹ thuật CTNH, bạn phải đọc các bảng dữ liệu để hiểu các đăng ký cụ thể phải được thao tác để tạm dừng / tiếp tục thiết bị.
Bạn có thể kiểm soát nội dung này thông qua phần mềm trong trình điều khiển của thiết bị, bên trong mã nguồn của kernel, bằng cách truy cập một số chức năng trong biểu mẫu <something>_suspend
và <something>_resume
.
Ví dụ: Từ mã nguồn của kernel của trình giả lập "cá vàng":
trong tệp drivers/video/goldfishfb.c
(trình điều khiển chịu trách nhiệm cho bộ đệm khung)
#ifdef CONFIG_ANDROID_POWER
static void goldfish_fb_early_suspend(android_early_suspend_t *h)
{
struct goldfish_fb *fb = container_of(h, struct goldfish_fb, early_suspend);
writel(1, fb->reg_base + FB_SET_BLANK);
}
static void goldfish_fb_late_resume(android_early_suspend_t *h)
{
struct goldfish_fb *fb = container_of(h, struct goldfish_fb, early_suspend);
writel(0, fb->reg_base + FB_SET_BLANK);
}
#endif
Vì vậy, early_suspend
ghi 1 trong thanh ghi FB_SET_BLANK
để tắt màn hình hoặc 0 để bật lại.
Vì vậy, dường như đối với tôi, một quá trình trong môi trường thực thi ứng dụng cần truy cập và làm hỏng trình điều khiển thiết bị để thao túng việc quản lý năng lượng độc hại của thiết bị.
If you have root access you can change the governor and the allowed CPU clock speeds
: vì vậy bạn đang nói rằng một quy trình đơn giản có quyền root có thể quyết định làm chậm CPU và thay đổi điện áp dsp? Khi bạn có thời gian, bạn có thể vui lòng cung cấp một câu trả lời có cấu trúc hơn một chút không? Thks trước, tôi thực sự cần sự giúp đỡ của bạn!