2017-03-28 2 views
1

Linux에서 링 발진기를 가져 오라고 요청되었습니다. 우선 제어 및 상태 레지스터 (재미있는 비트)를 직접 읽으려고 시도했으며 devmem (레지스터의 실제 주소 사용)을 통해 액세스 할 수 있습니다. 두 개의 링 발진기 모듈 0과 1이 있습니다. 각 모듈은 4 개의 링 발진기로 구성됩니다. 모듈 0 출력은 난수 생성기에 공급합니다. 모듈 1은 프로세스 모니터링에 사용되며 아직 이에 대한 많은 정보는 없습니다. 각 모듈에는 제어, 상태 등을위한 별도의 레지스터 세트가 있습니다. 각 링 발진기에 주파수 카운터가 연결되어 있으며 링 발진기의 컨트롤 레지스터를 적절하게 설정하면 주파수 카운터의 카운트 레지스터에서 주파수 카운트를 읽을 수 있습니다.링 발진기 장치 드라이버

이제 Ring Oscillator 용 장치 드라이버를 작성해야합니다. 내가 분명히 밝히지 않은 것은 dts 파일에서 링 오실레이터를 클럭 소스로 나타내거나 플랫폼 디바이스로 취급해야하는지 여부입니다. 리눅스가 링 오실레이터를 다루는 방법에 대한 많은 정보를 알 수 없었다. Ring Oscillator의 장치 주소를 찾고 dts 파일의 다른 플랫폼 주변 장치 항목으로 추가해보십시오. 그래서 드라이버 파일에 플랫폼 장치로 등록하고 프로브 기능으로 레지스터를 제어 할 수 있습니다. 아니면 시계 소스로 취급해야합니까? 그러나 사용 가능한 문서에서 다른 주변 장치의 클럭 소스로 사용되는 것을 볼 수 없습니다. 이 사람 좀 비추어 줄 수 있니? 어떤 도움을 주시면 감사하겠습니다.

감사합니다. 나는 플랫폼 드라이버로 링 오실레이터를 implmented 한

답변

0

감사

비벡. 사항 DTS/DTSI 변경은 다음과 같습니다 :

DTSI :

ring_osc: [email protected] { 
    compatible = "abc,abc-ring"; 
    reg = <0xF00xxxxx 0x14>; 
    status = "disabled"; 
}; 

DTS :

&ring_osc { 
    status = "okay"; 
}; 

내가 쓴 드라이버는 단순히 구성 레지스터의 사용 오실레이터를 구성합니다. 또한, 부착 된 주파수 카운터의주기 값을 설정하고 주파수 카운터에서 주파수 카운트를 다시 읽어 들이기위한 sysfs 인터페이스를 제공합니다.