【RK3399 Android系统】,启动时出现”Unable to handle kernel paging request at virtual address 490000004c“的解决思路
从Firefly官网下载的安卓系统源码,编译后,修改了部分驱动,启动的时候偶尔会出现”Unable to handle kernel paging request at virtual address 490000004c“的报错,出现这种情况基本系统就无法启动了。
[ 1.739143] ioctrl: ioctrl driver register success!
[ 1.739187] register ioctrl driver platform!
[ 1.739201] register ioctrl driver chrdev!
[ 1.739221] register ioctrl driver create!
[ 1.744889] register ioctrl driver success!
[ 1.745023] Unable to handle kernel paging request at virtual address 490000004c
[ 1.746071] pgd = ffffff80093ea000
[ 1.746373] [490000004c] *pgd=0000000000000000, *pud=0000000000000000
[ 1.746965] Internal error: Oops: 96000005 [#1] PREEMPT SMP
[ 1.747465] Modules linked in:
[ 1.747761] CPU: 4 PID: 37 Comm: kdevtmpfs Not tainted 4.4.103 #559
[ 1.748318] Hardware name: AIO-3399JD4 Board mipi (Android) (DT)
[ 1.748853] task: ffffffc0f1d00000 task.stack: ffffffc0f1d08000
[ 1.749382] PC is at __kmalloc_track_caller+0xe8/0x238
[ 1.749837] LR is at __kmalloc_track_caller+0x58/0x238
[ 1.750291] pc : [<ffffff80081adee4>] lr : [<ffffff80081ade54>] pstate: 60400145
[ 1.750943] sp : ffffffc0f1d0bc80
[ 1.751242] x29: ffffffc0f1d0bc80 x28: ffffff80093d0520
[ 1.751736] x27: ffffff80093a4b90 x26: 000000000001119c
[ 1.752229] x25: ffffffc0f1d00000 x24: ffffffc0f1d00000
[ 1.752721] x23: ffffff8008535158 x22: 00000000024000c0
[ 1.753214] x21: 000000000000000a x20: ffffffc000201e00
[ 1.753707] x19: 000000490000004c x18: 0000000030d00800
[ 1.754199] x17: 0000000000000000 x16: 0000000000000000
[ 1.754691] x15: 0000000000000000 x14: 0fffffffffffffff
[ 1.755184] x13: 0000000000000030 x12: 0000000000000008
[ 1.755676] x11: 0101010101010101 x10: 7f7f7fff7f7f7f7f
[ 1.756168] x9 : fefeff93fefeff71 x8 : 7f7f7f7f7f7f7f7f
[ 1.756661] x7 : 646c68732e636d72 x6 : 0080808000808080
[ 1.757153] x5 : 0000000000000000 x4 : 0000000000000000
[ 1.757645] x3 : 0000009500000072 x2 : 000000000001119c
[ 1.758137] x1 : 00000040ede26000 x0 : 0000000000000000
[ 1.758630]
[ 1.758630] PC: 0xffffff80081ade64:
[ 1.759071] de64 d2800013 b40007e0 d5384118 aa1803f9 b9401b00 11000400 b9001b00 f9400280
[ 1.759856] de84 d538d081 91002000 f860683a b9401b00 51000400 b9001b00 35000080 f9400300
[ 1.760636] dea4 36080040 94260e30 f9400280 d538d081 8b000022 f9400442 eb02035f 54fffda1
[ 1.761417] dec4 f8606833 b50000d3 aa1403e0 2a1603e1 97fff86c aa0003f3 1400001c b9802280
[ 1.762197] dee4 f8606a7b b9401b20 11000400 b9001b20 f9400281 91002342 d538d080 8b010000
[ 1.762977] df04 f9800011 c87f7003 ca130063 ca1a039c aa1c007c b500007c c823081b 35ffff43
[ 1.763757] df24 b9401b20 51000400 b9001b20 35000080 f9400320 36080040 94260e0b b5fff9bc
[ 1.764536] df44 b9802280 f8a06b60 367800d6 b40000b3 b9801e82 aa1303e0 52800001 94074b68
[ 1.765317]
[ 1.765317] LR: 0xffffff80081addd4:
[ 1.765758] ddd4 aa1503e1 97fff44f f94006a0 b4fffee0 2a1403e0 a94153f3 a9425bf5[ 1.766440] mmc0: MAN_BKOPS_EN bit is not set
根据网上的搜索结果,查看地址为pgd = ffffff80093ea000,查看系统源码下的kernel下的System.map,查看该该地址对应的函数,为swapper_pg_dir,这个函数不是自己写的函数,因此再往下查有些困难。
ubt@ubt-ThinkPad-E470:~/proj/firefly-rk3399/kernel$ vim System.map1 0000000000000000 A __rela_size2 0000000000000000 A _kernel_flags_le_hi323 0000000000000000 A _kernel_offset_le_hi324 0000000000000000 A _kernel_size_le_hi325 000000000000000a A _kernel_flags_le_lo326 0000000000000200 A PECOFF_FILE_ALIGNMENT7 0000000000080000 A _kernel_offset_le_lo328 000000000113fdb0 A __rela_offset9 000000000136d000 A _kernel_size_le_lo3210 ffffff8008080000 t _head11 ffffff8008080000 T _text12 ffffff8008080800 T __exception_text_start13 ffffff8008080800 T _stext14 ffffff8008080800 T do_undefinstr15 ffffff8008080b0c T do_mem_abort16 ffffff8008080bd0 T do_sp_pc_abort17 ffffff8008080ccc T do_debug_exception18 ffffff8008080d98 t gic_handle_irq19 ffffff8008080e3c t gic_handle_irq20 ffffff8008080f90 T __entry_text_start21 ffffff8008080f90 T __exception_text_end22 ffffff8008081000 T vectors23 ffffff8008081784 t el0_sync_invalid24 ffffff8008081834 t el0_irq_invalid25 ffffff80080818e4 t el0_fiq_invalid26 ffffff8008081994 t el0_error_invalid27 ffffff8008081a44 t el0_fiq_invalid_compat28 ffffff8008081af8 t el0_error_invalid_compat29 ffffff8008081bac t el1_sync_invalid30 ffffff8008081c4c t el1_irq_invalid31 ffffff8008081cec t el1_fiq_invalid32 ffffff8008081d8c t el1_error_invalid33 ffffff8008081e40 t el1_sync34 ffffff8008081f14 t el1_da35 ffffff8008081f14 t el1_ia36 ffffff8008081fb4 t el1_sp_pc37 ffffff8008081fc4 t el1_undef38 ffffff8008081fd0 t el1_dbg39 ffffff8008082060 t el1_inv40 ffffff8008082080 t el1_irq41 ffffff80080821f0 t el1_preempt
……
……
……
109720 ffffff80093e6048 B cfg80211_regdomain
109721 ffffff80093e6050 b reg_crda_timeouts
109722 ffffff80093e6058 b reg_pdev
109723 ffffff80093e6060 b reg_requests_lock
109724 ffffff80093e6068 b user_alpha2
109725 ffffff80093e6070 b reg_pending_beacons_lock
109726 ffffff80093e6078 b reg_indoor_lock
109727 ffffff80093e607c b reg_is_indoor
109728 ffffff80093e6080 b reg_is_indoor_portid
109729 ffffff80093e6088 b csa_attrs.67572
109730 ffffff80093e6798 b __key.66742
109731 ffffff80093e6798 b nullstats.40117
109732 ffffff80093e67b8 b __key.61255
109733 ffffff80093e67b8 b __key.61515
109734 ffffff80093e67b8 b __key.69218
109735 ffffff80093e67b8 b __key.69219
109736 ffffff80093e67b8 b __key.69220
109737 ffffff80093e67b8 b __key.69224
109738 ffffff80093e67b8 b rfkill_no.23457
109739 ffffff80093e67c0 b rfkill_global_states
109740 ffffff80093e67d8 b __key.23501
109741 ffffff80093e67d8 b __key.23502
109742 ffffff80093e67d8 b __key.23603
109743 ffffff80093e67d8 b g_rfkill
109744 ffffff80093e67e0 b power_set_time
109745 ffffff80093e67e4 b wifi_power_state
109746 ffffff80093e67e8 b country_cloc
109747 ffffff80093e67f8 b wifi_chip_type_string
109748 ffffff80093e6838 B wifi_custom_mac_addr
109749 ffffff80093e6840 b g_rfkill
109750 ffffff80093e6848 b bt_power_state
109751 ffffff80093e6850 b bluetooth_dir
109752 ffffff80093e6858 b sleep_dir
109753 ffffff80093e6860 b empty.48655
109754 ffffff80093e68a0 b net_header
109755 ffffff80093e68a8 b klist_remove_lock
109756 ffffff80093e68b0 A __bss_stop
109757 ffffff80093e7000 A idmap_pg_dir
109758 ffffff80093ea000 A swapper_pg_dir
109759 ffffff80093ec000 A reserved_ttbr0
109760 ffffff80093ed000 A _end
这步走不通,只能用笨方法。还原逐步添加。
首先屏蔽掉自己添加的所有驱动,图中可以看到,一共添加了4个驱动,分别是adc,tlc,ioctrl,ioint。首先全部屏蔽,编译,大量测试,结果测试约100次左右没有出现任何启动失败的情况,说明问题肯定出现在这几个驱动中。然后依次添加驱动,当添加到ioctrl时,大量测试,出现了启动失败的情况,那么问题逐步缩小到了ioctrl中。
在ioctrl的文件中,有以下几个函数,全部屏蔽,依次添加测试,当添加到firefly_ioctrl_probe()函数的时候,大量测试又出现了同样的问题,说明在这个函数中存在问题。继续在这个函数中依次屏蔽测试。
此函数中初始化了几个IO引脚,依次添加测试,当添加到红绿黄灯的IO引脚控制时,问题复现。
分析该问题,初始化红绿黄引脚后,复现问题,该引脚为指示灯引脚,且该引脚在初始化之前,adc的电量检测中调用过,因此可以断定,出现该问题为引脚未初始化,被调用引起异常,解决方式即为调整驱动启动顺序或者在adc中延后调用该接口,修改后进行测试。
经过多次测试,出现该问题原因为在系统的其他函数中,调用该引脚资源,但是使用时未作判断,导致使用越界,系统崩溃。具体哪里调用仍未查出,只能使用是避免使用这三个IO口。
【RK3399 Android系统】,启动时出现”Unable to handle kernel paging request at virtual address 490000004c“的解决思路相关推荐
- Unable to handle kernel paging request at virtual address 的解决办法
原文地址为: Unable to handle kernel paging request at virtual address 的解决办法 今天想正式开始编写各底层硬件的驱动程序,首先是双口RAM的 ...
- Unable to handle kernel paging request at virtual address 问题定位
调试模块的时候出现这个问题,看panic 系统调用堆栈,cpu执行到连接跟踪模块那里,难道是内核模块有问题?不可能,想起之前内核奔溃的教训,问题肯定是出在自己的模块上.又重新详细看日志,看到最后一行有 ...
- android启动画面白屏,Android app启动时黑屏或者白屏的原因及解决办法
1.产生原因 其实显示黑屏或者白屏实属正常,这是因为还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景. 示例: 2.解决办法 通过设置设置Style (1)设置背 ...
- Android系统编译时集成三方APK
1. 前言 最近在学习Android系统开发,在开发过程中可能要到将三方apk集成到系统中的需求.目前我了解的方法有两种. 一种是在系统编译完毕之后,再将三方apk文件放置到系统目录之下.参考如何将a ...
- Android应用启动时白色闪屏原因及解决办法
白色闪屏现象: 如果OnCreate().onStart().onResume()中操作太多,耗时较久.那么就会在主界面显示出来之前出现白色闪屏.为了更清晰的看出白色闪屏,这里在代码中执行50000次 ...
- Unable to handle kernel NULL pointer dereference at virtual address 0000000d[ 435.859000] pgd = c9
由于本人刚学驱动新手,不会太多反向操作.看了很多博主也没有解决. 经过我一个下午尝试,把代码缩减缩减在缩减之后,我发现了 先看下面的代码,有问题的代码(扫一眼就行了,估计没人看的出来) #includ ...
- Nvidia AGX Xavier 升级到 JetPack 4.6版本 反复打开camera导致内核出错 Unable to handle kernel NULL pointer
这里写自定义目录标题 现象 日志显示 分析过程 解决思路 代码修改 现象 在原来 JetPack4.4 运行稳定的camera驱动,由于算法功能需要,升级到最新的JetPack4.6. 刚开始自测,功 ...
- Unable to handle kernel NULL pointer dereference at virtual address
1:从sd卡出错log里可以看出来pc指针以及出错位置 PC is at dw_mci_pre_dma_transfer.isra.19+0x7c/0x158 pc : [<8032e130&g ...
- Unable to handle kernel NULL pointer dereference at virtual address 分析
Unable to handle kernel NULL pointer dereference at virtual address 分析 现象 [ 136.847780] br-lan: rece ...
最新文章
- 【Android工具】更新手机视频流媒体客户端播放器OPlayer
- React 新 Context API 在前端状态管理的实践
- HIVE攻略 JFK_Hive安装及使用攻略
- React中的CSS——styled-components
- 2016年12月20日感想
- 关于十字翻转棋的解法研究
- CSV导入到clickhouse
- 线性代数史蒂文_史蒂文·弗兰克的博客国歌
- springboot+教学工作量管理系统 毕业设计-附源码221541
- N,N-二甲基十二烷基胺(CAS 112-18-5)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 网站运营手册_分享几款运营必备软件合集,欢迎补充
- linux调整列显示宽度,使单元格或列自动调整宽度 - 在SWT中使用OLE操纵Excel_Linux编程_Linux公社-Linux系统门户网站...
- 专业办公套件(Office 2019)for Mac
- 基于TextRank的抽取式文本摘要(英文)
- ubuntu安装zlib
- Java 执行 JS 脚本工具
- 新服务器或者vps如何挂载硬盘(安装硬盘)教程
- 《数字化的力量》入选瞭望智库“思·享读书会”推荐图书
- 中小企业面临“招聘难”
- 基于Spring Boot的学生志愿者管理系统的设计与实现