나는 /sys/kernel/debug/pinctrl/44e10800.pinmux/pins
에서 들여다 봐도 나는에 관심이 핀 볼 수 있습니다 GPIO[2]4
, 또는 P8.10
에Linux 커널 3.17에서 BeagleBone Black 용 pinmux를 편집하려면 어떻게해야합니까?
pin 38 (44e10898.0) 00000037 pinctrl-single
이 해당합니다.
커널이 3.17.7-300.fc21.armv7hl
인 Fedora 21을 사용하고 있습니다.
멀티플렉서를 0x27
으로 변경하고 싶습니다. 말하자면, 이것은 내부 풀다운 저항을 갖기 위해 핀을 구성 할 것이다 (이전에는 풀업되었다).
원하는 출력은 다음과 같습니다 이
pin 38 (44e10898.0) 00000027 pinctrl-single
이
이 무엇을
을 수행 할 수 있습니다 ?참고 : 옹스트롬이 아니기 때문에 /sys/devices/bone_capemgr.*
은 없습니다. 전형적인 DTO 접근법은 망토 관리자를 수정하여 변경 사항을 내 보냅니다. 이것은 선택 사항이 아닙니다.
편집 : tad
의 조사에서 다음과 같이했습니다. dtc -I dtb -O dts -o ~/am335x-boneblack.dts /boot/dtb-3.17.7-300.fc21.armv7hl/am335x-boneblack.dtb
. 내가 가진이 파일을 편집 :
...
[email protected] {
...
example {
pinctrl-single,pins = <0x898 0x27>;
};
};
...
그리고, 나는, dtc
로 다시 컴파일 /boot/dtb-3.17.7-300.fc21.armv7hl/
에 붙어, 재부팅. 그러나 아무것도 바뀌지 않았습니다. 무슨 일이야?
편집 :
찰스 Steinkuehler로 표시의0x800
오프셋에서 차감해야하고, "뭔가" "예"를 참조 할 필요가있다으로
.
내가 user_leds_s0
내 항목에 0x098 0x27
를 추가하는 경우
...
user_leds_s0 {
pinctrl-single,pins = <0x54 0x7 0x58 0x17 0x5c 0x7 0x60 0x170 0x098 0x27>;
linux,phandle = <0x3f>;
phandle = <0x3f>;
};
...
지금,이 모든 괜찮 내가 갈 필요가 어디 있는지를 가져옵니다. 그러나이 핀은 실제로 user_led가 아닙니다. 그것은 어떤 종류의 분리 된 분야에 있어야합니다. 그렇다면 "예제"필드 또는 유사하게 작동시키기 위해해야 할 "무언가"는 무엇입니까?
은 제거 . 일을 끝내기 위해서는 원본 .dts 파일을 조작해야합니다. 참고로, 이것은 루트 파일 시스템의 맛과 관련이 없습니다 (귀하의 경우 Angstrom). 이것은 전적으로 커널 버전에 달려 있습니다. – raghav3276
실례합니다. Fedora에서 사용하는 dts 파일을 찾은 것으로 가정하면 좀 더 자세히 설명 할 수 있습니까? – ToBeReplaced
"예제"핀 정의를 편집했거나 추가 했습니까? 이것을 추가하면 두 가지 문제점이 나타납니다. 우선, 어딘가에서 "예제"핀 구성을 참조해야합니다. 그렇지 않으면 아무 효과가 없습니다. 둘째, 귀하의 pinmux 레지스터 오프셋은 내가 기대했던 것에서 0x800 떨어져 있습니다 (예 : 0x898 pinmux 레지스터 오프셋은 장치 트리에서 0x098로 변합니다. AM335x pinmux 드라이버가 0x800을 추가하기 때문에). 편집 한 항목 인 경우 특정 커널에 대한 장치 트리 이름 지정 규칙에 익숙하지 않습니다. –