自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IOT物联网小镇

专注于:Linux 操作系统、物联网等领域的嵌入式开发。

  • 博客(407)
  • 资源 (12)
  • 收藏
  • 关注

原创 比GDB更方便的代码调试工具:CGDB

CGDB 是GDB的前端,在终端窗口中意图形化的形式来调试代码(基于ncurse),非常方便。相对于GDB来说,可以很大的提高效率。这篇文章就来分享一下CGDB的最基本使用方法,如果是第一次听说,强烈建议您体验一下,一定会爱上它的!...

2022-08-07 21:28:44 3127 1

原创 不务正业,捣鼓了一个破网站,全过程记录

作为一个嵌入式软件开发者来说,搭一个网站有点是不务正业的。但是作为一名广义上的程序员,又经常对互联网领域的一些技术心生向往,于是就有了这个破网站。

2022-08-07 21:25:33 1044

原创 哨兵节点:思想简单,效果很棒的的编程算法

所谓的哨兵,就是一个标志,一个与查找目标对象一样的操作对象。

2022-06-12 21:52:35 721 1

原创 C语言:如何给全局变量起一个别名?

所谓的变量别名,就是通过通过不同的标识符,来表示同一个变量。我们知道,变量名称是给程序员使用的。

2022-06-12 21:51:10 1432

原创 一个测试记录:利用分段锁来处理并发情况下的资源竞争问题

文章目录问题描述测试代码测试1:不使用锁测试2:使用一把全局锁(大锁)测试3:使用分段锁测试结果测试代码简介别人的经验,我们的阶梯!在开发中经常遇到多个并发执行的线程,需要对同一个资源进行访问,也就是发生资源竞争。在这种场景中,一般的做法就是加锁,通过锁机制对临界区进行保护,以达到资源独占的目的。这篇文章主要描述的就是使用分段锁来解决这个问题,说起来很简单:就是把锁的粒度降低,以达到资源独占、最大程度避免竞争的目的。问题描述周末和朋友聊天说到最近的工作,他们有个项目,需要把之前的一个单片机程

2022-05-22 13:18:40 612 1

原创 【图片+代码】:GCC 链接过程中的【重定位】过程分析.md

文章目录示例代码sub.o 文件内容分析段信息符号表信息main.o 文件分析段信息符号表信息绝对寻址相对寻址重定位表信息可执行程序 main段信息符号表信息绝对地址重定位相对地址重定位总结别人的经验,我们的阶梯!最近因为项目上的需要,利用动态链接库来实现一个插件系统,顺便就复习了一下关于Linux中一些编译、链接相关的内容。在链接的过程中,符号重定位是比较麻烦的事情,特别是在动态链接的过程中,因为需要考虑到很多不同的情况。这篇文章作为第一篇,先来聊一聊静态链接中的重定位过程。按照惯例,还是以

2022-03-17 20:27:20 3605

原创 Linux驱动实践:中断处理中的【工作队列】 workqueue 是什么鬼?

文章目录工作队列的特点驱动程序示例代码全貌Makefile 文件编译、测试别人的经验,我们的阶梯!大家好,我是道哥,今天我为大伙儿解说的技术知识点是:【中断处理中的下半部分机制-工作队列】。在刚开始介绍中断处理的时候,曾经贴出下面这张图:图中描述了中断处理中的下半部分都有哪些机制,以及如何根据实际的业务场景、限制条件来进行选择。可以看出:这些不同的实现之间,有些是重复的,或者是相互取代的关系。也正因为此,它们之间的使用方式几乎是大同小异,至少是在API接口函数的使用方式上,从使用这的角度来看,

2022-01-10 20:39:12 1030

原创 Linux驱动实践:中断处理函数如何【发送信号】给应用层?

文章目录驱动程序示例代码全貌Makefile 文件编译、测试应用程序示例代码全貌编译、测试别人的经验,我们的阶梯!大家好,我是道哥,今天我为大伙儿解说的技术知识点是:【中断程序如何发送信号给应用层】。最近分享的几篇文章都比较基础,关于字符类设备的驱动程序,以及中断处理程序。也许在现代的项目是用不到这样的技术,但是万丈高楼平地起。只有明白了这些最基础的知识点之后,再去看那些进化出来的高级玩意,才会有一步一个脚印的获得感。如果缺少了这些基础的环节,很多深层次的东西,学起来就有点空中楼阁的感觉。就好

