32单片机从入门到精通之安全性与可靠性——错误检测(十七)

生活中总会遇到许多困难和挑战,但是我们不能被困难击倒。相反,我们应该以积极的态度去面对困难,并努力克服它们。困难是生活中的一部分,它们能够让我们成长和变得更强大。当我们面临困境时,我们要相信自己的能力,相信自己可以战胜困难。不要轻易放弃,要坚持不懈地努力,因为只有经过努力才能实现梦想。困难是通往成功的必经之路,只要我们勇敢地面对困难,坚持到底,最终我们一定能够取得成功。努力不一定能够成功,但不努力一定会失败。所以,无论面对什么困难,都要勇敢地面对,努力去克服它们。相信自己的能力,相信自己的潜力,你一定能够战胜困难,取得成功。不要让困难成为阻碍你前进的绊脚石,而是要把它们当作成长的机会,跨过困难,迈向成功的道路。

目录

上一张试卷讲解

一、选择题(每题2分,共20分)

二、简答题(每题10分,共30分)

三、编程题(每题15分,共30分)

四、设计题(每题15分,共30分)

知识点讲解

嵌入式系统中的错误检测与数据完整性保障

1. 错误检测机制

2. CRC校验实现

3. 奇偶校验实现

4. 系统状态监控与故障处理

总结

试卷

一、选择题(每题2分,共20分)

二、简答题(每题10分,共30分)

三、编程题(每题15分,共30分)

四、设计题(每题15分,共20分)


上一张试卷讲解

一、选择题(每题2分,共20分)
  1. 在嵌入式编程中,哪种方法可以减少CPU占用率并提高响应速度?

    • B. 使用硬件中断来捕获按键事件
      说明:使用硬件中断替代轮询方式可以显著减少CPU的空闲等待时间,并且能够立即响应外部事件。
  2. 下列哪项不是减少代码中不必要的循环和条件判断的有效策略?

    • C. 增加更多的if-else语句
      说明:增加额外的条件分支会降低代码效率,反而应该尽量减少不必要的条件判断。
  3. 内联函数的主要优点是什么?

    • B. 减少函数调用开销
      说明:内联函数可以在编译时展开为实际代码,避免了函数调用带来的额外开销。
  4. 对于降低微控制器(MCU)的功耗,以下哪种模式最节能?

    • C. 深度睡眠模式
      说明:深度睡眠模式下,MCU几乎关闭所有非必要的功能,仅保留最基本的唤醒能力。
  5. 实时时钟(RTC)在嵌入式系统中的主要用途之一是:

    • C. 定时唤醒MCU执行特定任务
      说明:RTC常用于定时器应用,比如唤醒MCU进行周期性任务或数据采集。
  6. 当不使用某些外设时,应该采取什么措施以节省电力?

    • C. 关闭或进入低功耗模式
      说明:不使用的外设应及时关闭或置于低功耗模式,以减少不必要的电力消耗。
  7. 动态调整系统的工作频率或电压属于哪种类型的优化?

    • C. 电源管理策略
      说明:通过调整工作频率和电压,可以在不影响性能的前提下大幅降低能耗。
  8. 使用预处理宏定义可以在哪个阶段进行替换?

    • B. 编译时
      说明:预处理指令是在编译前处理的,因此宏定义会在编译期间被替换为具体的值或代码片段。
  9. 为了防止按键抖动影响程序逻辑,通常会在检测到按键按下后做什么?

    • B. 添加一个短暂的延迟
      说明:通过添加一个小的延时(如几十毫秒),可以有效过滤掉按键抖动产生的虚假信号。
  10. 哪个库可以帮助配置MCU进入不同的低功耗模式?

    • C. LowPower.h
      说明:LowPower.h 库提供了便捷的方法来配置MCU的各种低功耗模式。
