自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 npm install 报错npm ERR code EMISSINGARG

在使用antv x6软件时,本地下载时出现下列的报错# npm install @antv/x6 --savenpm ERR! Linux 4.15.0-142-genericnpm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "@antv/x6" "--save"npm ERR! node v4.2.6npm ERR! npm v3.5.2npm ERR! code EMISSINGARGnpm ERR! t...

2021-12-14 17:35:48 4055 2

原创 STM32升级方法(一):IAP升级

此博客主要用于记录学习过程中的心得以及防止遗忘,下面的一些图片来源于网上,如有侵犯请联系。STM32芯片的升级方式众多,这里简单介绍下,主要有ICP((In-Circuit Programming – ICP)、ISP(In-System Programming)、IAP((In-Application Programming – IAP),定义和区别如下:ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已

2020-08-09 13:59:41 13154 4

原创 STM32f10x启动文件分析

虽然stm32f10x系列使用的都是M3的内核,但是不同芯片的外设也不一致。所以拿到芯片后需要根据具体的芯片来选择相应的启动文件和建立工程,这里并不是通用的。在新建工程的时候需要选择相应的芯片型号,只选择对应的型号就可以吗?当然不是啦!在芯片复位后会调用system_stm32f10x.c中的SystemInit等函数进行初始化。查看这个文件你会里面有很多条件编译,比如配置的时钟有为24M,有为72M的。所以咱们需要进行宏的定义。可以在代码中实现,也可以在魔术棒里面配置。这样的话就能编译和芯片相应的程序

2020-07-10 12:35:19 519

原创 STM32芯片命名规则

stm32的芯片命名规则如上,所以拿到一个芯片型号后咱们便可以知道这个芯片的很多信息,如flash的大小、引脚的数量以及内核是cortexM几的等等。有了这些信息咱们就可以把所有的引脚都归纳分类,根据实际的需求把需要使用的引脚找出来,并连接上相应的外设,这就是分配原理图IO,然后就可以画出原理图。在芯片中有数量众多的引脚,咱们怎么知道哪个引脚可用于USART、哪些引脚可用于ADC、哪些引脚可用于外部中断等等。由于stm32芯片的引脚功能都固定了,我们可以查看相应的数据手册的有关引脚部分的内容,即Pino.

2020-07-07 18:54:45 830

原创 USB总线简介(一)

USB(universal serial Bus)是一种“通用串行外部总线”。首先,USB是一种“总线”,它与计算机内部的总线(如PCI总线)不同,CPU不能通过访问内存指令或者I/O指令直接访问连接在USB上的设备,而要通过一个“USB控制器”,间接地与连接在USB上的设备打交道,USB总线存在于计算机的外部,所以说是外部总线。其次USB信号线一共只有两条,线上的信号是串行的,所以是“串行外部总线”。至于说“通用”,那是因为USB总线的设计从一开始就考虑到了许多不同种类的外部设备,只要带有USB接口(US

2020-07-07 09:32:19 6643

原创 USB设备驱动(一):简单分析USB设备驱动框架

在生活、工作中经常会接触到USB设备,如鼠标、键盘、摄像头、可移动硬盘、扫码枪等。这些设备通过USB接口连接到电脑上后,电脑会立刻提示“检测到新硬件...”、安装驱动等。这里需要强调下USB设备使用的是USB总线,window或Linux内核中都会自带usb总线驱动,所以接上USB设备后,主机能够立刻检测到,提醒需要安装设备驱动是指安装USB设备驱动。USB设备驱动使用USB总线,所以很多操作由USB总线驱动帮我们完成了,我们只需要的按照总线、设备、驱动框架来实现USB设备的驱动既可。USB设备数据的读

2020-07-05 18:00:50 1083

原创 编译busybox-1.7.0出现Makefile:405:*** mixed implicit and normal rules: deprecated syntax

编译busybox-1.7.0出错编译busybox-1.7.0出错busybox-1.7.0$make menuconfigMakefile:405:*** mixed implicit and normal rules: deprecated syntaxMakefile:1242:*** mixed implicit and normal rules: deprecated syntaxmake:*** No rule to make target ‘menuconfig’. Stop.

2020-06-01 11:36:27 1033

原创 iptable详解(非常系统的介绍)

从网上找的,非常详细的介绍了iptable。这里就不重复造轮子了http://www.zsythink.net/archives/tag/iptables/

2020-05-12 18:37:00 1077

转载 linux避免僵死进程方法总结

一、什么是僵死进程?一般情况下,程序调用exit(包括_exit和_Exit,它们的区别这里不做解释),它的绝大多数内存和相关的资源已经被内核释放掉,但是在进程表中这个进程项(entry)还保留着(进程ID,退出状态,占用的资源等等),你可能会问,为什么这么麻烦,直接释放完资源不就行了吗?这是因为有时它的父进程想了解它的退出状态。在子进程退出但还未被其父进程“收尸”之前,该子进程就是僵死进程,...

2020-04-23 12:04:37 205

转载 DDoS攻击--Syn_Flood攻击防护详解(TCP)

Syn_Flood概述Syn-Flood攻击是当前网络上最为常见的DDoS攻击,也是最为经典的拒绝服务攻击,它利用了TCP协议实现上的一个缺陷,通过向网络服务所在端口发送大量的伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队列被占满,从而阻止其他合法用户进行访问。这种攻击早在1996年就被发现,但...

2020-04-22 16:20:56 770

转载 SCTP协议详解

SCTP (Stream Control Transmission Protocol)是一种传输协议,在TCP/IP协议栈中所处的位置和TCP、UDP类似,兼有TCP/UDP两者特征。SCTP是可以确保数据传输的,和TCP类似,也是通过确认机制来实现的。和TCP不同的是:1. TCP是以字节为单位传...

2020-04-20 11:29:20 874

原创 Linux之socket编程:ioctl函数介绍(ifconfig例子)

ioctl函数一直作为那些不适合归入其他精细定义类别的特性的系统接口(即特殊的接口),POSIX一直致力拜托处于标准化过程中的特定功能的ioctl接口,如使用新的函数sockatmark函数取代SIOCATMARK,但是与网络相关并且依赖于实现的特性保留的ioctl请求为数依然不少,主要用于获取接口信息、访问路由表、访问ARP高速缓存等等。函数的原型如下,其中返回0表示成功,返回-1表示失败。r...

2020-04-15 12:44:37 4430

原创 Linux之socket编程:TCP/IP中各层的数据访问

在Linux中socket所提供的功能十分强大,可以访问各层的数据(网络接口层、IP层以及运输层)。在Linux之socket编程:网络基础中有讲解socket的用法。这里就不重复了。TCP/IP中,层与层之间是相互独立的,在Linux中可以直接通过设置不同的socket参数来实现各个层的数据读取以及操作。数据链路层访问在Linux下数据链路层的访问通常是通过编写内核驱动程序来实现的,在应用程...

2020-04-08 08:51:32 994

转载 ARP协议原理

文章目录引言初始ARPARP缓存表一句话总结ARP...

2020-04-07 09:09:38 244

原创 Linux之socket编程:编程注意事项(一)

之前讲述了Linux下的网络编程API以及地址处理等内容,这篇博客主要记录下一些细节问题。咱们知道Linux编程,网络进程是从缓冲中读取数据,那么其缓冲是怎么样的呢,是把接收到的数据存放在一个连续的内存中,还是按照分组的到达来存放的?在Linux中,网络接收到的数据是按分组来缓冲的。每个socket结构中有三个链表,即接收链表、发送链表、异常链表。这个三个链表上会存放对应的数据,并且是以分组(包...

2020-04-03 19:33:18 215

原创 Linux之socket编程:数据IO和复用

在Linux之socket编程:网络编程基础中介绍了socket编程中的一些框架函数。可以保证网络数据能够正常地到达用户,这篇博客主要讲解网络通信数据的交互,即网络数据的收发以及IO模型。网络通信中使用的IO函数网络通信中使用的IO函数主要有:recv()/send()、readv()/writev()、recvmsg()/sendmsg()、read()/write()、recvfrom()...

2020-04-01 18:29:51 400

原创 Linux之socket编程:网络编程基础

在Linux中,有一句非常流行的话:Linux中一切皆文件。确实如此,在Linux中各种设备都可以通过文件的方式来操作,外设的文件通常称为设备文件。而Linux中的网络通信也是通过操作网络文件描述符来实现的。在之前的博客《运输层简介》中咱们知道:互联网中的设备与设备间进行必须要知道双方的IP地址以及端口号。IP地址可以找到通信的主机,而端口号指出真正通信的进程。这就是常说的socket通信,so...

2020-03-31 20:29:54 394

转载 linux c 随机函数 rand srand 介绍

linux c 随机函数 rand srand 介绍 转载 ...

2020-03-30 11:40:01 730

转载 CSDN中如何转载别人的博客

...

2020-03-27 11:12:49 97

转载 linux中如何查看USB设备的信息,如使用的端口、IDproduct、IDvendor等等。

下面的信息都是在VMware中运行Ubuntu12...

2020-03-27 09:50:40 12014

转载 Linux中mount命令详解

参考https://blog.csdn.net/daydayup654/article/details/78788310里面写的很好,这里就不重复了。记录下来用于后期的查阅

2020-03-26 16:59:27 190

原创 Linux系统中udev详解

本文是参考网上很多资料整合在一起的,这里只是为了方便学习和记忆,没有别的目的。如有侵犯到版权,请及时联系。udev介绍udev是在Linux kernel2.6系列上新添加的设备文件管理模块。其功能主要为动态管理设备文件,如增加、删除等操作。当新插入的设备被驱动检测到后会在sysfs上注册新的数据(与此设备相关的一些信息文件)。同时内核会发送设备的uevent给udev,udev收到后便会访问...

2020-03-25 16:45:07 3800

原创 Linux中的存储命名

最近在做使用U盘和SD卡对设备进行系统升级时遇到了一些问题。不同的SD卡插入设备后挂载的目录名称不一致,并且在SD卡拔出后还存在挂载的目录。以及U盘插入后有时在/dev/目录下生成的是sda、有时还存在sda1,有时便为sdb等之类的。这里记录下来以便后续开发少经历些坑。在Linux系统中,平时插入U盘有时在/dev/目录中会显示sda、sda1、 sda2、 sdb、 sdc等之类的设备文件,那...

2020-03-24 21:18:14 793

原创 TCP协议补充

在前面的运输层简介中介绍了运输层中的UDP协议和TCP协议。TCP是面向连接的、可靠的通讯协议。TCP是通过什么机制来保证通讯质量、以及如何处理异常等都在这篇博文中进行介绍。其中TCP是通过自动重传(ARQ)、流量控制、拥塞控制等机制来保证其通信质量的。其中自动重传就是发送方在规定的时间内没有收到对方的确认信息,会重新传送之前的报文(没有收到确认的报文)。而流量控制便是发送端要根据接收方的接收窗...

2020-03-21 22:49:23 147

原创 万维网www简介

万维网WWW(world wide web)并非某种特殊的计算机网络,而是一个大规模、联机式的信息储藏所,英文简称web。万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取信息。...

2020-03-20 10:30:39 46542

原创 RTP协议简介

实时运输协议RTP(real-time Transport protocol)为实时应用提供端到端的运输,但不提供任何服务质量的保证。需要发送的多媒体数据块(音/视频)经过压缩编码处理后,发送等RTP封装成为RTP分组——>RTP分组装入运输层的UDP用户数据报——>向下递交给IP层——>然后交给数据链路层等处理。流程如下图:实际上,RTP是一个协议框架,它只包含了实时应用的...

2020-03-19 16:05:19 3095

原创 运输层简介

通过IP网络层的学习,我们知道IP协议能够把源主机A发送出来的分组按照首部中的目的地址,送交到目的主机B。那么,为什么还需要运输层呢?从IP层来说,通信的两端是两台 主机,即点对点通信。但是在计算机网络中真正通信的实体是主机中运行的进程,它们进行数据的交互。所以IP网络层只是把分组交付给了主机,而却没有交付给真正进行通信的进程,所以需要运输层来指出从网络中接收到的数据包该上交给那个进程。这就是常...

2020-02-26 21:12:01 887 1

原创 Makefile中的常用函数subst、foreach、wildcard、notdir、patsubst

Makefile中函数参数间以逗号分隔,函数名和参数间以空格分隔,是取值符号,是取值符号,是取值符号,val相当于获取val变量的值。subst函数的调用语法subst FROM, TO, TEXT 即将字符串TEXT中的子串FROM变为TO。列如(substdefconfig,,(subst _defconfig,,(substd​efconfig,,(b)),意思是将字符串$(b)中...

2020-02-25 08:10:45 650

原创 IP网络层

在第一章IP概述中提到了互连网是网络的网络,只有网络和网络相互连接,网络上的数据才能实现共享以及连通。咱们知道互连网是由很多网络连在一起组成的,那么用户发出的数据包怎样才能准确的到达目的地呢?这里就需要了解IP层的协议。IP层中的通信面向连接面向连接通讯方式指的是在双方通讯之前先建立连接(即在分组交换中建立一条虚拟电路),以预留双方通信所需的一切网络资源,双方通信就沿着已建立的虚拟电路发送...

2020-02-15 16:44:57 586

原创 网络接口层

本文参考《计算机网络》(第七版)谢希仁编著,博文仅供学习使用,用来记录笔记网络接口层包括数据链路层和物理层。物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用正是要尽可能地屏蔽掉这些传输媒体和通信手段的差异,使物理层上面的数据链路层感觉不到这些差异。物理层的主要任务是确定与传输媒体的接口有关的一些特性(机械特性、电气特性、功能特性、过程特性)...

2020-02-01 23:38:45 4304

原创 IP概述

本文参考《计算机网络》(第七版)谢希仁编著,博文仅供学习使用概述首先需要注意的是互联网和互连网以及网络的区别(这里并不是刻意的钻牛角尖,而是有些专有名词我们需要掌握好,在后续的陈述中才不至于对基本概念还模棱两可):计算机网络(网络)由若干结点和连接这些结点的链路组成。结点可以是计算机、集线器、交换机、路由器等,可以用一朵云表示一个网络。与网络相连的计算机常称为主机(host)。网络之间还可...

2020-02-01 16:30:58 917

原创 STM32中ADC简介

ADC(模拟信号转数字信号)在嵌入式中应用还是挺多的,很多传感器上面采集到的信号是模拟信号(常见的温度、光敏传感器),由于模拟信号不过形象,所以很多时候把它转换为便于识别的数值信号。M3中的ADC转换器是12位精度,多达18个通道(16个外部通道+2个内部信号源),各通道的A/D转换可以单次、连续、扫描或间断模式执行,并且每个通道可以单独设置采样时间,ADC转换的结果也可以左对齐或右对齐的方式存放...

2020-01-13 12:13:41 3128

原创 STM32中使用usart实现modbus RTU通讯

modbus介绍modbus简介modbus 协议是应用于电子控制器上的一种通用协议,它已经成为通用工业标准。只要遵循此协议,不同厂商生产的控制设备可以连成工业网络,进行集中控制。modbus协议能实现控制器互相之间、控制器经网络和设备之间进行通信。modbus协议是请求响应模式(应答),即控制器向设备发起访问请求,然后设备进行响应。 modbus协议也是主从通信,所以请求只能由主机发起,从设...

2020-01-09 21:12:46 14222 20

原创 STM32系统时钟简介

系统定时器SysTick系统定时器属于CM3的内核外设,而不是片上外设,即只要是使用CM3核的芯片都有这个功能。有关寄存器的定义和部分库函数都在core_CM3.h中定义和实现。定时器是用来计时的,与传统的软件模拟(while或for实现)计时相比,定时器在计时精度上有着明显的优势,并且还不占用CPU的资源,可以让CPU去处理别的事情。定时的原理:向重装载数值寄存器中写入需要定时的数值,然后配...

2019-12-31 14:10:08 1094

原创 STM32中断概述

NVIC介绍NVIC是嵌套中断控制器的英文简称,这个功能属于内核。STM32有8个系统异常和60个外部中断,绝大多数异常和中断的优先级都是可以编程的。有关系统异常和外部中断可在标准库stm32f10x.h这个头件查询。在IRQn_Type这个结构体里面包含了全部的异常声明。/** * @brief STM32F10x Interrupt Number Definition, accord...

2019-12-29 17:19:50 1095

原创 STM32标准库的介绍以及使用

初始STM32标准库因为基于cortex系列芯片采用的内核都是相同的,区别主要为核外的片上的差异(片上外设主要有芯片生产商来定)。这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同芯片厂商生产的cortex微控制器软件的兼容性问题,ARM与芯片厂商建立了CMSIS标准。CMSIS层位于硬件层和用户层之间,提供了与芯片生产商无关的硬件抽象层,提供软件接口,疲敝了硬件的差异。CMS...

2019-12-27 14:13:08 8594 1

原创 初步认识STM32的GPIO

STM32作为现在主流的单片机,在很多场所都能见到它的身影(这里我就不细说了,别搞得好像我是个推销员似的~~)。M3中绝大部分的引脚都是GPIO引脚(除了电源、晶振、boot、下载、复位外)。所以GPIO还是需要熟悉下,毕竟也是最基础的东西啦。GPIO是通用输入输出端口的简称,简单来说就是M3可以控制这个引脚为输入或者是输出。M3的GPIO引脚与外部设备连接起来,可以实现与外部设备通讯、控制以及...

2019-12-26 18:16:21 238

原创 汇编中的LDR,MOV,ADR指令的区别

在看BootLoader的第一个引导阶段时,细心的同学会发现代码中有使用mov r1,#0x3;ldr r0 ,=INTMSK;adr r0, _start指等令来获取一个值给指定的寄存器,那为什么要使用不同的指令来获取值呢,而不直接使用MOV指令呢? 解释前首先把这几个指令的功能简单的介绍下。MOV是一条数据传送指令 格式:MOV {< cond >} { s } < R...

2019-12-21 17:01:54 1597 1

原创 ARM指令集介绍

ARM指令介绍ARM 指令集是专门针对ARM体系架构使用的指令。在BootLoader引导的第一阶段以及内核的第一阶段都会有个使用汇编语言编写的head.S文件,在不跑操作系统的裸板中也有一段用来初始化开发板环境的汇编代码。所以无论是开发跑操作系统的板子,还是裸板开发,汇编语言都很有必要学习一番,最少要了解一些常用的汇编指令。ARM指令集可以分为以下六种跳转指令数据处理指令程序状态寄存...

2019-12-19 21:31:14 3583

原创 ARM概述(基于ARM体系结构与编程第一章)

ARM处理器是一种高性能、低成本、低功耗的嵌入式[^1]RISC,微处理器,由于具有上诉的这些特点,它目前已经成为应用最为广泛的嵌入式处理器。从事嵌入式行业很有必要对其进行系统的学习,深入了解芯片架构以及掌握其工作原理,对后续底层地学习(boot、内核、文件系统)有着很大的帮助,同时对于奇形怪状的bug也会有着更为准确的定位。要想设计出性能优良的系统更是不能不对ARM的架构不熟。...

2019-12-12 15:48:12 1355

空空如也

空空如也

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

TA关注的人

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