external memory interface

QnA 2009. 7. 16. 16:31
> 안녕하세요. Xscale에 cs3 영역에 FPGA를 붙여서 이미지 데이터를 얻는 작업을 하고 있읍니다. read를 할 경우에는 cs3와 oe가 발생을 하지 않고 write를 할 경우에는 cs3는 발생하지만 wr이 발생을 하지 않고 있읍니다. 물론 OS는 잘 돌고 있는 상황입니다.
> kernel내에서 setting을 해 주어야 할 부분이 있는지 알려 주시면 감사하겠읍니다. 그리고 cs의 영역을 virtual address로 mappingg하는 화일이 있는데 virtual address를 설정하는 규칙이나 아님 4개의 flag가 하는 역할을 알고 싶습니다.


=========================================================================================================

#define MSC1_VALUE 0x7FF87FF8
#define MSC2_VALUE 0x7FF87FF8

bootloader에서 src/include/start_xscale.h에서 위의 값을 바꿔주세요.
Static memory쪽 control register입니다.
위는 flash type일때이고, 다른 것이라면, 알맞게 바꿔주세요.


/* virtual physical length domain r w c b */
{ 0xE8000000, 0x00000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 },

위에서 vertual은 비어 있는 곳 아무 곳에나 mapping 시킵니다.
include/asm-arm/arch-pxa/hardware.h에 보면, 내부 register는 0xfxxxxxxx에 mapping 시킵니다.
* 0x40000000 - 0x41ffffff <--> 0xf8000000 - 0xf9ffffff
* 0x44000000 - 0x45ffffff <--> 0xfa000000 - 0xfbffffff
* 0x48000000 - 0x49ffffff <--> 0xfc000000 - 0xfdffffff
kernel이 있는 곳은 physical = virtual 입니다.
static은 나머지 공간에 적당히 mapping 시킵니다.


include/asm-arm/mach/map에 struct map_desc 구조체가 있는데...
r : read
w : write
c : cacheable
b : bufferable


mmu의 descript 만들때 들어가는 값들입니다.
r, w의 효과는 모르겠습니다.(manual 상에는 AP(access permission)와 같이 access 권한을 관리한다고 합니다)
c, b는 글자 그대로 입니다. 그 영역에 접근할 때, cache와 write buffer를 사용할지 말지 결정하는 겁니다. 둘다 memory 장치에는 사용가능하게 설정하는 것 같습니다.




'QnA' 카테고리의 다른 글

/dev/ttyS, "Input/output error"  (0) 2009.07.18
BTUART사용시 질문  (0) 2009.07.16
UART 콘트롤러 칩 추가..  (0) 2009.07.16
16C554 칩(4CH UART) 포팅 관련질문입니다.  (0) 2009.07.16
level shifter??  (0) 2009.07.16

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,