自定义博客皮肤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)
  • 资源 (2)
  • 收藏
  • 关注

原创 字符编码一(编码原理讲解)

实际上从GB系列编码(GB2312、GBK、GB18030)自身的设计,其设计了字符集,字符集有对应的编号,这个编号呢并不是像ASCII一样就是最终的编码,而是称它为区位码,区位码需要加一个固定值转换为机内码(或内码),这个机内码才是最终的编码(针对GBK而言他的编号并不是编码)。而在Unicode这样现代的、复杂的字符编码系统中,则必须区分字符编号与字符编码,字符编号不一定等于字符编码,字符编号与字符编码之间不一定是一个直接映射的关系,比如UTF-8、UTF-16为间接映射,而UTF-32则为直接映射。

2024-01-03 10:03:13 1093

原创 字符编码二(各类编码方式的发展、半角和全角)

包括GB2312、GBK、GB18030在内的GB系列编码方案(不包括GB13000,下同,不再赘述;GB13000编码方案下文有详解介绍),每扩展一次都完全保留之前版本的编码,所以每个新版本都向下兼容。

2024-01-03 09:58:27 1182

原创 关于W5500网卡使用过程的部分问题记录

某个项目中用到了W5500这种自带网络协议栈的网卡芯片,由于该项目开发时间很紧,就临时网上买了一些模块拼凑到了一套系统,经过验证果真这种拼积木的方法只能用在学生实验开发中,真不能拿来做工程应用,硬件太不稳定很容易掉坑。

2023-10-18 17:10:24 987

原创 Xilinx ZYNQ 7000学习笔记五(Xilinx SDK 烧写镜像文件)

前面几篇讲了ZYNQ7000的启动过程,包括BootRom和FSBL的代码逻辑,其中关于FSBL代码对启动模式为JTAG被动启动没有进行分析,本篇将通过将JTAG的功能和通过Xilinx SDK烧写镜像文件到flash来顺道把FSBL中的JTAG代码部分给讲解下。

2023-09-13 22:12:49 1207

原创 Xilinx ZYNQ 7000学习笔记四(MultiBoot多重启动)

在前面《Xilinx ZYNQ 7000学习笔记一(复位和启动)》一节中,简单介绍了BootRom的运行流程和什么是persistent registers (持续寄存器),在本节将对ZYNQ7000 MultiBoot多重启动实现进行讲解。MultiBoot多重启动实现是基于ZYNQ的MULTIBOOT_ADDR寄存器,可用用来实现加载冗余的底层镜像文件。

2023-09-13 19:49:38 1793

原创 Xilinx ZYNQ 7000学习笔记三(FSBL代码分析-C代码)

FSBL代码分析

2023-09-07 21:25:02 1562

原创 Xilinx ZYNQ 7000学习笔记三(小结)

而我们自己如果使用flash,由于使用的IO模式,实际的操作是由我们自己写的驱动管理的,和系统的内存映射没有什么关系,当然不受32M大小的限制。注意:只有在线性模式下才有最大32M地址空间的限制,也就是说zynq 7000最大加载的fabl+bit+应用得到的boot.bin最大不能超过32M,地址映射空间就是32M。负责对所有必要的读数据管理。换句个人理解,系统默认的是线性模式,但是我们作为flash使用者,如果要擦写flash必须配置为IO模式,由我们自己写的驱动操作实际的flash。

2023-09-06 18:28:08 727

原创 火箭参数相关知识

分享常用火箭坐标系、导航。制导、姿控相关知识

2023-04-10 19:13:31 9001 3

原创 浅谈操作系统调度器在单核和多核下任务的运行状态区别

对于实时操作系统调度器(这里说的是全系统只有一个调度器),在单核CPU下,操作系统保证的是最高优先级的就绪任务处于运行态;而对于多核CPU呢,多核下存在很多任务,但是调度器是只有一个 ,对于调度器来说,保证的是最高优先级的就绪任务属于运行态,但是对于其他核的正在运行的任务(也可能是很低优先级),其并未打断其运行,即多核状态下保证的是:最高优先级的就绪任务在所在核处于运行态,其他核的任务仍正常运行,这样也保证的真正的并行,而不是因为一个调度器就导致假并行了。

