Skip to content
 

USB ladiaci nástroj MSP-FET430UIF a Linux

Ak sa rozhodnete používať na vývoj niektorý s profesionálnych nástrojov od TI s USB rozhraním, pri pokuse spojazdniť ho pod Linuxom môžete naraziť na niekoľko poblémov. A o ich odstránení je tento článok.

Prvým problémom je chyba v linuxovom driveri pre TUSB3410, ktorý je použitý v USB-FET.
Po pripojení USB-FET by sa mal vytvoriť súbor zariadenia /dev/ttyUSB0 (alebo podobne). Správa o tejto udalosti by sa mala objaviť v syslogu. Ak sa tak nestane, v syslogu by sa mala nachádzať chybová správa:

kernel: ti_usb_3410_5052: probe of 1-2:1.0 failed with error -5

Ak túto chybovú správu nájdete, tak máte chybný driver.

Našťastie, existuje na túto chybu patch. Tento patch existuje pomerne dlho, jeho autorom je Oleg Verych. Je nepochopiteľné, že tento patch stále nie je súčasťou distribuovaných kernelov. Tento patch má neuveriteľných 5 riadkov!

Bohužiaľ, nikde som nenašiel priamo stiahnuteľný a aplikovateľný patch, takže som ho musel vyrobiť.

Tu je :

diff -r linux-2.6.23.1.orig/drivers/usb/serial/ti_usb_3410_5052.c linux-2.6.23.1/drivers/usb/serial/ti_usb_3410_5052.c
1,2c1
< /* vi: ts=8 sw=8
<  *
---
> /*
454c453
<               status = -ENODEV;
---
>               status = 1;
460c459,463
<               status = -ENODEV;
---
>                dev_info(&dev->dev, "setting configuration #%u (activating)n",
>                         TI_ACTIVE_CONFIG);
>
>                status = usb_driver_set_configuration(dev, TI_ACTIVE_CONFIG);
>                status = status ? status: 1;

Samozrejme, môžte si tento patch stiahnuť – je pripojený k tomuto článku.

Detailný postup ako kompilovať nový kernel nebudem uvádzať – to je nad rámec tohoto článku – a keďže existuje nepreberné množstvo distribúcií, ani nie je možné uviesť úplne univerzálny postup. Takže uvediem aspoň základ (fungujúci na Fedora FC7).

Predpokladajme že zdrojový balík kernelu (stiahnutý z www.kernel.org) a patch máme uložený v aktuálnom adresári:

tar xjf linux-2.6.23.1.tar.bz2
cd linux-2.6.23.1
patch -p 1 < ../ti_usb_3410_5052.patch

make menuconfig
make
make modules_install
make install

Na záver je treba upraviť bootloader, aby sa bootovala nová verzia. Po reboote a pripojení USB-FET by sa nám mala v syslogu objaviť hláška:

kernel: usb 1-2: TI USB 3410 1 port adapter converter now attached to ttyUSB0

Predpokladajme, že sa tak stalo. Teraz môžeme spustiť msp430-gdbproxy:

msp430-gdbproxy msp430 /dev/ttyUSB0

Posledný parameter je port, na ktorom je pripojený USB-FET. Ak je pripojený na inom porte ako /dev/ttyUSB0, skutočný port zistíme zo syslogu.

Pri prvom spustení msp430-gdbproxy s najväčšou pravdepodobne dostaneme chybovú správu:

debug: MSP430_Initialize()
error:     msp430: The FET tool version does not match this program. Update required.

To znamená, že je potrebné nahrať novú verziu firmware do USB-FET. Niektoré nástroje to robia automaticky, no v našom prípade to musíme urobiť ručne:

msp430-gdbproxy msp430 --update-usb-fet /dev/ttyUSB0

Nahrávanie firmware trvá asi minútu. Po nahraní firmware sa msp430-gdbproxy spustí.

Ak nepracujeme ako root, môžme naraziť na ešte jeden problém:

debug: MSP430_Initialize()
error:     msp430: Could not initialize device interface (1)

To znamená, že nemáme dostatočné práva k súboru zariadenia (/dev/ttyUSB0). Na mojej Fedore som to vyriešil pridaním užívateľa so skupiny uucp.

A to je všetko. Nebyť problémov s kernelovým driverom pre TUSB3410, spojazdnenie USB-FET by bolo otázkou 5 minút. Snáď sa táto jednoduchá oprava objaví v ďalších verziách kernelu.

Záplatu pre kernel si môžete stiahnuť tu.

 

Print Friendly, PDF & Email
13 418 zobrazení