自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制

本文描述串口DMA收/发机制设计,及STM32串口DMA收/发实现。

2020-09-03 23:54:58 853 2

原创 一个NB-IoT/4G模组的AT拨号联网流程

在各类物联网应用中,NB或者4G网络是常见的通信介质,其最大的优势是可以借助现有的移动基站,无需额外建立基站,所以广泛应用在三表(水表、电能表、天然气表)无线抄表中。通常情况下,对于这类小流量的数据,是通过串口(UART)与NB或者4G模组通信,以AT指令的方式进行数据交互和命令控制。

2020-03-21 00:28:03 1160 0

原创 一个适用各类场合的Makefile模板

1.写在前面   对于Windows下开发,很多IDE都集成了编译器,如Visual Studio,提供了“一键编译”,编码完成后只需一个操作即可完成编译、链接、生成目标文件。Linux开发与Windows不同,Linux下一般用的的gcc/g++编译器,如果是开发ARM下的Linux程序,还...

2019-05-29 23:57:25 1911 0

原创 【组件】onewire(单总线)抽象

1.前言   onewire(单总线)是DALLAS公司推出的外围串行扩展总线技术总线,顾名思义,它是采用一根信号线进行通信,即传输时钟信号又传输数据,而且能够进行双向通信,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点。常用到单总线的器件,一般是稳定传感器、EEPR...

2018-07-22 15:04:11 5816 0

原创 【组件】spi抽象/硬件spi

1.写在前面 spi(Serial Peripheral Interface)即串行外设接口。与i2c一样,spi也常用外设设备通信的总线,从事嵌入式开发必不可少的掌握。根据本人以往的经历,对spi进行总结(主要是MCU范畴,Linux已有成熟的驱动设备),主要目的及实现: a)spi总线与s...

2018-01-07 23:09:16 8966 0

原创 【组件】通用环形缓冲区模块

写在前面 环形缓冲区是嵌入式应用(医疗电子、消费电子、工控)中常用的数据结构模型,如音视频流、通信总线数据收发等。一些操作系统、第三方库都提供现成的环形缓冲区接口API,性能和安全性都有保障,多线程访问互斥机制,空内存访问保护等。 1.基本原则 先进先出(FIFO),重复使用。 2.实现原...

2017-12-26 15:23:53 1369 0

原创 【组件】i2c抽象/模拟i2c

1.写在前面 i2c总线是由PHILIPS公司开发的一种简单、双向二线制同步串行总线。关于i2c的使用,并不陌生,C51、ARM、MSP430等,都基本集成硬件i2c,或者不集成i2c的,可以根据总线时序图使用普通IO口翻转模拟一根i2c总线。对于当下流行的stm32饱受诟病的硬件i2c,相信很...

2017-12-23 09:27:26 10421 1

原创 【代码质量】C/C++代码静态分析与常用分析软件工具

程序静态分析(Program static analysis)是指在不执行代码情况下, 通过词法分析、语法分析、语义分析、控制流、数据流分析等技术对源代码进行扫描。

2020-09-16 23:46:56 196 0

原创 【Linux应用编程】Linux编程中常见错误码含义及查询方式

本文描述linux程序开发中返回的错误码具体含义和查询方式。

2020-09-09 00:16:46 153 0

原创 数据结构回顾——几类线性表对比与总结

顺序表、单链表、双向链表、循环链表、静态链表等几类线性表,各自具有固有的特点、优缺点,决定其适用于不同的应用场景。

2020-08-27 20:30:23 57 0

原创 数据结构回顾——静态链表操作详解及C语言实现

使用静态数组表示的链表称为静态链表。静态链表综合了顺序表和链表的优点,既有高效的查找操作,又能快速增删元素节点。

2020-08-26 00:18:03 502 0

原创 数据结构回顾——循环链表操作详解及C语言实现

循环链表指的是一个链式表以一个环状的形式存在,即是链表头尾节点相连在一起。循环链表从任意节点开始,可以遍历整个链表,遍历灵活性高。

2020-08-21 21:17:14 62 0

原创 数据结构回顾——双向链表操作详解及C语言实现

双向链表属于链表的一种,支持双向遍历节点,效率比单链表高。

2020-08-19 00:26:54 51 0

原创 数据结构回顾——单链表操作详解及C语言实现

本文描述另一线性表【单链表】的插入、删除、查找操作及C语言实现。

2020-08-17 16:45:58 79 0

原创 数据结构回顾——顺序表操作详解及C语言实现

本文描述顺序表插入、删除、查找操作以及C语言的实现。

2020-08-15 23:53:47 66 0

原创 数据结构回顾——线性表概念(顺序表与链表的区别)

具有相同特性的数据元素组成的有限序列 称为线性表。线性表是最基本、最简单、使用最广的一种数据结构。

2020-08-14 23:57:29 65 0

原创 【Linux应用编程】framebuffer设备应用编程实例

帧缓冲设备(framebuffer device)是linux系统抽针对显示设备抽象出来的一个字符设备,向上为用户层提供统一的访问接口,向下屏蔽底层各类硬件显示设备的差异。

2020-08-09 00:29:07 166 1

原创 Linux系统“/dev/mem”设备使用详解(Hi3520D)
原力计划

“/dev/mem”是linux系统中内核所有物理地址空间全映像的一个虚拟字符设备,与mmap结合使用,用户态可以直接访问内核态物理地址空间。

2020-08-01 17:17:01 107 0

原创 嵌入式Linux下获取CPU温度方法

本文描述嵌入式linux下获取cpu温度的方法。

2020-07-31 00:21:23 311 0

原创 【Linux应用编程】基于UNIX域套接字的进程间通信
原力计划

用于本地进程间通信的套接字称为unix域套接字(unix domain socket)