2022-01-10 20:37:49 3503

原创 Linux驱动实践:一起来梳理中断的前世今生(附代码)

文章目录Linux 中断的知识点梳理中断的分类中断号和中断向量中断服务例程 ISR中断处理的注册和注销 API实操:捕获键盘中断示例代码向驱动程序传参IO地址:IO端口和IO内存统一编制独立编址编译、验证别人的经验,我们的阶梯!大家好,我是道哥,今天我为大伙儿解说的技术知识点是:【Linux 中断的注册和处理】。在前两篇文章中,描述的是在应用层如何调用驱动函数来控制GPIO,以及在驱动中如何发送发送信号给应用层。假如存在这样一个需求:应用程序需要监控某个硬件GPIO口的电平状态,当发生变化时,应用程

2021-12-18 08:08:38 1097

原创 Linux驱动实践:驱动程序如何发送【信号】给应用程序?

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。关注下方公众号,回复【书籍】,获取 Linux、嵌入式领域经典书籍;回复【PDF】,获取所有原创文章( PDF 格式)。文章目录kill 命令和信号使用 kill 命令发送信号多线程中的信号信号注册和处理函数驱动程序代码示例:发送信号功能需求驱动程序驱动模块 Makefile编译驱动模块加载驱动模块应用程序代码示例:接收信号注册信号处理函数别人的经验,我们的阶梯!大家好,我是道哥,今天我为大伙儿解说的技术知识点是:【.

2021-12-15 08:08:52 1233 1

原创 Linux驱动实践:如何编写【 GPIO 】设备的驱动程序?

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。关注下方公众号,回复【书籍】,获取 Linux、嵌入式领域经典书籍;回复【PDF】,获取所有原创文章( PDF 格式)。文章目录示例程序目标编写驱动程序创建驱动目录和驱动程序创建 Makefile 文件编译驱动模块加载驱动模块设备节点应用程序卸载驱动模块别人的经验,我们的阶梯!大家好,我是道哥。在前几篇文章中,我们一块讨论了:在 Linux 系统中,编写字符设备驱动程序的基本框架,主要是从代码流程和 API 函数这.

2021-12-07 08:11:09 3075

原创 Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗?

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。关注下方公众号,回复【书籍】,获取 Linux、嵌入式领域经典书籍;回复【PDF】,获取所有原创文章( PDF 格式)。文章目录混乱的 API 函数旧的 API 函数新的 API 函数代码实操创建驱动目录和驱动程序创建 Makefile 文件编译驱动模块加载驱动模块应用程序卸载驱动模块小结自动在 /dev 目录下创建设备节点修改驱动程序代码下载别人的经验,我们的阶梯!大家好,我是道哥,今天我为大伙儿解说的技术知识点..

2021-11-19 08:19:36 1097

原创 Linux驱动实践:带你一步一步编译内核驱动程序

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。文章目录学习的困惑实践环境编译进内核创建驱动程序目录创建源文件创建 Kconfig 文件创建 Makefile 文件编译编译为驱动模块编译所有的驱动模块只编译 hello 这一个驱动模块验证一下资料下载别人的经验,我们的阶梯!大家好,我是道哥。今天给大家分享一些笔记本里的一些存货: Linux 系统中的驱动和中断相关。大概会用 6~7 篇的文章,由浅入深的为大家介绍Linux 中驱动程序的编写方法。文章的顺序,..

2021-11-17 08:16:58 1831 1

