Posts Tagged ‘tech’

Geekbench - интересен бенчмарк

Sunday, September 6th, 2009

Попаднах на един интересен бенчмарк - Geekbench. Това което тества е производителност на процесор и памет. Детайлно описание можете да намерите на страницата им. Интересните моменти в него са:

  • върви на Windows, Linux и Mac OS
  • пуска се с 1 клик и дава бърз резултат
  • резултатите са разделени на няколко секции: целочислени операции, операции с плаваща запетая, памет и цялостен резултат. Точките са линейно пропорционални - ако компютър А има 500 точки, компютър Б има 1000 точки, а компютър В има 2000 точки, то Б е два пъти по-бърз от А, В е два пъти по-бърз от Б и четири пъти по-бърз от А.
  • бенчмаркът е написан така че да се възползва от произволен брой ядра на процесора, с или без Hyperthreading
  • може да изпратите резултата си до онлайн базата с данни, която и без това е доста богата

Естествено не трябва да се забравя че това е обикновен тъп синтетичен бенчмарк и поведението на тестваните машини в реални условия може да е друго.
Тествах три машини тук и ето резултатите:
Celeron 500MHz (66MHz FSB), i440zx, 128+64MB PC100 SDRAM - overall performance 230
Pentium Dual Core T2390 (1.8Ghz, 533Mhz FSB), GS965, 2*1GB DDR2 667MHz - overal performance 2030
Pentium 4 Prescott (3GHz, 800MHz FSB), i945, 512+512+1 DDR2 667MHz - overal performance 1740
Като се прибера в Пловдив ще го пусна и на виртуалната машина :)

Компютрите на космическите совалки

Wednesday, May 6th, 2009

Ако някой си мисли че горе хвърчи нещо от рода на двуядрени процесори и терабайтови хардове - жестоко се лъже :) Совалките на НАСА са технология от преди 30 години (и по последни данни ще бъдат бракувани за скрап до 2010та година) и авиониката им е на съответното равнище.

The IBM AP-101 computers originally had about 424 kilobytes of magnetic core memory each. The CPU could process about 400,000 instructions per second. They have no hard disk drive, and load software from magnetic tape cartridges.

Процесора има 16 броя 32-битови регистри, а наборът му от инструкции се състои от 154 инструкции, които могат да се променят чрез смяна на микрокода. Интересното е че целия процесор е в TTL изпълнение (!!!) и има скромните размери от 15/25/45 см. Тежи 25 кг.
През 1990 г. компютърът е бил ъпгрейднат с новата версия - AP-101S. Този звяр е имал около 1МВ памет и три пъти по-бърз процесор (изпълнявал е около 1.2 млн инструкции в секунда). Паметта вече не използва магнитно ядро, а CMOS технология с батерийно захранване. Това са данните за ъпгрейднатите части:

The main memory of each GPC (General Purpose Computer) is non-volatile (the software is retained when power is interrupted). The memory capacity of each CPU is 81,920 words, and the memory capacity of each IOP is 24,576 words; thus, the CPU and IOP constitute a total of 106,496 words.

Сто хиляди думи програма. Софтуера на совалката може да се събере в паметта на микроконтролера, който ползвам за дипломната си работа.
В совалката е имало шест компютъра с общо предназначение (GPC-та). Пет от тях са правили едни и същи изчисления. Резултатите се сравняват и ако някой от компютрите даде различен резултат, останалите го приемат за грешка и го изключват от системата. На шестият компютър върви същата програма, но написана от съвсем независим източник. Той е последната възможност на астронавтите ако всички други компютри откажат.
Всеки от AP-101 компютрите използва по 600 вата мощност.

Интересни са прогнозите през годините за това колко памет ще иде за програмата на совалката.

Most estimates in the 1969 to 1971 period ranged around 28K words. Rockwell International settled on 32K in its bid and won the contract partially because of that estimate. NASA, trying to save itself from later difficulties, bought 64K of memory for each computer, hoping that doubling the estimate would be enough (despite memory increases in previous programs of several hundred percent). Unfortunately, the
software grew to over 700K, requiring not only more computer memory, but the addition of mass memory units to hold programs that would not fit into the extended core. Parten said after this, “I don’t know how
you ensure proper memory size ahead of time, unless you’re incredibly lucky”.

