自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式系统的内存管理系统

介绍一种用于嵌入式系统的内存管理的实现方法。

2022-05-04 16:06:17 2001

原创 嵌入式系统中的有限状态机实现

介绍在嵌入式系统中的有限状态机的实现。

2022-05-02 14:15:14 1143

原创 函数指针数组之Modbus-RTU的实现

介绍用函数指针实现Modbus-RTU应用层协议

2022-05-01 21:28:38 922

原创 函数指针数组之LOG处理系统

结合具体例子,介绍函数指针数组在嵌入式程序开发中的使用。

2022-04-30 21:06:08 234

原创 优雅的代码—编程风格

介绍怎样写出优雅的代码。主要适用于嵌入式编程。

2022-02-20 15:35:36 1028

原创 外设联动设计

在嵌入式系统中,通常外设之间不能直接通信,对于一些需要外设联动的操作,需要CPU介入,比如定时到了,启动串口的发送/接收,则需要为定时器写一个中断服务程序,在其中启动串口动作。在有一些MCU中,提供了PRS功能,可以让外设之间直接通信。借助PRS,上述例子中,定时器的溢出,可以直接启动串口,而不再需要中断服务程序的介入。这可以进一步解放CPU,也提高了外设处理的实时性。PRS硬件结构PRS是Peripheral Reflex System(外设反射系统)的略称,提供了若干可配置的外设互联通道。外设互

2021-07-18 15:35:53 240

原创 嵌入式开发之中断服务程序

在设计软件与外设交互时,需要考虑以下三个方面:怎样检出外设的事件,是使用中断还是轮询? 使用中断时,哪些处理在中断服务程序中执行,哪些处理在应用程序中执行? 中断服务程序怎样与应用程序通信?软件与外设的交互,基本有两种模式:轮询和中断。轮询是由软件定时地查询外设的各种寄存器,检查该外设是否有事件发生,如有事件发生,则执行相应的动作。中断则通过使能该外设的中断,当相应的事件发生时,MCU产生中断,调用对应的中断处理函数,由中断服务程序完成必要的处理后,将事件或数据通知应用程序,从而达到通知软件的目的

2021-07-10 11:39:01 2696 3

原创 嵌入式程序的结构

嵌入式程序是运行于嵌入式设备中的程序系统。嵌入式设备一般为由单片机等专用MCU和简单外设构成的专用计算机系统,广泛存在于各类工业以及民用设备中,包括各种家电、汽车、仪器仪表、各种智能设备、数控机床等。嵌入式系统一般都有具体的预先规划的功能要求,而且比较固定、不随时间变化(也有可以更新程序的设备,但更新频率也很低)。因此软硬件都为其功能优化。嵌入式系统往往生产数量巨大,其对成本一般比较敏感,因此配备的资源,包括计算能力、存储、内存、外部接口等都比较有限。嵌入式系统运行于片上系统(SoC)。基本由MCU

2021-06-14 15:14:34 3252 2

原创 嵌入式操作系统漫议:操作系统or裸跑?

在嵌入式软件开发中,可以使用操作系统,也可以不使用操作系统,这取决于系统的复杂程度。如果是功能比较单一的系统,如没有联网功能的刷卡机、简单的家电监控系统,没有操作系统完全没有问题。但如果符合以下几种情况,就建议采用操作系统。系统功能比较复杂,分割成几个部分进行处理能够有效降低复杂度。特别是不同的部分对处理实时性的要求不同、需要赋予不同的运行优先级时,就必须使用操作系统了。 输入来自多个外设,而且对这些输入的处理不同时,使用操作系统可以带来很大的便利性。 需要考虑软件的可移植性和可扩展性时,也建议采用

2021-02-28 06:44:13 968

原创 嵌入式操作系统漫议:任务间通信与同步之信号量

信号量是另一种任务之间交互的机制,既可以用于控制对共享资源的访问,也可用于任务间的同步(Synchronization)。信号量的名字据说来自铁路系统,用于确保一段铁轨在一段时间内只能有一列火车通过。这种互斥访问是通过在指定的任何时间点上只设置一个方向的信号灯为绿灯,其他所有方向的信号灯都为红灯来实现。在1965年,荷兰学者Edsger Dijkstra据此提出了信号量的概念,用于不同线程之间的同步和共享资源的访问。信号量本质上是一个单变量(非负整数)的共享资源,如图 1所示。图 1..

