TA的每日心情 | 难过 2019-11-20 15:02 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在学习网卡驱动的编写,调试的时候发现接收数据的时候隔了16bit(本身的读写宽度是16bit),查看反汇编文件发现编译器在编译的时候把读取16bit数据的一次操作分成了2次8Bit的读取操作,导致网卡读数据间隔16bit就是类似一下的情形
/ M( _( v3 e0 D) o' B& ?# w
+ R2 s' f6 ?- Lint a = (*(volatile u16_t *) 0x20000000)' a% ]& h9 D9 n9 l. f% u3 x0 e$ d7 u
# B7 P( H+ [7 N( Z# W2 q4 g) D
编译后
: }' [3 K+ ?. F' J: I# C- D7 Qldrb r3, [r4]& e3 n7 {' y! ~
ldrb r1, [r4, #1]2 u ]# K& j6 C+ @- y7 u3 {" A0 {
orr r1, r3, r1, lsl #8! d. Q+ Z' V* r+ E2 ]2 h2 S
! h3 Q, Z% ]! E/ p4 {6 ~
有没有什么方法能让编译器一次读这16bit的数据啊?
1 L# I+ F3 p- O0 f |
|