首页 > 其他分享 >ESP32-P4 --- 多核影响

ESP32-P4 --- 多核影响

时间:2024-03-29 11:22:05浏览次数:20  
标签:函数 P4 ESP32 CPU --- start other cores APP

为避免意外读取 flash cache,一个 CPU 在启动 flash 写入或擦除操作时,另一个 CPU 将阻塞。在 flash 操作完成前,会禁用所有在 CPU 上非 IRAM 安全的中断。   HAL 函数 ``cpu_hal_get_cycle_count()``,PU 周期是各核心独立计数的,因此本方法仅适用于测量中断处理程序或固定在单个核心上的任务   SoC 复位后,PRO CPU 会立即开始运行,执行复位向量代码,而 APP CPU 仍然保持复位状态。在启动过程中,PRO CPU 会执行所有的初始化操作。APP CPU 的复位状态会在应用程序启动代码的 ``call_start_cpu0`` 函数中失效。复位向量代码位于 {IDF_TARGET_NAME} 芯片掩膜 ROM 处,且不能被修改。   与普通的 FreeRTOS 任务(或嵌入式 C 的 ``main`` 函数)不同,``app_main`` 任务可以返回。如果``app_main`` 函数返回,那么主任务将会被删除。系统将继续运行其他的 RTOS 任务。因此可以将 ``app_main`` 实现为一个创建其他应用任务然后返回的函数,或主应用任务本身。   APP CPU 的内核启动流程     当运行系统初始化时,PRO CPU 上的代码会给 APP CPU 设置好入口地址,解除其复位状态,然后等待 APP CPU 上运行的代码设置一个全局标志,以表明 APP CPU 已经正常启动。 完成后,APP CPU 跳转到 :idf_file:`components/esp_system/port/cpu_start.c` 中的 ``call_start_cpu1`` 函数。     当 ``start_cpu0`` 函数对 PRO CPU 进行初始化的时候,APP CPU 运行 ``start_cpu_other_cores`` 函数。与 ``start_cpu0`` 函数类似,``start_cpu_other_cores`` 函数是弱链接的,默认为 ``start_cpu_other_cores_default`` 函数,但可以由应用程序替换为不同的函数。     ``start_cpu_other_cores_default`` 函数做了一些与内核相关的系统初始化,然后等待 PRO CPU 启动 FreeRTOS 的调度器,启动完成后,它会执行 ``esp_startup_start_app_other_cores`` 函数,这是另一个默认为 ``esp_startup_start_app_other_cores_default`` 的弱链接函数。     默认情况下,``esp_startup_start_app_other_cores_default`` 只会自旋,直到 PRO CPU 上的调度器触发中断,以启动 APP CPU 上的 RTOS 调度器。

标签:函数,P4,ESP32,CPU,---,start,other,cores,APP
From: https://www.cnblogs.com/god-of-death/p/18103420

相关文章

  • 前端学习-UI框架学习-Bootstrap5-009-按钮
    菜鸟教程链接按钮按钮类可用于,,或元素上:<template><divclass="containermt-3"><h2>按钮元素</h2><ahref="#"class="btnbtn-infom-3"role="button">链接按钮</a><buttontype="......
  • [RK3399-Android10] 关于USB触摸屏休眠状态无法唤醒设备的一种情况
    问题描述RK3399Android10平台上,USB触摸屏在系统按键休眠之后,无法触摸唤醒设备。查看内核日志,发现休眠之后,USB设备直接断开,lsusb发现不了设备。休眠之后host接口没有断开电源,使用USB鼠标插在同一个接口上,USB鼠标可以正常唤醒设备。问题描述之前遇到这样的问题一般是修改s......
  • 【前端面试题-19】简单说一下,如果前端页面要做个页面加载进度条,该通过哪些实现进度上
    前端页面要实现一个页面加载进度条,可以通过以下步骤进行进度上的把控:HTML结构:在页面中创建一个用于承载进度条的<div>元素或其他合适的元素,例如:<divid="progress-bar"><divid="progress"></div></div>progress-bar作为进度条的容器,progress则是实际表示进度的部......
  • 【前端面试题-20】js如何对输出内容进行HTML编码
    在JavaScript中,对输出内容进行HTML编码通常是为了防止XSS攻击(跨站脚本攻击),即将特殊字符转换成HTML实体的形式,避免它们被浏览器解析为HTML或JavaScript代码。以下是一些常见的HTML编码方法:使用内建函数encodeURIComponent()和encodeURI()虽然这两个函数主要用于编码URI......
  • 基于DBO-CNN-BiLSTM数据回归预测(多输入单输出),蜣螂优化算法优化CNN-BiLSTM-附代码
    基于DBO-CNN-BiLSTM的数据回归预测是一种综合利用了深度学习中的多种技术的方法,包括卷积神经网络(CNN)、双向长短期记忆网络(BiLSTM)和注意力机制(Attention)。蜣螂优化算法用于优化CNN-BiLSTM模型的参数。以下是基于DBO-CNN-BiLSTM的数据回归预测的原理:CNN(卷积神经网络):CNN是一......
  • 2024年数字IC秋招-华为-数字芯片-实习笔试题
    文章目录前言一、单选题1、wirea=1'bx;wireb;bufif1(b,a,1);则b=2、在CDC异步电路检查报告中,如果出现了violation信息,那么在实际电路中一定会出现错误。3、芯片电压的设计规格是中心电压0.9V,以下说法不正确的是5、SystemVerilog语句$urandom_range(100)可......
  • 练习-Java类和对象之对象引用之模拟手机功能
    第1关:练习-Java类和对象之对象引用之模拟手机功能任务描述本关任务:实现手机的基本功能。手机具有属性:品牌(brand)、型号(type)、价格(price)、操作系统(os)和内存(memory);具有功能:查看手机信息(about())、打电话(call(intnumber))、玩游戏(play())。编程要求仔细阅读右侧编辑区内给出的......
  • Extraneous non-props attributes (title) were passed to component but could not b
    大概意思就是给子组件传递的属性,由于子组件呈现片段或文本根节点,无法自动继承;就是"透传Attributes"。对于多根节点的组件没有自动attribute透传行为;如果$attrs没有被显式绑定,将会抛出一个运行时警告。解决方式:手动显示绑定$attrs(1)模板 <template> <h1>多根节点的At......
  • Linux下TCP/IP编程--TCP实战
    之前尝试过windows下的简单TCP客户端服务器编写,这次尝试下一下Linux环境下的TCP客户端代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>structC......
  • 前端学习-UI框架学习-Bootstrap5-008-信息提示框
    菜鸟教程链接提示框-基础颜色提示框可以使用.alert类,后面加上.alert-success,.alert-info,.alert-warning,.alert-danger,.alert-primary,.alert-secondary,.alert-light或.alert-dark类来实现:提示框添加链接提示框中在链接的标签上添加alert-link类来设置匹......