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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3721|回復: 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)合理安排內存空間,尤其是堆棧區。
        。。。待補充
            好了,不多說了,最近馬上離校,雜事很多,耽誤了不少進度,期待下次再聊,未完待續~

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 草久在线视频 | 美女福利视频 | 成人久久久久 | 日日爱视频 | 国产精品国产精品国产专区不卡 | 羞羞视频在线观看网站 | 91亚洲一区 | 亚洲黄色一级毛片 | 欧美一区视频 | 免费成人高清 | 天天色天天射天天干 | 日韩欧美国产成人一区二区 | 天天爽一爽| 久久综合久久久 | 亚洲三级在线 | 成人av一区二区三区 | av中文字幕在线播放 | 91精品国产综合久久久动漫日韩 | 国产精品色婷婷久久58 | 欧美一极视频 | 亚洲一区 中文字幕 | 国产高清在线精品 | 日本一区二区三区四区 | 国产精品久久久久久久久久久新郎 | 午夜寂寞网站 | 国产午夜精品一区二区 | xx视频在线| 欧美日韩综合一区 | 国产黄色在线观看 | 国产精品视频一区二区三区 | 美女天天操 | 欧美成人自拍 | 999久久久国产精品 欧美成人h版在线观看 | av一区二区在线观看 | 综合色播 | 一区二区三区视频在线观看 | 国产一区免费视频 | 欧美网址在线观看 | 夜夜骑av| 在线观看av网站 | 国产在线精品一区二区 |