当前位置: 首页 > news >正文

FreeRTOS缩小bss段的处理

bss太大了,有60多M,客户要求处理一下   

readelf -s  app.elf  | grep "OBJECT"
发现有一条
592: 8800dd78 0x4000000 OBJECT  LOCAL  DEFAULT   15 ucHeap
长度64M,地址8800dd78刚好在bss段里,bss段地址如下:
readelf -S  app.elf
 [15] .bss              NOBITS          8800aee0 0bc218 4890eac 00  WA  0   0  4

于是需要把ucHeap单独放到一段

ucHeap是freeRTOS里内存分配里的一个静态变量,freeRTOS的堆分配都是在这个ucHeap上

/* Allocate the memory for the heap. */
#if ( configAPPLICATION_ALLOCATED_HEAP == 1 )
/* The application writer has already defined the array used for the RTOS
* heap - probably so it can be placed in a special segment or address. */extern uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];
#elsestatic uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];
#endif /* configAPPLICATION_ALLOCATED_HEAP */

修改方式如下

a、FreeRTOSConfig.h里定义
#define configAPPLICATION_ALLOCATED_HEAP 1

b、增加一个ucHeaps段0x06000000==100,663,296,100M,应该够了,调整一下段地址
ucHeaps                               0x84000000   0x06000000

c、程序里定义一个
uint8_t ucHeap[ configTOTAL_HEAP_SIZE ] __attribute__((section(".ucHeap"))) __attribute__((aligned(4096)));

重新编译一个app.elf就行了

http://www.lryc.cn/news/349391.html

相关文章:

  • STM32数字示波器+详细注释+上位机程序+硬件
  • 【平衡二叉树】AVL树(双旋)
  • 【保姆级介绍自动化的讲解】
  • 【大数据面试题】27 讲下Doris的物化视图
  • kylin 使用心得
  • 在线音乐系统
  • LeetCode算法题:49. 字母异位词分组(Java)
  • 第五课,输入函数、布尔类型、比较运算和if判断
  • 数学建模——线性回归模型
  • 景源畅信:抖音小店比较冷门的品类分享?
  • java项目之企业资产管理系统(springboot+vue+mysql)
  • [ardunio ide导入blinker库]
  • Llama 3 超级课堂 -笔记
  • Leetcode 第 129 场双周赛题解
  • 队列的讲解
  • 算法学习笔记(LCA)
  • 记一次苹果appstore提审拒审问题1.2
  • 在做题中学习(59):除自身以为数组的乘积
  • centos 把nginx更新到最新版本
  • 01.认识HTML及常用标签
  • 从零开始:C++ String类的模拟实现
  • 银河麒麟服务器操作系统V10-SP2部署gitlab服务
  • 【计算机毕业设计】基于SSM+Vue的线上旅行信息管理系统【源码+lw+部署文档+讲解】
  • 链表CPP简单示例
  • 智能EDM邮件群发工具哪个好?
  • 低代码与AI技术发展:开启数字化新时代
  • 风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)
  • uni-segmented-control插件使用
  • 被动防护不如主动出击
  • ollama离线部署llama3(window系统)