2021-02-21 16:55:38 779

原创 嵌入式操作系统漫议:任务间通信之队列

嵌入式操作系统中任务之间的交互与Linux同一进程的不同线程之间的交互完全类似,可以通过全局变量和任务间通信机制两种方法来实现。这种交互包括任务间的数据传递、状态通知和动作同步等等。任务间通信主要用于以下几个目的:在任务之间,或任务与中断处理程序之间传递数据。 共享资源管理。如果一个资源为多个任务、或者任务与中断处理程序所访问,该资源即为共享资源。共享资源可以是一个全局变量、全局数据结构,或者是一个外设,比如GPIO、串口等等。为了保证数据一致性和访问逻辑的完整性,必须保证一个任务、或中断处理程序

2021-02-17 10:00:54 1113

原创 嵌入式操作系统漫议:任务调用栈

在进行嵌入式系统设计时,很重要的一个方面是决定整个系统由几个任务构成、任务的优先级以及任务调用栈(call stack)的大小。本篇主要介绍调用栈的相关概念。调用栈是用于保存任务运行时的临时变量的内存区域,以堆栈的形式管理。图1是一个调用栈的结构示意图。调用栈中主要保存函数的形参、局部变量和返回地址。因此调用栈的大小主要根据该任务函数的局部变量所占空间的大小和函数的调用深度来决定。在很多MCU架构(包括ARM系列)中,调用栈按内存地址递减的方向生长,也即栈底在高地址,栈顶在低地址。每次函数调用时,系

2021-02-09 13:38:57 447

原创 嵌入式操作系统漫议:任务管理与调度

在嵌入式操作系统中,任务相当于Linux系统的线程。在所有的操作系统中,线程(在嵌入式操作系统中一般称为任务)是一个单一顺序的执行流,是分配运行资源(CPU的运行时间)的基本单位。操作系统根据一定的原则,在等待执行的线程之间分配CPU资源,保证各个线程都能得到合理的执行。在Linux、Windows之类的操作系统中,一个或多个线程构成一个进程,共享地址空间和全局变量。而在嵌入式系统中,一般没有进程的概念,也可以说整个系统(包括操作系统和应用程序)就是一个进程。因此所有的任务都共享一个同样的地址空间和全局变量

2021-02-08 11:26:46 1677

原创 嵌入式操作系统漫议:功能与特点

何为操作系统?在手机、PC等个人计算系统中,操作系统是不可或缺的存在,其重要性如同空气和水对人而言一样。随着手机的普及,安卓、iOS等操作系统也变得广为人知。其实个人计算系统的操作系统是由内核、各种运行库、中间件和部分应用程序构成的一个庞大系统。图 1是安卓系统的构成图。 图...

2021-02-07 09:28:05 644 1

原创 Linux系统调用的实现

在Linux系统中,系统调用基本上是应用程序与内核交互的唯一方式。而所有的外设驱动都由内核管理,因此系统调用基本上也是应用程序与外设交互的唯一方式。Linux的系统调用有两个视角:应用程序和内核。从应用程序的角度,系统调用表现为库函数的形式,遵循POSIX标准,存放在多个库文件中,包括C标准库。从内核的角度,则表现为从中断处理程序开始的一系列处理。应用程序和内核的切换为了更好地保护系统...

2020-04-06 10:02:36 492

原创 嵌入式系统中一种定时器保护系统的实现

嵌入式系统设计时一般需要考虑不间断运行。为了在发生问题时能够自动恢复,也设计有看门狗机制,在程序出现bug或内存遭到破坏时,自动重启以恢复系统的正常运行。一个合理设计的看门狗系统能够从绝大部分软件问题中恢复,但对有一类问题却无能为力,这就是定时器异常。在有些SoC系统中,有的定时器在反复的设定/启动/停止中会出现异常,不能再正确地触发超时中断,从而导致一部分功能不能正常运转。但因为整个系统还是...

2018-11-24 22:38:13 408

原创 嵌入式系统的外设联动设计

