色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎么解決MCU RAM空間不夠用的問題?

TopSemic嵌入式 ? 來源:TopSemic嵌入式 ? 2024-05-01 09:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

之前使用沁恒公司的一款BLE芯片CH573,隨著代碼量的增多,開發到后期時遇到了RAM空間不夠用的問題,當時嚇了我一跳,以為需要重新換更大RAM的芯片。后來經過一番分析,優化之后省出來一部分空間,解決了RAM危機。

30fba576-0049-11ef-a297-92fbcf53809c.png

CH573的Flash挺大,但是RAM只有18K。只跑一個BLE的HID_Keyboard例子就會占用接近14K,留給用戶真正能使用的RAM空間只有約4K。

310efbbc-0049-11ef-a297-92fbcf53809c.png

項目里除了用到BLE還用到了USB通信OLED顯示等功能,所以一不小心RAM就緊張了。

在優化RAM空間之前,首先要利用好map文件,查看RAM空間的實際占用情況,這樣才好針對性去優化。

CH573 RAM起始地址為0x20003800

311a49d6-0049-11ef-a297-92fbcf53809c.png

通過map文件可以清楚的看到RAM的實際占用情況:

3125862a-0049-11ef-a297-92fbcf53809c.png

31364dde-0049-11ef-a297-92fbcf53809c.png

比如上述MEM_BUF就占用了6K空間,它在程序中定義如下:

