|
发表于 2013-12-30 11:28:12
|
显示全部楼层
回复 1# fiysben
什么叫更底层怎么操作呢?
解析的时候CPU把你的命令转化成指令,write_reg/read_reg应该是包装过的function, 大概意思就是让处理器去某个地址取一个数据,比如说32bits, 然后硬件会做解析,看这个地址空间落在哪里,比如说AHB总线的uart端口或者AHB2APB转入APB, 假设你的SYSCON 在APB下面('h40000000 - 'h40000800),
那CPU就会去比如说'h40000020取数据,硬件设计就应该select APB,然后把地位地址的低位传递给APB, 比如说'h20, APB的硬件设计会再次把地址解析一遍,如果在范围内,传递给SYSCON,不然就给个error回去hresp=2'b01,如果响应速度慢,还可以用pready来控制等待时间,如果是写数据,就是pwrite,读的话就是等pread回来。数据读回AHB bus之后会放在某个寄存器里面供你接下来的指令使用,比如ARM的R0-R7,(对这一块我也不是很熟,正在学习,我说的也可能不对)。
如果你有现成的代码,你应该去看一下write_reg这个function是怎么写的,大概应该是
typedef struct {
uint32 GPS_STATUS;
...
} GPS_TypeDef
#define GPS_SPACE_BASE 0x4000c000;
#define GPS_CON ((GPS_TypeDef*) GPS_SPACE_BASE)
rdata = GPS_CON->GPS_STATUS;
不知道我说的是不是你想问的。
:) |
|