środa, 21 października 2015

Kicad – daily build install

Do robienia płytek na rynku liczą się głównie moim zdaniem 3 oprogramowania:
→ Altium Designer - super skuteczny, lecz niestety drogi
→ Pads - również bardzo dobry i szczęśliwie tańszy
→ Kicad - darmowy i dobry, przy okazji mocno rozwijany

Uwaga: Eagle nie jest dobrym softem, dostaje 2 na starcie za ciulowo rozwiązane połączenia ścieżek na schemacie. Po tym jak miałem nie popodłączane pady nie zapłacił bym za to by móc robić w nim płytki grosza, pomijając np. ciężkie dodawanie nowego komponentu, czy możliwość rysowania ścieżki na ścieżce (sic!) w layoucie. W skrócie – jeśli ktoś chce profesjonalnie robić elektronikę w Eaglu to daję mu krzyżyk na drogę.

Z uwagi na to że Altium jest nieprzystępnie drogi, pads na start również, Kicad zostaje dla nas oczywistym wyborem. Poza tym jak to brzmi: używam oprogramowania współ tworzonego w Cernie.

Uwaga: Chcąc mieć najbardziej wypasioną wersję Kicada najlepiej mieć wersję z daily build'ów, albo z stabilnego developmentu. Nie wiem jak teraz, ale rzeczy takich jak push and shove – którego nie da się nie pokochać, nie było do niedawna w oficjalnych stable releasach. Pomijając że wersja na Windowsa była delikatnie przedpotopowa :)

Instalacja Kicada w wersji daily build a nie żyli spokojnie długo i szczęśliwie ma jedną główną zaletę i jedną główną wadę:
→ zaletą jest możliwość używania nowych, lepszych narzędzi. np. tool'a do rysowania ścieżek mikrofalowych, czy ukochane push and shove.
→ Wadą jest konieczność pamiętania o ctrl+s ponieważ potrafi się czasem wywalić. Najlepiej też postawić sobie repozytorium by pamiętać też poprzednie wersje płytek – serio, to naprawdę może się przydać.

Instalacja:
Wchodzimy na:
https://launchpad.net/~js-reynaud/+archive/ubuntu/kicad-package-daily-stable
Wybieramy naszą dystrybucję linuxa i wybieramy ppa (w moim przypadku był to Thrusty 14.04). Następnie ppa trzeba skopiować ppa i dodać do naszego systemu, zaktualizować źródła i zainstaloawć kicada:

sudo add-apt-repository "deb http://ppa.launchpad.net/js-reynaud/ppa-kicad/ubuntu trusty main"
sudo apt-get update
sudo apt-get install kicad
Pogrubioną czcionką to co musimy podmienić z ww. strony.

Jeśli update nie przechodzi pomyślnie prawdopodobnie Twojemu package managerowi nie zgadzają się klucze. By je bezboleśnie dodać z automatu możemy zainstalować:

sudo apt-get install y-ppa-manager

I użyć go (okienkowo) do dodania klucza. Wchodząc w → Zaawansowane → Dodaj brakujące klucze GPG .

To wszystko czego trzeba by móc używać Kicada, czy warto? Z moich doświadczeń wynika że tak. Używanie go wymaga użytkowania skrótów klawiszowych – co początkowo utrudnia naukę, jednak finalnie bardzo zwiększa efektywność. Jeśli potrzebujemy narzędzia, a nie mamy na nie zbytnio pieniędzy do wydania – jest to praktycznie jedyny dobry wybór rozwiązania standalone.

piątek, 16 października 2015

Chińska elektronika

Używam chińskich: miernika, stacji lutowniczej i kilku innych rzeczy. O ile chińskie rzeczy kojarzą się z potoczną "chińszczyzną" otworzenie drukarki termicznej mnie zaskoczyło.

Zrobione na pierwszy rzut oka jakościowo i bez pierdół ( ARM0 inside ).












ps. Jasne zawsze można coś poprawić ale szajs to nie jest z pewnością.

wtorek, 13 października 2015

Debugowanie urządzenia USB.

W ~połowie : jak ustawić dbmon + wireshark na linuxie.

Port USB jest w każdym kompie i o ile przejście przez Windows Drivers hell skutecznie odstrasza mnie od prób na Windowsie, tak próby używania USB na linuxie są mniej bolesne. Protokół jest dużo trudniejszy od RS232 - jednak możliwości też są proporcjonalnie większe, łącznie z tym że jeśli ma się USB na procku, to może ono i symulować RS'a.

Do pierwszej zabawy z USB polecam attiny13 + libusb-1.0 + qtcreatora + poczytanie: http://www.beyondlogic.org/usbnutshell/usb1.shtml .
Avrusb pod attiny13 dorobił się genialnego tutoriala na codeandlife.com i odpalenie go krok po kroku nie nastręcza żadnych trudności. libusb-1.0 ma przejżystą dokumentację w doxygenie i czytelne przykłady w internecie. QtCreator daje nam bardzo przyjemną możliwość debugowania i dość bezproblemowe dodawanie bibliotek do projektu. Wreszcie beyondlogic.org funduje wszystkie niezbędne informacje by móc zacząć.

Do następnych zabaw używam STM32F103 - ot mam taką płytkę. Uruchomienie nie jest już tak bezproblemowe i dobrze opisane w necie, niestety nie znalazłem też dobrze przygotowanych przykładów pod wygodne darmowe środowisko - przykłady st przyjemnie buduje się jedynie w płatnych środowiskach takich jak Keil ( który btw ma bardzo ubogo zrobione IDE, chociaż nadal więcej opcji debugu ). Przynajmniej taka jest moja opinia :)

