請(qǐng)問ch592在adv_vendor_self_provision_with_peripheral最大支持多少的串口緩沖數(shù)組

ch592在adv_vendor_self_provision_with_peripheral例程中,添加了串口中斷,把收到的數(shù)存入隊(duì)列,隊(duì)列大小設(shè)置的800長(zhǎng)度。在我發(fā)出730字節(jié)的數(shù)據(jù)的時(shí)候,并打印出來的時(shí)候系統(tǒng)就自動(dòng)復(fù)位了。改小隊(duì)列長(zhǎng)度打印出來就不會(huì)復(fù)位?

您好,RAM的占用量多少。RAM去掉協(xié)議棧占用的部分后,剩下的部分是給用戶分配堆棧用的。如果使用了非TMOS的內(nèi)存申請(qǐng),可能是RAM不夠了;建議使用tmos_msg_allocate()接口管理內(nèi)存,由TMOS協(xié)議棧介入管理內(nèi)存。

可以在代碼開頭加打印寄存器R8_RESET_STATUS的數(shù)值,檢查一下復(fù)位原因。

在HardFault中斷服務(wù)函數(shù)中添加打印,看看是否進(jìn)了硬件錯(cuò)誤中斷,參考下篇博客添加打印跟蹤一下復(fù)位原因。

CH57x/CH58x/CH32V wch risc-v 芯片hardfault問題追蹤&程序卡死追蹤 - iot-fan - 博客園 (cnblogs.com)



Memory region? ? ? ? ?Used Size? Region Size? %age Used

? ? ? ? ? ?FLASH:? ? ? 108284 B? ? ? ?152 KB? ? ?69.57%

? ? ? ? ? ? ?RAM:? ? ? ?16624 B? ? ? ? 18 KB? ? ?90.19%

編譯后的RAM占用16624字節(jié),意思這16k是協(xié)議棧用的內(nèi)存嘛?? ?運(yùn)行程序的確是到了硬件錯(cuò)誤中斷里的并且執(zhí)行了復(fù)位。按道理說,我加大數(shù)組,編譯通過應(yīng)該可以用吧


在這個(gè)例程里可不可以更改Link.ld中RAM的起始位置和長(zhǎng)度呢?能改的話最大能改到多少,并且不影響其藍(lán)牙、OTA和mesh的功能


運(yùn)行到硬件錯(cuò)誤中斷函數(shù)后復(fù)位,一般是內(nèi)存溢出或篡改造成的。

該工程的協(xié)議棧占用的內(nèi)存主要由MESH_MEM和BLE_MEMHEAP_SIZE這兩處分配。tmos_msg_allocate()管理的內(nèi)存有BLE_MEMHEAP_SIZE限制,申請(qǐng)不到內(nèi)存時(shí)會(huì)報(bào)錯(cuò)。全局變量的占用大小是包含在已使用RAM里,就是圖里的16K的編譯結(jié)果中的,編譯不報(bào)錯(cuò)就行,但是要留有一定的RAM余量;局部變量和malloc()函數(shù),占用的內(nèi)存是編譯后剩余的RAM,占用過大可能導(dǎo)致內(nèi)存錯(cuò)誤。

該工程中無法修改LD文件調(diào)整RAM大小,有8K的ram是OTA要用到的,不能再改大了。RAM實(shí)在不夠用建議更換芯片,可以考慮CH582和CH32V208這兩款。


好的謝謝


你好請(qǐng)問一下,如果裁剪掉OTA功能只保留mesh和BLE的功能,最大能給tmos系統(tǒng)多少內(nèi)存供分配呢?裁剪掉OTA有沒有具體例程供參考


您好,可以直接在自配網(wǎng)代碼里增加BLE功能,可以參考下篇博客移植。

藍(lán)牙m(xù)esh組網(wǎng)實(shí)踐(在mesh工程中添加BLE功能) - JayWell - 博客園 (cnblogs.com)


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频