2016-11-01 7 views
0

I2C 인터페이스를 통해 PC에 연결된 EEPROM 칩이 있습니다. 문제는 다음과 같습니다. "하드 드라이브를 사용하면서 정기적으로 EEPROM 칩 파일과 디렉토리를 쓸 수있는 방법은 무엇입니까?"Linux 탑재 형 I2C EEPROM 장치를 만들려면 어떻게해야합니까?

제가 이해 하듯이 블록 장치 드라이버를 작성해야합니다. 그 장치 파일을 마운트 한 후.

내가 틀렸거나 정확하지 않은 경우 자세한 정보를 제공하십시오.

답변

0

Linux 커널에서 EEPROM에서 읽고 쓸 수있는 장치 드라이버가 이미 있습니다. 사용 가능한 드라이버는 drivers/misc/eeprom에 있습니다.

일반적으로 액세스해야하는 항목은 해당하는 I2C 주소가있는 장치 트리 노드이며 해당하는 EEPROM 드라이버에 등록됩니다. eeprom 장치 트리 바인딩에 대한 문서는 Documentation/devicetree/bindings/eeprom/eeprom.txteeprom.txt에서 찾을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 그것이 완전한 것인지 의심 스럽습니다. 그래서, 나는 명확히 할 필요가있다. 이전에 컴파일하고 "insmoded"해야하는 i2c eeprom 드라이버 용 장치 트리 파일을 만든 후 드라이브 장치 파일로 사용할 수있는 장치 파일 (예 :/dev/eeprom_drive)을 가질 수 있음을 의미합니까? , "mkdosfs -F 16/dev/eeprom_drive"명령으로)? 내가 틀렸다면 나를 바로 잡아주세요! –

+0

네, 그게 정확히 무슨 뜻입니까. 내 대답에 링크 된 디바이스 트리 문서에서 예제를 취하면, eeprom의 I2C 주소는 0x52가 될 것이므로,이 파일은 다음과 같다 :'/ sys/bus/i2c/devices/0-0052/eeprom '. 필자는 임베디드 리눅스에서 작업하고 있고 보드에 디바이스 트리가 이미 있다고 가정했습니다. – Longfield

+0

"insmoded" "eeprom.ko"모듈을 컴파일했습니다. 결과적으로 "/ sys/bus/i2c/devices/0-0056/eeprom"파일이 작성되었습니다. "i2c-detect 0"명령을 검사했을 때 56 번째 i2c 장치가 버스 ("UU")에 등록되었음을 발견했습니다. i2cdump 유틸리티 사용 이제 i2c eeprom 메모리를 쉽게 읽을 수 있습니다. 그러나 다시 나는 질문이있다. 왜 내가 언급 한 장치 트리 노드를 사용해야합니까? i2c eeprom 칩을 장착 할 수있는 기회를 제공합니까? 확실하지 않습니다 ... –