我的笔记汇总(整理中)
前言
前期的笔记主要是学习为主。
近期的学习笔记主要为自己独立分析开源库源码为主。
技术日新月异,基础维稳。
很喜欢魅族的一句话:追求源于热爱。
LVGL
网络应用
【网络】内网穿透方案&FRP内网穿透实战(基础版)
【网络】安装Nginx笔记
【网络】个人博客网站搭建之Typecho(命令版)
lwip超全源码分析系列
【lwip】01-简介笔记
【lwip】02-三种编程接口
【lwip】03-内存管理
【lwip】04-网络数据包流向
【lwip】05-lwip内核框架剖析
【lwip】06-网络接口层分析
【lwip】07-链路层收发以太网数据帧源码分析
【lwip】08-ARP协议一图笔记及源码实现
【lwip】09-IPv4协议&超全源码实现分析
【lwip】10-ICMP协议&源码分析
【lwip】11-UDP协议&源码分析
【lwip】12-一文解决TCP原理
【lwip】13-TCP协议分析之源码篇
FreeRTOS源码分析教程系列
【freertos】001-linux环境准备
【freertos】002-posix模拟器设计与cortex m3异常处理
【freertos】003-任务基础知识
【freertos】004-任务在内核实现细节
【freertos】005-启动调度器分析
【freertos】006-任务切换实现细节
【freertos】007-系统节拍和系统延时管理实现细节
【freertos】008-内存管理及其实现细节
【freertos】009-任务控制及其实现细节
【freertos】010-消息队列概念及其实现细节
【freertos】011-信号量、互斥量及优先级继承机制源码分析
【freertos】012-事件标志概念和实现细节
【freertos】013-任务通知及其实现细节
数据结构&算法基础系列
【数据结构&算法】01-数据结构学习方法
【数据结构&算法】02-复杂度分析之执行效率和资源消耗
【数据结构&算法】03-复杂度分析之浅析最好、最坏、平均、均摊时间复杂度
【数据结构&算法】04-线性表
【数据结构&算法】05-线性表之数组
【数据结构&算法】06-链表类型及LRU算法
【数据结构&算法】07-链表技巧&参考源码
【数据结构&算法】08-栈概念&源码
【数据结构&算法】09-队列概念&参考源码
【数据结构&算法】10-串基础&KMP算法源码
【数据结构&算法】11-树基础&二叉树遍历
【数据结构&算法】12-线索二叉树
【数据结构&算法】13-赫夫曼树&赫夫曼编码
socket编程入门系列
该系列是我第一次接触网络协议栈相关工作时的入门笔记,适合小白入门通过socket编写一个简单的tcp客户端和服务器。
【网络编程】TCPIP_1_快速入门
【网络编程】TCPIP_2_套接字类型与协议设置
【网络编程】TCPIP_3_地址族与数据序列
【网络编程】TCPIP-4-I/O缓冲
【网络编程】TCPIP-5-UDP
【网络编程】TCPIP-6-TCP的半关闭
【网络编程】TCPIP-7-域名与网络地址
【网络编程】TCPIP-8-套接字的多种选项
【网络编程】TCPIP-小笔记集合
linux系统编程入门系列
【linux】系统编程-1-进程、管道和信号
【linux】系统编程-2-消息队列
【linux】系统编程-3-system-V IPC 信号量
【linux】系统编程-4-共享内存
【linux】系统编程-5-线程
【linux】系统编程-6-POSIX标准下的信号量与互斥锁
【linux】系统编程-7-网络编程
【linux】系统编程-8-Socket
linux驱动入门系列
【linux】驱动-1-环境准备
【linux】驱动-2-内核模块
【linux】驱动-3-字符设备驱动
【linux】驱动-4-LED芯片手册分析
【linux】驱动-5-驱动框架分层分离&实战
【linux】驱动-6-总线-设备-驱动
【linux】驱动-7-平台设备驱动
【linux】驱动-8-一文解决设备树
【linux】驱动-9-设备树插件
【linux】驱动-10-pinctrl子系统
【linux】驱动-11-gpio子系统
【linux】驱动-12-并发与竞态
【linux】驱动-13-阻塞与非阻塞
【linux】驱动-14-异步通知
【linux】驱动-15-定时器
协议栈散集
【TCP/IP】TCP详解笔记
【TCP/IP】TCP服务器并发处理&源码
散集笔记
【MCU】移植AT32库&FreeRTOS教程
【MCU】国民N32固件库移植
【linux】环境变量生命周期的操作方式
高效办公
个人近期的胡思乱想
只是个人目标和计划。实时变动。
三个开源库分析
今年主要的源码分析有三个开源库:
- FreeRTOS:已初步完成。
- LWIP:已完成99%。(未整理发布)
- MBEDTLS
- 大概率不像前面两个库一样写源码分析,不够时间,因为还有其它个人计划需要推进。
- 移植肯定会有。
- 这个开源库主要也就三部分:握手协议库、加密库、证书库。
软件架构
这部分也计划今年下半年开始,只是准备各个组件源码接口抽象。
依赖于个人微全栈项目而同步展开。
目的是把各个功能组件抽象化,同一接口,提取为库。方便以后工作和项目需要时直接提取或移植各个组件功能即可。
这个计划很早就有了,一直忙于工作和个人技术不到位而未能展开。
今年应该会先初步完成OS内核抽象、LOG抽象、文件系统抽象、MISC抽象、TCPIP协议栈抽象、加密库抽象等等。其实就是移植然后抽象化即可。
UI库
LVGL。先会用即可。
实际项目
还没想好要做啥,或者说啥都想做。
目前两个:
- 上linux的核心板。组好生产力就开始画图、打板。
- MCU设备,先上ESP32(第一次玩这个系列的MCU),不好玩再转回STM32或者其它国产32代替。
新增计划
其实要组装自己的技能,上面这些技术中,还缺了一个重点,就是编译。
编译原理要细究,是比较困难的,所以近期计划也只是会熟练使用即可。
就用cmake作为跳板。
其它
各种需要的技术熟练使用后,也会有着重深入研究的点,因为目标是T形发展。
广度是为了娱乐,深度是为了工作。
当前主要着重在架构、系统、协议栈、加密、编译。
20221106
已实现多种内网穿透;(找时间出教程)
已搭建个人博客网站;(找时间出教程)
已移植LVGL在LINUX环境下学习、调试;(找时间出教程)
个人IOT SDK构建:
- 上层架构已初步确定、调试环境已验证,正在填充各个组件。
- 驱动层:打算复刻linux内核驱动框架,尽量实现linux内核驱动和本sdk内核驱动尽可能通用(因为linux设备驱动资源丰富)(找时间复刻)
- 这个sdk将会总结本人这一两年的技术积累和新技术组合,作为一个长期目标来实现,近期不会出相关iot sdk相关教程。
目前推荐:可以看下华为IOT SDK的框架。
上述的坑,已经从0到1了,所以剩下只是时间完成。
近期也会接触下Harmony OS。如果好玩,也会出教程。
20221130
开源鸿蒙:
- 编译相关:了解了GN,Ninja基础,简单会用。hb工具会用,也能直接调试提供的py源码,方便查找编译问题。
- 架构相关:大概清除了整个OHOS的框架。
- LiteOS-M内核移植,南北向接口适配基本明白。LiteOS-A内核,直接移植整个产品+SOC方案即可,剩下就是驱动相关的适配。
- 鸿蒙驱动框架:会linux驱动的会比较容易上手,概念差不多。OHOS的HDF框架也使用HCS来描述硬件信息,类似设备树。
- OHOS可以学习的内容很多,各个子系统想搞透还需要大量时间来学习积累,目前个人才刚刚接触,前段笔记凌乱,近期不会分享。
- OHOS设备开发地址:https://www.openharmony.cn/docs/zh-cn/device-dev
20230528
很久没更新了,最近事情比较多,很多个人学习计划都停滞了。但也有一点点进度。
- 最近恢复openharmony零碎时间学习,已接项目,初步已完成,可跑,下一步适配接入更多子系统。
- 因为要在公司培训rtos,临时看来下其它RTOS,在linux上移植了threadX和RTThread,所以我的SDK上也会适配支持这两个RTOS。
- 我的SDK也没怎么写了,不过重构了编译架构,目前基本功能已完善:
- 数据结构(ringbuffer、链表)等基础组。(自实现)
- LOG库。(自实现)
- kernel(RTOS):已抽象出LZM SDK的特性接口。
- 网络功能:lwip。
- 安全:mbedtls。
- AT引擎:自实现,待验证。
- 还有lvgl UI库等等...
- 上述组件大部分都有自己的抽象接口,方便抽屉式替换。剩余的就是标准接口了,想lwip的socket。其它组件功能随时追加即可。
- 自实现的组件功能都按三层架构设计:南向适配接口层、功能核心层、北向API服务层。
- 驱动框架没有引入,时间问题,纠结自己写还是移植魔改其它开源库。
- 当然,以上这些都不是重点,也不是难点。重点难点是在编译架构,在学习并优化中。