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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3614|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美xxxx黑人又粗又长 | 精品国产欧美一区二区三区不卡 | 欧美性大战久久久久久久蜜臀 | 亚洲精品美女视频 | 在线看成人av | 一区二区三区视频在线 | 日本免费小视频 | 黄色精品 | 精品一区在线看 | 麻豆国产精品777777在线 | 成人国产精品色哟哟 | 久久免费国产 | 中文字幕日韩欧美一区二区三区 | 91久久国产精品 | www.99热 | 国产精品123区 | 99福利| 色毛片 | 亚欧性视频 | 中文字幕一级毛片 | 亚洲视频在线看 | 久久精品国产一区 | 亚洲精品一区二区久 | 久久国产欧美日韩精品 | 国产精品亚洲成在人线 | 久久久久久中文字幕 | 91www在线观看| 久久91av| 涩涩视频在线观看 | 亚洲欧洲一区二区 | 欧美a级成人淫片免费看 | 精品久久久久久久 | 精品蜜桃一区二区三区 | 精品成人佐山爱一区二区 | 国产精品99久久久久久宅男 | 国产精品综合一区二区 | 国产一区二区在线播放 | 女人牲交视频一级毛片 | 欧美aaa | 91久久国产综合久久 | 一级黄色毛片子 |