|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在学习网卡驱动的编写,调试的时候发现接收数据的时候隔了16bit(本身的读写宽度是16bit),查看反汇编文件发现编译器在编译的时候把读取16bit数据的一次操作分成了2次8bit的读取操作,导致网卡读数据间隔16bit就是类似一下的情形
0 ^/ y5 n* h( J. T* R: q/ A! B0 |
% v* o$ v( {/ p( u0 Wint a = (*(volatile u16_t *) 0x20000000)& d: t' V6 @1 a( O
6 J9 L5 m6 w5 V/ A2 P, i编译后- u' E! z6 |5 W) U
ldrb r3, [r4]6 ?+ U5 D: X t+ _
ldrb r1, [r4, #1]5 K% X0 @. W' s. r+ s4 w' p
orr r1, r3, r1, lsl #8
% U" K. L9 m5 B; o% _, [# `& Q. k
% T$ t8 l5 G5 D! G! K( E! ]! d/ I有没有什么方法能让编译器一次读这16bit的数据啊?
" m) n8 P }& p/ }6 G+ @
" d3 b4 P$ k, G5 T3 K# g+ K+ \7 f- U7 V6 n! b
( |! S2 ~9 j4 d
有没有什么方法能让ARM编译器一次读这16bit的数据啊?
: ]7 i" M) g& B0 V' F |
|