我的笔记汇总(整理中)

前言

前期的笔记主要是学习为主。
近期的学习笔记主要为自己独立分析开源库源码为主。
技术日新月异,基础维稳。

很喜欢魅族的一句话:追求源于热爱

LVGL

【lvgl】01-lvgl移植之在linux上跑

网络应用

【网络】内网穿透方案&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】环境变量生命周期的操作方式

高效办公

vim命令

个人近期的胡思乱想

只是个人目标和计划。实时变动。

三个开源库分析

今年主要的源码分析有三个开源库:

  1. FreeRTOS:已初步完成。
  2. LWIP:已完成99%。(未整理发布)
  3. 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

很久没更新了,最近事情比较多,很多个人学习计划都停滞了。但也有一点点进度。

  1. 最近恢复openharmony零碎时间学习,已接项目,初步已完成,可跑,下一步适配接入更多子系统。
  2. 因为要在公司培训rtos,临时看来下其它RTOS,在linux上移植了threadX和RTThread,所以我的SDK上也会适配支持这两个RTOS。
  3. 我的SDK也没怎么写了,不过重构了编译架构,目前基本功能已完善:
  4. 数据结构(ringbuffer、链表)等基础组。(自实现)
  5. LOG库。(自实现)
  6. kernel(RTOS):已抽象出LZM SDK的特性接口。
  7. 网络功能:lwip。
  8. 安全:mbedtls。
  9. AT引擎:自实现,待验证。
  10. 还有lvgl UI库等等...
  11. 上述组件大部分都有自己的抽象接口,方便抽屉式替换。剩余的就是标准接口了,想lwip的socket。其它组件功能随时追加即可。
  12. 自实现的组件功能都按三层架构设计:南向适配接口层、功能核心层、北向API服务层。
  13. 驱动框架没有引入,时间问题,纠结自己写还是移植魔改其它开源库。
  14. 当然,以上这些都不是重点,也不是难点。重点难点是在编译架构,在学习并优化中。
posted @ 2022-08-06 14:35  李柱明  阅读(2005)  评论(6编辑  收藏  举报