2023-03-06 10:17:05 453

原创 关于通过队列解决共享资源互斥或同步问题说明

通过队列实现无锁处理共享资源互斥同步问题

2023-02-20 17:11:31 254

原创 volatile 关键字的使用

关于volatile关键字

2023-02-18 01:04:33 896 2

原创 Xilinx ZYNQ 7000学习笔记三(qspi flash读写操作)

ZYNQ 7000系列flash控制器读写

2022-10-26 23:14:46 7282 1

原创 Linker Script链接脚本说明

链接文件相关知识

2022-09-20 18:26:43 565 1

原创 Xilinx ZYNQ 7000学习笔记二(FSBL代码分析启动-汇编代码)

Xilinx ZYNQ 7000学习笔记

2022-09-20 11:24:00 3426

原创 Xilinx ZYNQ 7000学习笔记一(复位和启动)

Xilinx ZYNQ 7000 复位和启动流程

2022-09-15 14:49:32 5822 3

原创 @符号的用法

代码中@符号有时候会在有些代码中遇到,其具体有什么作用呢?主要用法:限定作用,用来限定字符串,具体而言实际上就是表示字符串中的’‘字符不再认为是转义标志,而就是’'符号本身。常见的用法是如果我们写一个文件所处的路径:比如"D:\文本文件"路径下的一个test.txt文件,如果不加@符号写法如下:string file_path = “D:\文本文件\test.txt”;使用\来进行转义表示一个\符号。而使用@时就不再认为\为转义标志,表示就会简单(@在字符串前面):string file_path

2022-03-25 15:45:44 6147

原创 1553B总线介绍

一、 1553B诞生背景:1553B总线是MIL-STD-1553总线的简称,MIL-STD-1553总线是时分制命令/响应式多路复用数据总线。主要应用在海陆空等军事装备和航天领域。美国SAE A2K委员会在军方和工业界的支持下于1968年决定开发标准的信号多路传输系统,并于1973年公布了MIL-STD-1553标准,此标准的修订本于1978年公布,即MIL-STD-1553标准,1980年美国空军又对该标准作了局部修改和补充。我国于1987年颁布了相应的军标GJB289-87<<数字式时

2022-03-14 09:54:41 8565

原创 crc原理及c代码实现

一、概述关于crc的原理网上由很多了,讲的都比较详细。具体crc原理可参见https://www.cnblogs.com/esestt/archive/2007/08/09/848856.html。看来看去,关于代码实现部分网上都是互相拷贝,没有一个完整的crc实现,因此想着把所有crc8/16/32基于查表法的实现在该博客写下来,想着说一句crc你如果只是使用,只看我的代码就够了。万一发现有bug,上一句话当我没说…1.CRC与哪些配置有关关于crc,有5个配置项决定了crc的计算方式,他们分别是

2021-07-14 23:12:29 2395

转载 套接字中的select()函数接口介绍

此文为转发:https://www.cnblogs.com/xiehy/archive/2010/11/01/1866402.html套接字中的select()函数接口介绍   Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等 待某个事件的发生,如果事件没有发...

2021-01-06 20:24:38 1209

原创 Cache-应用(第二篇)

序:在调试某芯片内部flash时,发现当执行program或者erase后,发现程序实际正确得到了执行,但是读取时仍然获取到的是操作之前的数据。经调试发现是因为开启了cache的原因。下面就该问题进行分析。1.原因分析简单叙述该MCU内部与flash之间的内部框图如下:CPU对flash的读操作直接使用AHB总线通过flash controller实现对flash数据的读写,而cpu发送对flash的cmd指令比如program或者erase操作是借助APB总线实现,而cache是无法感知到对flas

2020-12-24 18:43:55 2566 1

原创 Cache-简介(第一篇)

概述一、Cache是什么1.1 时间局部性和空间局部性1.2 统一的I/Dcache和独立I/Dcache1.3 写通(write-through)cache 和写回(write-back)cache1.4 cache与内存的一致性问题CPU的运行速度是远远高于速度的,以当前嵌入式普遍使用的mcu来说,主频也普遍在几百Mhz,但是要知道使用的主存储器使用的动态存储器(DRAM)其速度在10Mhz左右。这样,如果指令和数据都存储在主存储器中,内存的速度会严重制约整个系统的性能。因此,为了解决内存速度低下,C

