Pokazywanie postów oznaczonych etykietą embedded. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą embedded. Pokaż wszystkie posty

niedziela, stycznia 07, 2018

Google is going to win with Amazon

This year I visited Amazon Gdansk. I also bought Amazon Alexa Echo Dot and did black box testing and analysis of possible Alexa design. I spent about 6 hours learning organization and verifying my assumptions about Alexa (much more hacking round speaker). Do you remember Google Chrome based on KDE's KHTML starting with single digit marker share? Now Google browser is a leader. I didn't believe in Amazon success.


wtorek, października 29, 2013

A jednak bug w oprogramowaniu Toyoty

Trzy lata temu przewidywałem, że problemy z pedałem przyśpieszenia w Toyotach to błąd w firmware. Niestety z teoretycznymi liczbami miałem rację. Strach jeździć z takim oprogramowaniem silnika. Ze skryptu sądowego: Toyota Camry 2005 poruszająca się z prędkością ok. 100 km/h potrzebuje mniej więcej 3,5 metra na zresetowanie komputera (125 milisekund). Żeby zresetować komputer bez watchdoga trzeba wyłączyć i włączyć stacyjkę, a w przypadku keyless-go wyjąć pilota z samochodu (sic!!!), włożyć go ponownie i nacisnąć przycisk startu. 11 000 zmiennych globalnych, funkcje o cyklomatycznej złożoności powyżej 50, stosowanie rekurencji przy za małym stosie. Żeby zadziałał watchdog od hamowania trzeba najpierw zdjąć nogę z hamulca a potem wcisnąć mocno. Watchdogi w ESP nie monitorują głównego procesora.

niedziela, lutego 26, 2012

Transakcje a NFC

Near Field Communication to właściwie kontynuacja RFID. Jeśli masz kartę bankomatową to najprawdopodobniej już używasz NFC. Taką granatową od PKO BP z graficznym znakiem fal, wyprodukowaną przez Gemalto. Zmienne pole magnetyczne czytnika wywołuje zmienne pole elektryczne, dzięki któremu pojawia się napięcie zasilające mikroprocesor karty. Zasięg działania do 20 cm. W Japonii (karty Mifare) ze względów bezpieczeństwa zasięg jest mniejszy: do 4cm. Wyobraź sobie piękną, ponętną, mającą czym oddychać, bezpruderyjną blondynkę, rozdającą w BlueCity promocyjne prezerwatywy Durex. Zbliżasz się do niej niebezpiecznie blisko i dochodzi do... transakcji. Założenie jest takie, że NFC ma umożliwiać łatwe i wygodne zakupy. Nie podajesz PIN-u. W PKO BP maksymalna kwota transakcji to 50 zł. Wyobraź sobie kogoś, kto niby przypadkiem wpada na Ciebie w centrum handlowym, tłum w metrze, ścisk w tramwaju, autobusie - idealne okoliczności do kradzieży Twoich elektronicznych pieniędzy. Technologia nie jest ściśle ustandaryzowana, ze względu na wsteczną kompatybilność i ogólnie -kompatybilność różnych urządzeń - jest sporo nieuregulowanych kwestii i procedur fallback. Rodzi to pole do wykorzystania NFC przez osoby niepowołane. Europay, Mastercard i Visa opracowały jeszcze w latach 90 ubiegłego wieku standard EMV, który miał na celu zabezpieczenie zbliżeniowych transakcji (czyste NFC nie jest bezpieczne). Ale nawet EMV po wynegocjowaniu aplikacji obsługującej transakcję przez kartę i terminal może mieć tryb uproszczony offline - sprawdzany jest numer seryjny i data ważności karty albo inne pola karty. Terminal może n-tą (lub losowo wybraną) transakcję karty przeprowadzać w trybie online - z weryfikacją transakcji po stronie providera inftrastruktury do płatności (a być może także po stronie podmiotu wydającego kartę). Karta też może weryfikować odpowiedź providera. Karta i provider przy potwierdzaniu/weryfikacji transakcji mogą posługiwać się kryptogramami. Niektóre karty Mifare szyfrują komunikację symetrycznym kluczem 3DES lub AES. Co jeśli stojący za Tobą w kolejce facet ze sprytnym urządzeniem "nagra" całą komunikację? Zobaczy kryptogramy wymieniane między kartą i providerem, będzie musiał zgadnąć ich strukturę i złamać 2/4/8KB klucz symetryczny przydzielany per karta. W maksymalnym uzbrojeniu technologia wygląda dobrze, gorzej że standard dopuszcza niebezpieczne sposoby przeprowadzania transakcji.