二、简答题(每题10分,共30分)
  1. 描述如何通过使用硬件中断替代软件轮询来优化嵌入式系统的性能。请提供具体的实现步骤,并说明这样做的好处。

     

    使用硬件中断替代软件轮询可以通过以下步骤实现:

    • 初始化硬件资源,包括设置适当的引脚模式和连接外部设备。
    • 配置中断服务程序(ISR),指定触发条件(例如电平变化或边沿触发)。
    • 在主程序中注册ISR,使得当满足触发条件时,ISR会被自动调用。
    • 在ISR内部编写处理逻辑,如读取状态、更新变量等。
    • 确保ISR尽可能简洁快速,以最小化对其他任务的影响。

    这样做有以下几个好处:

    • 提高了响应速度,因为ISR可以在事件发生的瞬间被执行。
    • 降低了CPU占用率,因为它不再需要不断地检查输入状态。
    • 简化了主程序结构,减少了主循环中的复杂性。
  2. 解释为什么动态控制外设的状态(如显示器、传感器等)对于延长电池寿命至关重要。给出至少两个例子说明如何实现这一点。

     

    动态控制外设状态是延长电池寿命的关键,原因在于许多外设在不活动状态下仍然会消耗电量。通过智能地管理和调整这些外设的工作模式,可以显著减少不必要的能量浪费。以下是两个示例:

    • 显示器:当没有用户交互时,将显示器亮度降至最低或完全关闭;或者采用电子墨水屏等低功耗显示技术。
    • 传感器:如果传感器不是持续需要的数据源,则可以在不需要时将其置于休眠模式,只在必要时唤醒它进行数据采集。
  3. 说明在设计嵌入式系统时,如何评估其功耗特性,并提出两种具体的方法来降低系统的整体能耗。

     

    评估嵌入式系统的功耗特性通常涉及以下几个方面:

    • 测量不同工作模式下的电流消耗,了解各个组件的实际用电情况。
    • 分析软件运行过程中各模块的激活时间和频率,找出高能耗部分。
    • 利用仿真工具预测系统在各种操作条件下的功耗表现。

    降低系统整体能耗的具体方法包括:

    • 优化算法和数据处理流程,减少不必要的计算量和内存访问。
    • 合理规划外设的使用,例如在闲置期间将其切换至低功耗模式或直接关闭。
三、编程题(每题15分,共30分)
  1. 编写一段C语言代码,利用硬件中断来检测按键按下事件,并在OLED屏幕上显示一条消息。确保代码包括必要的库导入、屏幕初始化、文本设置以及更新显示。此外,还需考虑按键抖动问题的处理。
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <LowPower.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET    -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define BUTTON_PIN    2  // The number of the pushbutton pin

volatile bool buttonPressed = false;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), buttonISR, FALLING);
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    for (;;);
  }
  display.clearDisplay();
  display.display();
}

void loop() {
  if (buttonPressed) {
    buttonPressed = false;
    display.clearDisplay();
    display.print("Button Pressed");
    display.display();
    delay(50); // Simple debounce delay
    LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF); // Enter low power mode after task completion
  }
}

void buttonISR() {
  buttonPressed = true;
}
  1. 编写一段C语言代码,展示如何根据实际情况调整MCU的工作参数(如频率或电压),以达到节能目的。代码应包含适当的注释,解释每个关键部分的功能。
// 示例代码:假设我们有一个支持动态频率调整的MCU
// 注意:实际实现将取决于具体的MCU型号和开发环境

void setup() {
  // 初始化MCU和外设...
  
  // 设置初始工作频率为最低值,以节省电力
  setMCUClockFrequency(LOWEST_FREQUENCY);
}

void loop() {
  // 如果有高优先级任务需要执行...
  if (highPriorityTaskDetected()) {
    // 暂时提高工作频率以快速完成任务
    setMCUClockFrequency(HIGHEST_FREQUENCY);
    
    // 执行高优先级任务
    performHighPriorityTask();
    
    // 任务完成后恢复到较低的工作频率
    setMCUClockFrequency(LOWEST_FREQUENCY);
  }
  
  // 其他常规任务...
  performRegularTasks();
  
  // 如果没有更多任务要执行,让MCU进入低功耗模式
  enterLowPowerMode();
}