Програмите за излитане, за поддържане на орбита и за обратно навлизане в атмосферата са се съхранявали на отделни ленти, които астронавтите са зареждали в съответните случаи. След ъпгрейда с AP-101S, вече всички програми е можело да бъдат съхранявани в главната памет.
Интересен е бил бъгът в софтуера, който е рестартирал компютрите при всяка смяна на годината от 31 декември към 1 януари. За това совалките не са правели полети, които включват тези дати. Този бъг е бил оправен чак през 2003 г.
Компютрите са можели да бъдат препрограмирани в полет, ако се появи критична ситуация:

The memory can be altered in flight. The ground can uplink bursts of 64 16-bit halfwords at a time, which can replace data already in the specified addresses. The crew can also change up to six 32-bit words simultaneously by using their displays and keyboards. However, those changes must be hand keyed in hexadecimal.

Представяте ли си как астронавта за три секунди набира сто инструкции по машинни думи :)

Понеже видео обработката по онова време е била трудоемка работа, цял отделен компютър е бил посветен на обслужването на дисплеите, където се извеждала информацията от останалите компютри.

Displays placed on the CRTs are controlled by a special-purpose computer with a 16-bit word size and 8K of memory. This computer provides display control and can create circles, lines, intensity
changes (highlighting), and flashing messages.

Интересни неща могат да се намерят за компютрите в космоса :)
По материали от Wikipedia и изходящите й връзки.

SE k800i Linux Modem Part 2

Sunday, February 22nd, 2009

В миналата част си поговорихме как да закачим телефона към компютъра така че да се работи с USB CDC драйвъра. Сега ще стане дума как да си пуснете реален интернет на компютъра. Тук имам само карта към МТЕЛ и съм писал за него, така че всички читатели които ползват услугите на евентуален друг оператор ще трябва леко да си редактират настройките.
PPP
Трябва ви point-to-point protocol поддръжка под някаква форма. Дали вградено в ядрото или на модул - по ваш избор. Нужните отметки в конфигурацията на ядрото са следните:

  • Device Drivers —>[*] Network device support —> PPP (point-to-point protocol) support
  • Device Drivers —>[*] Network device support —> PPP support for async serial ports

Ако решите да ги компилирате като модули, първия модул ще се казва ppp_generic, а втория ppp_async. Трябват ви и двете неща, иначе ще получавате странни грешки от рода на:

The PPP daemon has died: Fatal pppd error (exit code = 1)
1 An immediately fatal error of some kind occurred, such as an
essential system call failing, or running out of virtual mem-
ory.