Gemalto dostarcza karty SIM z procesorem obsługującym standard EMV i jest providerem infrastruktury do płatności takim jak Visa. W czym komórka ma być lepsza od zwykłej karty płatnicznej z PKO BP? W niczym, ale operatorzy komórkowi szukają nowych źródeł przychodu, a pośrednictwo w płatnościach byłoby stałym strumieniem pieniędzy.

Kto jest cetyfikowanym dostawcą EMV Level 2 (Level 1 = hardware + Level 2 = software)? M.in. Atos (Windows CE), Motorola (Java), NEC, OKI, Toshiba, sporo producentów rozwiazań osadzonych (embedded OS, JamVM), wyspecjalizowane firmy obsługujące płatności np. dla stacji benzynowych (Java), producenci rozwiązań Point Of Sale (embedded, RT, Linux, Java), kontynentalne Chiny, Shenzhen (Linux), producenci bankomatów (Windows). Gemalto na strategicznego partnera wybrał VeriFone z cetyfikatem EMV Level 2 na ARM i Linuksa.

Czy jeśli chcesz płacić komórką z Androidem, to czy nie będziesz czuł się bezpieczniej z Google-em niż z operatorem sieci? Czy business case dla polskiego MNO się domyka? Pionierem mobilnego NFC w Polsce było w 2010 roku Inteligo (Samsung Avila w Erze), ale nie odniosło zamierzanego spektakularnego sukcesu. Visa nie śpi i wytacza serię nowych mobilnych produktów (patrz developer.visa.com). Visą PayWave PKO BP można płacić zbliżeniowo m.in. w McDonald's, Empiku, Cofee Heaven.

czwartek, lutego 16, 2012

WebOS

HP otworzył kod zródłowy, ale chwilowo nie można się do niego dostać... Tzw. Slashdot effect.

piątek, września 09, 2011

Web over SMS

Amerykański T-Mobile ma płatne taryfy dla danych a zupełnie darmowe SMSy i MMSy. Znaleźli się ludzie, którzy postarali się to wykorzystać. Dane wysyłane po protokołach HTTP i HTTPS można łatwo zamienić na base64, czyli w praktyce tekst ASCII, a ten wysyłać SMS-ami za pomocą API takiego jak SMSLib. Po drugiej stronie znajduje się urządzenie wykorzystujące modem przemysłowy lub innego typu bramkę SMS, które jest podłączone do sieci i realizuje właściwą komunikację. No i mamy proxy HTTP(S) over SMS.

sobota, maja 21, 2011

Mozilla Fennec


Do codziennego używania Internetu na tablecie pewnie najwygodniejszy będzie Firefox. Mimo zainstalowania z Android Market wtyczki Adobe Flash, Mozilla jej nie widzi. Gdy trzeba koniecznie odczytać zawartość strony z Flashem można użyć systemowej przeglądarki WebKit. Do Firefoksa można doinstalować filtr AdBlock.

niedziela, czerwca 20, 2010

Palm WebOS w VirtualBoksie

Rozpakowujemy C:\Program Files (x86)\Palm\SDK\share\emulator\images\SDK 1.4.1.427.vmdk - dysk będzie użyty jako IDE Pierwszy Master, wyjmujemy grub.iso z C:\Program Files (x86)\Palm\SDK\share\jars\webos-emulator_x64.jar!com\palm\webos\emulator\grub.iso.zip - do użycia jako IDE Drugi Master. W Grubie podajemy 342 jako tryb VESA.


Ruchem myszki należy symulować sliding. Przejechanie "palcem" po ekranie z dołu w górę uaktywnia menu.


System działa dużo szybciej niż emulator Androida będący zmodyfikowanym qemu.





sobota, marca 06, 2010

Fix Toyoty nie działa

Czyżby błąd w oprogramowaniu? Błędny kod maszynowy wygenerowany przez kompilator, przepełnienie liczby całkowitej, timing issue, błędne dane dostarczane przez czujniki? Przeciętna liczba błędów na 1000 linii kodu dla "zwykłego" oprogramowania to ok. 20. Dla specjalistycznego oprogramowania zakłada się, że ta wartość wynosi ok. 2-3. NASA jest w stanie zejść do poziomu < 0.01 błędu/KLOC. Przy założeniu, że liczba linii kodu firmware-u Toyoty to około 1 mln (VxWorks jest większy) i ma on jakość NASA otrzymujemy 10 000 błędów. Przyjmując, że 0.1% to błędy krytyczne otrzymujemy 10 poważnych błędów.
Co jeszcze z tych rozważań wynika? Im mniej linii kodu, tym mniej błędów. Dlatego eXtreme Programming promujące refaktoring kodu jest dobre.

