6 猪哥-嵌入式

尚未进行身份认证

暂无相关简介

等级
TA的排名 4k+

buildroot的作用简单分析

buildroot 是linux平台下的一种构建嵌入式Linux系统的框架,这个工具在刚开始接触的时候,觉得有点懵? 这玩意儿能够构建系统内核、u-boot、根文件系统?太夸张了吧,后来经过使用发现,这个工具还真 可以,只不过实现的方式比较意外。Buildroot是由Makefile脚本和Kconfig配置文件构成的,对于构建内核、u-boot,它是 需要 写好脚本,从芯片厂家提供的下载链...

2020-03-30 22:24:47

理解CPU的 推挽、开漏输出以及应用场景

0- 概述在嵌入式CPU中,GPIO口都是可以设置成多种模式的,比如STM32的芯片 GPIO端口可以由软件配置成多种模式: 对于 输入模式和复用功能模式,都是比较容易理解的,但是 输出 推免输出和开漏输出,理解起来确实有些难度, 如果不理解这两种模式,那么对于这两种模式的应用场景,也是难以很好的理解的,接下来,我们就以STM32的 GPIO口的 结构为例,从电路的角...

2020-02-20 14:09:36

阿里云IOT C-SDK 源码分析系列(8): IOT_Linkkit_Report 分析