Wvdial
Хубавото на Wvdial е че само си открива поддържаните настройки от модема и само си създава конфигурационен файл. Освен това не е нужно да се мъчите с /etc/ppp/* скриптове и настройки и даже не е нужно да сте прочели и ред от pppd man-страницата :)
Създаване на конфигурационен файл:

# wvdialconf
Editing `/etc/wvdial.conf’.

Scanning your serial ports for a modem.

WvModem<*1>: Cannot set information for serial port.
ttyS0<*1>: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyS0<*1>: ATQ0 V1 E1 — failed with 9600 baud, next try: 115200 baud
ttyS0<*1>: ATQ0 V1 E1 — and failed too at 115200, giving up.
WvModem<*1>: Cannot set information for serial port.
ttyS1<*1>: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyS1<*1>: ATQ0 V1 E1 — failed with 9600 baud, next try: 115200 baud
ttyS1<*1>: ATQ0 V1 E1 — and failed too at 115200, giving up.
Modem Port Scan<*1>: S2 S3
WvModem<*1>: Cannot get information for serial port.
ttyACM0<*1>: ATQ0 V1 E1 — OK
ttyACM0<*1>: ATQ0 V1 E1 Z — OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 — OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 — OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyACM0<*1>: Modem Identifier: ATI — Sony Ericsson K810
ttyACM0<*1>: Speed 4800: AT — OK
ttyACM0<*1>: Speed 9600: AT — OK
ttyACM0<*1>: Speed 19200: AT — OK
ttyACM0<*1>: Speed 38400: AT — OK
ttyACM0<*1>: Speed 57600: AT — OK
ttyACM0<*1>: Speed 115200: AT — OK
ttyACM0<*1>: Speed 230400: AT — OK
ttyACM0<*1>: Speed 460800: AT — OK
ttyACM0<*1>: Max speed is 460800; that should be safe.
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
WvModem<*1>: Cannot get information for serial port.
ttyACM1<*1>: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyACM1<*1>: ATQ0 V1 E1 — failed with 9600 baud, next try: 115200 baud
ttyACM1<*1>: ATQ0 V1 E1 — and failed too at 115200, giving up.

Found an USB modem on /dev/ttyACM0.

Отваряме /etc/wvdial.conf и редактираме редовете Phone, Username, Password. Добавяме и ред Init3. Това е крайното състояние при мен (за МТЕЛ) :

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,”IP”,”inet-gprs.mtel.bg”
Modem Type = USB Modem
ISDN = 0
Phone = *99#
Modem = /dev/ttyACM0
Username = dada
Password = dada
Baud = 460800

По принцип интернета на МТЕЛ се използва с каквито и да е Username и Password, но wvdial не ви позволява да оставяте тези полета празни. Из нета на разни места пишат че може и да се сложи следния ред:
Stupid Mode = 1
ако wvdial не може да си комуникира добре с модема ви. За k800i нямаше нужда.
Connect
Стартирането на pppd, което става автоматично от wvdial изисква отново да сте root.

# wvdial
–> WvDial: Internet dialer version 1.60
–> Cannot get information for serial port.
–> Initializing modem.
–> Sending: ATZ
ATZ
OK
–> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
–> Sending: AT+CGDCONT=1,”IP”,”inet-gprs.mtel.bg”
AT+CGDCONT=1,”IP”,”inet-gprs.mtel.bg”
OK
–> Modem initialized.
–> Sending: ATDT*99***1#
–> Waiting for carrier.
ATDT*99***1#
CONNECT
~[7f]}#@!}!}!} }9}#}%B#}%}(}”}’}”}”}&} } } } }%}&VKD}1[7f])~
–> Carrier detected. Starting PPP immediately.
–> Starting pppd at Sun Feb 22 19:48:09 2009
–> Pid of pppd: 26823
–> Using interface ppp0
–> pppd: 8[07][08]X¢[07][08][07][08]
–> pppd: 8[07][08]X¢[07][08][07][08]
–> pppd: 8[07][08]X¢[07][08][07][08]
–> pppd: 8[07][08]X¢[07][08][07][08]
–> pppd: 8[07][08]X¢[07][08][07][08]
–> pppd: 8[07][08]X¢[07][08][07][08]
–> pppd: 8[07][08]X¢[07][08][07][08]
–> pppd: 8[07][08]X¢[07][08][07][08]
–> local IP address 10.161.47.249
–> pppd: 8[07][08]X¢[07][08][07][08]
–> remote IP address 10.64.64.64
–> pppd: 8[07][08]X¢[07][08][07][08]
–> primary DNS address 213.226.7.34
–> pppd: 8[07][08]X¢[07][08][07][08]
–> secondary DNS address 213.226.7.35
–> pppd: 8[07][08]X¢[07][08][07][08]
^CCaught signal 2: Attempting to exit gracefully…
–> Terminating on signal 15
–> pppd: 8[07][08]X¢[07][08][07][08]
–> Connect time 1.5 minutes.
–> pppd: 8[07][08]X¢[07][08][07][08]
–> pppd: 8[07][08]X¢[07][08][07][08]
–> pppd: 8[07][08]X¢[07][08][07][08]
–> Disconnecting at Sun Feb 22 19:49:38 2009

CTRL+C спира връзката.
Има няколко важни неща, които трябва да се видят тук. Това че сте свързан към GPRS access point при оператора ви все още не означава че компютъра ви може да ползва интернет. Трябва да се добави default route, със следния gateway:
–> remote IP address 10.64.64.64
Съответно:
# route add default gw 10.64.64.64
Ако преди това сте бил свързан към друг доставчик явно ще трябва да махнете default gw, който ви е от него.
При спирането на връзката може да забележите следния ред, който показва за колко време сте били connected:
–> Connect time 1.5 minutes.
Други статистики може да видите от ifconfig ppp0:

ppp0 Link encap:Point-to-Point Protocol
inet addr:10.161.47.249 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:64 errors:0 dropped:0 overruns:0 frame:0
TX packets:317 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:7125 (6.9 KiB) TX bytes:53884 (52.6 KiB)

Конкретно това което ви интересува е RX и TX bytes, защото те струват пари. Не съм сигурен дали оператора отчита трафика по същия начин, за това не бих приел тези цифри много твърдо.

И финалния най-важен въпрос: колко бърз интернет можете да си пуснете - при мен стигна до четвърт мегабит:

wget http://mirrors.unixsol.org/linuxpackages//Slackware-12.0/ken/google-earth-4.2.205-i486-1kjz.tgz
–19:54:57– http://mirrors.unixsol.org/linuxpackages//Slackware-12.0/ken/google-earth-4.2.205-i486-1kjz.tgz
=> `google-earth-4.2.205-i486-1kjz.tgz’
Resolving mirrors.unixsol.org… 193.110.159.35
Connecting to mirrors.unixsol.org|193.110.159.35|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 22,863,884 (22M) [application/x-tar]

1% [> ] 442,690 37.82K/s ETA 10:23

Това зависи от мрежата, която ви покрива. Максималните скорости са съответно:

  • CSD (WAP dial-up) - 9.6 Kbps
  • GPRS - 90 Kbps
  • EDGE - 236 Kbps
  • UMTS - 384 Kbps
  • HSDPA - 14.4 Mbps downlink

Внимание: всичко различно от WAP CSD може сериозно да ви бръкне в сметката! MTEL дават 1MB трафик за 2.50 лв. Тарифата за WAP е 11 ст. на минута. Горното howto е писано за всичко от GPRS нагоре. За чист WAP ще експериментирам и тези дни вероятно ще пусна Part 3 на това howto.

Update: Операторката от телефон 1010 ми съобщи че MTEL от една година насам не предлагат CSD достъп, а само GPRS.

SE k800i Linux modem

Wednesday, February 18th, 2009

Фен съм на GSM-модемите. Това е идеалната и най-проста backup линия за връзка с домашното (или сървърното) ви PC. Предполага се че това PC е винаги в зоната на покритие на някой от GSM операторите, така че телефона ви винаги ще е online. По-старите телефони с RS-232 комуникация имат един недостатък - батерията им пада с времето и трябва да пачвате буксата за да я вържете в постоянно включено в контакта зарядно. Иначе какъв backup е ако телефона ви остане без ток на третия ден :) Този недостатък го няма в по-съвременните телефони с USB кабели, където батерията постоянно се дозарежда през кабела. (От USB порта може да се извади максимум до 100mA ток, което е повече от колкото може да извади зарядното ви.)
Удивително успях да се свържа с модема на k800 за по-малко от час ръчкане. Ето нужните стъпки:
0) Телефона се свързва с кабел към компютъра. На екранчето излиза меню, което ви пита в какъв режим да работи телефона. Избирате “Phone Mode”. Във “File transfer” режим телефона се рестартира и се mount-ва като флаш драйв, а това не ви трябва в момента.
1) Трябва ви CDC ACM драйвър, който служи като виртуален сериен порт под USB. Драйвърът обикновено върви в комплект с линукс кернела. Когато телефона ви е свързан с кабел към компютъра трябва да виждате устройства /dev/ttyACM*. Ако не виждате такива устройства вероятно нямате ACM драйвър. Може да се разминете без прекомпилиране на кернела, ако го добавите драйвъра като модул:
Device Drivers —> USB support —> USB Modem (CDC ACM) support (за кернел 2.6.25.6)
След това следват:
$ make modules
# make modules_install
при което ще бъде компилиран и инсталиран само този модул.
Можете да го заредите с:
# modprobe cdc_acm
Ако все още не се появяват устройства /dev/ttyACM*, проверете какво се вижда в lsusb. Трябва да виждате нещо като това:
Bus 5 Device 16: ID 0fce:d0a1 Sony Ericsson Mobile Communications AB
2) По подразбиране само root потребителя може да работи с тези устройства. При засичане на модем, драйвъра автоматично си създава ttyACM*, но режима на достъп обикновено е root:root 0600. Едно временно решение е:
# chmod a+rw /dev/ttyACM*
Но след презакачане на телефона udev ще възстанови 0600 режима.
За да направите така че всеки потребител да има достъп по всяко време, добавете следния ред в /etc/udev/rules.d/50-udev.rules:
KERNEL=”ttyACM*”, NAME=”%k”, GROUP=”uucp”, MODE=”666″
3) След като имате виртуалните серийни портове, можете да използвате любимата си програма за серийна комуникация. Обикновено трябва да зададете порт с който да се свърже и настройки. Тук идва интересната част, защото при мен се появяват обикновено няколко виртуални порта (ttyACM0, ttyACM1, ttyACM2) на всяко свързване. Може да експериментирате с всеки от портовете докато откриете къде ви е модема. Слава богу поне не се грижите да следите на какъв default baud rate работи модема, защото той е умен и се синхронизира към скоростта на вашето предаване.
Полезна програмка, която можете да използвате и за dialing е wvdial. Хубавото в нея е че изследва какво имате вързано по портовете и сама се конфигурира.
За финал - написвате си daemon програмка, която следи за състоянието на модема и при дадено събитие изпълнява нещо. Например аз следя за входящо повикване от другия си номер и когато се появи, изпълнява командата `xmms -f` и сменя песните в XMMS-a. Ето на това му викам полезен backup и дистанционно за случаите когато ме мързи да стана от леглото :)
Друго примерно приложение е при получаване на SMS да се изъплнява шелска команда, която се съдържа в него. За целта обаче първо трябва да си разкодирате SMS-а, което е готина задачка. Прочетете повече за PDU формата на съобщенията тук.
Ето ви и едно примерно съобщение, с което можете да си поиграете за домашна работа (цялото съобщение е на един ред без интервали, които го разбиват):
AT+CMGL=4
+CMGL: 1,1,,86
07915389080003F104048111110000902061904403805146F9BBAD034DE
961777ACE0EDB413CFA7B3E9FC96280733B9C66BBC6EFB60F442DE3E93A
10A8999ECFD36F3768FC6EC3D9657A991C025DC3697ADA7D0699DF72D05
B4E2ECB4320
OK

P.S. Документацията с АТ командите може да си дръпнете от девелоперската секция в сайта на Sony Ericsson.

P.S.2. Подозирам че горното писание важи за всеки телефон с USB връзка и модем, не само за k800 :)

Apacer AU231 0MB, inside

Tuesday, February 17th, 2009

Имам такъв mp3 плеър от доста време. Типичната евтинийка е - 7-сегментна индикация вместо шарен дисплай, без вградена памет, чете песните от SD карта, която се споделя с фотоапарата, черпи ток от една ААА батерия. Доволно свири музиката. В един момент обаче след година и кусур терор, спря да свири и въобще да чете картата. Без карта се стартира със съобщение “No-Sd”, а когато бъде пуснат с карта се опитва да прочете броя песни и забива. Проблема беше че в слота имаше някакъв боклук и трябваше да бъде издухан, но това ми беше готин повод да отворя плеъра. И да споделя снимки с вас :)
Първо плеъра в търговски вид:

Махнат преден капак. Вижда се че вътрешността се състои от две платки, свързани с лентов кабел. Слота за SD картата е просто огромен в сравнение с останалото. Виждат се и микро-USB и стерео жак.

Google е чувал за големия чип, но не можа да ми каже нищо повече от “Made in Taiwan”. Не намерих datasheet - маймуните дето сглобяват плеърите на плажа си крият продукцията. Белия правоъгълник над mp3 кодека е светодиодната подсветка на дисплея. Малката платка като че ли се занимава само с управлението на дисплея.

Подсветката в действие.