標題: pic f25k80單片機 ram空間不夠,如何解決? [打印本頁]

作者: chenzou    時間: 2021-6-16 10:11
標題: pic f25k80單片機 ram空間不夠,如何解決?
pic f25k80單片機  RAM只有3649字節(jié),做通信板使用,結合串口,485 ,can通信,主要是mqtt協(xié)議數(shù)據(jù)傳輸,但是現(xiàn)在問題是,需要接收大于517字節(jié)的遠程升級包,需要申請1024字節(jié)的全局變量,但是ram完全不夠用呢,寫完代碼ram至少差512字節(jié)的空間.代碼部分通過map文件感覺能優(yōu)化的都優(yōu)化了,請問有什么辦法呢,或者提供解決思路,和優(yōu)化方法,謝謝

作者: Y_G_G    時間: 2021-6-16 16:02
3649字節(jié)都不夠?那8051的256個字節(jié)怎么辦呢?
PIC的18系列是中高端單片機了,不太可能用到資源不的情況的
我不會C,所以不知道怎么回事,但256個字節(jié)都足夠我用的,那3649字節(jié)肯定更加不用說了
作者: 三歲而    時間: 2021-6-16 16:08
1、程序優(yōu)化:
①、將固定的代碼數(shù)組等,存到ROM。(51單片機用 code表示存到 ROM)
②、壓縮多余緩沖區(qū),如數(shù)組長度根據(jù)需求來定。不要直接a[100]一棍子打死。
③、合理分配變量數(shù)據(jù)類型,如計數(shù)值在0-100內(nèi)的數(shù),就沒必要用 uint 了,使用 uchar 就夠了。只要兩個狀態(tài)的標志位,用 bit 就行了,不要直接 uchar。
④、可以用邏輯運算的,就不要采用算術運算。如 a/8,可以寫成 a>>3,當然 a不是浮點型數(shù)據(jù)才行。而a*2則是 a<<1;而a%4,可以寫成 a&0x03;
……
……
……
2、擴大RAM
①、買個同系列高RAM區(qū)間的單片機。
②、買個同系列高RAM區(qū)間的單片機。
③、買個同系列高RAM區(qū)間的單片機。
作者: hz_dyg    時間: 2021-6-17 09:30
3649字節(jié),只要不是超復雜的功能,沒用OS,應該足夠用了?梢怨蚕碜兞浚绻麅蓚功能不同時用的話。
作者: shumivan    時間: 2021-6-17 10:56
什么鬼,我用51的STC8A8K,還不如你這呢,也是使用的MQTT,485,JSON,很多東西,照樣夠,自己在程序上想辦法優(yōu)化才是硬道理.會做是一樣面,怎么優(yōu)化地去做,是你該好好考慮的,加油.




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1