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 되어 있을 겁니다.