ShuangChenYue ShuangChenYue
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
  • 嵌入式基础知识——存储器
  • 如何高效阅读嵌入式项目代码
    • 1. 了解项目整体架构
    • 2. 熟悉通信部分代码
    • 3. 阅读主业务模块
    • 4. 了解单元测试测试用例
    • 5. 实践、分析日志
  • 闪存存储和制造技术概述
  • 芯片 IO 驱动力
  • ARM处理器
  • Nand Flash
  • 主流先进封装技术介绍
  • 闪存
霜晨月
2024-06-03
目录

如何高效阅读嵌入式项目代码

# 如何高效阅读嵌入式项目代码

# 1. 了解项目整体架构

在阅读嵌入式代码之前,我们需要对项目整体架构有一个基本的了解。

公司里的项目,一般在做项目之前,都会进行系统设计、编写一些文档、画一些系统框图。可以先找这些项目资料看一看。

虽然我们后面可能只是负责某个模块,但是还是很有必要先了解这个项目的总体框架。

了解清楚整个项目有有哪些硬件模块、哪些软件模块、有哪些组件、各个模块之间的输入输出、各个模块是如何协同工作、项目的主体业务是什么、主要功能有哪些等。

嵌入式代码通常可以分解为几个关键模块,例如任务管理、内存管理、通信协议等。将各个模块分离出来,逐一阅读和理解,可以更加清晰地掌握代码的核心思想。

对项目整体架构有一定了解之后,有助于我们更好地理解代码中的逻辑。

# 2. 熟悉通信部分代码

项目里一般会划分多个硬件/软件模块,这些模块之间会进行数据交互。

梳理清楚:

  • 使用了哪些硬件通信接口?例如 I2C、SPI、UART 等。
  • 线程通信?
  • 进程间通信?
  • 网络通信?
  • 协议数据处理?
  • 各个模块的数据分类?

我们可以首先熟悉通信部分代码,梳理清楚各模块的交互。这一部分代码一般是比较容易看懂的,基本是看懂了一条数据之后,类似的基本就看懂了。基本看懂之后,可以跟着数据的流向,看看拿到这些数据之后,去做了什么处理。

因为你之后的工作,有可能是写这一部分代码。比如增加某个数据,要实现什么功能。

拿数据 + 做逻辑

# 3. 阅读主业务模块

业务逻辑模块直接跟产品功能挂钩,看懂这个模块就可以很好地了解我们产品的功能。

业务逻辑作为最上层的模块,可能有好几个模块都对其提供一些接口。

阅读这一块代码需要注意的是:

  • 每个功能具体的函数实现可能会嵌套好多层的代码,刚开始千万不要一层一层点进去阅读、不要试图看懂每个函数、每行代码,不然只会越看越懵。
  • 我们在阅读这个模块的代码时,尽量沿着这个模块的主线去阅读,沿着主线尽可能快地弄清这个模块做的事情,理解函数调用关系。等我们弄懂本模块之后,日后对其它模块感兴趣再去仔细阅读其具体实现也不迟。

# 4. 了解单元测试测试用例

一般项目里模块开发完成会编写一些单元测试用例进行自测。我们可以先不看单元测试模块是如何实现的,可以先看一些各个模块的测试用例,每个用例是如何跑的?输入?输出?

通过阅读这些测试用例,可以帮助我们快速地理解各个模块是如何触发的,以及一些接口的使用方法。

# 5. 实践、分析日志

对代码有了一定理解之后,肯定也会带有很多困惑,这时候可以自己修改代码/增加一些调试日志来帮我们理解代码,有在线调试条件的可以进行在线调试。

同时,我们需要大致熟悉项目整体的日志:

  • 熟悉日志的格式。带有时间戳?带有模块标签?日志等级?
  • 了解应用程序启动日志,通过日志了解启动做了哪些工作、经过了哪些流程。
  • 了解一些关键日志。主业务的日志?
  • 跑跑一些用例,看看对应的日志。

参考文章

https://mp.weixin.qq.com/s/NC3Puue7RFtTIzUQBbYcfQ

上次更新: 2024/6/3 14:54:44
嵌入式基础知识——存储器
闪存存储和制造技术概述

← 嵌入式基础知识——存储器 闪存存储和制造技术概述→

Theme by Vdoing | Copyright © 2023-2024 霜晨月
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式