// 假设这些函数已经实现
void setMCUClockFrequency(int frequency);
bool highPriorityTaskDetected();
void performHighPriorityTask();
void performRegularTasks();
void enterLowPowerMode();
四、设计题(每题15分,共30分)
  1. 设计一个智能照明控制系统,该系统可以根据环境光线强度自动调节室内灯光亮度,同时具备手动开关功能。要求系统能够有效节能,并且用户体验良好。请详细描述你的设计方案,包括硬件选择、软件架构以及可能采用的优化措施。

     

    硬件选择:

    • 光敏电阻或光电二极管用于检测环境光照水平。
    • 可调光LED灯或调光驱动电路,允许连续调节亮度。
    • 单片机(如Arduino或ESP系列),负责处理传感器输入并控制灯光输出。
    • 触摸按钮或红外遥控器作为手动开关选项。

    软件架构:

    • 初始化阶段,配置传感器、灯光控制接口和用户界面。
    • 主循环中不断读取光照传感器值,根据设定阈值调整灯光亮度。
    • 监听手动开关信号,优先响应用户的直接操作。
    • 定期保存当前配置到非易失性存储器中,以便断电重启后保持一致。

    优化措施:

    • 当光照足够时自动关闭灯光,避免不必要的能源消耗。
    • 使用PWM(脉宽调制)技术实现平滑的亮度调节,既节能又提升视觉舒适度。
  2. 创建一个基于触摸屏的用户界面,允许用户从几个预设选项中选择一个。界面应该包含一个主屏幕和至少两个子屏幕。每个屏幕都应该有返回主屏幕的按钮。请说明你会如何设计这个界面以确保它既直观又节能。讨论你将采取哪些步骤来优化功耗,例如在外设不活跃时将其置于省电模式。

     

    界面设计:

    • 主屏幕列出所有可用选项,每个选项作为一个按钮。
    • 点击某个按钮后进入对应的子屏幕,子屏幕上同样可以有其他选项或者返回主屏幕的按钮。
    • 确保触摸屏校准准确,以便能够精确识别用户意图。

    节能措施:

    • 在外设不活跃时(如无触摸事件发生一段时间后),将触摸屏和其他非必需外设置于省电模式。
    • 使用低功耗图形库,减少刷新率和背景颜色的复杂度。
    • 结合RTC定时器,在夜间或其他非高峰时段自动降低屏幕亮度或关闭屏幕。

这张试卷涵盖了嵌入式系统性能优化与功耗管理的核心概念和技术,旨在评估学生对这些领域的理解深度。希望这份试卷能够帮助学生巩固所学知识,并为实际应用打下坚实的基础。

知识点讲解

嵌入式系统中的错误检测与数据完整性保障

在嵌入式系统中,确保数据的完整性和系统的可靠性至关重要。这不仅涉及到硬件层面的设计,也包括软件层面的实现。以下是关于如何添加CRC校验、奇偶校验等机制来保证数据完整性,以及如何监控系统状态以及时发现并处理潜在故障的知识点讲解,并附有详细的代码案例和注释。

1. 错误检测机制

知识点:

  • CRC(循环冗余校验):一种基于多项式的校验算法,广泛应用于通信协议和存储介质中,用于检测传输或存储的数据是否发生错误。
  • 奇偶校验:通过计算一组数据中“1”的个数是奇数还是偶数来进行简单校验,适用于较小规模的数据块。
  • 其他校验方法:如校验和(Checksum)、汉明码(Hamming Code)等,各有优缺点,选择取决于具体应用场景的需求。
2. CRC校验实现

代码案例及注释(C语言)

#include <stdint.h>
#include <stddef.h>

// 定义多项式,这里使用的是标准的CRC-8 (0x07)
#define POLYNOMIAL 0x07

/**
 * @brief 计算给定数据缓冲区的CRC-8校验值。
 *
 * @param data 数据缓冲区指针
 * @param length 缓冲区长度
 * @return uint8_t 返回计算得到的CRC-8校验值
 */
uint8_t crc8(const uint8_t *data, size_t length) {
    uint8_t crc = 0xFF; // 初始化CRC寄存器为全1

    for (size_t i = 0; i < length; ++i) {
        crc ^= data[i]; // 将当前字节与CRC寄存器异或
        for (int j = 0; j < 8; ++j) { // 对每个位进行处理
            if (crc & 0x80) { // 如果最高位为1,则执行除法操作
                crc = (crc << 1) ^ POLYNOMIAL;
            } else {
                crc <<= 1; // 否则仅左移一位
            }
        }
    }

    return crc; // 返回最终的CRC值
}

// 示例用法
void example_usage() {
    const char message[] = "Hello, World!";
    uint8_t crc_value = crc8((const uint8_t *)message, sizeof(message) - 1); // 不包含字符串结尾的'\0'
    // 现在可以将crc_value附加到message后面发送出去,或者保存下来用于后续验证
}
3. 奇偶校验实现

代码案例及注释(C语言)

#include <stdint.h>
#include <stdbool.h>

/**
 * @brief 计算给定数据的奇偶性。
 *
 * @param data 数据
 * @return bool 返回true表示奇校验,false表示偶校验
 */
