TA的每日心情 | 难过 2019-11-20 15:02 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在学习网卡驱动的编写,调试的时候发现接收数据的时候隔了16bit(本身的读写宽度是16bit),查看反汇编文件发现编译器在编译的时候把读取16bit数据的一次操作分成了2次8Bit的读取操作,导致网卡读数据间隔16bit就是类似一下的情形
/ j; ?8 Q' s! P" y5 A9 y9 C2 N1 r; y; T
int a = (*(volatile u16_t *) 0x20000000)
3 Y1 H$ [/ y% V/ ]8 Z7 B* ~: J! W4 @! m. m ]: o/ U6 H
编译后
+ S/ S/ A8 X% g; d. T1 _ Lldrb r3, [r4]
2 L Q% `. I: x4 c( L: e% _. T6 E3 Pldrb r1, [r4, #1]
/ g' m/ Q8 U, D3 _: y1 n Porr r1, r3, r1, lsl #8( j- R" P" z' k' ~8 v( X
. d6 U p W- ?* {: d y
有没有什么方法能让编译器一次读这16bit的数据啊?% [* `; q" {8 o% a
|
|