- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在构建一个基于 imx6 SoC 的自定义 android 板。使用的android版本很旧(KitKat 4.4.2),内核(3.0.35)也是如此。我们正在处理一个我们尚未弄清楚的问题。
通常,当一切正常时,板子的重启需要 5-6 秒的时间。但有时,板子的重启需要很长的时间,从 1.30 分钟到 2.30 分钟不等。
我们想知道的是,首先,内核卡在了哪个模块/函数中。
我们怀疑这可能是 eMMC 问题,但这是一个不太可能的猜测,我们真的不知道此时发生了什么。
你们知道让内核更加冗长的方法吗?喜欢打印每个函数调用?此时 kgdb 或类似的调试工具可以帮助我们吗?
谢谢,
问候,
沃特克
编辑:因此,我们在寻找问题方面取得了进展。结果内核卡在了 arch/arm/kernel/process.c 的 arm_machine_restart() 函数中。具体来说,它在调用 cpu_proc_fin() 函数后卡住,对于我们的板子,它在 arch/arm/mm/proc-v7.S 中定义为 cpu_v7_proc_init。该函数的代码在汇编中:
mrc p15, 0, r0, c1, c0, 0 @ ctrl register
bic r0, r0, #0x1000 @ ...i............
bic r0, r0, #0x0006 @ .............ca.
mcr p15, 0, r0, c1, c0, 0 @ disable caches
mov pc, lr
我们不是唯一遇到此问题的人。 ( thread on NXP forum here )我们尝试注释掉该行
// bic r0, r0, #0x0006 @ .............ca.
现在该功能永远不会阻塞,但有时开发板仍然不会立即重新启动。目前,我们仍在寻找见解和建议。感谢大家阅读。
最佳答案
如果您在内核中启用CONFIG_PRINTK_TIME
,dmesg
将在日志之前打印时间(以秒为单位)。这使您能够搜索行之间的时间间隔,也许您能够找到导致此问题的原因。
如果您发现问题确实存在于内核中,则可能您可以启用一些CONFIG_DEBUG_*
配置项或在驱动程序中定义CONFIG_DEBUG
来获取更多信息。否则,printk
将是您拥有的最好的。
此外,查看以下内核配置:
CONFIG_DEBUG_LL
CONFIG_DEBUG_IMX_UART
CONFIG_DEBUG_IMX6Q_UART
CONFIG_EARLY_PRINTK
CONFIG_EARLY_PRINTK_DIRECT
要完整:您可以使用 logcat
查看某些初始化是否延迟了启动。如果您的公司构建硬件,我认为查看芯片在示波器上的作用是值得的(因为我不会立即认为 Linux 正在延迟启动),但在您确定多个板具有同样的问题。
我对您会发现什么很感兴趣。让我(我们)更新 ;-)
关于linux-kernel - AOSP内核调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58136345/
我正在 AOSP 4.0.4 分支上工作,并为 PandaBoard 平台做一些定制。我查看了用于构建 Android 文件系统镜像的 ARM 交叉工具链,我看到了 2 个主要变体。 arm-eabi
有什么方法可以阻止用户在自定义 android 操作系统中安装来自未知来源的应用程序? 我正在尝试使用 AOSP 源创建 Android 操作系统的自定义变体,在其中我希望允许用户仅安装来自我在构建期
如何在 AOSP 构建中查看详细的编译命令? ndk-build 提供 V=1 选项。从源代码构建怎么样?我可以输入类似于 的内容吗 . build/envsetup.sh lunch make li
在完全配置 AOSP 之后。我尝试使用 make -j4 构建它。但是我收到以下错误: ============================================ PLATFORM_
我是 Android retrofit 的新手,我想知道如何在不修改我自己的设备(摩托罗拉 Moto G 2014)的情况下构建 AOSP。 我已经阅读了 Google 指南,但它仅显示了如何为 Ne
我正在为 Android 8.1 版构建 AOSP,我想实现自己的应用商店,因此需要将 apk 安装到系统上。 到目前为止,我看到的唯一方法是使用如下内容: val intent = Intent(I
由于 Android studio 3.5 未检测到系统镜像,我正在尝试构建汽车模拟器。我已经在 Android 8 和 9 中尝试过并下载了所有工具。如何在 AOSP 中构建汽车模拟器? 最佳答案
我有一个 AOSP 5.1 - 在我的 Allwinner A33 设备上构建。 长按“电源按钮”时,设备会启动“关机”程序。它显示了一个对话框“关闭电源”以及一个微调器(见屏幕截图)。这会持续约 3
我正在从 AOSP 源代码构建自定义 rom 我首先决定通过下载并导入到 Android Studio 来从 AOSP 源代码树编辑一些 AOSP 应用 我选择了 ExactCalculator 进行
我正在尝试在 Mac OS 上使用 make -jN 构建 aosp,但它以下一个错误结束: required: BlockingQueue found: BlockingQueue N
我可以成功下载并构建 Android 操作系统源代码,并且操作系统镜像运行良好。 操作系统使用“build/target/product/security”下的平台证书进行签名,我使用相同的证书对我的
我已经从 source.android.com 下载了 Android 源代码并构建了它,并且能够在模拟器上成功运行它。 现在我想为 Android 添加新的系统服务。考虑到这是我第一次这样做,我对构
根据安卓指南: 1. 下载仓库 2. repo 初始化 3. repo 同步 我在磁盘中得到了Android 7.1.1的源代码 午餐组合时出现问题 You're building on Darwin
我正在阅读 Android 开源项目中的代码,我看到方法名称具有有趣的结尾,如下所示:addSharedUserLPw()(在 com.android.server.pm.Settings 中)ins
这是与 device-node-access-permissions-in-linux 类似的帖子6年前没有答案。 我在 /dev/magic-i2c 使用 misc_register() 创建了一个
首先,我是 Android 构建的新手,只想从简单的东西开始,所以我想按照索尼关于如何为解锁设备构建 AOSP 的指南为我的 Xperia X (F5121) 构建 AOSP 8.0。 因此,要开始构
我正在为类似平板电脑的设备构建 Android AOSP 6 (Marshmallow),该设备是永久安装的(例如工业部署)并且没有电池。但是,当我给它通电时,它会显示充电指示灯和 0% 的电量读数。
我已经下载了 Lollipop 5.0 的 AOSP 源代码。在 API 级别 21 中,在蓝牙低功耗扫描设置下,有三个用于扫描蓝牙设备的选项 - SCAN_MODE_BALANCED、SCAN_MO
为了熟悉 AOSP,我打算按照 official documentation 构建图像并在模拟器上运行它。 . 设置 Ubuntu 16.04 VM 后,我使用以下命令: repo init -u h
我正在 build AOSP 4.2 Jelly Bean .当我构建默认值时一切正常 full-eng配置并在模拟器上运行。 我需要构建自定义设备并运行它(在 emulator 上 - 用于测试它是
我是一名优秀的程序员,十分优秀!