随笔分类 - 嵌入式
大分类
摘要:前言 lichee_nano 主控芯片为全志 FC1001S。 本笔记暂时以 lichee nano 为例子,以后可能会直接适配各类 FC1001S 的板子。 注意:使用 lichee nano 板子和 lichee 提供的镜像时,需要注意这个板子的 flash 芯片型号,必要时需要修改驱动。 李柱
阅读全文
摘要:前言 注意:本笔记发布时可能忘记补充查看dump方法,可使用TRACE32来查看dump时的各个任务信息,方便分析。 李柱明博客:https://www.cnblogs.com/lizhuming/p/15487221.html 任务堆栈 在 FreeRTOS 中,每个任务都拥有自己的堆栈,该堆栈的
阅读全文
摘要:前言 以下 RTOS 是基于 FreeRTOS 源码分析。 建议直接看源码去了解。 李柱明博客:https://www.cnblogs.com/lizhuming/p/15487239.html IPC 本人认为在学习 RTOS 任务间通信时必须了解的一个结构体就是 struct QueueDefi
阅读全文
摘要:前言 15. 定时器 本章内容为驱动基石之一。 驱动只提供功能,不提供策略。 原文:https://www.cnblogs.com/lizhuming/p/14922233.html 参考源码路径:include\linux\timer.h 参考例子就明白如何使用了。 15.1 内核函数汇总 KER
阅读全文
摘要:前言 14. 异步通知 本章内容为驱动基石之一。 驱动只提供功能,不提供策略。 阻塞与非阻塞是 APP 询问 驱动设备。 异步通知是 驱动设备 主动通知 APP。 原文:https://www.cnblogs.com/lizhuming/p/14918049.html 14.1 异步通知的一些概念
阅读全文
摘要:前言 本笔记记录 TCP/IP 中的 TCP 理论。包括三次握手、四次挥手、状态变迁、慢启动、快重传等等。 《TCP/IP详解》一共三卷,其中卷二、卷三更多偏重于编程细节,而卷一更多偏重于基础原理。 后面再发布个支持处理多线程并发及客户端数量限制的TCP服务端+TCP客户端例程。 原文:https:
阅读全文
摘要:前言 13. 阻塞与非阻塞 本章内容为驱动基石之一。 驱动只提供功能,不提供策略。 阻塞与非阻塞 都是应用程序主动访问的。从应用角度去解读阻塞与非阻塞。 原文:https://www.cnblogs.com/lizhuming/p/14912496.html 13.1 阻塞与非阻塞 阻塞: 指在执行
阅读全文
摘要:前言 内核驱动的并发&竟态很容易理解,其解决方法也不能,看看例程就可以了。 对于API,看看内核源码和内核文档即可。 原文链接:https://www.cnblogs.com/lizhuming/p/14907262.html 12. 并发&竞态 本章内容为驱动基石之一。 驱动只提供功能,不提供策略
阅读全文
摘要:前言 参考文档: 内核文档链接:https://www.kernel.org/doc/Documentation/ 内核源码doc:Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt 如在开发过程中遇到问题,建议可以查找内核源
阅读全文
摘要:前言 参考文档: 内核文档链接:https://www.kernel.org/doc/Documentation/ 内核源码doc:Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt 建议配合 GPIO 子系统使用。 建议,复
阅读全文
摘要:前言 建议:去原文链接观看,排版、观感便于学习。 链接: 本文原文链接:https://www.cnblogs.com/lizhuming/p/14627195.html 李柱明博客:https://www.cnblogs.com/lizhuming/ 参考:用到野火提供的工具脚本。 9. Linu
阅读全文
摘要:前言 参考 设备树 8. Linux设备树 Linux3.x 以后引入了设备树,用于描述一个硬件平台的板级细节。 8.1 设备树简介 设备树可以被 bootloader(uboot)传递到内核,内核从中获取设备树中的硬件信息。 设备树的两个特点: 一:以 树状结构 描述硬件资源。 二:设备树可以像头
阅读全文
摘要:前言 链接: 李柱明博客:https://www.cnblogs.com/lizhuming/ 区分设备驱动模型和平台设备驱动模型。 设备驱动模型 可以理解为 总线、设备、驱动。 平台设备驱动模型 就是那些 Linux 内核管理没有物理总线(即是不需要特殊时序控制的设备)(也是Linux内核没有自动
阅读全文
摘要:前言 参考: 李柱明博客 本文主要记录 linux 环境变量配置的生命周期。 如,修改环境变量 PATH 是手动指定还是临时生效或是永久生效。 1. 修改环境变量 1.1 手动指定 如 ARCH 和 CROSS_COMPILE: 直接在 make 命令后添加即可,如: lzm@lzm-machine
阅读全文
摘要:前言 6. 总线-设备-驱动 总线-设备-驱动 又称为 设备驱动模型。 6.1 概念 总线(bus):负责管理挂载对应总线的设备以及驱动; 设备(device):挂载在某个总线的物理设备; 驱动(driver):与特定设备相关的软件,负责初始化该设备以及提供一些操作该设备的操作方式; 类(class
阅读全文
摘要:前言 5. 分离分层 本章节记录实现LED驱动的大概步骤,且编程框架实现分离分层。 分离分层: 上层:系统 相关。如模块注册于注销。 下层:硬件操作。如提供 file_operations 。分离: 设备。提供板卡信息,如使用哪一个引脚。 驱动。引脚的具体操作。 以下以 LED 为例。 5.1 回顾
阅读全文
摘要:前言 参考: 《IMX6ULLRM(6ULL用户手册).pdf》 李柱明博客:https://www.cnblogs.com/lizhuming/ 本文链接:https://www.cnblogs.com/lizhuming/p/14588172.html 4. LED芯片手册分析 本章节记录实现L
阅读全文
摘要:前言 链接: 李柱明博客:https://www.cnblogs.com/lizhuming/ 本文链接:https://www.cnblogs.com/lizhuming/p/14584917.html 移植AT32库&FreeRTOS教程 由于大部分国产MCU移植固件库、RTOS源码都是差不多的
阅读全文
摘要:前言 随着全球晶圆缺货,ST疯狂涨价,也是时候把目光放到国产 MCU 上啦,感觉还不错,看 datasheet 的的数据来分析,性价比高,性能强。至于稳定性嘛,我没有长时间老化和细节地测试过,不做评论。 建议: 如果不想重新构建新的 AT 工程,就在你ST产品的工程上修改即可,主要替换ST库(与AT
阅读全文
摘要:前言 以野火i.M 6U为例 3. 字符设备驱动 需要明确的是模块和驱动是两回事。 本笔记开始记录驱动的相关知识。 3.1 Linux设备分类 Linux设备可分为三:字符设备、块设备和网络设备。 网络设备:是一种特殊设备,它并不存在于/dev下面,主要用于网络数据的收发。 Linux系统将设备分别
阅读全文