bool parity(uint8_t data) {
    bool result = false;

    while (data) {
        result ^= (data & 1); // 每遇到一个'1'就翻转结果
        data >>= 1;           // 右移一位继续检查下一位
    }

    return result;
}

// 示例用法
void example_usage() {
    uint8_t byte = 0b10101010;
    bool is_odd = parity(byte);
    // 根据is_odd决定接下来的操作,比如设置标志位或采取相应措施
}
4. 系统状态监控与故障处理

知识点:

  • 心跳信号:定期发送一个简单的信号以确认设备在线,可用于检测网络连接状态。
  • 看门狗定时器(Watchdog Timer, WDT):当程序卡住时自动重启系统,防止死机。
  • 日志记录:记录关键事件和错误信息,便于事后分析问题原因。
  • 自我诊断测试(Self-Diagnostics):启动时运行一系列自检程序,确保硬件和软件正常工作。
  • 异常处理机制:捕获并处理可能发生的异常情况,如内存不足、非法访问等。

代码案例及注释(C语言)

#include <avr/wdt.h> // 假设这是AVR单片机平台

/**
 * @brief 配置看门狗定时器以防止程序陷入无限循环。
 */
void setup_watchdog() {
    wdt_enable(WDTO_2S); // 设置看门狗超时时间为2秒
}

/**
 * @brief 在主循环中喂狗,以重置看门狗计时器。
 */
void feed_watchdog() {
    wdt_reset(); // 重置看门狗计时器
}

void setup() {
    setup_watchdog();
    // 其他初始化代码...
}

void loop() {
    // 主业务逻辑...

    feed_watchdog(); // 每次迭代都喂狗一次,确保系统不会因为程序卡住而停止响应
}

此外,还可以结合外部传感器(如温度传感器、电压监测器)实时监控环境参数,一旦超出设定范围即触发警报或采取保护措施。对于更复杂的系统,建议采用多级冗余设计,例如双CPU架构,其中一个作为备用,在主CPU出现故障时接管任务。

总结

通过上述方法和技术的应用,可以在很大程度上提高嵌入式系统的稳定性和可靠性。CRC校验、奇偶校验等机制能够有效地检测数据传输过程中的错误,而系统状态监控与故障处理策略则有助于预防和快速解决潜在的问题。

试卷

一、选择题(每题2分,共20分)
  1. 下列哪一种校验方法是基于多项式的? A. 奇偶校验
    B. CRC校验
    C. 校验和
    D. 汉明码

  2. 在CRC校验中,如果最高位为1,则应执行什么操作? A. 只左移一位
    B. 左移一位并异或多项式
    C. 右移一位
    D. 不做任何操作

  3. 奇偶校验主要用于哪种规模的数据块? A. 大型数据文件
    B. 小规模数据传输
    C. 视频流
    D. 数据库记录

  4. 看门狗定时器的主要作用是什么? A. 提高CPU频率
    B. 防止程序陷入无限循环
    C. 加密通信数据
    D. 监控外部传感器

  5. 心跳信号通常用来做什么? A. 检测网络连接状态
    B. 测量CPU温度
    C. 记录日志信息
    D. 控制电机速度

  6. 下列哪一项不是常见的系统状态监控手段? A. 日志记录
    B. 自我诊断测试
    C. 异常处理机制
    D. 手动检查硬件

  7. 对于嵌入式系统的异常处理机制,下列描述正确的是: A. 忽略所有异常以保持性能
    B. 捕获并处理可能发生的异常情况
    C. 关闭系统电源以防止进一步损害
    D. 只记录异常而不采取行动

  8. 使用CRC-8校验时,初始化CRC寄存器的值通常是: A. 0x00
    B. 0xFF
    C. 0xAA
    D. 0x55

  9. 如果一个字节的奇偶性为奇数,那么它的二进制表示中有多少个“1”? A. 0
    B. 1
    C. 偶数个
    D. 奇数个

  10. 系统自我诊断测试一般在何时进行? A. 启动时
    B. 运行过程中随机时刻
    C. 用户请求时
    D. 每天固定时间

二、简答题(每题10分,共30分)
  1. 描述CRC(循环冗余校验)的工作原理,并解释它为什么比简单的奇偶校验更可靠。

  2. 解释看门狗定时器(Watchdog Timer, WDT)的作用及其在嵌入式系统中的重要性。请提供一个具体的使用场景说明如何配置和使用WDT。

  3. 说明心跳信号在网络通信中的作用,并举例说明它是如何帮助维护系统稳定性的。

