USB鼠標(biāo)插入U(xiǎn)SB2不供電問(wèn)題解決
①增加 IO 控制驅(qū)動(dòng)
解壓 IO 控制驅(qū)動(dòng)壓縮包:
io_zhouke.tar.gz復(fù)制壓縮包的文件到 drivers/char/ 目錄下:
tarzxvfio_zhouke.tar.gz cpio_zhouke/*drivers/char/-avf注釋:這些文件可以在 3.1 LTS 版本中獲取,復(fù)制完之后 drivers/char 目錄結(jié)構(gòu)如下。
-rw-rw-r--11000100013KDec1308:13id_card.cio:total28K-rw-rw-r--11000100044Jul1209:52Makefile-rw-rw-r--110001000138Dec1308:02built-in.a-rw-rw-r--1100010000Aug1706:41modules.order-rw-rw-r--1100010007.9KJul1209:52io.c-rw-rw-r--1100010002.6KJul1209:52io.h-rw-rw-r--1100010002.0KJul1209:52io_external.c-rw-rw-r--1100010004.0KJul1209:52io_stub.c 相應(yīng)的修改Makefile文件,把驅(qū)動(dòng)編譯到內(nèi)核中 drivers/char/Makefile #SPDX-License-Identifier:GPL-2.0# #Makefileforthekernelcharacterdevicedrivers.# obj-y+=jy.o obj-y+=mcu.o +obj-y+=io///增加此行obj-y+=mem.orandom.o obj-$(CONFIG_TTY_PRINTK)+=ttyprintk.oobj-y+=misc.o obj-$(CONFIG_ATARI_DSP56K)+=dsp56k.o obj-$(CONFIG_VIRTIO_CONSOLE)+=virtio_console.oobj-$(CONFIG_RAW_DRIVER)+=raw.o obj-$(CONFIG_MSPEC)+=mspec.o obj-$(CONFIG_UV_MMTIMER)+=uv_mmtimer.oobj-$(CONFIG_IBM_BSR)+=bsr.o obj-$(CONFIG_PRINTER)+=lp.o obj-$(CONFIG_APM_EMULATION)+=apm-emulation.oobj-$(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.oobj-$(CONFIG_PC8736x_GPIO)+=pc8736x_gpio.oobj-$(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.oobj-$(CONFIG_TCG_TPM)+=tpm/ obj-$(CONFIG_PS3_FLASH)+=ps3flash.oobj-$(CONFIG_XILLYBUS)+=xillybus/ obj-$(CONFIG_POWERNV_OP_PANEL)+=powernv-op-panel.oobj-$(CONFIG_ADI)+=adi.o
②增加 USB 相關(guān)支持
修改 arch/arm64/configs/rockchip_linux_defconfig:
CONFIG_USB_ACM=yCONFIG_USB_SERIAL_QT2=y重新編譯內(nèi)核,此時(shí) USB 可以正確識(shí)別鼠標(biāo)生成對(duì)應(yīng)的設(shè)備節(jié)點(diǎn),但是鼠標(biāo)還是不能正常工作。
內(nèi)核崩潰問(wèn)題解決
內(nèi)核崩潰 log 如下:
[61.187709]kernelBUGatkernel/sched/walt.h:108![61.188143]Internalerror:Oops-BUG:0[#1]SMP[61.188573]Moduleslinkedin: [61.188866]CPU:3PID:25Comm:migration/3Tainted:GW5.10.97#6[61.189541]Hardwarename:RockchipRK3399ExcavatorBoard(LinuxOpensource)(DT)[61.190214]pstate:80000085(NzcvdaIf-PAN-UAO-TCOBTYPE=--) [61.190760]pc:dequeue_task_rt+0xf8/0xfc[61.191131]lr:dequeue_task_rt+0x68/0xfc[61.191497]sp:ffffffc011bd3ce0 [61.191797]x29:ffffffc011bd3ce0x28:0000000000000000[61.192281]x27:0000000000000000x26:0000000000000001[61.192765]x25:ffffffc011854000x24:ffffff800245cb00[61.193247]x23:ffffff80f779e440x22:ffffff800c799180[61.193729]x21:0000000000000000x20:ffffff800c798f00[61.194211]x19:ffffff80f779e440x18:00000000ffff1020[61.194693]x17:0000000000000000x16:00000000000000e0[61.195176]x15:ffffffc010645160x14:000000000000006c[61.195658]x13:ffffffc0100a2f8cx12:0000000000000000[61.196140]x11:0000000000000001x10:ffffffc010f7be28[61.196622]x9:0000000000000002x8:ffffffffffffffd8[61.197104]x7:6e6f636e69203a69x6:ffffffc011908110[61.197586]x5:0000000000000004x4:0000000000000001[61.198067]x3:0000000000000000x2:0000000000000000[61.198550]x1:0000000000000000x0:ffffff80f779e800[61.199034]Calltrace:[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:f9400bf7a8c47bfdd50323bfd65f03c0(d4210000)[61.202662]---[endtrace72c26b1564636cfc]---[61.203076]Kernelpanic-notsyncing:Oops-BUG:Fatalexception[61.203639]SMP:stoppingsecondaryCPUs[62.370663]SMP:failedtostopsecondaryCPUs1,3-5[62.371105]CRU:[62.371291]00000000:0000004b0000130180000000000001080000000700007f000000000000000000[62.372052]00000020:0000004b0000110180000000000001080000000700007f000000000000000000[62.372812]00000040:0000006b000013018000031f000001080000000700007f000000000000000000[62.373573]00000060:0000008b000016048000031f000001080000000700007f000000000000000000 ......
只需要修改 arch/arm64/configs/rockchip_linux_defconfig 文件,注釋掉以下內(nèi)容即可(此修改包含第二部分 USB 支持):
CONFIG_PSI=y98c98 CONFIG_SCHED_RUNNING_AVG=y100c100 CONFIG_SCHED_CORE_CTRL=y139c139 #CONFIG_SCHED_EAS=y --- >CONFIG_SCHED_EAS=y4395c4395 #CONFIG_USB_ACMisnotset4433c4433 #CONFIG_USB_DWC3_HOST=y --- >#CONFIG_USB_DWC3_HOSTisnotset4511c4511 #CONFIG_USB_SERIAL_QT2isnotset注釋:紅色內(nèi)容為修改后的文件。解決上邊崩潰問(wèn)題只需要關(guān)閉 CONFIG_SCHED_EAS 一個(gè)配置即可。
①CONFIG_PSI
PSI (Pressure Stall Information) 機(jī)制,其核心思想是:如果有進(jìn)程因?yàn)榈却撤N資源而 stall 了,那說(shuō)明這個(gè)時(shí)候資源成了一個(gè)限制條件(生產(chǎn)資料的短缺導(dǎo)致了生產(chǎn)力的損失),那就應(yīng)該適當(dāng)增加分配給這個(gè)進(jìn)程的資源。 在部署業(yè)務(wù)時(shí),如果過(guò)于保守地追求安全,那資源往往得不到充分的利用,造成浪費(fèi),在成本上喪失競(jìng)爭(zhēng)力。 而如果對(duì)資源進(jìn)行過(guò)飽和使用(比如內(nèi)存的 overcommit),又可能導(dǎo)致運(yùn)行過(guò)程中的波動(dòng)(spike),影響延遲敏感型的任務(wù),甚至最終不得不走向 OOM。
所謂人盡其才,物盡其用,Linux 中 PSI 的目標(biāo)就是讓硬件資源的效能最大化。
②CONFIG_SCHED_RUNNING_AVG
用于確定平均運(yùn)行隊(duì)列的調(diào)度程序接口。
③CONFIG_SCHED_CORE_CTRL
OpenHarmony CPU 輕量級(jí)隔離特性介紹。 基本概念 CPU 輕量級(jí)隔離特性提供了根據(jù)系統(tǒng)負(fù)載和用戶配置來(lái)選擇合適的 CPU 進(jìn)行動(dòng)態(tài)隔離的能力。 內(nèi)核會(huì)將被隔離 CPU 上的任務(wù)和中斷遷移到其他合適的 CPU 上執(zhí)行,被隔離的 CPU 會(huì)進(jìn)入 ilde 狀態(tài),以此來(lái)達(dá)到功耗優(yōu)化的目標(biāo)。同時(shí)提供用戶的配置和查詢接口來(lái)實(shí)現(xiàn)更好的系統(tǒng)調(diào)優(yōu)。 配置指導(dǎo) 使能 CPU 輕量級(jí)隔離特性:打開(kāi)相關(guān)配置項(xiàng)及依賴。啟用 CPU 輕量級(jí)隔離,需要通過(guò)編譯內(nèi)核時(shí)打開(kāi)相應(yīng)的配置項(xiàng)及依賴,相關(guān) CONFIG 如下。
④CONFIG_SCHED_EAS
能量感知調(diào)度(EAS)使調(diào)度程序能夠預(yù)測(cè)其決策對(duì) CPU 消耗的電量的影響。 EAS 依賴于 CPU的能量模型 (EM) 來(lái)為每個(gè)任務(wù)選擇省電的 CPU,同時(shí)要求對(duì)執(zhí)行任務(wù)的吞吐量的影響最小。 EAS 僅在異構(gòu) CPU 架構(gòu)上(例如 Arm big.LITTLE)上運(yùn)行,因?yàn)檫@是通過(guò)調(diào)度器節(jié)省電量的效果最大的地方。
多模子系統(tǒng)服務(wù)加載錯(cuò)誤
錯(cuò)誤日志 log:
[pid=1][Init][ERROR][init_signal_handler.c:42] Childprocessmultimodalinput(pid1351)exitwithsignal:11[pid=1][Init][INFO][init_signal_handler.c:51] SigHandler,SIGCHLDreceived,Service:multimodalinputpid:1351uid:6696status:11.[pid=1][Init][INFO][init_common_service.c:497] Reapservicemultimodalinput,pid1351.[pid=1][Init][ERROR][init_common_service.c:540] Servicename=multimodalinput,crash4times,nomorestart. 修改foundation/multimodalinput/input/service/window_manager/src/input_windows_manager.cpp文件 diff--gita/service/window_manager/src/input_windows_manager.cppb/service/window_manager/src/iindex1be96f7..6146c01100644 ---a/service/window_manager/src/input_windows_manager.cpp +++b/service/window_manager/src/input_windows_manager.cpp@@-229,6+229,7@@ int32_tlogicX=mouseLocation.physicalX+displayInfo->x;int32_tlogicY=mouseLocation.physicalY+displayInfo->y;std::optionalwindowInfo; +CHKPV(lastPointerEvent_); if(lastPointerEvent_->GetPointerAction()==PointerEvent::POINTER_ACTION_MOVE&&lastPointerEvent_->GetPressedButtons().empty()){ windowInfo=GetWindowInfo(logicX,logicY);@@-396,6+397,7@@ { CALL_INFO_TRACE; std::optionalwindowInfo; +CHKPV(lastPointerEvent_); if(lastPointerEvent_->GetPointerAction()==PointerEvent::POINTER_ACTION_MOVE&&lastPointerEvent_->GetPressedButtons().empty()){ windowInfo=GetWindowInfo(lastLogicX_,lastLogicY_);
總結(jié)
經(jīng)過(guò)以上修改之后,系統(tǒng)完全啟動(dòng)進(jìn)入桌面之后,輸入 power-shell setmode 602 命令,設(shè)置電源模式,防止系統(tǒng)重啟,鼠標(biāo)可正常工作。
審核編輯:湯梓紅
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1372瀏覽量
40276 -
usb
+關(guān)注
關(guān)注
60文章
7936瀏覽量
264474 -
鼠標(biāo)
+關(guān)注
關(guān)注
6文章
591瀏覽量
39754 -
調(diào)試
+關(guān)注
關(guān)注
7文章
578瀏覽量
33923 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3713瀏覽量
16254
原文標(biāo)題:OpenHarmony內(nèi)核鼠標(biāo)調(diào)試
文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論