自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (3)
  • 收藏
  • 关注

原创 新手集合--嵌入式linux学习路线--三大阶段

微信公众号:二进制人生 专注于嵌入式linux开发。本文持续更新,第一版先面世,转发请保留出处:二进制人生。这个学习路线是遵照大多数人的认知规律来的,第一阶段1.1 C语言入门入门选一本简单的、薄一点、不要出错的书就可以了,例如谭浩强老爷子的书,选太厚的容易打击你的信心和学习兴趣,谭老爷子的书虽然被很多人喷,但对于初学者来说还是比较合适的。在入门之后才建议去看C语言的经典教程:《C Primer Plus》这本书比较厚,知识点比较全,可以用于查漏补缺。《C程序设计语言》(Th.

2020-07-30 23:26:21 6999 4

原创 linux下程序编译链接过程

微信公众号:二进制人生专注于嵌入式linux开发。更新:2020/05/20,内容整理自网络。文章目录1. 预处理2. 编译3. 汇编4. 链接在Linux下使用GCC将源码编译成可执行文件的过程可以分解为4个步骤,分别是预处理(Prepressing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。一个简单的hello word程序编译过程如下:1. 预处理首先源代码文件(.c/.cpp)和相关头文件(.h/.hpp)被预处理器cpp预编译成.i文件(.

2020-07-26 14:53:02 5638

原创 linux多线程变量自增问题分析

微信公众号:二进制人生专注于嵌入式linux开发。更新:2020/05/08,内容整理自网络。考虑变量i++的操作,实际上可以分解为以下3步:(1)从内存单元读入寄存器;(2)在寄存器中对变量做增量操作;(3)把新的值写回内存单元。如果两个线程试图几乎在同一时间对同一变量做增量操作而不进行同步的话,结果可能就不一致了,在上述代码中,我们传进线程函数的是变量的地址,那么变量i自增后,可能还没有写回内存单元,就被另一个线程读取了。好了,我们现在提出一个问题,假设一个全局变量a = 0,创建了.

2020-07-26 14:50:50 5583

原创 封装一个可靠的system函数

微信公众号:二进制人生专注于嵌入式linux开发。更新:2019/12/25在代码中执行Linux命令的这个需求在嵌入式开发中很常见,好在Linux已经提供了这样的系统函数:system()。初级工程师可能会直接拿来使用,但为了在该函数执行出问题时能够收集错误信息,我对这个函数进行了封装。/* 封装system系统函数,打印记录错误 */int My_System(const char *cmd){ int status = -1; char logbuf[128] = {0.

2020-07-26 14:43:06 5557

原创 C语言写一个漂亮的位图

微信公众号:二进制人生专注于嵌入式linux开发。更新:2019/12/25文章目录位图定义数据结构源码实现位图应用位图定义Bitmap翻译成中文就是位图。所谓bitmap,就是用每一位来表示一个事物的某种状态,由于只有一位,所以这个状态值只能是0或者1,很多个同类事物的状态就构成了一个状态位图。这个二值状态常用来表示存在或不存在,使用了或者没使用。举一个通俗的例子,开会签到,会有一个签到名单,哪个同学来了就在他名字后面打钩。在偷懒的时候可以用一个数组来表示同学的签到状态,为了节省空间,我用.

2020-07-26 14:38:36 5520

原创 unix和linux你所不知道的历史

微信公众号:二进制人生专注于嵌入式linux开发。更新:2019/12/14转载自:http://c.biancheng.net/view/707.html,排版作了优化,文章目录UNIX 的坎坷历史C语言的诞生AT&T和BSD的纠纷开源领袖斯托曼GNU简介历史Solaris 和 FreeBSDLinux 的那些往事UNIX与Linux的亲密关系总结一下 Linux 和 UNIX 的关系/区别UNIX/Linux系统结构Linux的发行版本UNIX 与 Linux 之间的关系是一个很有.

2020-07-26 14:35:44 5786

原创 什么是glibc

微信公众号:二进制人生专注于嵌入式linux开发。更新:2020/5/16,转载请注明出处。glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。在 GNU/Linux 系统中,用 glibc 作为系统的C函数库,是GNU/Linux演进的.

2020-07-26 11:30:42 5516

原创 用C写一个项目级动态数组

微信公众号:二进制人生专注于嵌入式linux开发。更新日期:2020/1/9,转载请注明出处。最近在收集轮子或者造轮子,意在写一个嵌入式linux通用库,包含常用的各种数据结构和接口。文章目录前言数据结构和接口实现创建销毁初始化去初始化获取元素插入元素测试代码前言本文动态数组的设计思想和代码搬自nginx。nginx是一款优秀的开源web服务器,其源代码100%由C编写。在百度上搜索一下nginx的市场份额,得到以下结果:这几年各大服务器的市场占有走势折线图:足见其地位。今天我们来.

2020-07-26 11:21:23 5449

原创 linux C写一个项目级别的线程池

微信公众号:二进制人生专注于嵌入式linux开发。更新日期:2020/1/19,转载请注明出处。愿你有所收获…快过年了,应该会停更一段时间,提前祝我的各位读者们新年快乐,2020年会有更好的发展!最近在收集轮子或者造轮子,意在写一个嵌入式linux通用库,包含常用的各种数据结构和接口。文章目录什么是线程池基本数据结构项目级封装什么是线程池线程池是一种高并发下常用的任务后台处理模型,主要是避免为短时间处理的任务进行频繁的线程创建和销毁,以及系统中过多的线程导致过度调度,而这些都.

2020-07-26 11:15:28 5355

原创 arm寄存器介绍

微信公众号:二进制人生专注于嵌入式linux开发。更新:2020/3/26,内容整理自网络。文章目录1.arm寄存器通用寄存器程序状态寄存器2.CPSR寄存器详解CPSR与CPSR_c的区别从事嵌入式arm开发,还是有必要了解下arm的寄存器。虽然现在不要求会写汇编,但是作为一个资深工程师,我们还是需要有读懂汇编代码的能力。分析内核代码,也少不了与汇编打交道,而汇编语言和平台架构紧密结合,基本都是在操作寄存器。我们今天来学习下arm寄存器。1.arm寄存器ARM 处理器一般共有 37 个寄.

2020-07-25 22:55:53 5368

原创 linux进入目录需要什么权限

>微信公众号:二进制人生专注于嵌入式linux开发。更新:2020/05/20,内容整理自网络。linux用户分类:1,文件和文件目录的所有者:u—User2,文件和文件目录的所有者所在的组的用户:g—Group3,其他用户:o—Others用a表示全部用户。文件访问权限的种类:“r”—-读权限 (4);“w”—-写权限 (2);“x”—-可执行权限(1);对于文件来说具有执行文件的权利:对于目录来说有进入目录的权利。“-“—-表示不具有该项权限,例如”-wx“表

2020-07-25 22:44:03 5428

原创 C语言隐式类型转换的陷井

微信公众号:二进制人生专注于嵌入式linux开发。更新:2020/05/21,转载请注明出处。隐式类型转换是C语言的一大诡异之处,语句或表达式通常应该只使用一种类型的变量和常量。然而,如果你混合使用类型,C使用一个规则集合来自动完成类型转换。这可能很方便,但也很危险。当出现在表达式里时,有符号和无符号的char和short类型都将自动被转换为int类型,在需要的情况下,将自动被转换为unsigned int(在short和int具有相同大小时)。这称为类型提升。提升在算数运算中通常不会有什么.

2020-07-25 22:39:56 5368 1

原创 C语言宏定义你所不知道的事

微信公众号:二进制人生专注于嵌入式linux开发。问题或建议,请发邮件至hjhvictory@163.com。更新日期:2020/1/24,内容整理自网络,转载请注明出处。文章目录规避语法错误什么时候使用宏定义规避语法错误众所周知,C语言支持宏定义,并且功能强大。举个例子:#include <stdio.h>#define swap(a,b) {int t=a;a=b;b=t;}int main(){ int x = 1, y = 2; swap(x, y); pri.

2020-07-25 22:36:58 5384

原创 结构体位域10大罪名

微信公众号:二进制人生专注于嵌入式linux开发。更新:2020/05/20,内容整理自网络。有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示.

2020-07-25 22:34:18 5375

原创 大话C语言函数指针

微信公众号:二进制人生专注于嵌入式linux开发,内容整理自网络。文章目录什么是函数指针如何定义函数指针如何用函数指针调用函数用typedef定义函数指针类型高级用法--将一块地址转为函数指针,并进行调用函数指针的实际应用--回调函数什么是函数指针如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。如何定义函.

2020-07-25 22:25:08 5373

原创 视频分享arm三级流水线机制

arm的三级流水线机制(汇编看透了一切系列视频3)

2020-07-23 23:41:47 5458

原创 b站视频分享C语言内存操作陷阱

C语言内存操作陷阱大总结

2020-07-23 23:37:21 5483

原创 b站视频分享经典死锁问题--linux C实现

死锁经典问题--哲学家就餐问题

2020-07-23 23:32:48 31

原创 b站视频分享值得学习的C语言开源项目于

C进阶之路--值得学习的C语言开源项目

2020-07-23 23:24:21 97

原创 嵌入式linux视频分享

嵌入式知识分享。

2020-07-23 08:08:44 39

原创 嵌入式linux知识分享视频(免费,持续更新)

西瓜视频:https://v.ixigua.com/JFppDsqB站:

2020-07-16 19:41:21 5566

HI3519AV100最新SDK smaple

海思最新SDK 程序 版本V2.0.1.0 最新

2019-03-29

RTP协议在嵌入式网络摄像机中的设计及实现.pdf

rtp,网络摄像头开发,描述了rtp推流,h264编码,v4l2视频流获取

2018-04-27

v4l2读取摄像头

v4l2读取摄像头,能在linux下编译,生成yuv文件,可以指定文件帧数

2018-01-30

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

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