高清国语自产拍免费一区二区三区_亚洲最大av网_亚洲午夜性刺激影院_国产色婷婷国产综合在线理论片a_亚洲国产视频一区二区_亚洲欧洲精品一区二区精品久久久_在线观看男女av免费网址_久热精品视频在线观看一区_亚洲日本va在线观看_亚洲少妇中出一区

 

基于DWC_ether_qos的以太網驅動開發-LWIP的堆(內存池)未對齊導致問題的案例分享

發布時間:2023-09-09 08:38:33  |  來源:面包芯語  

一.前言

內存未對齊訪問問題這個已經是老生常談的問題了, 由于LWIP的堆管理中也用到了地址(指針)強制轉換所以也會遇到這個問題。對于老手比較容易發現,對于新手可能會比較疑惑。所以也單獨分享一個案例吧,權當一個小的check list的case。

二.問題

Lwipopts.h中MEM_ALIGNMENT可以配置堆對齊大小,有問題時是配置為1

#define MEM_ALIGNMENT 1U


(資料圖)

異常時打印寄存器如下,當然不同平臺異常時如何獲取上下文信息方式不一樣,不在本文討論范圍內,我這里是RISC-V環境。

看到打印的mepc是0x20006C88,異常原因是地址未對齊。

所以是在運行0x20006C88時進入了異常,當然這個地方不一定是原始問題所在點,異常可能是跑了很久才出現的。

所以先在這里打個斷點試試

可以看到是pbuf.c的代碼中,所以可以懷疑是內存池或者堆的問題。

我們運行發現斷點并不能觸發,之前就已經異常了,所以只能跟代碼逐漸縮小范圍確認問題的。一般采用的方式是,逐步斷點或者打印或者刪除代碼,逐步縮小范圍的方法。

可以借鑒一些二分的思想,加快定位。

這里還是從pbuf開始,先找到相關代碼上層函數處,斷點

b pbuf_init_alloced_pbuf

看到異常前是可以停下來的

看到此時p的值是0x28201406

查看如下匯編代碼可知

sw zero,0(a0)即對應代碼p->next = NULL;

sw是word操作指令,但是地址a0不是word對齊,所以會產生異常

再si單步確實進入異常

所以問題確認了。

因為堆是分配的一塊區域,每一塊區域的開始地址對齊值就是上面設置的對齊大小,分配區塊后作為其他模塊使用,比如pbuf使用,前面部分作為管理結構體

struct pbuf 操作,所以實際是將一個區塊地址強制轉為了結構體指針。

此時訪問結構體成員,編譯器是自動按照自然對齊生成匯編指令的,因為編譯器并不知道你的對齊要求,所以如果系統不支持對應的指令非對其訪問就有問題,但是有些系統對應的匯編指令的行為支持不對齊訪問那么就沒有問題。

當然出于可靠性設計,建議不要進行強制類型轉換,比如MISRA標準里的規范就是如此。

如果代碼要做到兼容性可靠性非常好就要注意這個問題,此時不能使用強制類型轉換,而是使用字節序手動拼接得到成員的值。

但是出于靈活性考慮,很多協議棧的設計都是直接使用強制類型轉換的,所以這時用戶就需要注意,比如這里我們可以配置#define MEM_ALIGNMENT 4U

來保證上述分配出來的地址p是4字節對齊的,所以按照偏移,其成員也是4字節對齊的,sw指令操作的就是4字節對齊的成員,就不會有問題。

三.總結

以上分享一個簡單的案例,目的是提醒下要注意類似問題,尤其有指針強制類型轉換的要注意對齊問題。問題不難,也不復雜,但是可以作為check list的case可以作為檢查項目。

關鍵詞:

 

最近更新