2020-12-24 18:43:16 3713 1

原创 详解USB控制传输

USB 控制传输一、USB控制传输1 传输过程1)建立过程2)数据过程3)状态过程二、示例1)建立过程2)数据过程3)状态过程usb的枚举过程是通过控制端点0使用控制传输方式来实现对usb 设备信息的获取和配置的,相对于其他传输方式,控制传输过程相对麻烦些,这里进行下说明。一、USB控制传输1 传输过程usb 控制传输分为三个过程,分别为建立过程、可选的数据过程、和状态过程。1)建立过程建立过程细分为3步,分别是 host 发送sendup token ,host发送8字节的控制指令的数据包,d

2020-12-08 17:30:21 1729

原创 USB host关于收到STALL处理

前言:stall 仅仅限于device 应答,而host端是不会发送stall握手包的。关于stall 包的场景,usb2.0 spec中有详细的说明。且收到stall后,软件必须做出相应的处理才能使通信恢复正常。一级标题一、STALL包分类:参看usb2.0 spec,STALL包分为两类,一类是protocol STALL,一类是functional STALL。用通俗的话来说就是,当使用控制端点0时,对应的是使用的protocol STALL(虽然控制端点也可以作为functional STAL

2020-11-27 21:22:32 4135

原创 USB开发-USB基础知识

1.一个usb 控制器下最多挂载多少usb 设备?答:127个,这是由usb数据协议中设备地址位数决定的,地址位总共7bit,其中0地址是用来给未初始化设备使用的。2.SE0状态是如何定义的?答:se0 就是D+和D-都处于低电平的状态。注意SE0并没有要求D+/D-维持多久,是要在一个数据宽度上D+和D-都处于低电平该阶段就是SE0状态。而USB很多信号是基于SE0来实现特殊信号,比如复位信号就是SE0维持10ms以上就认定为复位信号, 在FULL/LOW speed设备上,包结束符EOP是维持大

2020-11-27 16:57:01 794

原创 USB开发-USB从启动到运行

序:最近在调USB驱动,使用的控制器是Candence USB2.0 High speed Contrller,这是一个支持otg的控制器,有感于usb庞大的知识体系,给同样陷于usb泥潭中的同学一点启发,USB在处理细节上会由于硬件和操作系统的不同,但是其大体的流程是一致的。由于个人对usb的学习也就两周,知识水平有限,难免有错欢迎拍砖交流,内容随心情更新!时间有限,这里不会涉及到一些基础概念的讲解。知识点1:就是一个支持otg的usb控制器端做host还是device除了软件支持外,是由ID线决定的

2020-11-22 00:40:23 1254 1

原创 STM32 XIP启动过程-RW和ZI数据搬移讲解

最近在RISC-V架构下基于某芯片实现XIP方式的flash代码启动,至少这部分代码对于我是可见的,联想到之前一直很困惑STM32的引导程序在哪里实现得将RW复制到RAM中,并RAM中初始化ZI的,写下自己的分享。以下仅针对stm32XIP模式,也就是flash启动进行讲解引导程序嵌入式上电后需要对需要对系统硬件和软件运行环境进行初始化,这些工作往往是由汇编语音编写的引导程序完成。引导程序是嵌入式系统上电后运行的第一段软件代码,对于嵌入式系统来说,引导程序非常关键。引导程序执行的操作依赖于开发的嵌入式系

2020-09-24 20:17:23 4281 1

原创 C语言中函数指针的主要应用场景

一个人C语言功底强不强,不是看他写的代码注释够不够全,代码逻辑够不够清晰,看下他对函数指针的理解和使用就可以了。我曾经被一家公司面试两次,两次面试的内容都有对函数指针的使用理解。函数指针的概念上很简单,无非也就是指针,专门指向函数而已。但是什么时候能用到它,用它可以带来什么好处,这就是考察个人的能力了,涉及到多方面。在哪些应用场合可以用到函数指针呢第一,软件分层设计:如果个人代码没有软件分层设计,而是一味堆砌,那么代码的扩展性、可读性、通用性必然比较差。我们上下层讲究的是"纵向依赖、横向独立",上层

2020-08-19 17:51:47 1914 1

原创 Lora SX1268使用

Lora SX1268使用1.常用命令1.1 lora模式指令:Lora/FSKcmd:SetPacketType(); //配置lora模式GetPacketType(); //返回配置模式1.2 lora模式下的参数配置:当处于lora模式下时,有四个参数需要设置,用来实现对链路预算、抗干扰、编码占用率、和数据速度的配置。参数有带宽(BW_L)、扩频因子SF、编码率(CR)、低速率优化(LDRO)cmd:SetPacketType()2.LORa帧格式Lora 使用了两种包格式

2020-08-17 15:08:10 5737

原创 Lora数据格式及部分术语说明

1.LORa帧格式Lora 使用了两种包格式,显性和隐形显示。这显性包包含了包括编码率、crc在内的一个短的头部。1.1前导码前导码,用于同步接收端信号检测。接收端周期性的检查接收前导码,所以发送端的前导码应当配置成同一的长度。如果前导码长度不知道或者是变化的,那么这前导码的最大长度接收端应该配置。1.2显性模式显性下,前导码后是头部。包括a:Payload 的长度(Byte单位)b:编码率c:针对Payload域的可选的16-bit CRC1.3隐性模式没有头部字段。在这种模式下表,

2020-08-17 14:39:50 1935

原创 无线电极限传播距离计算

我们知道,地球是圆的,假设地球半径为R,发射端天线高度为Ht,接收端天线高度为Hr,那么如下图,在理想情况下直线传播可得到传播距离为d=3.57×(√Ht+√Hr) (Km)。但是在实际应用中,超过极限距离的地方也能收到较强信号,这种现象称为超视距传播,这样现象实际上只因为大气折射造成的,即实际的无线电传播也并非完全直线传播。超视距的传播距离为d=4.12×(√Ht+√Hr) (Km)。我们实际计算理论计算主要使用的是该公式获得极限传播距离。比如发射端天线的高度为2m,接收端天线高度为1m,那么

2020-08-14 10:50:52 9552

原创 无线物联网技术分类

2020-08-13 15:12:03 371

原创 射频基础知识和传输方程

一、射频基础1.波长和频率电磁波在空中的传输方程为 c = λf。 其中λ为电磁波波长,f为频率。也就是意味着,f越高,λ越小。f越小,波长越长,衍射能力越强,传输距离越远。2.电磁波频谱划分其中,射频频率范围从300kHz~300GHz之间。3.功率单位功率的一般定义是P=UI。单位为W、mW等。我们实际应用芯片电压供电单位为V,电流为mA级别,故实际上功率的话是mW单位用的比较多。由于射频频率下,功率值的范围比较宽泛,比如0.000001mW和1000mW,这种以W为单位的功率表示称为线

2020-08-12 18:17:09 13673

原创 民用计量仪表使用lora注意事项

按照工信部从2020年1月1号开始执行的民用计量仪表规范,如果我们使用lora技术做仪表类的项目,需要注意满足规范要求,其中最主要的一点其实是针对单次发射持续时间,也就是lora数据包的空中时间。规范要求空中传输时间不超过1s,我们使用loraCalculator,如果我们使用lorawan协议,其BW为125,我们会发现,我们数据域20个字节都会超标,所以如果使用loraWan协议,我们用的SF一般都要在5-10之间,否则传输时间会超标。当然我们如果使用非loraWan协议,我们的BW使用50...

2020-08-12 11:20:01 613

原创 lora calculator的使用

lora calculator可以用来估算lora数据包在空中的传输时间,而利用空中传输时间我们有可以计算出lora的传输距离等问题。首先,semtech针对不同的芯片分别作了不同的lora calculator,比如针对126x系列,是1261calculator;针对127x系列,使用的是其相应的计算器;针对128x系列也有相应的计算器。这里我们以126x系列为例说明:首先,下载lora calculator,进入semtech官网:https://www.semtech.com/ ,依次进入.

2020-08-12 10:46:36 2384

原创 Lora芯片发展

查看semtech官网,可以看到目前semtech发布的lora芯片型号(参https://www.semtech.com/lora/lora-products)。lora目前推了两代芯片,我们分别按照网关和节点进行说明:节点:SX127x系列是lora发布的第一代节点用的芯片,其功耗相对较高,比如SX1272/1278/1276;而SX126x系列是lora的第二代芯片,相比较第一代芯片,第二代芯片功耗更低,价格也有很大下降。另外,虽然都是基于spi接口开发,但是第一代127x系列是基于寄存器进行操

2020-08-12 09:28:28 2254

原创 Lora信道容量、工作距离、电量的计算

一、Lora网络容量的计算:如何获取当前网关支持多少个下属节点进行通信?在semtech官网下载lora calculator软件工具,输入包长,带宽和扩频因子就能计算出每个包的飞行时间。具体见图二、Lora工作距离的计算:lora能够传多远呢,首先传输距离与哪些因素有关呢?第一,和输出功率有关,输出功率越大,传输越远;第二,与灵敏度相关,灵敏度越好,传的越远;第三,和天线增益相关,增益越大,传的越远。三、工作时间的计算:使用电池供电,设备能工作多久呢?首先测试每秒内RX的功耗,RX的时间就

2020-08-11 18:10:44 3352

原创 Lora在卫星上的应用

Lora自称远距离通信,那么到底这个通信距离有多远呢?实际上,目前的低轨卫星已经有成功的应用,在500公里-800公里的低轨卫星上,通过搭载Lora基站,下属节点即可实现与该卫星的通信,可见lora通信距离的强大。目前卫星领域有基于Lora技术研发项目的有和德宇航和东方红。在卫星上的应用主要用在没有移动网络场所,用来实现用户的一键求救。硬件主要构成呢,节点这块需要用到lora和GPS,卫星上搭载Lora基站。大致方案实现是地面人员手持节点(这里指lora终端)向卫星发送一键求救信号,卫星lora

2020-08-11 15:59:09 1508

原创 示波器、逻辑分析仪、频谱仪的使用场景

在上一篇说到了频率和频谱的区别,这里再理解示波器、逻辑分析仪、频谱仪的适用场景就比较好说明了,首先示波器代表的是视域下电压的变化曲线,可以用来抓具体的电压波形,分析短时间的波形结构,对干扰信号进行分析。而逻辑分析仪则是分析高低电平,用来进行时序逻辑分析,及0 1 0 1的数字显示,逻辑分析仪可以长时间的分析逻辑电平值,而对具体信号则无法分析。反过来,用示波器看发出来的比如串口数据显然就很费劲了。而频谱仪用来分析频域下的频谱等信息,即其横坐标是频率,与前两者明显不同...

2020-08-06 09:36:11 1632

原创 频谱和频率的区别和联系

频谱和频率的区别和联系:频率图频率图代表的是时域下频率随时间的变化曲线。即其横坐标是频率,纵坐标是对应频率。频谱图频谱反应的是在频域下振幅随频率的变化曲线,即不同频率下的振幅变化,其横坐标为频率,纵坐标为振幅。关于振幅,即震动的物理量达到的最大值。经傅里叶变换,可以实现由时域到频域的转换。比如上图中lora进行编码调制的方式,前四行都是进行编码的方式。SF扩频因子为7即代表进行扩频了2的7次方即128倍。第五行频率曲线反映了随着时间变化信号的频率发生的高低变化,而频谱则反映了不同频率下幅值的变化

2020-08-06 09:25:40 7239

原创 Lora技术应用领域有哪些?

基于Lora技术自身的低功耗,远距离、低成本的特点,可以在多个领域大显身手,下面举例说明下:一、智慧城市1 智能停车:在较大的停车场,通过Lora技术,采集车位信息,并通过网络上报。车主借助App即可方便查询空闲车位信息,停车再也不用为找车位东奔西跑了,岂不是很爽。2智能抄表:水表、燃气表、电气表行业,借助lora技术,你再也不用担心睡着觉因为网上发了不堪入目的言论担心被敲门抄水表了,玩手机是不是感觉安全了些。3智能家居:4智能路灯5智能交通6智能消防二、智慧农业...

2020-07-29 17:46:10 4204

c语言字节对齐

c语言字节对齐

2017-04-26

linux移植过程

2017-04-26

空空如也

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

TA关注的人

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