温故而知新,再次读 《theCprogrammingLanguage》决定做一些笔记。
项目中有很多自定义结构体类型的数据需要保存,然后上位机在读取解析用。写了一堆自定义协议的序列化与反序列化代码,又臭又长,而且序列化的协议是 word 文档,也就是协议跟代码是分家的,既然都分家了,那么不一致就不稀奇了。
那么怎么解决这个问题呢,如果 word 协议可以被编解码程序识别那就完美了。protobuf-c 可以正好可以解决这个问题,当然 protobuf-c 还能解决客户端/服务器通信的问题。
讲讲 element 模块,element 模块是对 uint8 uint32 long size_t mem str ptr
等类型的封装,然后给所有自维护数据的容器使用。
uSPF(Micro Subscribe Publish Frame)是一个轻量级发布-订阅模式的框架,甚至没有 broker(代理),特别适合嵌入式应用。
can bus 相关知识记录。
为了在 MAC 电脑上搭建 Ubuntu 编译环境,用到了 docker 容器。其实虚拟机也可以,但是过于庞大。
记录 git submodule 在实际项目中的应用,以 uSPF 项目举例,uSPF 项目中包含了 ttlib_micro 项目。这么做的好处显而易见,保持了两个项目的独立,uSPF 项目又能很方便的拿到 ttlib_micro 项目的最新版本,同时也不影响 ttlib_mirco 在其他项目中的应用。
一个覆盖80%需求的Makefile模板。
rt-tests is a test suite, that contains programs to test various real time Linux features.
Linux 为何不是能做到硬实时,Linux系统一开始就被设计成GPOS(通用操作系统),它的目的是构建一个完整、稳定的开源操作系统,尽量缩短系统的平均响应时间,提高吞吐量,注重操作系统的整体功能需求,达到更好地平均性能。(在操作系统中,我们可以把吞吐量简单的理解为在单位时间内系统能够处理的事件总数)
因此在设计 Linux 的进程调度算法时主要考虑的是公平性,也就是说,调度器尽可能将可用的资源平均分配给所有需要处理器的进程,并保证每个进程都得以运行。但这个设计目标是和实时进程的需求背道而驰的,所以标准Linux并不提供强实时性。