从函数名称上就可以知道,这个函数的主要功能是向云端发送消息,但是它的功能不仅仅如此,特别需要注意的就是,他还包含子设备登录/子设备退出功能。函数 原型如下:IOT_Linkkit_Report 原型int IOT_Linkkit_Report(int devid, iotx_linkkit_msg_type_t msg...

2020-02-08 21:09:49

阿里云IOT C-SDK 源码分析系列(7): IOT_Linkkit_Close 源码分析

该函数的功能是 关闭网络连接,并且释放Linkkit 的所有的占用资源。原型如下:IOT_Linkkit_Close原型int IOT_Linkkit_Close(int devid);接口说明若设备ID为主设备, 则关闭网络连接并释放Linkkit所有占用资源参数说明参数 数据类型 方向 说明devid int 输入 设备ID返回值说明值 说...

2020-02-08 20:48:51

阿里云IOT C-SDK 源码分析系列(6):IOT_Linkkit_Yield 用户 事件调度函数源码分析

在上一篇文章中,着重分析了 SDK的 核心调度线程yield,本文再简单的分析下用户 事件调度 API 接口函数,该函数 原型如下:IOT_Linkkit_Yield原型void IOT_Linkkit_Yield(int timeout_ms);接口说明若SDK占有独立线程, 该函数只将接收到的网络报文分发到用户的回调函数中, 否则表示将CPU交给SDK让其接收网络报文并将消息...

2020-02-08 19:28:45

阿里云IOT C-SDK 源码分析系列(5):重点理解SDK的核心调度线程 _iotx_cm_yield_thread_func

本文是 本系列的 最重要的 一篇,因为本文尝试着去揭示SDK本身的 工作内容,为什么要理解 SDK 的工作内容呢?因为SDK提供给开发者的是API接口函数,我们只是会简单的使用 这些API接口, 但是这些API接口的相关资料只有寥寥几句话, 相关的技术文档也非常少,作者的出发点可能是开发者快速的进行应用开发,不需要了解SDK本身的任何 实现机制,但是个人觉得,如果完全不了解 SDK的...

2020-02-08 17:18:08

阿里云IOT C-SDK 源码分析系列(4):IOT_MQTT_Construct 源码分析

IOT_MQTT_Construct 函数没有开放给 用户使用,它不是一个 API接口,但是对于移植者而言,尤其是关注 底层原理的,这个函数还是非常重要的,不管我们是采用 SDK自带的编译系统进行移植,还是采用“ 代码抽取”的方式进行移植,编写wrapper.c 中的HAL_xxx函数都是必不可少的, 尤其是TCP 连接、断开、读、写的HAL 接口函数,这些 都是具体的硬件层面的 接...

2020-02-08 16:35:04

阿里云IOT C-SDK 源码分析系列(3):IOT_Linkkit_Connect 接口源码分析

从字面意思也能看出 该函数是 设备 向 云服务器 发起连接的功能函数,但是“连接”功能知识它的主要功能,它还实现了一些其他的参数初始化,比如特别重要的 底层 HAL 接口函数的绑定。该函数 原型如下:IOT_Linkkit_Connect原型int IOT_Linkkit_Connect(int devid);接口说明对于主设备来说, 将会建立设备与云端的通信. 对于子设备...

2020-02-07 22:55:58

阿里云IOT C-SDK 源码分析系列(2):IOT_Linkkit_Open 接口源码分析

该函数是使用 IOT的SDK的 需要调用的 第一个 接口函数,该函数原型如下:IOT_Linkkit_Open原型int IOT_Linkkit_Open(iotx_linkkit_dev_type_t dev_type, iotx_linkkit_dev_meta_info_t *meta_info);接口说明初始化设备资源, 在对设备进行操作之前, 必须先调用此接口. 该接口...

2020-02-07 22:20:00

阿里云IOT C-SDK 源码分析系列(1):应用框架概述

在前面的文章:《阿里云IOT-C-SDK系列(1)概述:移植流程、程序框架、代码目录》《阿里云IOT-C-SDK系列(2)快速体验:移植+示例C代码》《阿里云IOT-C-SDK系列(2)快速体验:移植+示例C代码》《阿里云IOT-C-SDK系列(4)SDK配置选项理解》《阿里云IOT-C-SDK系列(5):进一步理解SDK的移植使用方式》 我们是从 移植、应用的角...

2020-02-07 20:39:43

freemodbus 从机 原理分析小结

在之前的文章《Freemodbus原理分析》,结合代码对 freemodbus 进行了分析,这里对 freemodbus机制做一下分析小结。freemodbus 的应用场景 主要是在 非linux下的 单片机系统,当然了,freemodbus 1.6 版本也开始支持了 linux,不过在linux下,如果不是一定要移植源码的话,个人觉得 libmodbus 相比 freemodus 还是...

2020-01-27 21:39:25

libmodbus源码分析(3)从机(服务端)功能源码分析

在上一篇文章《libmodbus源码分析(2)主机(客户端)功能源码分析》 从 主机的角度 分析了 源码,本文以 从机(服务器)的角度分析一下源码。同样的,我们以 modbus rtu 协议的 4x区保持寄存器功能进行举例说明。 我们简单的写一下 modbus rtu 下 响应客户端(主机)读4x 区保持寄存器的伪代码流程:int main(void){ modbu...

2020-01-27 14:23:00

libmodbus源码分析(2)主机(客户端)功能源码分析

在上一篇文章《libmodbus 源码分析(1)基本框架、关键数据结构、接口》中,分析了libmodbus的源码基本框架和关键的数据结构、接口,本文就分析一下 libmodbus 作为 主机(客户端)的功能源码实现,这里我们以 modbus rtu 协议 的读 4x 区保持寄存器功能 进行举例说明,我们简单的写一下 modbus rtu 下读 4x 区保持寄存器的 伪代码 流程:in...

2020-01-26 18:25:50

libmodbus 源码分析(1)基本框架、关键数据结构、接口

在之前的文章:《 libmodbus协议栈1——Linux下详细移植步骤(配置、生成) 》《 libmodbus协议栈2—— Linux下 modbus RTU master 开发案例 》《 libmodbus协议栈3—— Linux下 modbus RTU 从机 开发案例 》《 libmodbus协议栈4—— 总结 》 我们是从 应用的角度了解到了 libmodbus 的使...

2020-01-26 17:41:33

单向链表删除并清空操作 注意

在之前的文章《深入理解Linux内核之链表 list.h 功能实现原理、接口说明及示例代码》中详细的分析了链表的各种操作,我们经常使用的操作是“初始化”、“ 添加节点”、“遍历”、“删除”,对于链表节点的删除,使用的相对少,而且由于 删除操作的 宏函数 定义的复杂,容易混淆,本文基于此,对 链表的删除清空做下备忘录。以单向链表结构 为例,用到的宏函数有2个,分别为:/* * I...

2019-12-27 18:23:34

libev 笔记(三):libev的使用模型

上一篇《libev 笔记(二):事件驱动模型 在 稳定的网络服务器 程序中的应用》我们介绍了 事件驱动模型的作用,以及在网络服务器中应用,本文简单的说一下 libev 的 使用关键点。 libev 是一种高性能事件循环 / 事件驱动库。作为 libevent 的替代作品,由于其支持linux,而且其作者声称其相比libevent速度更快,代码更少,所以我们在嵌入式linux中采用...

2019-12-10 22:25:42

libev 笔记(二):事件驱动模型 在 稳定的网络服务器 程序中的应用

在前面的文章《libev 笔记(一):“事件驱动模型” 的 理解》 简单的介绍了 事件驱动模型的概念,但是文字概念毕竟理解起来稍微有点抽象,接下来从具体案例来一步步的分析,事件驱动模型 能解决什么问题,也就是怎么用。 本文 参考了顾锋磊 老师的 文章 《使用事件驱动模型实现高效稳定的网络服务器程序》,在此向作者致敬,写的确实不错。 libev 目前 最典型的应用场景可能就...

2019-12-10 22:08:32

libev 笔记(一):“事件驱动模型” 的 理解

libev 是 一种 “事件驱动”的编程框架,所谓“事件驱动”,简单地说就是就是 有什么动作(点按钮、中断),程序就执行什么操作(中断服务函数、回调函数),当然事件不仅限于用于的操作,只要是定义好的,各种突发、预设的各种将要发生的事情,都是事件。这里,我对CPU相对熟悉一些,可以把“事件驱动”理解为 自定义软件中断。这里我们举几个案例来分析:案例1: 状态机FSM 状态机是一...

2019-12-10 21:04:57

ID 值自动 “申请”和“释放” 算法及C代码 (2)

在上一篇文章《ID值自动申请和释放》中,简单的介绍下应用背景和C代码,不过上一篇中的代码 至适用于 “释放”一次,不支持多次释放,也就是说必须要释放1次后,下一次操作必须是重新申请,因为代码中没有 使用 “队列”操作,所以本文为了实现多次释放的功能,进一步改善了代码,引入了队列的思想,关于“队列”的概念,可以参考之前的文章《深入理解数据结构(一):队列 及 C代码框架》。下面就是具体的代码:#...

2019-11-03 19:42:51

ID 值自动 “申请”和“释放” 小算法及C代码

简单的说下题目中涉及到的 应用场景,在 开发 网关或一些组态软件的时候,我们一般是需要创建变量或者设备表的,还有就是对于数据库表中的 ID值,我们在对表中记录进行“增”、“删”操作时,也涉及到 ID值的 管理,这个具体体现为:(1)当我们新创建一个变量或一条记录时,希望ID值为最新的,而且是唯一的、递增的。(2)如果只有“增”操作,没有“减”操作,那就比较简单了,对id值进行 id...

2019-11-02 18:43:07

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。