三、编程题(每题15分,共30分)
  1. 编写一段C语言代码,实现一个函数来计算给定数据缓冲区的CRC-8校验值。确保代码包括必要的注释来解释其工作原理。
#include <stdint.h>
#include <stddef.h>

uint8_t crc8(const uint8_t *data, size_t length);
  1. 编写一段C语言代码,模拟一个简单的看门狗定时器管理器。该管理器应该能够在主循环中定期重置计时器,以防止系统因程序卡住而停止响应。同时,请包含适当的注释来解释每个关键部分的功能。
#include <avr/wdt.h> // 假设这是AVR单片机平台

void setup_watchdog();
void feed_watchdog();

void setup() {
    setup_watchdog();
    // 其他初始化代码...
}

void loop() {
    // 主业务逻辑...

    feed_watchdog(); // 每次迭代都喂狗一次
}
四、设计题(每题15分,共20分)
  1. 设计一个用于监控嵌入式系统状态的框架。该框架应该能够实时收集系统的关键参数(如温度、电压等),并在参数超出设定范围时触发警报或采取保护措施。请详细描述你的设计方案,包括硬件选择、软件架构以及可能采用的优化措施。

  2. 创建一个基于心跳信号的网络连接健康监测系统。系统应该能够定期发送心跳包,并根据对方的响应判断网络连接是否正常。如果检测到连接中断,系统应该尝试重新建立连接或通知管理员。讨论你将采取哪些步骤来确保系统的可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/952799.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spring boot学习第二十三篇:Spring Boot集成RocketMQ

前置条件先安装好RocketMQ 希望在Window10安装rocketMQ并简单使用&#xff0c;可以参考如下文章&#xff1a; Window10安装rocketMQ并简单使用-CSDN博客 1、pom.xml文件里面加上依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId&…

OpenCV基础:视频的采集、读取与录制

从摄像头采集视频 相关接口 - VideoCapture VideoCapture 用于从视频文件、摄像头或其他视频流设备中读取视频帧。它可以捕捉来自多种源的视频。 主要参数&#xff1a; cv2.VideoCapture(source): source: 这是一个整数或字符串&#xff0c;表示视频的来源。 如果是整数&a…

使用MATLAB正则表达式从文本文件中提取数据

使用MATLAB正则表达式从文本文件中提取数据 使用Python正则表达式从文本文件中提取数据的代码请看这篇文章使用正则表达式读取文本数据【Python】-CSDN博客 文本数据格式 需要提取 V 后面的数据, 并绘制出曲线. index 1V 0.000000W 0.000000E_theta 0.000000UINV 0.0…

Table-Augmented Generation(TAG):Text2SQL与RAG的升级与超越

当下AI与数据库的融合已成为推动数据管理和分析领域发展的重要力量。传统的数据库查询方式&#xff0c;如结构化查询语言&#xff08;SQL&#xff09;&#xff0c;要求用户具备专业的数据库知识&#xff0c;这无疑限制了非专业人士对数据的访问和利用。为了打破这一壁垒&#x…

怎样使自己处于高能量状态?

在忙碌的生活中&#xff0c;保持高能量状态很关键。以下是一些简单易行的方法。 一、原谅自己&#xff0c;放下过去 别总回想让自己尴尬或犯错的事&#xff0c;这样只会消耗能量。告诉自己“错了就改&#xff0c;别再想”&#xff0c;把精力放在当下和未来。 二、避免内耗&…

Linux高并发服务器开发 第十二天(阻塞/非阻塞 fcntl函数 位图 lseek函数 传入传出参数)

目录 1.阻塞和非阻塞 2.fcntl 函数 3.位图 4.lseek 函数 5.传入参数传出参数 5.1传入参数 5.2传出参数 5.3传入传出参数 1.阻塞和非阻塞 - 阻塞、非阻塞是 设备文件、网络文件具备的属性&#xff08;不是read、write的属性&#xff09;。 - 产生阻塞的场景&#xff1…

【C语言系列】函数递归

函数递归 一、递归是什么&#xff1f;1.1尾递归 二、递归的限制条件三、递归举例3.1举例一&#xff1a;求n的阶乘3.2举例二&#xff1a;顺序打印一个整数的每一位 四、递归与迭代4.1举例三&#xff1a;求第n个斐波那契数 五、拓展学习青蛙跳台问题 一、递归是什么&#xff1f; …

啥!GitHub Copilot也免费使用了

