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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品免费国产一区二区三区四区 | 国产激情一区二区三区 | 午夜av影院 | 超碰成人网 | 成人在线视频网站 | 操操操操操操 | 久操不卡| 欧美精品三级 | 亚洲精品美女 | 日韩精品三级 | 日本高清中文字幕 | 69av在线| 欧美日韩综合网 | 在线观看黄网站 | 亚洲激情视频在线观看 | 国产一区二区在线观看视频 | 国产精品成人av | 亚洲精品在线视频观看 | 日本免费黄色网址 | 欧美色偷偷| 国产欧美一区二区精品性色超碰 | 国产精品久久久久久久久久辛辛 | 国产精品免费在线 | 久草手机在线视频 | 国产成人精品一区二区 | 看毛片的网站 | 操操操日日日 | 户外少妇对白啪啪野战 | 久热精品视频在线观看 | 九久久 | 久久综合五月天 | 在线观看中文字幕 | 欧美色综合网 | 进去里视频在线观看 | 日本不卡在线视频 | 欧美色偷偷| av超碰在线 | 狠狠草视频 | 99免费视频 | 久久av片| 精品国产福利 |