一、单片机_RTOS_架构

1、RTOS的概念

        RTOS是实时操作系统(Real-Time Operating System)的缩写。它是一种专门为实时应用程序设计的操作系统,具有实时性、高可靠性和紧凑性等特性。RTOS可以在嵌入式系统、工业自动化、航空航天、科学仪器等领域应用,主要用于控制和监测各种硬件和软件系统。RTOS的主要功能包括任务管理、中断处理、定时器、存储管理、设备驱动等。由于其高可靠性和实时性,RTOS在许多关键应用领域中得到广泛的应用。

2、单片机程序与人脑类比

        妈妈要一边给小孩喂饭,一边加班跟同事微信交流,怎么办?

一、单片机_RTOS_架构_第1张图片

2.1、无RTOS

(1)对于单线条的人,不能分心、不能同时做事,她只能这样做:

  • 给小孩喂一口饭
  • 瞄一眼电脑,有信息就去回复
  • 再回来给小孩喂一口饭
  • 如果小孩吃这口饭太慢,她回复同事的信息也就慢了,被同事催:你半天都不回我?
  • 如果回复同事的信息要写一大堆,小孩就着急得大哭起来。

(2)这种做法,在软件开发上就是一般的单片机开发,没有用操作系统。

2.2、有RTOS

(1)对于眼明手快的人,她可以一心多用,她这样做:

  • 左手拿勺子,给小孩喂饭
  • 右手敲键盘,回复同事
  • 两不耽误,小孩“以为”妈妈在专心喂饭,同事“以为”她在专心聊天
  • 但是脑子只有一个啊,虽然说“一心多用”,但是谁能同时思考两件事?
  • 只是她反应快,上一秒钟在考虑夹哪个菜给小孩,下一秒钟考虑给同事回复什么信息

(2)这种做法,在软件开发上就是使用操作系统,在单片机里叫做使用RTOS。

(3)我们使用的Windows也是操作系统,被称为通用操作系统。使用Windows时,我们经常碰到程序卡死、停顿的现象,日常生活中这可以忍受。但是在电梯系统中,你按住开门键时如果没有即刻反应,即使只是慢个1秒,也会夹住人。在专用的电子设备中,“实时性”很重要。

2.3、简单示例程序

/*经典单片机程序*/
void main()
{
	while (1)
    {
        喂一口饭();
        回一个信息();
    }
}

--------------------------------------------------------------------------
/*RTOS程序*/    
喂饭()
{
    while (1)
    {
        喂一口饭();
    }
}

回信息()
{
    while (1)
    {
        回一个信息();
    }
}

void main()
{
    create_task(喂饭);      /*创建喂饭任务*/
    create_task(回信息);    /*创建回信息任务*/
    start_scheduler();     /*开始调度*/
    while (1)
    {
        sleep();           /*空闲状态*/          
    }
}

一、单片机_RTOS_架构_第2张图片

3、架构

3.1、架构的概念

        芯片架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。目前市面上的CPU分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为首的精简指令集CPU。两个不同品牌的CPU,其产品的架构也不相同,例如,Intel、AMD的CPU是X86架构的,而IBM公司的CPU是PowerPC架构,ARM公司是ARM架构。

3.2、用人来类比电子产品

(1)在电子系统中,CPU就是大脑,CPU有很多种类别,被称为架构。

(2)单片机中,常见的有ARM和RISC-V。

一、单片机_RTOS_架构_第3张图片一、单片机_RTOS_架构_第4张图片

3.3、ARM架构

(1)目前主流的架构,用得最广,芯片公司需要付费购买,再搭配各种模块才能设计出芯片。

(2)目前华为被美国制裁,无法获得最新的ARM架构。

(3)对于其他公司,购买ARM新架构的价格也不低。

3.4、RISC-V架构

(1)后起之秀,开源、免费。

(2)目前华为海思的HI3861、乐鑫的ESP32-C3等芯片,都是使用RISC-V的单片机芯片。

(3)平头哥和全志的D1芯片,是使用RISC-V的、能运行Linux的芯片。

(4)RISC-V作为全新的架构,没有历史包袱,设计优美,在技术上大有可为,另外它开源无需授权,能摆脱技术的卡脖子问题。

4、RTOS与架构

(1)要深入理解RTOS就必须深入理解CPU架构。

(2)如果只是使用别人移植好的RTOS来写程序,当然不需要了解CPU架构。甚至编写驱动程序时,也不需要了解CPU架构:因为我们操作的是CPU之外的设备,不是操作CPU。

(3)如果你想达到如下目标,就需要先了解CPU架构:

  • 深入理解RTOS的内部实现
  • 移植RTOS
  • 解决疑难问题

        

你可能感兴趣的:(FreeRTOS,单片机,stm32,RTOS)