原创 【无源物联网】物联网的下一个风口?

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。关注下方公众号,回复【书籍】,获取 Linux、嵌入式领域经典书籍;回复【PDF】,获取所有原创文章( PDF 格式)。文章目录无源物联网现有的无源物联网设备从 蓝牙、4G、5G 信号中获取能量别人的经验,我们的阶梯!大家好,我是道哥。今天看到一则“旧闻”:以色列初创公司Wiliot融资 2 亿美元,将开发二代蓝牙IoT传感器:超低成本的蓝牙传感器。最大的亮点是:不需要提供电能,可以自动从周围环境中收集能量![.

2021-11-08 17:08:49 6574

原创 黑客级别的文章:把动态库的内存操作玩出了新花样

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。关注,回复【书籍】,获取 Linux、嵌入式领域经典书籍;回复【PDF】,获取所有原创文章( PDF 格式)。 目录 文章目录理论与实践开始新的动态库面临的问题怎么做?ELF概述ELF 文件头SHT(section header table)PHT(program header table)连接视图(Linking View)和执行视图(Execution View).dynamic section动态链接器(li.

2021-11-02 08:33:36 898

原创 多线程异步日志系统,高效、强悍的实现方式-双缓冲

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。 目录 文章目录单片机中常用的环形缓冲区多线程异步日志:双缓冲机制双缓冲机制为什么高效尽可能的降低 Lock 的时间参考代码可以继续优化的地方别人的经验,我们的阶梯!大家好,我是道哥,今天我为大伙儿解说的技术知识点是:【在多线程环境下,如何实现一个高效的日志系统】。在很久之前,曾经写过一篇文章《【最佳实践】生产者和消费者模式中的双缓冲技术》,讨论了:在一个产品级的日志系统中,如何利用双缓冲机制来解决生产者-消费.

2021-11-01 08:31:43 1328

原创 Linux从头学16:操作系统在加载应用程序时,是如何把【页目录和页表】当做普通物理页进行操作的?

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。 目录 文章目录问题描述处理器接收的是线性地址,不是物理地址对页目录进行操作一级查表:构造线性地址的前 10 位,来确定页表的物理地址二级查表:构造线性地址的中间 10 位,来确定“普通页”的物理地址三级查表:构造线性地址的最后 12 位,来确定页“普通页”的页内偏移量三个地址段合体对页表进行操作一级查表二级查表三级查表在 x86 系统中,内存管理中的分页机制是非常重要的,在Linux操作系统相关的各种书籍中,这部分内.

2021-10-19 09:04:16 784

原创 Linux从头学15:【页目录和页表】-理论 + 实例 + 图文的最完全、最接地气详解

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。文章目录页表的拆分过程页目录结构几个相关的寄存器加载用户程序时: 页目录、页表的分配和填充过程线性地址到物理地址的查找、计算实例在x86系统中,为了能够更加充分、灵活的使用物理内存,把物理内存按照4KB的单位进行分页。然后通过中间的映射表,把连续的虚拟内存空间,映射到离散的物理内存空间。映射表中的每一个表项,都指向一个物理页的开始地址。但是这样的映射表有一个明显的缺点:映射表自身也是需保存在物理内存中的。在 32.

2021-10-11 08:39:45 2608

原创 【分页机制】-看了这篇文章还没彻底搞懂?我自罚三杯!

目录 文章目录分段存储的坏处物理内存的管理映射表一个线性地址的寻址过程终于开始介绍分页机制了,作为一名 Linuxer,大名鼎鼎的分页机制必须要彻底搞懂!我就尽自己的最大努力,正确把我理解的分页机制,用图文形式彻底分解,希望对您有所帮助!一共分 3 篇文章:这篇文章主要介绍单映射表;下一篇介绍两级映射(页目录和页表);最后一篇介绍对映射表自身的操作。分段存储的坏处在之前的文章中,我们多次描写了一个段描述符的结构,其中就包括段的开始地址、界限和各种段的属性。经过分段处理单元的权限.

2021-09-30 08:35:58 823

原创 链接两个“名字完全一样”的【动态库】,你会怎么处理?

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。 目录 文章目录第一个动态库文件应用程序第二个动态库文件错误做法:直接给它改名正解:patchelf 工具One More Thing在Linux应用的开发过程中,直接利用现成的第三方库(俗称:轮子)来完成自己的业务功能,是很常见的事情。不知道你是否遇到这样的场景:应用程序中需要使用两个动态库里的不同功能的函数,但是这两个动态库的作者发生心灵感应了,居然起了完全一样的动态库名字,这该如何是好?具体来说面对的问题是..

2021-09-30 08:25:58 1512

原创 Linux从头学13:想彻底搞懂“系统调用”的底层原理?建议您别错过这篇【调用门】

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。 目录 文章目录门描述符调用门特权级检查规则调用门的使用过程安装调用门把调用门的选择子告诉用户程序用户程序通过调用门进入系统函数栈的切换在之前的文章中Linux从头学10:三级跳过程详解-从 bootloader 到 操作系统,再到应用程序,由于当时没有引入特权级的概念,用户程序和操作系统都工作在相同的特权级,因此可以直接通过[段选择子:偏移量] 的方式,来调用属于操作系统代码段中的函数,如下所示:用户程序head.

2021-09-22 08:17:08 900

原创 Linux从头学12:读完这篇【特权级】文章,你就比别人更“精通”操作系统!

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。【IOT物联网小镇】 目录 文章目录CPL:当前特权级DPL:描述符特权级RPL:请求者特权级特权级检查规则代码段的特权级检查数据段的特权级检查栈段的特权级检查x86 处理器中,提供了4个特权级别:0,1,2,3。数字越小,特权级别越高!一般来说,操作系统是的重要性、可靠性是最高的,需要运行在0 特权级;应用程序工作在最上层,来源广泛、可靠性最低,工作在3 特权级别。中间的1 和 2两个特权级别,一般很少使用.

2021-09-16 08:39:24 842

原创 Linux从头学11:理解了这三个概念,才能彻底理解任务管理和任务切换

作 者:道哥,10+年的嵌入式开发老兵。转 载:欢迎转载文章,转载需注明出处。文章目录LDT:局部描述符表TSS: 任务状态段TCB: 任务控制块x86 系统中的保护模式,给系统的安全性提供了很大的保障,但是在我们之前的文章中,一直都淡化了特权级别这个概念。例如:在保护模式下的段选择器,我们一直都只把它看做一个段描述符的"索引号",用来在 GDT (全局描述描述符表) 中查找一个段描述符,例如:图中:代码段寄存器中的索引号是 4 ,GDT 中每一个表项占用 4 个字节,于是就在偏移量为 .

2021-09-09 08:21:12 815

原创 Linux从头学10:三级跳过程详解-从 bootloader 到 操作系统,再到应用程序

作 者:道哥,10+年的嵌入式开发老兵。转 载:欢迎转载文章,转载需注明出处。文章目录bootloader 跳转到操作系统操作系统的 header 布局建立操作系统的三个段描述符操作系统跳转到应用程序应用程序调用操作系统中的函数不论是在 x86 平台上,还是在嵌入式平台上,系统的启动一般都经历了 bootloader 到 操作系统,再到应用程序,这样的三级跳过程。每一个相互交接的过程,都是我们学习的重点。这篇文章,我们仍然以 x86 平台为例,一起来看一下:从上电之后,系统是如何一步一步的.

2021-09-03 08:18:38 893

原创 Linux从头学09:x86 处理器如何进行-层层的内存保护?

作 者:道哥,10+年的嵌入式开发老兵。转 载:欢迎转载文章,转载需注明出处。文章目录实模式:bootloader 为程序计算段的基地址保护模式:bootloader 为自己创建段描述符确定 GDT 的地址创建代码段描述符创建数据段描述符创建栈段描述符段描述符是如何确保段的安全访问的?段寄存器高速缓存对段寄存器本身的保护对段界限的检查在上一篇文章中,我们已经顺利的从实模式,过渡到了保护模式。保护模式与实模式最本质的区别就是:保护模式使用了全局描述符表,用来保存每一个程序(bootloader.

2021-08-30 08:28:40 820

原创 Linux从头学08:Linux 是如何保护内核代码的?【从实模式到保护模式】

作 者:道哥,10+年的嵌入式开发老兵。转 载:欢迎转载文章,转载需注明出处。文章目录从 16 位进入到 32 位8086 的 16 位模式80386 的 32 位模式从实模式进入到保护模式如何进入保护模式GDT 全局描述符表GDTR 全局描述符表寄存器段描述符的查找原理在之前的 7 篇文章中,我们一直学习的是最原始的 8086 处理器中的最底层的基本原理,重点是内存的寻址方式。也就是:CPU 是如何通过[段地址:偏移地址],来对内存进行寻址的。不知道你是否发现了一个问题:所有的程序都可.

2021-08-25 21:32:56 991

原创 Linux从头学07:中断那么重要,它的本质到底是什么?

文章目录中断向量与中断描述符中断的分类内部中断外部中断中断号中断向量和中断处理程序中断向量的本质中断处理程序的安装中断现场的保护和恢复总结:中断的本质在软件开发中,中断是一个绕不开的重要话题,但是,不知道您是否遇到过这样的困惑:很多书籍、文章在介绍中断相关的知识点时,说的都挺有道理。这篇文章对中断的讲解很正确,那篇文章在描述中断的时候也挺对的,但是,这两篇文章中,怎么有些内容是矛盾的啊?!单独看任何一篇文章感觉都有道理,看的越多,反而越迷糊?好比在森林里迷路了,如果只有一个指南针,肯定能走出来。

2021-08-17 08:23:03 820

原创 Linux从头学06:16张结构图,彻底理解【代码重定位】的底层原理

作 者:道哥,10+年的嵌入式开发老兵。转 载:欢迎转载文章,转载需注明出处。文章目录程序的结构1. 程序头(Header)的描述信息2. 关于汇编地址bootloader 把程序从硬盘读取到内存1. 读取到内存中的什么位置?2. bootloader 设置数据段基地址3. bootloader 读取所有扇区4. 如果程序文件超过 64 KB 怎么办?代码重定位程序入口点重定位段表重定位跳转到程序的入口地址操作系统程序的执行在上一篇文章中Linux从头学05-系统启动过程中的几个神秘地址,你知.

2021-08-11 10:14:50 892

原创 Linux从头学05-系统启动过程中的几个神秘地址,你知道是什么意思吗?

作 者:道哥,10+年的嵌入式开发老兵。转 载:欢迎转载文章,转载需注明出处。文章目录0xFFFF:0x00000xF000:0xE05B0x0000:0x7C00在第一篇文章中,我们就提到,现代操作系统是从最古老的 8086 系统一步一步发展而来的。处理器厂商为了向后兼容,很多底层相关的原理都是一样的(如果不兼容,就会丢弃市场份额)。特别是从系统上电之后,一直到操作系统中第一个进程(Linux 下就是 init 进程)运行起来,这其中经历了 BIOS、引导程序、操作系统这三元大将的接力跑.

2021-08-03 09:37:49 1558

原创 所有编程语言中的栈操作,底层原理都在这里

作 者:道哥,10+年的嵌入式开发老兵。公众号:专注于:C/C++、Linux操作系统、应用程序设计、物联网、单片机和嵌入式开发等领域。转 载:欢迎转载文章,转载需注明出处。文章目录示例代码说明执行主程序初始状态执行代码前 5 句准备调用子程序1. call 的指令码和汇编代码2. 栈空间的数据调用子程序1. 寄存器的值2. 栈空间的数据子程序保护使用到的寄存器1. push bx2. push cx3. 计算字符串的长度4. 把字符串长度告诉主程序5. pop cx6. pop bx7. 返.

2021-07-30 08:28:02 922

原创 WSL2:Windows 亲生的 Linux 子系统

作 者:道哥,10+年的嵌入式开发老兵。公众号:【IOT物联网小镇】,专注于:C/C++、Linux操作系统、应用程序设计、物联网、单片机和嵌入式开发等领域。 公众号回复【书籍】,获取 Linux、嵌入式领域经典书籍。转 载:欢迎转载文章,转载需注明出处。文章目录安装 WSL2 的前提条件安装 WSL2安装桌面环境安装客户端配置 DISPLAY 环境变量安装服务端启动客户端中文支持在上一篇文章中,我们主要聊了一下:在 Windows 系统中,安装 WSL 子系统。文章在此:WSL:在 W.

2021-07-22 08:35:58 5080 6

原创 WSL2:在Windows系统中开发Linux程序的又一神器

作 者:道哥,10+年的嵌入式开发老兵。转 载:欢迎转载文章,转载需注明出处。文章目录什么是 WSL?什么是 WSL2?激活 WSL 服务安装 Ubuntu-18.04 操作系统通过 ssh 远程登录编译 Hello,World!作为一名嵌入式软件开发工程师,在 Linux 系统下写代码、编译、调试是避免不了的事情。但是很少有同学会直接拿一台 Linux 真机来作为工作平台,除非是那种利用远程服务器来编译的场景。更普遍的使用场景是:在一台 Windows/Mac 系统中,安装虚拟机,然后在.

2021-07-20 08:23:27 1352 1

原创 Linux从头学03:如何告诉 CPU,代码段、数据段、栈段在内存中什么位置?

作 者:道哥,10+年的嵌入式开发老兵。专注于:C/C++、Linux操作系统、应用程序设计、物联网、单片机和嵌入式开发等领域。 公众号回复【书籍】,获取 Linux、嵌入式领域经典书籍。转 载:欢迎转载文章,转载需注明出处。文章目录几个重要的段寄存器Linux 2.6 中的线性地址区间一个“完整”的 8086 汇编程序前两篇文章,我们一起学习了 8086 处理器中关于 CPU、内存的基本使用方式,重点对段寄存器和内存的寻址方式进行了介绍。可能有些小伙伴会对此不屑:现在都是多核的现代处理.

2021-07-15 08:15:11 1592

原创 Linux从头学02:x86中内存【段寻址】方式的来龙去脉

作 者:道哥,10+年的嵌入式开发老兵。公众号:【IOT物联网小镇】,专注于:C/C++、Linux操作系统、应用程序设计、物联网、单片机和嵌入式开发等领域。 公众号回复【书籍】,获取 Linux、嵌入式领域经典书籍。转 载:欢迎转载文章,转载需注明出处。文章目录什么是代码段?什么是数据段?数据的类型和长度寻址范围栈实模式和保护模式Linux 中的分段策略饭是一口一口的吃,计算机也是一步一步的发展,例如下面这张英特尔公司的 CPU 型号历史:为了利用性能越来越强悍的计算机,操作系统的..

2021-07-08 08:15:53 1402 3

原创 从程序员的角度,来拆解物联网系统中的开发工作

作 者:道哥,10+年的嵌入式开发老兵。公众号:【IOT物联网小镇】,专注于:C/C++、Linux操作系统、应用程序设计、物联网、单片机和嵌入式开发等领域。 公众号回复【书籍】,获取 Linux、嵌入式领域经典书籍。转 载:欢迎转载文章,转载需注明出处。文章目录物联网系统设备端的开发1. 不需要网关的设备2. 需要网关的设备3. WiFi 类设备物联网平台开发业务应用开发物联网的概念已经被炒了好多年了,奇怪的是:市场中对这个概念的反应总是不愠不火。随着5G 的迅速普及,不知道是否能够..

2021-07-02 08:23:40 935 2

原创 Linux 从头学 01:CPU 是如何执行一条指令的?

作 者:道哥,10+年的嵌入式开发老兵。公众号:【IOT物联网小镇】,专注于:C/C++、Linux操作系统、应用程序设计、物联网、单片机和嵌入式开发等领域。 公众号回复【书籍】,获取 Linux、嵌入式领域经典书籍。转 载:欢迎转载文章,转载需注明出处。文章目录【Linux 从头学】是什么古老的 Intel8086 处理器主存储器是什么?寄存器是什么?三个总线CPU 如何对内存进行寻址?我们是如何控制 CPU 的?CPU 执行指令流程【Linux 从头学】是什么这两年多以来,我的本职..

2021-07-02 08:22:43 2067 25

原创 一次脑残的记录: Linux 中实时任务调度与优先级

背景知识:Linux 调度策略关于进程的调度策略,不同的操作系统有不同的整体目标,因此调度算法也就各不相同。这需要根据进程的类型(计算密集型?IO密集型?)、优先级等因素来进行选择。对于 Linux x86 平台来说,一般采用的是 CFS:完全公平调度算法。之所以叫做完全公平,是因为操作系统以每个线程占用 CPU 的比率来进行动态的计算,操作系统希望每一个进程都能够平均的使用 CPU 这个资源,雨露均沾。我们在创建一个线程的时候,默认就是这个调度算法 SCHED_OTHER,默认的优...

2021-06-16 09:49:55 1513

原创 这 7 个 Linux 命令,你是怎么来使用的?

使用 Linux 系统的开发者,很多人都有自己喜欢的系统命令,下面这个几个命令令是我平常用的比较多的,分享一下。我不会教科书般的罗列每个指令的详细用法,只是把日常开发过程中的一些场景下,经常使用的命令常见用法进行演示。希望对您有小小的帮助~~也非常欢迎各位大侠,在留言区分享您的私房命令。No.1 grepgrep、awk、sed 这三个指令,作为 Linux 系统中文本处理的三大法宝,我最喜欢、最常用的就是 grep 指令,没有之一!它的基本用法是:grep [OPTIONS] PAT

2021-06-16 09:48:25 719

原创 物联网设备OTA软件升级之:完全升级和增量升级

各位看官好,上一篇文章我们聊了一下关于 OTA 升级过程中,新的软件包是如何从开发者的电脑上,安全的下载到嵌入式设备中的。这个流程似乎很简单,不就是下载一个文件而已嘛,怎么还值得写成一篇文章呢?[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QWaYx7hg-1622980367668)(iot601_xtda.png)]其实这不仅仅是下载文件这么简单,这其中涉及到如何对众多的终端设备进行批量升级的策略问题。如果你亲自在 AWS 的平台上操刀一次,就知道这其中有很多细.

2021-06-06 19:53:26 1878 2

原创 物联网设备OTA软件升级之:升级包下载过程之旅

OTA概述大家好,我是一个软件升级包。这几天呢,我将会进行一次神奇的网络之旅,从开发者的电脑中,一直跑到终端嵌入式设备中。大家都把我的这个旅游过程叫做 OTA,也就是在线升级。那么啥叫 OTA 呢?全称是:Over the Air Technology,其实就是通过网络来把一个新的软件包从服务器上下载下来,更新到设备上。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-30murUcG-1622980293850)(http://iottown.sewain100..

2021-06-06 19:52:32 1940 8

Stunnix-CXX-Obfus-4.7-Linux-trial.zip

这是用于C/C++源代码级别的混淆工具,不是二进制混淆。官网的下载特别特别慢,因此在这里提供一下,给需要的开发者。

2020-03-10

Git2.25.0.1.zip

Git2.25.0.1.zip是在 windows系统中使用的版本管控工具,在我们的开发过程中大部分是使用这个工具进行代码版本的管控。但是官网下载的速度太慢,所以在这里提供一下。

2020-02-04

cmake-3.15.6-win64-x64.msi

cmake-3.15.6-win64-x64.msi 是在windows下进行开发时大部分需要的构建工具,但是官网下载的太慢太慢,所以在这里提供一下,确认可用。

2020-02-04

CppPluginSample1.tgz

1. 实现原理。 因为工作需要使用C++插件的开发形式,于是调研了目前的实现方式和思路,本质上就是在一个插件管理模块,使用容器(map)存储所有注册的插件名称和构造函数。 注册的过程可以使用代码,也可以使用XML配置的方式。在应用程序需要某个插件对象的时候,直接通过传递插件的名称作为参数,从插件管理模块中获取一个创建好的插件对象。 2. 实例代码 我一共写了2个demo,这一个是按照上面的思路实现的,比较简单、基础。解压后,直接在命令行使用 make 一下就可以得到可执行文件。 另外一个demo过会再上传,本质原理是一样,但是没有使用插件管理模块,而是在每一个插件接口中,使用静态成员容器来保存实现了本接口的所有插件信息,当应用程序需要插件时,调用该插件实现的接口中的静态函数即可。

2019-09-20

ZWave实战入门-完全自己总结整理的基本知识

这是我自己在刚入门ZWAVE设备开发时,自己总结的文档,包括了ZWAVE最基本的知识。

2019-04-04

ZWave 700 系列 Z-Wave Roadmap 700 Series - Asia Forum_B2B_V3.pdf

这个PDF描述了在ZWave 700系列的产品的一些基本情况,已经路线图,很有参考价值。

2019-04-03

iOS开发指南:从零基础到App Store上架-第2章

iOS开发指南:从零基础到App Store上架 第2章 由于全新问题,只能分开传。

2014-09-14

iOS开发指南:从零基础到App Store上架-第一章

iOS开发指南:从零基础到App Store上架 第一章 由于权限问题,只能分开上传。

2014-09-14

在虚拟机中直接使用liveCD

在练习LFS的过程中,对各种依赖的版本需求和宿主机的版本要求,相关性是很大的。这里提供一个有效的步骤去使用兼容的虚拟机,将会大大提高LFS的创建流程。

2014-07-15

DL-LFS开始之前.txt

在练习LFS时,很多朋友遇到一些版本兼容的问题,而且这些问题是最能打击新手的自信心的,在开始LFS之前,了解一些相关的必要知识,将会避免很多问题。

2014-07-15

LFS-BOOK-6.3.pdf

非常详细、非常接底气的LFS参考资料,按照里面的提示流程走一遍,将会大大增强自己对linux操作系统的理解。

2014-07-15

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

TA关注的人

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