TA的每日心情 | 难过 2019-11-20 15:02 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在学习网卡驱动的编写,调试的时候发现接收数据的时候隔了16bit(本身的读写宽度是16bit),查看反汇编文件发现编译器在编译的时候把读取16bit数据的一次操作分成了2次8Bit的读取操作,导致网卡读数据间隔16bit就是类似一下的情形7 G2 A5 f! Y& o7 w
+ |! B5 h& c' l6 n
int a = (*(volatile u16_t *) 0x20000000)' k# {: a5 |' \( u. `$ I
1 d1 \6 E. @& D0 Z编译后
" P; k( c4 o' e" oldrb r3, [r4]2 [% Q. P9 X1 t1 {
ldrb r1, [r4, #1]* b1 ?0 |) q& u
orr r1, r3, r1, lsl #8" Z& k/ o4 x6 Q" E: `$ T& L
5 I) D: Y8 g( y: d: A6 q9 w- C8 o有没有什么方法能让编译器一次读这16bit的数据啊? ?2 u. W7 {) Y) a+ U
|
|