Po uporaniu się z kompilacją przykładu dla STM'ki należy podłączyć ją pod USB i ... sprawdzić czy komputer wykrywa urządzenie, jeśli tak - wtedy dopiero możemy stwierdzić że kompilacja przeszła poprawnie. Chociaż nadal nie możemy być w 100% pewni czy aby napewno wszystkie ustawienia są dobre. By to sprawdzić komenda:

lsusb -v

pokaże nam wszyskie urządzenia podłączone po usb razem z ich opisem, id etc. etc. ( tu odsyłam do linku z beyondlogic ). Te informacje są wystarczające by zrobić apkę używającą libusb-1.0 piszącą / czytającą z naszego użądzenia.

Będziemy musieli:
1) Połączyć się z urządzeniem
2) odebierać / wysyłać
3) Zamknąć urządzenie

Mając problemy z pakietami podczas transmisji przydatnym narzędziem może okazać się usbmon + wireshark.
usbmon jak nazwa wskazuje monitoruje nam urządzenia usb. Dzięki niemu możemy podglądać co jest wysyłane do urządzenia i co wysyła nam urządzenie spowrotem. Ponieważ USB jest trudniejsze niż UART i ciężej tu strzelać na hybił narzędzie to może dostarczyć nam wiele wskazówek - a jeśli nie, używanie jego ma bardzo dobrą rolę edukatorską :)
Wireshark pokaże nam pakiety usb w ładnej formie, pozwoli na wygodne filtrowanie treści i przedstawi informacje w wersji słownomuzycznej a nie raw data.

Niestety konfiguracja środowiska pod debug zmieniła się dość znacznie. Pocieszajace że na znacznie prostrzą, mniej pocieszające że dość ciężko jest się do niej dokopać.

Konfiguracja na szybko - komendy do terminala:

1) sudo apt-get install wireshark
2) sudo dpkg-reconfigure wireshark-common
3) sudo usermod -a -G wireshark $USER
4) addgroup usbmon
5) gpasswd -a $USER usbmon
6) echo 'SUBSYSTEM=="usbmon", GROUP="usbmon", MODE="640"' > /etc/udev/rules.d/99-usbmon.rules
7) sudo reboot
--- restart kompa --- dla zaawansowanych: zrób reload udev + logout i login na urzytkownika ( reload udev był już tu poruszany )
by używać za każdym razem przed uruchomieniem wiresharka dla celów usb:
8) sudo modprobe usbmon
9) wireshark (albo odpal z ikonki - wszystko jedno)

Tłumaczenie:
ad.1 ) instalujemy wiresharka
ad.2 ) instalujemy dostępy dla normalnych śmiertelników dla wiresharka - innaczej musimy odpalac go z sudo
ad.3 ) dodajemy naszego usera do grupy wireshark, która może używać wiresharka bez uprawnień administratora (patrz ad.2)
ad.4 ) dodajemy nową grupę usbmon - która może używać usbmon bez uprawnień administratora
ad.5 ) dodajemy naszego usera do grupy usbmon
ad.6 ) dodajemy nowy udev dla naszej grupy - uwaga, możemy dodać go dla grupy wireshark i olać pkt 4 i 5
ad.7 ) robimy ponowne wczytanie ustawień w wersji na pałkę.
ad.8 ) montujemy usbmon
ad.9 ) włączamy wiresharka - tu już możemy wybrać nasze urządzenie usb.

By wybrać odpowiednie urządzenie USB musimy mieć jego bus nr i nr urządzenia. Dostarczy nam tego nieoceniona komenda lsusb.
Bus { 1-9 } odpowiada usbmon { 1-9 } , gdy włączymy śledzenie odpowiedniego Bus'a trzeba szukać informacji od odpowiedniego urządzenia. Najwygodniej dodawająć filtry w Wiresharku. Krótkie intro do okienek wiresharka innym razem.

Historia poszukiwań - sekcja 'dla dociekliwych' :
Szukając informacji o debugowaniu usb:
Pod: http://superuser.com/questions/743350/how-to-use-usbmon-for-knowing-amount-of-data-transferred-from-usb-pendrive
Pierwsze dwie odpowiedzi tłumaczą jak używać usbmon i lsusb w bardziej wylewny niż tu sposób. 3 Odpowiedź jest moja :)
Pod: https://wiki.wireshark.org/CaptureSetup/USB
Jest opis wiki "jak to się je", przy czym jest dla starych kerneli. O tym jak to się robi "współcześnie" nie ma już nic.
Pod: http://askubuntu.com/questions/326597/enabling-usbfs-in-ubuntu jest ciekawa dyskusja, która nam niestety nie pomoże.
Pod: http://ubuntuforums.org/showthread.php?t=1432598 - ta też nam nie pomoże, ale dowiemy się od którego kernela wzwyż nie mamy usbfs .
Pod: http://stackoverflow.com/questions/4971719/usb-sniffing-with-wireshark
swojski autor przemo_li daje quick&dirty wireshark i usbmon setup - perełka ;)
Pod: https://ask.wireshark.org/questions/7523/ubuntu-machine-no-interfaces-listed jest ładnie przedstawiony sposób nice way / unnice way dodawania grupy dla wiresharka.


ps:
http://security.stackexchange.com/questions/37927/can-a-connected-usb-device-read-all-data-from-the-usb-bus

ps2:
narzędzia:
- usbmon
- good board with usb device on it
- libusb
Dają świetne możliwości do podglądania urządzeń komunikujących się po usb i ... hackowania ich. Enjoy!