久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3687|回復: 0
收起左側

MSP430F4xxx小RAM堆棧溢出

[復制鏈接]
ID:82781 發表于 2015-6-24 17:01 | 顯示全部樓層 |閱讀模式
     前幾天一個大學同學在線問我他最近搞項目開發時遇到的一個問題,跟他聊了聊。他最近在搞水表的計量開發,采用的平臺是MSP430F4250(PS:很早之前去濰坊考察過一個做表的企業,發現搞表計量的大多都在用MSP430(貌似也有用STM8的),其中F4系列用的較多,一方面當然是考慮到功耗的問題,現在的表多是電池供電,一用就得用個一兩年是必須的,還有就是F4系列自帶段式液晶的驅動,并且支持差分的高分辨率A/D輸入,這點蠻重要的,現在的高精度傳感器貌似一色的差分輸出),他遇到的問題是程序里某個變量經常性的會被意外改變,造成數據混亂,所以產品一直無法出貨。
            看到上面的問題,有經驗的人很快就會意識的問題的所在,無非就是兩種可能,一個是該變量是全局的,而程序里有bug造成該變量在某個地方被錯誤的操作了,另外一種就是內存溢出了,變量地址重疊,造成數據混亂。個人感覺后一種的可能性較大,而事實也是如此,翻看MSP430F4250的數據手冊詫異的發現它的RAM竟然只有可憐的256B(是Byte,你沒有看錯,有木有,趕上當年叱咤一時的51了,看來不是后面的數越大就代表片子配置越NB),這對擁有動則幾KB、幾十KB甚至上百KB RAM的ARM來說,的確有點大巫見小巫的感覺,RAM這么小倒的確不敢用了(咳咳,都是被慣的,呵呵),這要是在上面寫程序還真得謹慎再謹慎啊。我一直覺著,在高端配置資源豐富的平臺寫出NB的算法實現NB的功能不算真正的NB,而在配置低端資源有限的平臺能實現同樣的功能那才叫NB,低端搞實現,高端搞優化嘛,哈哈。
            回到正題,最后經過各種嘗試,解決了問題,主要原因是他使用了中斷嵌套,這就造成了內存經常會只入棧不出棧,這對RAM空間緊缺堆棧大小有限的MCU來說是致命的,也就造成了前面遇到的數據混亂問題,所以這里提幾點小RAM空間MCU寫程序時需要注意的問題:
        (1)變量盡量使用局部變量;
        (2)不要在中斷服務函數里進行數據處理等復雜操作,將其移到while(1)主線程里,中斷服務程序里只是置位相應標志即可;
        (3)不要使用中斷嵌套功能;
        (4)合理安排內存空間,尤其是堆棧區。
        。。。待補充
            好了,不多說了,最近馬上離校,雜事很多,耽誤了不少進度,期待下次再聊,未完待續~

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产99久久 | 日韩成人在线免费视频 | 黄色av免费 | 亚洲成人自拍 | 久久99这里只有精品 | 在线视频一区二区 | 精品国产乱码一区二区三区 | 欧美日韩在线一区二区三区 | 国产精品久久 | 青娱乐一区二区 | 国产精品不卡 | 国产精品免费在线 | 精品日本久久久久久久久久 | 成人免费视频网站在线观看 | 国产一区视频在线 | 中文字幕 在线观看 | 色爽女 | 精品久久久久久久人人人人传媒 | 成人精品一区二区户外勾搭野战 | 一区二区三区精品视频 | 日本在线视频一区二区 | 人人干在线视频 | 国产在线观看一区二区 | 成人精品鲁一区一区二区 | 国产精品久久久久久久午夜 | 国产精品国产馆在线真实露脸 | 成人激情视频免费观看 | 亚洲国产成人精品女人久久久 | 91一区二区 | 日韩免费一级 | 欧美成人一区二区 | 天堂亚洲网 | 欧美h视频| 欧美日韩一区二区在线观看 | 亚洲天堂中文字幕 | 日本久久精品 | 亚洲天堂中文字幕 | 黑人中文字幕一区二区三区 | 日韩精品成人在线 | 天天操天天操 | 日韩在线不卡视频 |