高清国语自产拍免费一区二区三区_亚洲最大av网_亚洲午夜性刺激影院_国产色婷婷国产综合在线理论片a_亚洲国产视频一区二区_亚洲欧洲精品一区二区精品久久久_在线观看男女av免费网址_久热精品视频在线观看一区_亚洲日本va在线观看_亚洲少妇中出一区
欧美一区少妇| 欧美精品一区二区高清在线观看| 久久综合视频网| 玉足女爽爽91| 国产一区二区毛片| 精品欧美日韩在线| 欧美日韩国产天堂| 中文字幕亚洲欧美在线不卡| 蜜臀av在线播放一区二区三区| 91网页版在线| 色老汉av一区二区三区| 国产亚洲成年网址在线观看| 天天色天天操综合| 91麻豆视频网站| 致1999电视剧免费观看策驰影院| 久久品道一品道久久精品| 亚洲444eee在线观看| av电影在线观看完整版一区二区| 日韩欧美一区二区三区久久婷婷| 日韩视频一区二区在线观看| 亚洲综合自拍偷拍| 成人激情av网| 一级特黄录像免费播放全99| 久久久久久久综合日本| 免费看欧美美女黄的网站| 国产经典一区二区三区| 欧美日韩综合在线| 亚洲男人的天堂一区二区| 成人自拍视频在线观看| 亚洲啪啪av| 日本黄网免费一区二区精品| 日韩精品一区二区三区视频在线观看 | 99精品视频免费在线观看| 在线一区高清| 国产精品久线在线观看| 国产精品18久久久久| 水蜜桃一区二区三区| 久久久久久久久久久电影| 久久99精品国产麻豆不卡| 免费h精品视频在线播放| 精品国产乱码久久久久久夜甘婷婷| 午夜久久久久久| 国产精品久久久久av福利动漫| 欧美日韩国产中文| 亚洲成人免费在线观看| 国产精品久久久久久久久婷婷| 欧美精品久久一区| 性欧美大战久久久久久久久| 国产乱码精品一区二区三区中文| 91精品国产免费久久综合| 日韩一区精品字幕| 麻豆成人小视频| 久久久久久久久久久久久女国产乱 | 久久免费看少妇高潮| 韩国三级电影一区二区| 日韩av免费电影| 国产精品麻豆视频| a美女胸又www黄视频久久| 欧美日韩精品一区视频| 五月天视频一区| 欧美日韩一区在线视频| 亚洲国产精品ⅴa在线观看| 国产成人高清视频| 欧美日韩专区在线| 日韩国产在线观看| 日本在线观看一区| 中文字幕日韩一区| eeuss一区二区三区| 欧美电影免费提供在线观看| 九九热在线视频观看这里只有精品| 亚洲精品国产精品国自产| 亚洲天堂网中文字| 99精品国产一区二区| 精品少妇一区二区三区视频免付费| 精品综合免费视频观看| 日本高清免费不卡视频| 五月婷婷激情综合网| 日韩精品一区二区三区丰满| 亚洲视频小说图片| 国产亚洲精品美女久久久m| 久久精品在这里| 91在线国产观看| 欧美mv日韩mv亚洲| 丁香网亚洲国际| 91精品国产乱码久久蜜臀| 激情综合一区二区三区| 在线观看国产一区二区| 日本不卡高清视频| 一区二区视频在线观看| 五月天中文字幕一区二区| 亚洲国产一区二区精品视频| 亚洲一区免费视频| 少妇特黄a一区二区三区| 51精品视频一区二区三区| 久久69国产一区二区蜜臀| 91成人免费网站| 奇米一区二区三区av| 色94色欧美sute亚洲线路一ni| 亚洲aaa精品| 中文字幕在线亚洲三区| 日韩精品福利网| 色先锋aa成人| 久久精品免费观看| 欧美日韩国产三级| 国产九色sp调教91| 欧美一级理论片| 成人精品视频.| 久久久久久久av麻豆果冻| 999热视频| 亚洲欧洲三级电影| 欧美精品二区三区四区免费看视频| 亚洲精品欧美激情| 色一情一区二区三区四区| 首页欧美精品中文字幕| 欧美专区在线观看一区| 国产麻豆欧美日韩一区| 日韩美女在线视频| 2022国产精品| 中文字幕亚洲成人| 日韩一区二区电影在线观看| 日韩激情中文字幕| 欧美日韩国产免费| 成人高清免费在线播放| 国产午夜精品久久久久久久| 精品国产福利| 亚洲18色成人| 欧美日韩另类国产亚洲欧美一级| 国产精品99久久久久久似苏梦涵| 欧美mv日韩mv国产| 国产精品久久久久久免费观看 | 国产乱码精品一区二区三区日韩精品| 亚洲色欲色欲www在线观看| 涩涩涩999| 精品一区二区三区免费视频| 日韩免费高清av| 国产精品区一区| 夜夜精品浪潮av一区二区三区| 一本色道亚洲精品aⅴ| 国产精品一区免费在线观看| 久久一区二区三区国产精品| 精品乱色一区二区中文字幕| 午夜影院久久久| 在线不卡欧美精品一区二区三区| www.一区二区| 亚洲老妇xxxxxx| 在线日韩av片| av成人老司机| 亚洲精品中文在线| 91成人免费在线| av影院午夜一区| 亚洲欧美日韩系列| 欧美在线不卡一区| jizz一区二区| 亚洲激情五月婷婷| 欧美日免费三级在线| 91在线免费看| 亚洲国产精品一区二区久久恐怖片 | 99精品欧美一区二区三区综合在线| 亚洲欧洲99久久| 一本大道av一区二区在线播放| 成人美女在线观看| 亚洲欧美日韩国产综合| 欧美日韩在线观看一区二区 | 亚洲国产日产av| 欧美伦理视频网站| 粉嫩精品一区二区三区在线观看| 亚洲成国产人片在线观看| 欧美一区二区三区免费观看视频 | 1000精品久久久久久久久| 色视频成人在线观看免| 99这里只有精品| 亚洲国产综合色| 日韩欧美激情一区| 欧美久久在线| 国产精品一级片在线观看| 国产精品电影一区二区三区| 欧美怡红院视频| 国产精品一区二区三区在线| 日本三级韩国三级欧美三级| 久久精品人人做人人爽97| 宅男av一区二区三区| 91色婷婷久久久久合中文| 性欧美大战久久久久久久久| www国产成人免费观看视频 深夜成人网| 日本在线观看不卡| 暴力调教一区二区三区| 香港成人在线视频| 久久久精品综合| 欧美综合色免费| 国产伦精品一区二区| 韩国一区二区视频| 亚洲女人****多毛耸耸8| 欧美一区午夜精品| 天堂一区二区三区| 91丝袜美腿高跟国产极品老师| 日韩av一区二| 国产精品国产成人国产三级| 在线不卡中文字幕| 日韩亚洲视频在线| 91免费在线视频观看|