강좌 & 팁
u-boot 를 사용하다 보면 플래시를 사용하려고 할때 sf probe 를 사용하게 됩니다.
그런데 어디에 보면 "sf probe 0 0 0" 또 다른 곳은 "sf probe" 를 사용하기도 합니다.
무의식적으로 있는 커맨드를 사용하게 되는데 그 차이는 작지 않습니다.
우선 sf 명령의 help 를 보면 다음과 같습니다.
zynq-uboot> sf
sf - SPI flash sub-system
Usage:
sf probe [[bus:]cs] [hz] [mode] - init flash device on given SPI bus
and chip select
sf read addr offset len - read `len' bytes starting at
`offset' to memory at `addr'
sf write addr offset len - write `len' bytes from memory
at `addr' to flash at `offset'
sf erase offset [+]len - erase `len' bytes from `offset'
`+len' round up `len' to block size
sf update addr offset len - erase and write `len' bytes from memory
at `addr' to flash at `offset'
당연히 관심이 있는 것은 sf probe 입니다.
뒤의 인자를 보면 bus hz mod 세가지 인자를 주게 되어 있습니다.
bus 의 경우 칩에 flash 를 연결할수 있는 연결이 여러개일 경우 선택하게 할수 있습니다.
두번째 인자부터가 문제인데요.
hz 와 mod 입니다.
hz 의 경우 디바이스에서 사용하는 속도를 결정하는 것으로
0 일 경우 가장 느린 모드로 동작하게 됩니다.
여기에 어떤 값... 즉 원하는 스피드를 넣을 경우
보통 디바이스에서 지원하는 최고속도보다 크면 최고 속도로 동작하게 됩니다.
세번째의 경우가 mod 인데요, 마찬가지로
0 일 경우가 가장 느린 모드로 동작하게 됩니다.
spi 연결이 4비트일지라도 1비트만으로 엑세스 합니다.
당연히 굉장히 느리게 동작합니다.
아무것도 모르는 경우 그냥 sf probe 를 하게 되면
디폴트로 선언된 값이 사용되는데 환경 설정에서 하지 않았을 경우
기본값은 Mode 3 으로 빠르게 동작합니다.
속도는 환경설정에서 시스템에서 사용하는 최대값을 사용하는 것이 좋습니다.
부트로더를 믿는다면 그냥 sf probe 를 사용하세요
환경이 잘 잡혀 있는 경우 최대 속도를 낼 수 있도록 configuration 되어 있을 겁니다.