piątek, lipca 03, 2009

SMSGW: mail-sms gateway

Techbase NPE is a device that comes with 180MHz 32-bit ARM processor, 64 MB of RAM, 4MB of writable FLASH memory, SD card reader and Sim600 GSM EDGE modem. Device is handled by Linux 2.6.20 with BusyBox tools, there is JamVM – embedded Java Virtual Machine more or less compatible with Sun JVM 1.4.

Device was chosen to be a part or IT infrastructure monitoring. All alerts are sent to device via SMTP mail protocol and then delivered as a SMS.

Software used for assembling of application:

SMSGW with documentation is avaliable from systest.googlecode.com

To integrate SMSLib I had to port it from Java 1.5 to JamVM 1.4 (note that GNU Classpath doesn't support POSIX extensions to regular expressions), fix SLFJ startup checks and change usage of RXTX to direct way instead of reflection. RXTX used by me didn't have mappings for B115200 and B230400 and I had to look them up in termios.h (file is available in Linux kernel sources), found values should be used in port.setSerialPortParams().

czwartek, czerwca 18, 2009

Jakim cudem Java ME na komórkach może być szybka?

Procesory ARM miewają natywną obsługę bajtkodu Javy - Jazelle.

niedziela, stycznia 20, 2008

glibc_malloc vs alloca => 166197 / 1536 = ~100


localhost systest_modules # ./malloc
Ustawianie maski procesorow na 1

-- SYSTEM INFO -------------------

localhost: Linux 2.6.24-rc7 #6 SMP PREEMPT Mon Jan 14 16:50:37 CET 2008

Ustawianie priorytetu dla SCHED_OTHER na 0 (zwykly proces) dla 29488
*** TIMED: Instrukcja: 'tab[++i] = malloc_sbrk(100);'
*** TIMED: 0sec 9357nsec +- 1nsec
Addr: 804c000

*** TIMED: Instrukcja: 'tab[++i] = malloc_mmap(100);'
*** TIMED: 0sec 8449nsec +- 1nsec
Addr: b7f0e000

*** TIMED: Instrukcja: 'tab[++i] = malloc_stos(100);'
*** TIMED: 0sec 1536nsec +- 1nsec
Addr: bf806550

*** TIMED: Instrukcja: 'tab[++i] = malloc_libc(100);'
*** TIMED: 0sec 166197nsec +- 1nsec
Addr: 804c070

Ustawianie priorytetu dla SHED_FIFO na 99 (zakres 1-99) dla 29488
*** TIMED: Instrukcja: 'tab[++i] = malloc_sbrk(100);'
*** TIMED: 0sec 5446nsec +- 1nsec
Addr: 806d000

*** TIMED: Instrukcja: 'tab[++i] = malloc_mmap(100);'
*** TIMED: 0sec 6495nsec +- 1nsec
Addr: b7f0d000

*** TIMED: Instrukcja: 'tab[++i] = malloc_stos(100);'
*** TIMED: 0sec 1396nsec +- 1nsec
Addr: bf806550

*** TIMED: Instrukcja: 'tab[++i] = malloc_libc(100);'
*** TIMED: 0sec 1816nsec +- 1nsec
Addr: 804c070

A kod wyglądał tak:


#include "framework.h"
#include

inline void* malloc_sbrk(int size) {
/* Poszerzenie przestrzeni adresowej programu */
void *addr = sbrk(size);
if (addr == (void*)-1)
addr = NULL;
return addr;
}

inline void* malloc_mmap(int size) {
/* Alokacja pamieci za pomoca mmap */
void *addr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
if (addr == (void*)-1)
addr = NULL;
return addr;
}

inline void* malloc_stos(int size) {
/* Alokacja pamieci na stosie */
return alloca(size);
}

inline void* malloc_libc(int size) {
return malloc(size);
}

void test_malloc(int rt) {
int i = 0;
void* tab[10];

RT_ON(rt);
#define CHECK_OK() do { \
printf("Addr: %x\n\n",(unsigned int)tab[i]); \
if (tab[i] == NULL) SHOW_ERR(); \
} while(0);


TIMED(
tab[++i] = malloc_sbrk(100);
);
CHECK_OK();

TIMED(
tab[++i] = malloc_mmap(100);
);
CHECK_OK();

TIMED(
tab[++i] = malloc_stos(100);
);
CHECK_OK();

TIMED(
tab[++i] = malloc_libc(100);
);
CHECK_OK();

free(tab[i]);
}

int main(int argc, char **argv) {
one_cpu();
uname_info();
test_malloc(0);
test_malloc(1);
return 0;
}