0%

前言

Android 进程在发生异常 Crash 时,debuggerd 会在 /data/tombstone 目录下生成对应的 tombstone 文件,保存该进程的基本信息、调用栈信息以及stack等。

阅读全文 »

基于Android P源码分析,深入理解Android 灯光系统框架。

前言

灯光系统相对比较简单,但涉及多种不同的灯光类型,包括背光灯、电池灯、呼吸灯等。

阅读全文 »

gcov

gcov 是 GNU 中的代码覆盖率测试工具,随着 GCC 版本发布,可以实现对 C/C++ 文件中代码和分支覆盖测试。具体包括下面的信息:

  • 统计每行代码的执行频率
  • 实际执行了哪些代码
  • 每段代码的执行时间
阅读全文 »

前言

在实际项目开发过程中,需要进行必要的单元测试,以保证代码开发阶段的功能性。这里简单介绍下 google 跨平台的c++单元测试框架 gtest。

阅读全文 »

基于Android P源码分析,深入理解Android GUI的框架。

前言

Android图像系统框架比较复杂,涉及WindowManager、SurfaceFlinger、ActivityManager、InputManager等模块。因为笔者此前从事过底层显示驱动相关工作,期望通过梳理Android显示系统的框架构建完整的知识体系。

阅读全文 »

基于Android P源码分析,加深对RefBase、sp、wp的理解。

前言

Android源码中存在大量C++代码,里面涉及智能指针的使用,除了标准库的std::shared_ptr和std::weak_ptr,还有sp/wp搭配RefBase通过强弱引用计数实现对c++对象回收机制的管理。

阅读全文 »

前言

本文记录总结了笔者曾经参与的sc770x项目,基于 Trace32 Simulator 定位系统稳定性问题,这是 Lauterbach 公司推出的一款嵌入式系统调试工具,支持多种 CPU 和 RTOS 调试,拥有很强的扩展性,支持CMM脚本扩展。

阅读全文 »

前言

在谈及 Android GUI 框架前,先从底层视角梳理一下显示的流程。在 Android 系统中,引入了状态栏、导航栏、壁纸和背景的图层概念,需要把这些图层进行 alpha blending 后显示。

在嵌入式 linux 系统下显示界面,可以直接操作 framebuffer 的内存;但 Android 应用并不能直接操作 framebuffer,应用需要借助 SurfaceFlinger。

SurfaceFlinger 通过 Gralloc HAL 向 ashmem 申请内存,供应用使用。同时使用 OpenGL 和 HardwareComposer 来合成 Surface。

阅读全文 »

前言

本系列文章以分享笔者以前的学习和工作内容为主,旨在查缺补漏,如有错误和不足之处,请读者不吝指正。

本文基于Android 4.4代码分析sc7731 lcd的基本流程。

显示系统

这里暂时以7710芯片手册为例,多媒体显示系统包含 LCDC 和 DISPC,其中 LCDC 仅支持 MCU 接口类型,支持 2 路显示;而 DISPC 同时支持 DBI 和 DPI 接口类型。

lcd

阅读全文 »

前言

此前的嵌入式项目开发过程中,因为硬件资源紧张,硬件工程师在进行原理图设计的时候没有使用芯片的串口,导致软件开发和调试极为困难。后来考虑使用USB CDC虚拟串口搭配命令行控制台进行调试,在gayhub上发现了这个开源的命令行控制项目 Terminal

阅读全文 »