在嵌入式系统中,通常外设之间不能直接通信,对于一些需要外设联动的操作,需要MCU介入,比如定时到了,启动串口的发送/接收,则需要为定时器写一个中断处理程序,在其中启动串口动作。在有一些SoC中,提供了PRS功能,可以让外设之间直接通信。借助PRS,上述例子中,定时器的溢出,可以直接启动串口,而不再需要中断处理程序的介入,既可以进一步解放MCU,也保证了更高的实时性。PRS简介PRS是Per...

2018-10-05 12:07:29 635

原创 中断处理程序的设计

在嵌入式系统的设计中,与外设交互,基本是两种模式:轮询和中断。考虑到CPU与外设之间的速度差,如果涉及到与外设通信,一般采用中断的方式:只有当外设完成了数据发送或者接收,才中断CPU,获得处理,这样可以保证CPU的处理效率最高。与数据收发相关的中断,中断处理程序与外部程序(操作系统和应用程序)之间的数据交换方式的设计是中断处理程序设计的一个关键部分,直接影响系统的工作效率,甚至是一些偶发性故障...

2018-10-03 20:51:32 6973

原创 Lora物理层简介

LoraWAN是Semtech公司主导推进的低功耗广域网LPWAN技术。由于采用了基于CSS(ChirpSpread Spectrum)的无线调制/解调技术,接收灵敏度达到,在低于1GHz的ISM频段,其传输距离达到了十几公里,非常适合抄表等低速的无线应用。 但LoraWAN的协议只规定了MAC层的规范。关于Lora物理层,只是简单规定了可以采用两种调制方式:FSK和Lora。为了最大限度

2017-06-24 11:28:47 13077 4

原创 Chirp扩频简介

扩频技术自3G通信以来而广为所知。基本有三种方式:直接序列扩频、跳频和Chirp扩频。直接序列扩频(DSSS:Direct Sequence Spread Spectrum)采样互相正交的伪噪声序列(PN序列),在发送端,将待发送数据与PN序列相乘,生成扩频后的送信序列,在扩大频率范围的同时,降低信号的峰值;在接收端,通过与相同的PN序列相关,将会恢复出原先的信号峰值,实现数据的有效检出。跳频

2017-05-21 08:23:50 19455 3

原创 嵌入式系统上的异步串口通信的实现

在嵌入式系统中,异步串口(UART)使用非常频繁,可以用于与各种外部系统(帧括PC)之间的通信。在硬件上UART通过在每个字节的传输中插入开始位和停止位,保证接收端可以正确地找到字节的开始和结束,同时也可以通过插入奇偶校验位,让接收端检验收到的字节是否正确。而且,由于有开始位和停止位的存在,使得字节之间可以插入任意的空闲位(与停止位同为高电平),而不影响下一个字节的正常传输。因此,UART硬件保证

2017-04-14 21:09:52 4852

原创 Linux内核对象管理与呈现机制

在Linux内核中,采用对象机制组织和管理各种功能单元,包括CPU、内存、总线、外部设备、驱动程序等等。一方面有利于各种功能的的动态增减;也有利于系统快速定位各种设备,提高响应速度。在linux内核中,采样kset/kobject结构的组合来管理各种设备。 kset/kobject结构 每一个具体的对象用kobject结构来表示。一系列kobject构成的集合用kset来表示。

2017-01-14 16:06:37 1495

原创 CCM加密认证模式

本文介绍了CCM模式的处理过程。CCM是Cipher Block Chaining Message Authentication Code (CBC-MAC)和Counter模式(CTR)的组合。可以同时生存认证信息和对数据加密。CCM广泛用于互联网和物联网中对传输数据进行保护。而且很多MCU中都实现了对CCM的硬件支持,使用也比较方便。下面的介绍主要根据RFC3610整理。

2015-06-01 21:37:52 19319

原创 大数据处理的架构逻辑

对大数据处理背后的架构逻辑的思考。

2015-05-27 21:25:53 4071

原创 数据块加密模式

本文介绍了ECB、CBC、CTR等主要的块加密模式,资料主要来自:http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation。

2015-05-27 21:17:50 4378

空空如也

空空如也

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

TA关注的人

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