文章目录 前言免费版直接修复代码多文件上下文Agent模式总结 前言 最近&#xff0c;GitHub 给开发者们带来了一个好消息&#xff1a;他们的 AI 编程助手 GitHub Copilot 现在可以免费使用了&#xff01;以前&#xff0c;每个月要花 10 美元才能享受的服务&#xff0c;现在对所…

【OpenGL/Assimp】渲染模型、半透明材质与封装光源

文章目录 渲染成果Assimp库准备&#xff1a;Mesh类修改&#xff1a;透明贴图使用&#xff1a;光源封装&#xff1a;使用方式在如下测试环境中&#xff1a; 渲染成果 Assimp库准备&#xff1a; 从GitHub拉取源码&#xff0c;根据网络教程&#xff0c;借助CMake生成VS工程项目&a…

【数据结构高阶】B-树

目录 一、常见的搜索结构 二、B树 2.1 B树的概念 2.2 B树插入数据的分析 2.3 B树的性能分析 2.4 模拟实现B树 2.4.1 B树节点的定义 2.4.2 B树数据的查找 2.4.3 B树节点的数据插入 2.4.4 B树的遍历 2.4.5 模拟实现B树实现的完整代码 三、B树 3.1 B树的概念 3.2 B树…

人才选拔中,如何优化面试流程

在与某大型央企的深入交流中&#xff0c;随着该企业的不断壮大与业务扩张&#xff0c;对技术人才的需求急剧上升&#xff0c;尽管企业加大了招聘力度并投入了大量资源&#xff0c;但招聘成效却不尽如人意。经过项目组细致调研与访谈&#xff0c;问题的根源逐渐浮出水面&#xf…

【Bluedroid】HFP连接流程源码分析(一)

connect /packages/modules/Bluetooth/system/btif/src/btif_hf_client.cc static bt_status_t connect(const RawAddress* bd_addr) {log::verbose("HFP Client version is {}", btif_hf_client_version);CHECK_BTHF_CLIENT_INIT(); // 检查HFP客户端是否已初始化…

Shader->LinearGradient线性渐变着色器详解

XML文件 <com.example.myapplication.MyViewxmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_gravity"center"android:layout_height"400dp"/>自定义View代码 c…

【芯片封测学习专栏 -- 单 Die 与 多Die(Chiplet)介绍】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 Overview单个Die&#xff08;Monolithic Die&#xff09;多个Die&#xff08;Chiplet Architecture or Heterogeneous SoC&#xff09;如何判断一个SoC是…

acwing_5722_十滴水

acwing_5722_十滴水 下面这篇大佬的题解属实是把指针用明白了&#xff0c;可以好好理解一下&#xff1a; 原题解连接&#xff1a;AcWing 5722. 一个简单模拟实现 - AcWing map/unordered_map的用法:见收藏夹 #include<iostream> #include<unordered_map> #incl…

零基础学AI大模型要多久?真的能学会吗?

很多人都对学习AI大模型抱有疑问&#xff0c;特别是那些完全没有编程基础的朋友。其实&#xff0c;从零开始学习AI大模型是可以做到的&#xff0c;关键在于你的学习方法和投入的时间。下面我们来详细聊一聊这个问题。 学习时间 自学&#xff1a; 如果你选择自学&#xff0c;…

攻防靶场(34):隐蔽的计划任务提权 Funbox1

目录 1. 侦查 1.1 收集目标网络信息&#xff1a;IP地址 1.2 主动扫描&#xff1a;扫描IP地址段 1.3 搜索目标网站 2. 初始访问 2.1 有效账户&#xff1a;默认账户 2.2 利用面向公众的应用 2.3 有效账户&#xff1a;默认账户 3. 权限提升 3.1 计划任务/作业&#xff1a;Cron 靶场…

Java高频面试之SE-11

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本牛马baby今天又来了&#xff01;哈哈哈哈哈嗝&#x1f436; Java中是引用传递还是值传递&#xff1f; 在 Java 中&#xff0c;方法参数传递是通过 值传递 的方式实现的&#xff0c;但这可能会引起一…

2.两数相加--力扣

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 …

与Linux的设备树文件(dts)的基础知识【编写和操作】

编写相关 01-双引号中的内容表示字符串,<>中的内容表示数值 示例如下&#xff1a; / {swh_led0 {compatible "swh_leddrv";pin <0x00030001>;};.......};compatible的具体内容为字符串swh_leddrv&#xff0c;而pin的值为数值0x00030001。 操作相关…