#define BLE_MEMHEAP_SIZE          (1024*6)
attribute((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4];

這個和藍牙協議棧相關,不可隨意修改。

我當時主要優化了一個地方:中斷服務函數。CH573要求中斷服務函數放到RAM里(猜測可能是為了提高響應速度),我之前沒注意把所有的中斷處理代碼全部都寫在了中斷服務函數里,導致占用了很多RAM空間,

其實只需要按照如下的寫法就會節約很多空間:

/*********************************************************************
 * @fn      USB_IRQHandler
 *
 * @brief   USB中斷函數
 *
 * @return  none
 */
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
void USB_IRQHandler(void) /* USB中斷服務程序,使用寄存器組1 */
{
    USB_DevTransProcess();
}

即將USB_DevTransProcess()函數的具體實現寫在外面。

除此之外,還有比如靈活使用const關鍵字、使用union等方法,不在此詳細介紹了。

重要的是利用好map文件,找到占空RAM大的地方,對應去優化。

在成本允許的情況下,當然是一開始就選擇一款RAM空間足夠大的MCU最好。


審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FlaSh
    +關注

    關注

    10

    文章

    1675

    瀏覽量

    151484
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1391

    瀏覽量

    117223
  • BLE
    BLE
    +關注

    關注

    12

    文章

    697

    瀏覽量

    60639
  • USB通信
    +關注

    關注

    0

    文章

    22

    瀏覽量

    11151
  • OLED顯示
    +關注

    關注

    1

    文章

    57

    瀏覽量

    17267

原文標題:MCU RAM空間不夠用了怎么辦?

文章出處:【微信號:TopSemic,微信公眾號:TopSemic嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    PCB面積總是不夠用?試試這個方案唄~

    PCB面積總是不夠用?試試這個方案唄~
    的頭像 發表于 10-17 15:14 ?1186次閱讀
    PCB面積總是<b class='flag-5'>不夠用</b>?試試這個方案唄~

    單片機RAM不夠用怎么解決?

    來自一位用戶的咨詢,麻煩幫忙解答。越詳細越好,有圖有真相。如有相關的視頻、文檔也可以輔助說明,謝謝。 單片機RAM不夠用怎么辦? 單片機都有RAM,如果我們一下子定義了一大堆的變量,使得變量占的
    發表于 02-02 07:35

    esp32c2同時開啟wifi藍牙內存ram會有點不夠用,如何能夠多節省點ram空間出來嗎?

    如題 esp32c2 同時開啟wifi藍牙 內存ram會有點不夠用,有大佬知道如何能夠多節省點ram空間出來嗎
    發表于 06-05 06:48

    E幣不夠用

    E幣不夠用,{:1:}{:16:}
    發表于 04-29 18:12

    1452的延時不夠用,外掛ram做延時,請問硬件應該怎么連接,sigmastudio應該怎么設置?

    1452的延時不夠用,打算外掛ram做延時。。。請問硬件應該怎么連接,sigmastudio應該怎么設置呢?
    發表于 08-03 06:41

    請問DSP中的.ebss文件能否映射到Flash上,SARAM空間有點不夠用

    DSP中的.ebss文件能否映射到Flash上,SARAM空間有點不夠用?請高手指點,不勝感激!
    發表于 12-03 16:01

    mini板上lwip+ucosii移植ram不夠用該怎么辦?

    板子只有48k的ram,而且mini沒有外置ram,為什么???如果在103r8上跑lwip和ucosii可以嗎,感覺可以rom和ram不夠用,這個配置應該怎么搞呢?十分感謝~~~
    發表于 08-20 04:35

    DSP匯編程序用軟件仿真時,寫文本段發現RAM不夠用怎么解決?

    原來有一套可以直接燒錄到flash的程序,現在想改成用硬件仿真器XDS510可以在線單步測試的程序,修改CMD文件,把原來在flash的段改成在RAM段,發現RAM不夠用,怎么辦?
    發表于 07-13 06:31

    malloc申請的內存不夠用怎么解決?

    辦法把reserved的那部分也用起來,我現在因為用到大量的long double數據,malloc申請的內存不夠用.問題2:想請教下,關于long double的數據類型的計算,有沒有什么辦法可以提高
    發表于 07-22 10:05

    串口不夠用的解決辦法?

    我要用好我個串口,但是單片機上就必個,串口不夠用,怎么辦?
    發表于 08-04 00:56

    IO口不夠用怎么辦?

    C51單片機————總線與系統擴展Created with Rapha?l 2.1.2張三張三李四李四四哥,IO口不夠用怎么辦?你可以進行系統擴展!什么鬼?那是什么東西?。。。看書去1.引文前面說過
    發表于 07-19 07:21

    stm32出現ram、rom不夠用怎么解決?

    stm32出現ram、rom不夠用怎么解決?
    發表于 02-16 06:00

    諾基亞投訴率居榜首 電池不夠用成突出問題

    諾基亞投訴率居榜首 電池不夠用成突出問題
    發表于 04-09 08:48 ?386次閱讀

    stm32出現ram、rom不夠用,調試方法

    手里有一塊stm32f103r8ct的板子,想移植ucosii+lwip,使用原子mini的源代碼提示ram、rom不夠用,一直很糾結,感覺應該是malloc的問題,但又不知道怎么改
    發表于 12-20 19:15 ?3次下載
    stm32出現<b class='flag-5'>ram</b>、rom<b class='flag-5'>不夠用</b>,調試方法

    內存不夠用的處理方法

    內存不夠用的處理方法 內存不夠用是許多計算機用戶普遍面臨的問題。當我們的計算機內存不足時,會導致系統運行緩慢,應用程序無法正常運行,甚至直接導致計算機崩潰。然而,幸運的是,我們有很多
    的頭像 發表于 12-28 11:15 ?1780次閱讀
    主站蜘蛛池模板: 国产精品高清在线观看地址 | 暖暖视频中国在线观看免费韩国 | 少妇久久久久久被弄高潮 | 久久re热在线视频精69 | 好男人好资源在线观看 | 国产黄大片在线视频 | 亚洲成人免费 | 国产欧美精品国产国产专区 | 国产免费久久爱久久啪 | 日韩在线看片中文字幕不卡 | 果冻传媒在线观看网站 | 少妇被躁爽到高潮无码久久 | 精品久久日日躁夜夜躁AV | 亚洲国产精品VA在线看黑人 | 国产乱码精品一区二区三区四川 | 成人中文字幕在线观看 | 国产一区二区免费在线观看 | 97色香蕉在线 | 国产精品一区二区四区 | 伊人草久久 | 欧美肥胖女人bbwbbw视频 | 国产亚洲福利在线视频 | 亚洲欧洲日韩国产一区二区三区 | 在线观看国产高清免费不卡 | XXOO麻豆国产在线九九爱 | 1300部真实小Y女视频合集 | 亚洲AV一宅男色影视 | 肉肉的各种姿势高H细文 | 亚洲蜜桃AV永久无码精品放毛片 | 精品亚洲永久免费精品 | 亚洲精品成人AV在线观看爽翻 | 苍井空a 集在线观看网站 | 国产精品久久国产三级国不卡顿 | AV亚洲精品少妇毛片无码 | 丰满少妇69激懒啪啪无码 | 久久久免费观成人影院 | 久久婷五月综合色啪首页 | 白丝女仆被强扒内裤 | 日韩黄色免费 | 麻豆一区二区三区蜜桃免费 | 日本高清在线一区二区三区 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品