☆─────────────────────────────────────☆
angusta (big toe) 于 (Sat Sep 24 00:07:59 2022) 提到:
发信人: kof94 (kof94), 信区: NewExpress
标 题: 青们,我刚解决了一个难搞的bug,望周知
发信站: 水木社区 (Fri Sep 23 19:02:16 2022), 站内
我自己手撸verilog做的fpga里面的dma,每次一读服务器内存,服务器就死机了,明明在驱动中已经申请内存了,搞了3周了没搞定,今天就在一个不会死机的主机上不停的试,对着逻辑分析仪看数据,最后终于被我试出来,原来驱动程序中申请到的内存地址,要除以4再让dma去读!虽然不知道原因,但终于搞定了,哈哈
☆─────────────────────────────────────☆
dennisi123 (dennisi123) 于 (Sat Sep 24 08:24:39 2022) 提到:
所以你的dma不支持非对齐访问?
☆─────────────────────────────────────☆
roc2007 (roc) 于 (Sat Sep 24 10:03:50 2022) 提到:
跨4K边界了吧
pcie 畸形帧导致死机
☆─────────────────────────────────────☆
ztg (迷迷糊糊) 于 (Sat Sep 24 19:49:30 2022) 提到:
软件申请内存的时候,难道不考虑Alignment到4?很多DMA都要求Alignment的,这应该算是常识。
记得配置内存空间可被cache的时候,软件必须保证内存地址要alignment到32。
【 在 angusta 的大作中提到: 】
: 我自己手撸verilog做的fpga里面的dma,每次一读服务器内存,服务器就死机了,明明在驱动中已经申请内存了,搞了3周了没搞定,今天就在一个不会死机的主机上不停的试,对着逻辑分析仪看数据,最后终于被我试出来,原来驱动程序中申请到的内存地址,要除以4再让dma去读!虽然不知道原因,但终于搞定了,哈哈
☆─────────────────────────────────────☆
Rome888 (寻秦) 于 (Sat Sep 24 22:20:15 2022) 提到:
一般都是要4字节对齐的
【 在 angusta 的大作中提到: 】
: 发信人: kof94 (kof94), 信区: NewExpress
: 标 题: 青们,我刚解决了一个难搞的bug,望周知
: 发信站: 水木社区 (Fri Sep 23 19:02:16 2022), 站内
:
: 我自己手撸verilog做的fpga里面的dma,每次一读服务器
: ..................
发自「今日水木 on TAS-AL00」
☆─────────────────────────────────────☆
showme (途牛) 于 (Sun Sep 25 16:49:28 2022) 提到:
妈呀,啥年代去追这种bug,浪费老板的工资,二十年前碰到过这种问题还情有可原。
☆─────────────────────────────────────☆
chenpp (本人男) 于 (Mon Sep 26 01:04:14 2022) 提到:
关键不是把addr[1:0]抹零,而是要把addr[1:0]切掉。
【 在 ztg 的大作中提到: 】
: 软件申请内存的时候,难道不考虑Alignment到4?很多DMA都要求Alignment的,这应该算是常识。
: 记得配置内存空间可被cache的时候,软件必须保证内存地址要alignment到32。
: 不知道原因,但终于搞定了,哈哈
: ...................
☆─────────────────────────────────────☆
dennisi123 (dennisi123) 于 (Mon Sep 26 09:50:36 2022) 提到:
DMA做master一般是要考虑所有情况的,包括4KB 边界 align和non-align访问
不过要求不高的话,也可以阉割,反正你是master,发啥你说了算233333
☆─────────────────────────────────────☆
Qlala (Qlala) 于 (Mon Sep 26 10:20:04 2022) 提到:
全面64位以后 这老哥是不是还要掉一次坑?
【 在 angusta 的大作中提到: 】
: 我自己手撸verilog做的fpga里面的dma,每次一读服务器内存,服务器就死机了,明明在驱动中已经申请内存了,搞了3周了没搞定,今天就在一个不会死机的主机上不停的试,对着逻辑分析仪看数据,最后终于被我试出来,原来驱动程序中申请到的内存地址,要除以4再让dma去读!虽然不知道原因,但终于搞定了,哈哈
☆─────────────────────────────────────☆
WX1637205783 (水熊【】水熊本熊) 于 (Mon Sep 26 16:24:24 2022) 提到:
只能word对齐读写,byte地址要转成word地址?
☆─────────────────────────────────────☆
ZXCVBNMlkj (ZXCVBNMlkj) 于 (Sat Oct 1 13:37:55 2022) 提到:
这只影响性能吧
- 来自 水木社区APP v3.5.6
【 在 ztg 的大作中提到: 】
: 软件申请内存的时候,难道不考虑Alignment到4?很多DMA都要求Alignment的,这应该算是常识。
: 记得配置内存空间可被cache的时候,软件必须保证内存地址要alignment到32。