自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenHarmony 內(nèi)核鼠標調(diào)試

系統(tǒng) OpenHarmony
CPU輕量級隔離特性提供了根據(jù)系統(tǒng)負載和用戶配置來選擇合適的CPU進行動態(tài)隔離的能力。內(nèi)核會將被隔離CPU上的任務和中斷遷移到其他合適的CPU上執(zhí)行,被隔離的CPU會進入ilde狀態(tài),以此來達到功耗優(yōu)化的目標。同時提供用戶的配置和查詢接口來實現(xiàn)更好的系統(tǒng)調(diào)優(yōu)。

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

1、USB鼠標插入USB2不供電問題解決

(1)增加IO控制驅(qū)動

解壓IO控制驅(qū)動壓縮包io_zhouke.tar.gz。
復制壓縮包的文件到drivers/char/目錄下。

tar zxvf io_zhouke.tar.gz
cp io_zhouke/* drivers/char/ -avf

注釋:這些文件可以在3.1LTS版本中獲取,復制完之后drivers/char目錄結(jié)構(gòu)如下:

-rw-rw-r--    1    1000    1000    13K    Dec    13    08:13    id_card.c    io:total 28K-rw-rw-r--       1       1000       1000       44       Jul       12       09:52       Makefile    -rw-rw-r--    1    1000    1000    138    Dec    13    08:02    built-in.a    -rw-rw-r--    1    1000    1000    0    Aug    17    06:41    modules.order    -rw-rw-r--    1    1000    1000    7.9K    Jul    12    09:52    io.c    -rw-rw-r--    1    1000    1000    2.6K    Jul    12    09:52    io.h    -rw-rw-r--    1    1000    1000    2.0K    Jul    12    09:52    io_external.c    -rw-rw-r--    1    1000    1000    4.0K    Jul    12    09:52    io_stub.c    
相應的修改Makefile文件,把驅(qū)動編譯到內(nèi)核中
drivers/char/Makefile
# SPDX-License-Identifier: GPL-2.0 #
# Makefile for the kernel character device drivers. #
obj-y += jy.o
obj-y += mcu.o
+ obj-y += io/ //增加此行 obj-y += mem.o random.o
obj-$(CONFIG_TTY_PRINTK) += ttyprintk.o obj-y += misc.o
obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o
obj-$(CONFIG_VIRTIO_CONSOLE) += virtio_console.o obj-$(CONFIG_RAW_DRIVER) += raw.o
obj-$(CONFIG_MSPEC) += mspec.o
obj-$(CONFIG_UV_MMTIMER) += uv_mmtimer.o obj-$(CONFIG_IBM_BSR) += bsr.o
obj-$(CONFIG_PRINTER) += lp.o
obj-$(CONFIG_APM_EMULATION) += apm-emulation.o obj-$(CONFIG_DTLK) += dtlk.o
obj-$(CONFIG_APPLICOM) += applicom.o
obj-$(CONFIG_SONYPI) += sonypi.o
obj-$(CONFIG_HPET) += hpet.o
obj-$(CONFIG_XILINX_HWICAP) += xilinx_hwicap/ obj-$(CONFIG_NVRAM) += nvram.o
obj-$(CONFIG_TOSHIBA) += toshiba.o
obj-$(CONFIG_DS1620) += ds1620.o
obj-$(CONFIG_HW_RANDOM) += hw_random/ obj-$(CONFIG_PPDEV) += ppdev.o
obj-$(CONFIG_NWBUTTON) += nwbutton.o
obj-$(CONFIG_NWFLASH) += nwflash.o
obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o obj-$(CONFIG_PC8736x_GPIO) += pc8736x_gpio.o obj-$(CONFIG_NSC_GPIO) += nsc_gpio.o
obj-$(CONFIG_GPIO_TB0219) += tb0219.o
obj-$(CONFIG_TELCLOCK) += tlclk.o
obj-$(CONFIG_MWAVE) += mwave/
obj-y += agp/
obj-$(CONFIG_PCMCIA) += pcmcia/
obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o obj-$(CONFIG_TCG_TPM) += tpm/
obj-$(CONFIG_PS3_FLASH) += ps3flash.o obj-$(CONFIG_XILLYBUS) += xillybus/
obj-$(CONFIG_POWERNV_OP_PANEL) += powernv-op-panel.o obj-$(CONFIG_ADI) += adi.o

(2)增加USB相關(guān)支持

修改 arch/arm64/configs/rockchip_linux_defconfig。

CONFIG_USB_ACM=y CONFIG_USB_SERIAL_QT2=y

重新編譯內(nèi)核,此時USB可以正確識別鼠標生成對應的設(shè)備節(jié)點,但是鼠標還是不能正常工作。

2、內(nèi)核崩潰問題解決

內(nèi)核崩潰log如下:

[  61.187709] kernel BUG at kernel/sched/walt.h:108! [  61.188143] Internal error: Oops - BUG: 0 [#1] SMP [  61.188573] Modules linked in:
[ 61.188866] CPU: 3 PID: 25 Comm: migration/3 Tainted: G W 5.10.97 #6 [ 61.189541] Hardware name: Rockchip RK3399 Excavator Board (Linux Opensource) (DT) [ 61.190214] pstate: 80000085 (Nzcv daIf -PAN -UAO -TCO BTYPE=--)
[ 61.190760] pc : dequeue_task_rt+0xf8/0xfc [ 61.191131] lr : dequeue_task_rt+0x68/0xfc [ 61.191497] sp : ffffffc011bd3ce0
[ 61.191797] x29: ffffffc011bd3ce0 x28: 0000000000000000 [ 61.192281] x27: 0000000000000000 x26: 0000000000000001 [ 61.192765] x25: ffffffc011854000 x24: ffffff800245cb00 [ 61.193247] x23: ffffff80f779e440 x22: ffffff800c799180 [ 61.193729] x21: 0000000000000000 x20: ffffff800c798f00 [ 61.194211] x19: ffffff80f779e440 x18: 00000000ffff1020 [ 61.194693] x17: 0000000000000000 x16: 00000000000000e0 [ 61.195176] x15: ffffffc010645160 x14: 000000000000006c [ 61.195658] x13: ffffffc0100a2f8c x12: 0000000000000000 [ 61.196140] x11: 0000000000000001 x10: ffffffc010f7be28 [ 61.196622] x9 : 0000000000000002 x8 : ffffffffffffffd8 [ 61.197104] x7 : 6e6f636e69203a69 x6 : ffffffc011908110 [ 61.197586] x5 : 0000000000000004 x4 : 0000000000000001 [ 61.198067] x3 : 0000000000000000 x2 : 0000000000000000 [ 61.198550] x1 : 0000000000000000 x0 : ffffff80f779e800 [ 61.199034] Call trace: [ 61.199264] dequeue_task_rt+0xf8/0xfc [ 61.199608] dequeue_task+0xbc/0x2c4 [ 61.199935] deactivate_task+0x28/0x34 [ 61.200278] rt_active_load_balance_cpu_stop+0x90/0x150 [ 61.200749] cpu_stopper_thread+0xac/0x154 [ 61.201119] smpboot_thread_fn+0x100/0x190 [ 61.201491] kthread+0x11c/0x174 [ 61.201787] ret_from_fork+0x10/0x30 [ 61.202117] Code: f9400bf7 a8c47bfd d50323bf d65f03c0 (d4210000) [ 61.202662] ---[ end trace 72c26b1564636cfc ]--- [ 61.203076] Kernel panic - not syncing: Oops - BUG: Fatal exception [ 61.203639] SMP: stopping secondary CPUs [ 62.370663] SMP: failed to stop secondary CPUs 1,3-5 [ 62.371105] CRU: [ 62.371291] 00000000: 0000004b 00001301 80000000 00000108 00000007 00007f00 00000000 00000000 [ 62.372052] 00000020: 0000004b 00001101 80000000 00000108 00000007 00007f00 00000000 00000000 [ 62.372812] 00000040: 0000006b 00001301 8000031f 00000108 00000007 00007f00 00000000 00000000 [ 62.373573] 00000060: 0000008b 00001604 8000031f 00000108 00000007 00007f00 00000000 00000000
......

只需要修改 arch/arm64/configs/rockchip_linux_defconfig 文件,注釋掉以下內(nèi)容即可(此修改包含第二部分USB支持):

< CONFIG_PSI=y
---
>CONFIG_PSI=y 98c98
< CONFIG_SCHED_RUNNING_AVG=y
---
>CONFIG_SCHED_RUNNING_AVG=y 100c100
< CONFIG_SCHED_CORE_CTRL=y
---
>CONFIG_SCHED_CORE_CTRL=y 139c139
< #CONFIG_SCHED_EAS=y
---
>CONFIG_SCHED_EAS=y 4395c4395
< CONFIG_USB_ACM=y
---
># CONFIG_USB_ACM is not set 4433c4433
< #CONFIG_USB_DWC3_HOST=y
---
># CONFIG_USB_DWC3_HOST is not set 4511c4511
< CONFIG_USB_SERIAL_QT2=y
---
># CONFIG_USB_SERIAL_QT2 is not set

注釋:紅色內(nèi)容為修改后的文件。解決上邊崩潰問題只需要關(guān)閉 CONFIG_SCHED_EAS 一個配置即可。

1、CONFIG_PSI

PSI (Pressure Stall Information) 機制,其核心思想是:如果有進程因為等待某種資源而 stall 了,那說明這個時候資源成了一個限制條件(生產(chǎn)資料的短缺導致了生產(chǎn)力的損失),那就應該適當增加分配給這個進程的資源。

在部署業(yè)務時,如果過于保守地追求安全,那資源往往得不到充分的利用,造成浪費,在成本上喪失競爭力。而如果對資源進行過飽和使用(比如內(nèi)存的 overcommit),又可能導致運行過程中的波動(spike),影響延遲敏感型的任務,甚至最終不得不走向 OOM。
所謂人盡其才,物盡其用,Linux 中 PSI 的目標就是讓硬件資源的效能最大化。

2、CONFIG_SCHED_RUNNING_AVG

用于確定平均運行隊列的調(diào)度程序接口。

3、CONFIG_SCHED_CORE_CTRL

OpenHarmony CPU輕量級隔離特性介紹

基本概念

CPU輕量級隔離特性提供了根據(jù)系統(tǒng)負載和用戶配置來選擇合適的CPU進行動態(tài)隔離的能力。內(nèi)核會將被隔離CPU上的任務和中斷遷移到其他合適的CPU上執(zhí)行,被隔離的CPU會進入ilde狀態(tài),以此來達到功耗優(yōu)化的目標。同時提供用戶的配置和查詢接口來實現(xiàn)更好的系統(tǒng)調(diào)優(yōu)。

配置指導

使能CPU輕量級隔離特性

打開相關(guān)配置項及依賴。啟用CPU輕量級隔離,需要通過編譯內(nèi)核時打開相應的配置項及依賴,相關(guān)CONFIG如下:

4、CONFIG_SCHED_EAS

能量感知調(diào)度(EAS)使調(diào)度程序能夠預測其決策對 CPU 消耗的電量的影響。EAS 依賴于 CPU的能量模型 (EM) 來為每個任務選擇省電的 CPU,同時要求對執(zhí)行任務的吞吐量的影響最小。
EAS 僅在異構(gòu) CPU 架構(gòu)上(例如 Arm big.LITTLE)上運行,因為這是通過調(diào)度器節(jié)省電量的效果最大的地方。

3、多模子系統(tǒng)服務加載錯誤

錯誤日志log:

[pid=1][Init][ERROR][init_signal_handler.c:42]
Child process multimodalinput(pid 1351) exit with signal : 11 [pid=1][Init][INFO][init_signal_handler.c:51]
SigHandler, SIGCHLD received, Service:multimodalinput pid:1351 uid:6696 status:11. [pid=1][Init][INFO][init_common_service.c:497]
Reap service multimodalinput, pid 1351. [pid=1][Init][ERROR][init_common_service.c:540]
Service name=multimodalinput, crash 4 times, no more start.
修改 foundation/multimodalinput/input/service/window_manager/src/input_windows_manager.cpp 文件
diff --git a/service/window_manager/src/input_windows_manager.cpp b/service/window_manager/src/i index 1be96f7..6146c01 100644
--- a/service/window_manager/src/input_windows_manager.cpp
+++ b/service/window_manager/src/input_windows_manager.cpp @@ -229,6 +229,7 @@
int32_t logicX = mouseLocation.physicalX + displayInfo->x; int32_t logicY = mouseLocation.physicalY + displayInfo->y; std::optional<WindowInfo> windowInfo;
+ CHKPV(lastPointerEvent_);
if (lastPointerEvent_->GetPointerAction() == PointerEvent::POINTER_ACTION_MOVE && lastPointerEvent_->GetPressedButtons().empty()) {
windowInfo = GetWindowInfo(logicX, logicY); @@ -396,6 +397,7 @@
{
CALL_INFO_TRACE;
std::optional<WindowInfo> windowInfo;
+ CHKPV(lastPointerEvent_);
if (lastPointerEvent_->GetPointerAction() == PointerEvent::POINTER_ACTION_MOVE && lastPointerEvent_->GetPressedButtons().empty()) {
windowInfo = GetWindowInfo(lastLogicX_, lastLogicY_);

總結(jié):

經(jīng)過以上修改之后,系統(tǒng)完全啟動進入桌面之后,輸入 power-shell setmode 602 命令,設(shè)置電源模式,防止系統(tǒng)重啟,鼠標可正常工作。

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2022-02-08 15:15:26

OpenHarmonlinux鴻蒙

2023-02-01 16:28:30

Linux內(nèi)核鴻蒙

2010-01-22 11:01:04

linux內(nèi)核模塊

2014-08-28 15:08:35

Linux內(nèi)核

2024-07-09 08:31:26

2022-03-28 15:40:34

harmony鴻蒙操作系統(tǒng)

2023-05-16 14:49:25

鴻蒙內(nèi)核移植

2022-09-15 14:56:12

GDB調(diào)試鴻蒙

2023-05-05 16:05:26

設(shè)備內(nèi)核移植鴻蒙

2022-03-03 19:31:31

隊列算法Harmony

2023-05-17 15:07:42

智能開發(fā)鴻蒙

2021-07-11 06:45:18

Linux內(nèi)核靜態(tài)

2017-01-12 19:15:03

Linux內(nèi)核調(diào)試自構(gòu)proc

2021-10-25 09:53:52

鴻蒙HarmonyOS應用

2022-04-06 14:55:45

Harmony同步機制鴻蒙

2023-05-15 15:27:20

鴻蒙智能開發(fā)套件

2023-02-28 15:40:16

鴻蒙CPU渲染

2023-03-23 16:02:07

樹莓派4GPU調(diào)試

2016-08-23 09:17:08

LinuxD狀態(tài)TASK_RUNNIN

2021-10-17 19:52:40

Python:源碼編譯器
點贊
收藏

51CTO技術(shù)棧公眾號