嵌入式系统运行时的内存情况是非常值得关注的。本文档用于分析乐鑫ESP32 SDK(版本esp-idf-v3.0-rc1) Heap (堆内存)管理的实现。 1:Heap管理主要函数接口与数据结构1.1主要函数接口ESP32的SDK对于heap部分管理的源码位于路径\esp-idf-v3.0-rc1\components\heap下,可以简单的认为分为两层:heap_caps_init.c
使用rust(no-std)环境和esp-hal库实现SSD1306显示屏(128x64)显示bmp图片. 摘要使用rust(no-std)环境和esp-hal库实现SSD1306显示屏(128x64)显示bmp图片.平台信息esp32(模组:ESP32-WROOM-32D)(xtensa lx6)(xtensa-esp32-none-elf)rust开
转载 2024-07-22 14:10:37
172阅读
1.折腾过电脑的朋友都知道,当电脑运行比较卡的时候,我们可以通过给电脑加装内存条来改善电脑的性能。那么号称微型计算机的单片机能不能像电脑一样加装内存条呢?装内存条倒是不行,但是我们可以给单片机外加和内存条效果一样的SRAM来提升单片机的性能。下面以STM32F407ZGT6单片机来讲解一下来扩展外部SRAM 原理:给STM32芯片扩展内存与给PC扩展内存的原理是一样的,只是PC上一般以内存条的形式
背景本篇文章将介绍一下ARM架构的ARM-M系列单片机的flash以及ram,以及程序启动的逻辑。提前申明,本人所写的本文是汲取网上的知识以及自己的理解,如果哪里讲的不对请广大网友指正。本文先以stm32f429ZIT6这个型号的单片机进行介绍。STM32F429ZIT6微控制器2048KB FLASH,256 KB SRAM, SDRAM 64Mbits。最高180MHz主频FLASH先说fla
本人使用的esp32的以太网硬件组合为内置MAC和外置PHY 配置完成,编译正常之后进行代码解析(为什么有这系列的文章,因为小编打算制作一个基于ESP32的wifi和以太网自动切换的物联设备)当拿到一个IDF程序时,我们首先找到入口函数void app_main(void)本人已经删除了大部分无用代码(使用人根据自己的实际硬件进行修改)void app_main(void) {
ESP32-S3-BOX        ESP32-S3-BOX-Lite是乐鑫推出的新一代开源 AIoT 开发套件,搭载支持 AI 加速的 ESP32-S3 Wi-Fi + Bluetooth 5 (LE) SoC。该开发板配备一块2.4寸LCD显示屏、双麦克风、一个扬声器、两个用于硬件拓展的Pmod™兼容接口、结合
嵌入式编程中的 attribute 到底是什么相信阅读嵌入式代码的老铁经常看到一些类型定义、变量、函数有 attribute 标识符,这个标识符号到底是做什么的?有哪些用法,咱们今天就来聊一聊。attribute 可以指定编译时的细节。其可作用于变量、函数、结构体、结构体成员。 值的注意的是,Attributes 机制并不是 C标准 的一部分。因此,使用 Attributes 的程序有时候不可跨编
转载 2024-06-28 22:22:34
71阅读
1、本示例适合于ESP8266和ESP32的OTA升级,使用官方的RTOS SDK3的框架编程,用户只要给出URL,代码自动解析出域名、IP、端口、文件路径等信息,然后通过HTTP请求下载固件。2、本人测试固件放到阿里云对象存储OSS中,可以参考以下链接说明。或者自己搭建局域网服务器。阿里云对象存储上传文件_dear_Wally的博客3、user_fota.c#include "user_fota
一,什么是外部
原创 2021-12-04 17:07:06
10000+阅读
1点赞
之前博客中讲解了如何通过STM32CubeMx配置生成多通道ADC的DMA方式采集,以及内部温度传感器的使用,但还留下了一些疑问,问什么需要屏蔽DMA传输完成的中断,以及所生成的代码的详细分析。接下来就开始对上一篇文章的内容进一步讲解。 本次的分析思路将按照自动生成的主函数顺序进行讲解。但不介绍如下函数:/* Reset of all peripherals, Initializes the Fl
文章目录问题描述:问题解决更改LVGL RAM缓存大小看ESP32RAM使用情况查看flash大小参考链接 问题描述:使用LVGL可显示64 * 64的GIF,但是却无法显示120*120的GIF。问题解决更改LVGL RAM缓存大小分析原因:在用LVGL显示GIF图片时,会用到LVGL的GIF解码器,该解码器要求的空间大小如下: 因此,对于6464的GIF图片,其需要的RAM空间为: 对于1
【简化的 OTA Demo】本示例用于演示对固件空中升级的流程。本示例是一个简化版的演示程序,对于实际的产品,你应当使用安全协议,例如 HTTPs。【目标】运行在 ESP32 上面的应用程序可以通过下载一个新的镜像文件并将其存储到 flash 上面来进行更新。在这个例子中,ESP32 在 flash 上面有三个镜像:工厂、OTA_0、OTA_1,它们每个镜像都是一个子包含的分区。OTA 镜像分区的
转载 2024-05-14 16:55:57
127阅读
自去年搭建了v3.3版本的esp32环境后,如今esp32的版本已经到了4.3版本,为了紧跟乐鑫的步伐,打算将v3.3升级至v4.2稳定版本,从此踏上了一条漫漫的不归路。 先将经历的一些坑罗列如下,都是笔者的血泪史。安装包千万不能用github上生成的zip压缩包! 非常坑的地方!但是有小伙伴又说了,按照官方文档使用下列指令cd ~/esp git clone -b release/v4.2 --
转载 2024-04-26 11:48:59
35阅读
简单介绍1、ESP32 是集成2.4 GHz Wi-Fi 和蓝牙双模的单芯片方案,采用台积电(TSMC)超低功耗的40 纳米工艺,拥有最佳的功耗性能、射频性能、稳定性、通用性和可靠性,适用于各种应用和不同功耗需求。2、ESP32 专为移动设备、可穿戴电子产品和物联网(IoT)应用而设计。作为业内领先的低功耗芯片,ESP32 具有精细分辨时钟门控、省电模式和动态电压调整等特性。  &nbs
当下FreeRTOS得到了Keil、STM32Cube MX等开发环境的大力支持,很大程度上无需再考虑移植等底层问题,简单设置后在代码中直接调用即可。不得不说,这是激动人心的,RTOS的各项特性所带来的方便给予我们极大的诱惑,总觉得只要用好RTOS,我们能把单片机玩出各种花样,再也不用考虑什么全局变量、轮循顺序、执行时长等恼人的问题,只要设置好优先级、信号量和任务参数,剩下的就可以安心于用代码实现
转载 2024-10-03 12:50:19
93阅读
前言ESP32 是一颗低功耗、高集成度、性能稳定的 Wi-Fi /BLE 芯片,是物联网开发的首选设备。它采用 2.4 GHz Wi-Fi 加蓝牙双模芯片,采用 TSMC 低功耗 40nm 技术,功耗性能和射频性能最佳,安全可靠,易于扩展至各种应用。同时集成了双核 160 MHz MCU、两个浮点运算单元 (FPU)、硬件安全加速器、电容触摸传感器、霍尔传感器、ADC、DAC、蓝牙/Wi-Fi 协
转载 2024-05-04 16:06:20
468阅读
遇到难题一、:RAM内存不足错误:一 、将UC/OS III移植到STM32F103C8T6的遇到内存不足的报错。分析,c8t6系类RAM内存只有20KB。如上图。在代码中将heap_size设置成了27u*1024u及27k,堆空间比RAM还要大。改成10k,并且根据情况缩小任务申请的堆栈空间。二、访问ESP8266所建立的WEB服务器时发生重启并报堆空间不足分析: 与C程序项目,C可
1,启用 外部RAM勾选 Support for external, SPI-connected RAM 如下图2,配置说明1,选择 外部RAM 的类型(见下图) 这个要根据自己的板子选择, ESP32支持的外部RAM有限. 不清楚的 选择 自动检测2, 设置 外部RAM 的时钟速度(见下图) 勾选40M即可官方解释:选择SPI RAM芯片的速度。如果SPI RAM被启用,我们只支持现在支持的三种
转载 2024-02-21 10:47:34
2958阅读
前言最近项目需要买了一个ESP-WROVER-E模块,这个模块内置了一个4MB的PSRAM,对于需要大内存运行的场景非常友好。 在我的项目中用到了LVGL这个第三方图形库,下面就讲一下如何最大化地在LVGL中使用这个PSRAM。教程在lv_conf.h文件中,找到下面的代码。/*1: use custom malloc/free, 0: use the built-in `lv_mem_alloc
转载 2024-03-30 07:42:38
2373阅读
第一回 新手上路(开始之前要准备)本系列涉及到使用的软件和硬件并不像以前那样繁琐、复杂。如果之前有这方面的了解,初学过Python或者用过80C51或STM32系列的MCU,那么这一回的内容就跟吃馍沾酱豆一样简单了。学编程语言总是越学感觉越难,往往都是兴趣作为原始驱动,后面却变成了生产力里的驱动。人生苦短,及时行乐,如果刚上手就能够方便地驱动硬件,初学即巅峰,岂不是美滋滋?那么MicroPytho
  • 1
  • 2
  • 3
  • 4
  • 5