# embedded **Repository Path**: leung-fung_0/embedded ## Basic Information - **Project Name**: embedded - **Description**: The repository for the book of Professional Embedded Software Development - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 16 - **Created**: 2024-03-05 - **Last Updated**: 2024-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # embedded 本项目是《[专业嵌入式软件开发:全面走向高质高效编程](https://detail.tmall.com/item.htm?id=781593108165)》(已重新上架可购买)这本书的配套代码,用于帮助读者成为高质效的程序员。 ![alt text](docs/Image/book.jpeg) 对于程序员来说,最好的学习方法是做中学,所以本项目的设计与实现充分考虑到了这一点。比如: - 为了讲清楚实时操作系统的原理,编写了一个可以在Linux上运行的操作系统ClearRTOS,从源代码级帮助读者掌握任务(task)、队列(queue)、信号量(semaphore)、互斥锁(mutex)、事件组(event group)、定时器(timer)等概念。 - 从包含工具和流程在内的工程方法论层面,示范了如何打造高质效的开发环境,通过无缝整合单元测试、静态分析、动态分析、性能分析等有助于提升工作质效的工具,帮助读者提升工作质效。 ## 如何编译 ### Linux 本项目可以在安装于64位的x86处理器上的Linux上直接编译和运行。值得强调的是,因为任务的调度实现包含了依赖处理器的汇编代码,目前只支持64位的x86处理器。即便如此,整个项目的构建系统与处理器是无关的,你可以基于自己的需要复用或定制。 编译选项有(请进到`build`、`buildv1`~`buildv5`中的任一目录中执行): - `make`或`make release` : 编译生成release版本(采用O2优化)的程序,生成的可执行文件位于`release`子目录中。 - `make debug` : 编译生成debug版本的程序,生成的可执行文件位于`debug`子目录中。 - `make unitest` : 编译单元测试程序,生成的可执行文件位于`unitest`子目录中。 - `make test` : 执行单元测试。 - `make creport` : 生成单元测试代码覆盖率报告。生成的报告位于`coverage`子目录中,用浏览器打开其中的`index.html`文件即可查看。 - `make dcheck` : 执行动态分析。 - `make dreport` : 生成动态分析报告。报告直接显示在控制台上,关注其中的Error数量即可。 - `make profile` : 执行性能分析,分析生成的数据可用`KCachegrind`工具查看。注意`KCachegrind`是一个开源的Linux上的可视化工具,可以查看性能分析结果。 - `make clean` : 清理编译生成的中间文件和可执行文件。 本项目依赖于Linux下的这些开源工具: - `make` : 项目的构建工具。 - `gcc` : 项目的C编译器。 - `g++` : 项目的C++编译器。 - `lcov` : 生成代码覆盖率报告的工具。 - `gdb` : 调试程序时需要用到。 - `valgrind` : 内存泄露检测工具。 - `kCachegrind` : 性能分析数据查看工具。 ### Windows 从Windows 10开始,Windows提供了全新的WSL(Windows Subsystem for Linux)功能,使得我们无需安装VirtualBox、VMware等虚拟机,就可以在Windows上直接运行Linux,从而本项目就可以直接在Linux中编译了。换句话说,你需要做的是在Windows上安装WSL以及Ubuntu,然后就可以在WSL上直接运行Linux。请参照[这个指引](https://learn.microsoft.com/zh-cn/windows/wsl/install)安装WSL。 对于《[专业嵌入式软件开发:全面走向高质高效编程](https://detail.tmall.com/item.htm?id=781593108165&spm=a1z0d.6639537/tb.1997196601.4.7b9b7484Z4LXrp)》的读者来说,需要特别注意。书中所带DVD(嗯,我知道现在大家都不再用DVD了)中的代码,是基于32位的x86处理器的,而本项目为了方便大家使用,对调度部分的代码进行了重写,使得直接能在64位的x86处理器上直接运行。这块代码的变化相对来讲很小,相信不会给你的学习带去大的困难。 如果你之前没有任何Linux方面的经验,安装WSL及Ubuntu这些步骤对你可能会有点困难,请通过搜索引擎查看其他的一些教程。不过基于我的经验,这些注意事项值得你关注: - WSL存在1和2两个版本,无论哪一个版本都可以满足本项目的需求。不过,要使用`KCachegrind`这个Linux工具查看性能的话,一定要安装WSL 2,因为WSL 2才支持Linux下的图形界面程序。 ## 目录说明 - `build` :包含工程构建相关的文件,比如最关键的Makefile。`buildv1`至`buildv5`展示了最终的构建系统的演进过程。 - `code` :包含源代码。 - `application` :包含应用层的代码。 - `framework` :包含框架层的代码。 - `platform` :包含平台层的代码。 - `tools` :包含项目自建工具链相关的代码。 - `docs` :放包含ABI规范、CPU指令手册等在内的各种文档。 - `test` : 包含单元测试框架和整个项目的单元测试代码。 - `cmocka` : cmocka单元测试框架。 - `application` : 包含应用层的单元测试代码。 - `framework` : 包含框架层的单元测试代码。 - `platform` : 包含平台层的单元测试代码。 - `tools` : 包含第三方工具链。 ## 联系作者 如果你碰到什么问题,可以开一个Issue让我跟进,或者通过微信公众号“至简李云”与我取得联系。