QCC51XX---RAM资源查看

QCC51XX---系统学习目录_嵌入式学习_force的博客-CSDN博客

        想必大家有时会遇到一些memory的panic,就像下图的提示

        

        这主要是内存溢出引起的。而内存溢出主要有内存池(memory pool)和RAM溢出两种,不管哪种溢出都是不规范使用内存或过度使用造成的。那具体有多少能用或怎么正确使用呢?接下来我们一起看看。

        首先我们要了解芯片RAM的大小,以3044为例,datasheet中写了很多类型的RAM,但我们常用的只有P1核的DM(data memory),这个大小只有40KB。而这40KB也不全是给数据变量存储,里面会划分好几个分区,这部分可以在link_script_common.ld这个文件查看。我们也可以用一个简单的方法去看这个分区的情况,在pydbg的窗口输入apps1.subsystem.memory_usage(),我们就能看到整个P1的DM分区使用情况。

        可以看到这整一块大小正是40960个bytes,也就是40KB。而我们代码中申请的变量空间就是我图中圈出来的部分,大小约有24KB。这24KB还分了两部分,下面就来讲解下这两部分的内容。

        \pmalloc_blocks我们有时候会在代码中用到这样一些语句malloc和free,这是我们在代码中申请一部分空间,用完之后再释放时用到的语句。如果申请的指针变量没有用malloc分配空间就很容易出现莫名其妙的问题;或者用malloc分配了空间,但没有用free去释放空间,这就会造成空间没有被重复利用而导致内存溢出问题。其实malloc和free都是程序对内存使用的一种常见方法,他不是实时对RAM申请空间,而是在内存池(memory pool)中申请一个空间 ,这个内存池实际也是程序启动时申请的一个大变量。内存池的配置可以查找app_pools这数组。

         第一个数据表示这一个池的大小,第二个数据表示这个池的个数

        例如{4,15}表示,4bytes的内存池有15个

        另外用指令apps1.fw.pmalloc.info()可以去看实时的内存池使用情况

         这个实时的数据中内存池大小、个数和配置中的是一一对应的,(内存池有部分声明在pmalloc_config_P1.h中)其中out的这一列就是目前存在多少个正被使用的池。同时也可以用apps1.fw.pmalloc.report()看具体使用的地方。

        Tips:当申请的空间没有刚好合适的时候,会选择最贴近这个大小的去申请。当没有适合的内存池时,申请会失败。

        例如,申请一个6bytes的空间,程序是不会分配4bytes的内存池给你,只会分配一个8bytes的,如果8bytes的内存池没有了,程序就会分配12bytes的,遇到同样的问题以此类推。如果申请的是1000bytes,内存池最大就692bytes,这时候就会申请失败。

       unallocated_ram: 我们平常声明变量存储的空间,例如uint8 a[1000] 就会在这个空间划分1000bytes。这个空间没有什么特殊的规则,除了变量申请超过这个空间大小时就会造成panic。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
近年来,蓝牙耳机市场的发展非常快速,而且现在越来越多的公司也投入到蓝牙耳机这个大市场中来,很多工程师在产品研发前期就需要用到相蓝牙耳机开发板进行项目的前期设计,为此我们AITg即将推出基于QCC5124的QCC30XX/51XX ANC多功能音频开发板,满足开发者的研发设计需要。 基于QCC30XX/51XX ANC多功能音频开发板,以底板+模块的方式推出,完全满足现阶段QUALCOMM最新系列QCC30XX和QCC51XX的兼容性设计,底板可以适配所有最新系列QCC蓝牙芯片,只要更换模块就可以实现不同芯片的开发和设计,简单而有效。 QCC5124 ANC多功能音频开发板,除了支持常用的音频输入输出接口外,支持常用的2CVC通话降噪功能,还支持最新的Feedforward/Feedback/Hybrid ANC等模式ANC主动降噪功能的调试,完全能满足最新最强功能的应用设计。 底板除了支持常用模拟音频MIC/Line in输入,模拟音频差分转立体声输出外,还支持数字I2S转模拟音频立体声输出,数字MIC输入,数字光纤SPDIF输入输出等功能。 此外,底板还集成有很多SENSOR,包括SEMTECH的SX9325入耳检测和触摸检测,RICHTEK的RT3051 3-Axis 3极数字G-sensor,ZILLTEK的ZTS6312麦克风关键字语音唤醒等功能。 在此开发板基础上,开发者就能够满足现阶段各式各样的耳机类型代码编程设计和开发,头戴式/线控式/挂脖式/耳挂式/入耳式/TWS的类型都可以满足。前期在开发板上设计编译和调试好代码,后期可以直接将代码导入到产品经行性能测试,可以大大缩减整个产品从设计到量产的周期,这个开发板你值得拥有。 ► 核心技术优势 1. 支持Bluetooth 5.2 规范; 2. Profile A2DP v1.3、AVRCP v1.6、HSP v1.2、HFP v1.7、AVCTP v1.4、SPP v1.2、TDS v1.0; 3. 支持APTX,APTX-HD,APTX-LL; 4. 可编程Dual 120MHz DSP; 5. 支持TWS / TWS+ 功能; 6. 支持FF/FB/Hybrid ANC; 7. 支持1MIC/2MIC CVC; ► 方案规格 QCC5124: 1. 立体声模拟音频输出; 2. 立体声数字I2S音频输出; 3. 数字SPDIF输入输出; 4. 2MIC CVC通话降噪; 5. 支持ANC主动降噪; 6. TYPE-C接口和TRBI200烧录接口; 7. 内部充电管理; 8. 支持NFC/TEMP/IR; Sentech: SX9325 1. 支持入耳检测 ; 2. 支持触摸检测; 3. 支持3中超低功耗工作模式模式; RICHTEK: 1. RT9718 USB充电过压保护; 2. RT9536锂电池充电管理; 3. RT9078 LDO电源; ZILLTEK: 1. ZTS6015模拟MIC; 2. ZTS6032M数字MIC; 3. ZT6312关键字语音识别MIC; 方案来源于大大通。
qcc51xx代码流程是指Qualcomm公司推出的一款芯片的软件编程流程,主要用于嵌入式系统的开发。以下是对qcc51xx代码流程的300字回答: qcc51xx芯片的代码流程主要包括硬件初始化、操作系统启动、应用程序加载和执行等几个关键步骤。 首先是硬件初始化,该步骤主要包括对qcc51xx芯片内部外设的初始化,例如GPIO、UART、SPI等外设的配置和初始化,以及时钟和电源管理等设置。这些初始化操作主要是为了保证后续的软件运行能够正常和稳定地使用硬件资源。 接下来是操作系统启动,qcc51xx芯片支持多种操作系统,如Linux、Android等。在操作系统启动过程中,会进行内存的分配和初始化、中断和定时器的初始化、设备驱动程序的注册等操作。这样才能够正常启动操作系统,并为后续的应用程序执行提供必要的基础设施。 然后是应用程序加载和执行,qcc51xx芯片上的应用程序主要由用户程序和驱动程序组成。用户程序是运行在操作系统上的具体功能实现,而驱动程序则是为硬件设备提供控制和数据传输等功能。操作系统会根据用户程序的调度和请求,加载相应的应用程序,并执行相应的操作。应用程序的执行过程中,还需要处理系统调用、中断处理、任务切换等操作。 总的来说,qcc51xx代码流程主要包括硬件初始化、操作系统启动和应用程序加载和执行几个关键步骤。通过这些步骤,qcc51xx芯片的软件能够正常地运行和提供所需的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式学习_force

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值