TP-Link TL-WR841N v8.x - wolne GPIO w złączu JTAG
Dodano: Niedziela, 14 lipca 2013, godzina 20:05:28Kategoria: Moje projekty i pomysły
Jeżeli jesteście w posiadaniu routera TP-Link TL-WR841N w wersji z serii v8.x (czyli z układem SoC Atheros AR9341) i korzystacie z alternatywnego firmware OpenWrt, to powinna ucieszyć Was informacja o pewnym odkryciu, w którym miałem swój udział. Producent umieścił w tym urządzeniu gniazdo JTAG, oznaczone na PCB jako JP2 (2×7 wyprowadzeń ze standardowym rozstawem 2,54 mm), w którym 4 sygnały są połączone bezpośrednio z wyprowadzeniami GPIO w procesorze. Po zastosowaniu niewielkiej poprawki, która pojawiła się niedawno w gałęzi rozwojowej OpenWrt, możliwe jest wykorzystanie wszystkich 4 sygnałów GPIO, w praktycznie dowolnym celu.
Na poniższym obrazku opisałem wszystkie sygnały dostępne w złączu JP2. Jak widać, domyślnie tylko GPIO2 (JP2-5) jest podłączone bez żadnego rezystora podciągającego/ściągającego. Pozostałe sygnały, tj. GPIO0, GPIO1 i GPIO3 posiadają rezystory ściągające (tzw. pull-down) o wartości 1 kOhm (odpowiednio: R22, R19 i R20). Bez żadnych przeszkód można je usunąć lub zamienić np. na rezystory podciągającego. Router startuje w każdej konfiguracji rezystorów na tych liniach sygnałowych (mogą tam być rezystory ściągające, podciągające lub ich brak). Żeby potwierdzić możliwość wykorzystania tych sygnałów, wykorzystałem 16-bitowy przetwornik AD z magistralą I2C - model Texas Instruments ADS1100. O tym jak uruchomić magistralę I2C w OpenWrt, wykorzystując dwa dowolne GPIO możecie przeczytać w artykule OpenWrt - GPIO.
Należy pamiętać o tym, że obciążenie prądowe wyprowadzeń GPIO jest raczej bardzo niewielkie (rzędu miliamperów), wystarczające co najwyżej do zasilenia zwykłej diody LED. Dlatego, jeżeli zamierzacie wykorzystać te sygnały do sterowania czymś innym (np. przekaźnikiem), to niezbędne jest zastosowanie jakiegoś tranzystora lub dedykowanego drivera z izolacją. Co więcej, wejścia/wyjścia cyfrowe w tym układzie zasilane są z wewnętrznego stabilizatora 2,62 V i raczej na pewno nie są odporne na podanie napięcia wyższego niż około 3,3 V (takie napięcie przetestowałem w trybie wejścia cyfrowego). Poniżej jeszcze zbliżenie na rezystory na liniach sygnałowych GPIO0, GPIO1 i GPIO3 (R19 został już wcześniej usunięty).
Na chwilę obecną nie jest jeszcze pewne, czy ta poprawka wejdzie ostatecznie do głównej gałęzi OpenWrt. Gdyby tak się nie stało, to alternatywnym rozwiązaniem będzie wyłączenie JTAG w bootloaderze. W planach mam modyfikację U-Boot dla routerów z AR9341, w której na pewno uwzględnię tę możliwość. Co więcej, bardzo podobne rozwiązanie można zastosować również w innych routerach z JTAG, np. w WDR3600/WDR43×0, w których zastosowano bardziej rozbudowany, ale podobny układ - Atheros AR9344 i w których również można wykorzystać GPIO z tego złącza. Więcej informacji o tym już niedługo.
» Podobne wpisy (według tagów)
» Tagi dla tego wpisu:
ADS1100 • Atheros AR9341 • Atheros AR9344 • bootloader • GPIO • I2C • JTAG • OpenWrt • Texas Instruments • TL-WR841N • TP-Link • U-Boot
» komentarzy: 4 «
Dodany: Sobota, 12 grudnia 2015 o godzinie: 14:52:38
3.3V i GND gdzie podpinasz wtedy? potrzebuje tego do sterowania modułem przekażników, podobnie miałem to rozwiązane w wrt54gl 1.1
Dodany: Sobota, 12 grudnia 2015 o godzinie: 18:39:48
Zasilanie możesz wziąć z gniazda konsoli szeregowej.
Dodany: Wtorek, 5 lipca 2016 o godzinie: 07:08:47
Could you give me free gpio of tplink 841n ver 9 and ver 10. I need it for control relay module. Thanks!
Dodany: Wtorek, 5 lipca 2016 o godzinie: 08:44:09
If there is JTAG connector, they will be same as in v8.
» dodaj komentarz «