2020-07-23 23:52:49 149 0

原创 【Linux驱动编程】向驱动传递参数
原力计划

linux内核提供驱动传参机制,编写驱动程序时实现传参接口,用户在加载驱动时传入指定参数,使得一个驱动程序更加灵活,向上可以适配复杂应用程序,向下兼容不同硬件设备。

2020-07-17 23:59:03 692 0

原创 【Tools】Linux串口设备调试技巧(sftty)

串口设备是linux系统中最基本的设备之一,在嵌入式linux开发中几乎是必不可少的。由于串口使用简单、广泛,除了使用一路串口作为调试终端输出外,还会使用串口作为外部设备的连接总线。

2020-07-14 23:55:14 1322 0

原创 【Linux网络编程】ioctl函数在网络编程中的应用(C语言实现一个ifconfig)
原力计划

linux系统用户态与内核态(包括设备、驱动)进行非数据流的相关控制信息交互,一般是通过ioctl函数实现。相同的,用户态与网络设备相关的控制信息也是通过ioctl实现。实质上,ifconfig、route底层最终是通过调用ioctl函数实现其功能的

2020-07-09 23:50:19 158 0

原创 RK3399—板端挂载NFS
原力计划

本文章描述firefly rk3399板端挂载nfs。

2020-07-05 22:22:02 226 0

原创 【音视频】V4L2摄像头应用编程
原力计划

V4L2全称是Video for Linux two(Video4Linux2),是V4L2改进衍生版本。V4L2是linux操作系统下的一个标注化的音频、视频设备驱动框架,向下屏蔽底层设备的差异,向上提供标准统一的访问接口,提高用户在音视频方面的应用开发效率。

2020-07-01 18:06:14 186 0

转载 C/C++log日志库比较

事实上,在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx)。C程序员都喜欢用自己的轮子。printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件。syslog是个系统级别的轮子,不过速度慢,而且功能比较单调。

2020-06-18 00:24:09 181 0

原创 【音视频】Ubuntu安装开源H.264标准编解码库x264
原力计划

本文主要描述在Ubuntu上安装开源视频编解码库x264。

2020-06-13 23:28:50 522 0

原创 【Tools】一个高效的BootLoader和App固件的合并方法
原力计划

嵌入式固件一般分为BootLoader固件和App固件,在发布固件的时候,我们期望是将BootLoader和App固件合并成为一个固件,这样在量产时只需烧录一次即可。

2020-06-12 22:41:41 274 0

原创 【代码调试】Linux coredump分析
原力计划

linux系统中某个进程突然崩溃终止,该从哪方面入手分析问题?

2020-06-11 22:19:58 221 0

原创 使用海思自带的i2c工具访问i2c设备

linux下开发i2c设备驱动,一般分为两个阶段,第一阶段是驱动实现,第二阶段是调试。驱动实现即是对i2c设备的正确访问,包括读、写、控制。而第二阶段,一般用于需要调整参数的i2c设备,如增益、亮度、灰度、补偿系数等;因为该类参数需与具体使用场合关联,需实时调整该类参数以满足最佳的状态何效果。对于...

2020-06-04 23:45:27 625 3

原创 【代码质量】如何使用Valgrind检测内存泄漏
原力计划

内存泄露一直是C/C++程序的棘手问题,致命但又隐晦,不易揪出来;工欲善其事必先利其器,借助Valgrind工具能够快速检测出内存泄露位置。

2020-06-03 12:27:00 203 0

原创 【代码调试】几个实用的Linux应用程序调试技巧
原力计划

Linux下执行某程序提示文件不存在,但文件确实存在,该怎么办?

2020-05-31 00:41:04 109 0

原创 【Linux应用编程】POSIX线程互斥与同步机制—消息队列
原力计划

消息队列可以用于多个进程(线程)间传递一定量的不固定长度的信息,以此达到交换数据的目的。

2020-05-29 00:16:56 151 0

原创 【Linux应用编程】POSIX线程互斥与同步机制—信号量
原力计划

POSIX信号量分为有名信号量和无名信号量;有名信号量用于进程同步,无名信号量用于线程同步;信号量典型应用于“生产者—消费者”模型中。

2020-05-27 17:15:53 97 0

原创 【Linux应用编程】POSIX线程互斥与同步机制—屏障
原力计划

与互斥锁、读写锁、自旋锁不同,屏障不是用来保护共享资源的,屏障是协调多个线程同步执行而使得某一线程进入等待状态的一种同步机制。

2020-05-26 16:11:45 99 0

原创 【Linux应用编程】POSIX线程互斥与同步机制—自旋锁
原力计划

自旋锁是一种轻量级的互斥锁,对于“极短加锁时间”的多线程互斥场景,自旋锁是理想的选择。

2020-05-25 21:44:03 104 0

原创 【Linux应用编程】POSIX线程互斥与同步机制—读写锁
原力计划

对于“读多写少”的多线程应用场景,应该选择使用读写锁互斥机制,而不是互斥锁。

2020-05-23 17:40:45 72 0

原创 【Linux应用编程】POSIX线程互斥与同步机制—条件变量
原力计划

条件变量为什么要和互斥锁一起使用?

2020-05-23 00:00:00 185 0

原创 【Linux应用编程】POSIX线程互斥与同步机制—互斥锁
原力计划

互斥锁是最简单的互斥机制,但使用起来一点都不简单。

2020-05-21 16:20:38 82 0

原创 【Linux应用编程】互斥与同步要点
原力计划

linux作为一个多用户多任务的操作系统,多个任务可能并行访问同一资源或者存在依赖先后顺序关系。

2020-05-19 17:09:52 105 0

提示
确定要删除当前文章?
取消 删除