Прекомпилиране на Ардуино bootloader

В тази статия се описва как да се заобиколи проблем при прекомпилиране на bootloader-а на Ардуино при използване на gcc версии 4.х. Също така има кратко описание какво е bootloader и защо бихте искали да го промените и компилирате наново. Ако желаете превод на български, моля оставете коментар.

Some time ago I needed to recompile the Arduino bootloader for the ATmega8 MCU. Unfortunately I run into one problem – the generated executable code was too big. I write this to share the workaround I’ve found. If you don’t know what I’m talking about, but are curious to learn scroll down for a quick explanation.

Basically when trying to compile the bootloader it doesn’t fit in the 1KB designated space. The error spewed out is something like:

address 0x203e of ATmegaBOOT.elf section .text is not within region text.

The problem turns out to be a bug in more recent versions of avr-gcc. The binary in the Arduino distribution was compiled using the 3.x branch which isn’t affected and I was using a newer 4.x version. One way to handle this would be to install the complete 3.x toolchain but that doesn’t look like much fun.

Reading the bug description more closely showed that the problem is inlining functions more that once even though the -Os option is passed to the compiler to optimize for minimum size. Curiously for some other architectures even inlining a function twice can be smaller that not inlining, but for the AVR this is not the case. So until the gcc gurus figure out how to get this problem solved properly I have found a temporary workaround. At least with the Arduino bootloader adding -finline-limit=1 to the gcc parameters seems to do the trick. The code is again less that 1KB and happily fits in the bootloader section.

So, what the hell is a bootloader and why would I want to recompile it? I’m glad you asked :)!

The ATmega8 is a small computer – everything needed on a single chip. To make it useful, as with any computer, we need to put some program in it. More precisely on the internal flash memory. One way to do this would be using a special cable or adapter called a programmer. If we don’t have such cable or we want the user of the device to be able to change the software in the field there is another way. We can use any of the built-in peripherals to get the program, the most popular choice being the USART module aka ‘the serial port’. But there’s one catch – in order to do this we need to write a very small program that reads the data from our peripheral of choice and writes it to the flash memory. This small program is called a bootloader. When I say small in the case above this meant less than 1KB of the total 8KB of flash in the ATmega8.

If you have acquired an Arduino or Arduino like board it most probably already has the bootloader programmed into the chip. Thanks to its help you can just plug in the USB cable in your PC, and have your sketch uploaded to the board. The USB cable actually connects to a USB/UART converter chip, or more precisely the FT232RL, so from the viewpoint of the ATmega we are talking through a serial connection. One of the very important parameters of a serial link is its speed usually measured in bits/second. When we configure the serial link speed in the AtMega MCU we use the frequency of the CPU, or the CPU clock as a base, Usually this clock signal is run through a divider, so the „UART clock“ (i.e. the UART speed) is set as a fraction of the CPU clock. So if we change the CPU clock, but want to keep the same speed, we need to change the divider used. Since this divider is specified in the bootloader source code a recompile of the bootloader is needed.

By default the Arduino has a 16MHz external crystal (the shiny metal box that has written 16.000 on top) and that’s the frequency it runs at. In my case I wanted to run it at 4MHz or even at 1MHz instead. Why would anyone want to do this? Why run a CPU that is perfectly capable of running at 16MHz at only 1? The reason is power consumption. The lower the frequency the lower the voltage supply that is required. And the lower the voltage – the lower the power. For example certain parts of the ATMega family that have a V suffix, like the ATmega88V can work from as low as 1.8V if the CPU frequency is kept under 4MHz.

When a device is going to be battery powered it is important to make the batteries last as long as possible. One thing that helps to accomplish this goal is to run the CPU at the lowest frequency that satisfies the application’s need for computing power. Taken to the extreme this means 0Hz, or completely stopping the CPU. And this is exactly what should be done if the CPU isn’t needed for the moment – put in in power-down mode.

I got a little carried away here, but ways to minimize the power consumption is such an interesting topic. Do you have any power saving tips to share?

Заверка на осигурителна книжка

В последните две години не съм работил някъде постоянно. Нямам трудов договор. За проектите по които съм работил съм сключвал граждански договори. Това обаче се оказа, че никак не е достатъчно. Ако доживея до пенсионната възраст вноските удържани по тези договори няма с нищо да ми помогнат, не се зачита и трудов стаж, освен ако нямам един вълшебен тефтер – осигурителната книжка.

Как да се сдобиете с такава ли? Отивате в местния клон на НОИ с един от гражданските ви договори и казвате, че искате да ви издадат осигурителна книжка (ОК). Плащате скромна сума и след няколко дни отивате да си я вземете. После обикаляте всички работодатели с които сте сключвали договори. Те попълват съответните данни в книжката и слагат един куп печати за да удостоверят, че наистина сте работили за тях. След това се връщате в НОИ и оставяте книжката за заверка. Към нея прилагате копия на всички граждански договори и служебни бележки за направени вноски. Служител проверява всичката информация дали е вярна, и дали съвпада с тази която е в „базата“ на НОИ. Ако всичко е наред той на свой ред слага поредното количество печати. Накрая почти нищо не може да се различи от хилядите печати един върху друг. Прибирате си заверената книжка и я пазите като една от най-ценните ви вещи.

Горният сценарий беше за идеалният случай. Е, моят не беше идеален. Известно време след подаването на книжката за заверка ми се обади служител на НОИ и каза, че иска да се видим. Отидох при него и той ми обясни, че фирмите Х и Y за които съм работил през 200Z година „не са подали данни“ и не може да ми завери книжката. Той им пратил писма, ама едното го върнали, пък другото било доставено, ама пак нямало данни. Ако мога да съдействам. Съгласявам се. Обаждам се по телефона на фирма Х, казват че са получили писмото, но счетоводителката е в отпуска, другата седмица ще подадат данни. Другата фирма е на нов адрес. По-случайност на другия ден щях да се видя с човек от фирмата и взех копие от писмото, което да предам лично.

След време пак ми се обаждат по телфона – ама сега фирма Х била подала данните два пъти, пък Y, още не ги били подали. Да им кажа, какъв е новият адрес, от НОИ няма как да разберат! Вече не ми се занимава и не съдействам кой знае колко.

Междувременно се запознавам с документа ОТНОСНО: уеднаквяване на практиката при заверяването на осигурителните книжки. Към края има следния текст:
ІІІ. Заверяване на осигурителни книжки
. . .
При липса на подадени данни с декларация образец № 1 “Данни за осигуреното лице” от страна на осигурителите не следва да се отказва заверяване на осигурителните книжки. Заверяването се извършва въз основа на представените от лицата доказателства за получените от тях възнаграждения. На осигурителите се дават задължителни предписания за подаване на данните, налагат се административни наказания, при необходимост се сигнализират и органите на НАП.

Разпечатвам въпросния документ и днес пак отивам в НОИ. Oт деня в който подадох книжката за заверка са изминали три месеца. Срещам се със служителя и той ме посреща с репликата „Ти хубаво идваш, ама още няма данни“. Обяснявам, че съм представил абсолютно всички документи – договори, вносни бележки. Вадя безценната разпечатка, прочитам на глас текста цитиран по-горе, и заявявам, че очаквам книжката ми да бъде заверена. Сега, въпреки че ги няма подадени данните. Господинът никак не е доволен и казва, че няма как да ми завери книжката. Пита ме знам ли аз, каква отговорност е това, особенно като ги няма данните. Осведомява ме, че ако не съм съгласен мога да подам жалба. Аз отговарям, че ако трябва ще подам. Той излиза от стаята за малко и след като се върна удари заветните печати. Ура! Сега стискайте ми палци да доживея до 65 или колкото там трябва.

Цялата тази работа за мен е необяснима. Защо е необходима тази осигурителна книжка? Всичката информация трябва вече да я има в цифров вид. Как иначе са ми удържали коректно данъците? Хвърлят се купища пари за информационни системи на държавната админинистрация. Да, една част направо се хвърлят за софтуер от една определена компания. И накрая какво – пак в тефтера е истината! Ами в такъв случай да спестим парите за компютри поне и да си караме само на хартия. От личен опит мога да ви кажа, че е напълно възможно в НОИ, НАП и където и да е в държавата да няма абсолютно никаква информация за това, че сте работил в дадена фирма, дори за години след 2000-ната. Аз го разбрах миналата година, когато НАП се опитаха да ми приберат „дължими“ осигуровки, с лихвите, 7 години по-късно! Но това определено заслужава отделна статия, която ме домързя да напиша по време на случката.

Не беше само мързел де, има и друга причина. Тук ми се искаше да пиша повече за технически неща – софтуер, електроника. Не ми се щеше да занимавам читателите (колкото и малко да са те) с моите премеждия с държавата. Струва ми се обаче, че е важно да се споделят и историите с КАТ, НАП, НОИ. Най-малкото може да са полезни на някой друг. По-важното е, че повечето от тях са ако не с идеален, то поне с положителен край. Показват, че ако хвърлиш известно количество време и усилия е възможно нещата да станат както трябва, или поне почти както трябва. Че можеш да се бориш за правата си, че положението не е съвсем безнадеждно.

От друга страна, ако взема да пиша само такива истории, пак няма да съм много доволен. Затова си въвеждам следното правило: мога да пиша за такива неща, но след всяка „бюрократична“ история трябва да има поне една техническа тема.

Да се надяваме, че с времето техническите публикации ще станат много, много повече от „бюрократичните“!

Хъ-ръ-цъ-ръ – или как не се прави лов на глави

Днес получих в пощата си следното съобщение:


Nie sme HR Company www.hrcr.bg i iskam da Vi otpravq predlojenie za rabota. Imame klient, za kogoto tursim Development QE. Eto linka na nashata obqva: http://hrcr.bg/live/index.php?id=499,0,0,1,0,0

Ako predlojenieto Vi interesyva, molq da mi izpratite aktyalno CV na angliiski ezik. Mojete da se svurjete s men na tozi e-mail : mnikolova@hrcr.bg i na : 02 923 55 18

Yspeshen den!

Miroslava Nikolova
HR Consultant
Human Relations Consulting Recruitment
20 Serdika str.
1000 Sofia, Bulgaria
tel: ++ 359 2 923 55 18
Skype: mnikolova5

По принцип нямам нищо против да получа интересно предложение за работа по електронната поща. Дори напротив. Все пак съм публикувал CV-то си на този сайт (трябва да го направя по-красиво скоро) и работя на свободна практика. Нови проекти винаги са добре дошли.

В крайна сметка „ловците на глави“ могат да предложат полезна услуга – както за работодателите, така и за работниците. За това обаче е необходимо да се положат поне минимални усилия. Иначе въпросното „предложение“ си е просто поредният СПАМ.

Какво не е наред с това писмо:

  • Написано е на латиница.
  • Търсят Development QE. Някой да поясни.
  • Като цъкна на връзката се отваря празна страница. Може би ако „one of the biggest HR companies in IT field“ си намери един PHP програмист нямаше да е така. Признавам и аз бих се затруднил ако ми се налагаше да работя с удобни и лесно запомнящи се адреси от вида на http://hrcr.bg/live/index.php?id=499,0,0,1,0,0
  • Искат ми „актуално CV на английски език“. След като ми пращате това на radoslav@kolev.info, да бяхте написали в браузъра си http://kolev.info и щяхте да се сдобиете с такова.
  • Няма никаква информация за това кой е работодателят. И това при положение, че те ме търсят.

Последното ми се вижда особенно тъпо. Както в случая, така и в обяви тип „фирма: поверително“. Ако съм някакъв шпионин и толкова много искам винаги мога да разбера кой е работодателят. Ще наема един супер подходящ кандидат, пращам го да ходи на интервюта и той после ми казва. Срещу някакво заплащане разбира се.

Да се стига до чак такива крими сценарии обаче обикновено не е необходимо. Особенно в българската ИТ сфера. Обявите са написани толкова специфично, че въобще не е трудно да се играе на „познай фирмата“. Даже играта бързо доскучава ако се ползва помощта на гугъл.

Отворям сайта hrcr.bg. Търся си работа по ключова дума „linux“.

Да разгледаме първите три резултата:

Linux Engineer /A_LX/

Has been providing information technology solutions since 1969. Working across a huge variety of industry sectors, they have earned a reputation for delivering personalised, quality services and solutions that provide immediate productivity, cost savings and flexible resource allocation; They need experienced and ambitious IT specialists to become part of their service support centre in Sofia city.


C++ Software Engineer /T_C++/

Headquarter of the company is in USA and exist from 1993. Bulgarian office was opened in 2003.
The size of the company here is more than 150 people and they are recognized leader in providing secure Internet communication solutions for enterprises and government customers of all sizes.


Senior Automation Software Engineer /PP_SASE/

a dynamic international software development company, which has developed the industry’s first plug-compatible alternative to Microsoft Exchange on Linux


Забелязвате ли нещо в по-горните примери? Oт HRCR съвсем развалят играта, използвайки така наречените „кодове“ за позициите. От горните три виждаме: Т=Tubmleweed, A=Ajilon, PP=PostPath. Можем да предположим, че всеки код съдържа поне първата буква на фирмата, или първите букви – ако името е от няколко думи. Освен това, ако успеем да идентифицираме дори една обява на някоя фирма, то след това можем да откирем всички останали. Явно частта преди подчертавката е фирма, а след нея позиция.

И така, някой ще се заеме ли с направата на сайт със залгания? Публикува се обява и посетителите познават коя е фирмата. Всъщност, защо просто някоя от HR фирмите не добави такава функционалност към сайта си, хем ще е по-интересно, хем и за тях ще има процент :).

Ъпдейт от днес:

Vchera Vi izpratih predlojenie za rabota za poziciq Development QE, no edva dnes zabelqzah che linka na obqvata, koqto sum Vi izpratila e s prazno sudurjanie.
Iskam da Vi se izvinq za tova i da Vi izpratq aktyalniq link: http://hrcr.bg/live/index.php?id=528,0,0,1,0,0

Miroslava Nikolova
. . .

Все още не е ясно, какво е Development QE, но линка към обявата вече е работи. Също така, въпросното QE явно е зададено от работодателя, защото присъства и в неговата обява на собствения му сайт. Като стана дума, ето кой си търси QE-и:

* The second largest software company in Europe;
* Ever since its foundation in 1969, the company is a leader in the field of Software Development; especially in the Enterprise Transaction Systems as well as the SOA WebMethods;
* With more than 3600 employees worldwide and offices in 50 countries, the company is searching for personnel for its office in Sofia.

Кодът е SG_DQE, което внася малко несигурност в горната ми теория, защото фирмата е Software AG. Ако бях 100% познал, трбваше да е SA_DQE. Бърза проверка показва, че явно просто правилата за формиране на кодовете (или референтни номера, както те ги наричат) не са много твърди и всеки пише както му дойде в момента. Въпросната обява е публикувана както с кодове SA_DQE, така и SG_DQE на различни места.

Аферата „къси панталони“ – не само в СРС

Днес от блога на Пейо разбрах за аферата „къси панталони“.

За съжаление въпросната афера се простира далеч извън СРС. Със сигурност подобен проблем има и в сградата на Окръжен съд – Кърджали, а и в „други институции на държавната администрация“.

Аз се сблъсках с това миналата година, точно както го е описал Милен Христов – отивайки да си извадя свидетелство за съдимост. Макар и да изглежда смешно въпросът е много сериозен. Ако се абстрахираме от конкретния случай с късите гащи ситуацията е следната – на всеки гражданин може абсолютно произволно да бъде отказан достъп до сградите на съда. Всичко зависи от настроението на пазача – дали е спал добре днес, дали си му симпатичен и т. н.

И аз не харесвам подобни несправедливости и се опитах да направя нещо по въпроса. Резултатът е половинчат. Вече можете да влезете с бермуди в сградата на ОС-Кърджали – тествано е. За съжаление така и не получих отговор на последното ми писмо и нищо не е сигурно. Може просто човекът при тестовото влизане да е имал късмет и ако утре отидете вие пак да ви върнат. Аз тогава нямах повече търпение да се занимавам със случая и го оставих така. Скоро ще се опитам да напиша малко за по-генералния проблем, който както разбрах се нарича „мълчалив отказ“.

В крайна сметка излиза, че сме задължени да уважаваме съдебната власт, не само това ами и да показваме своето уважение носейки определено облекло (точно какво – не ни казват). Е, ако ме накарат и се наложи може и триредов костюм да облека. За мен обаче е много по-важно какви мисли има в главите на хората, не как са облечени когато се срещаме или какви изпразнени от съдържание обръщения използват. Ако искаш другите да те уважават истински не трябва да ги задължаваш да го правят с нормативен акт – трябва да го заслужиш.

Ето и моята кореспонденция с Окръжен съд – Кърджали и Областно звено „Охрана“:

Писмо от мен (изпратено чрез сайта http://kardjali.court-bg.org/):

Днес се опитах да влезна в съдебната палата. Охраната на входа ме спря и отказа да ме допусне в сградата. Аргументът им беше, че не може да се влиза в сградата с „къси гащи“. Казаха ми, че мога да влезна единствено ако си облека дълъг панталон. Служителите не успяха да ми дадат точна информация къде е описано това изискване, а само че е нареждане „отгоре“.

Единственото което можах да намеря на сайта court-bg.org като изискване за облеклото е следното: „Израз на неуважение е влизането в съдебната палата с неприлично облекло, в нетрезво състояние и демонстриране на агресивно или скандално поведение.“

Аз бях облечен с тениска и панталон до коленете. По моя лична преценка, това не е неприлично облекло.

Тъй като понятието е доста разтегливо моля да ме насочите към дефиниция на „неприлично облекло“ която вие използвате, така че да мога да съобразя облеклото си при бъдещи посещения в сградата.

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

Радослав Колев

Отговор от ОС – Кърджали изпратен ми по електронната поща:

В отговор на Вашето писмо, Ви уведомявам, че организацията на пропускателния режим и охраната на Съдебната палата се осъществява от служители на Главна дирекция „Охрана” при Министерство на правосъдието и съобразно Правила за охраната, вътрешния ред и сигурността на Съдебната палата – гр.Кърджали, утвърдени със Заповед №З-38/26.01.2007г. на Директора на Главна дирекция „Охрана” при Министерство на правосъдието. Според т.8 от същите правила, не се допускат в сградата граждани в неприличен външен вид, в явно нетрезво състояние, с видими психически разстройства и под влияние на наркотични или други упойващи вещества. Контролът за спазване на вътрешния ред, пропускателния режим и охраната на Съдебната палата се осъществяват от дежурните сътрудници по охраната при Областно звено „Охрана” – гр.Кърджали.

Съдебен администратор при ОС-Кърджали

Уточняващо запитване от мен, пак по електронната поща:
Уважаема г-жо/г-це Милушева,

Благодаря за бързия отговор!

Както съм написал в първото писмо до вас, преди да ви безпокоя с въпросите и предложенията си проверих за изисквания относно облеклото на вашия сайт. Там открих въпросната забрана за неприлично облекло/външен вид.

За съжаление във вашия отговор не намерих това, което всъщност най-много ме интересува. Как се определя кое облекло е прилично и кое не? Има ли някъде дефиниция или се разчита на преценката на служителите на Главна дирекция „Охрана“?

Смятам, че за да може това правило да се прилага безпристрастно и обективно трябва да има обща пунблично достъпна дефиниция за „неприлично облекло“, която ще е полезно да е описана на табло пред входа или на вашия уеб сайт.

Сега дори и да имам най-добрите намерения да спазя изискването, не съм сигурен, че ще успея. Явно моята представа за прилично облекло е различна от това, което изисквате вие. Проблемът е, че за да се съобразя с вашата дефиниция трабва да знам каква е тя. За момента единственото което ми е известно е, че се изисква „дълъг панталон“. Можете ли да потвърдите, че единственото изискване е дълъг панталон? Опасявам се, че ако утре дойда с яркочервен дълъг панталон може отново да бъда върнат, защото примерно цвета е прекалено ярък и предизвикателен.

Ще съм благодарен, ако можете да отговорите на въпроса ми.

С уважение,
Радослав Колев

На това писмо не получих никакъв отговор. Поради това изпратих следното до председателя на окръжния съд (хартиено писмо, с обратна разписка):


Председателя на

Окръжен съд Кърджали

Уважаеми г-н Събев,

Във връзка с отказан ми достъп до сградата на ОС-Кърджали изпратих запитване чрез Вашия интернет сайт. Интересувах се от критериите Ви за “неприличен външен вид” по които охраната отказва да допусне гражданин в сградата на съда. Полученият отговор от съдебния администратор при ОС-Кърджали според мен е формален и не отговаря на зададения от мен въпрос. Изпратих уточняващо запитване на което и до сега не съм получил отговор.

Горепосоченият факт е причината за моето писмо до Вас. Очаквам да отговорите точно и по същество на зададения от мен въпрос.


1. Текст на запитване изпратено на 11.06.2007 г.
2. Отговор от г-жа Милушева получен на 12.06.2007 г.
3. Текст на уточняващ въпрос изпратен на 12.06.2007 г.

Адрес за кореспонденция:

6600 Кърджали

ул. ***********

Радослав Колев

20.07.2007 г. С уважение:

Кърджали /Р. Колев/

Получих следният отговор:


След което изпратих запитване до ОЗ „Охрана“ (хартиено писмо, с обратна разписка):

Г-н Делчо Ташев
Началник на
Областно звено “Охрана”
гр. Кърджали

Уважаеми г-н Ташев,

От кореспонденцията ми с Окръжен Съд – Кърджали разбрах, че критериите за “неприличен външен вид” свързани с пропускателния режим за сградата на ОС – Кърджали са от компетенцията на Областно звено “Охрана”. Поради това с настоящето писмо се обръщам към Вас, с цел да получа определение на критерия за “неприличен външен вид”, респективно как се определя кое облекло е прилично и кое не е. Аз не успях да открия точни изисквания на видно място на входа на сградата на ОС – Кърджали или на интернет страницата http://court-bg.org.

Бих желал да получа отговор, на зададените от мен въпроси:

* Къде са регламентирани критериите за “неприличен външен вид”?

* Ако никъде няма нормативно определени критерии, да смятам ли, че се разчита на субективната преценка на служителя на смяна?


1. Текст на запитване изпратено на 11.06.2007 г.
2. Отговор от г-жа Милушева получен на 12.06.2007 г.
3. Текст на уточняващ въпрос изпратен на 12.06.2007 г.
4. Повторно запитване до ОС – Кърджали
5. Писмо с изх. № 1054/30.07.2007 г.

Адрес за кореспонденция:

6600 Кърджали

ул. *******

Радослав Колев

10.08.2007 г. С уважение:

Кърджали /Р. Колев/

Получих следният отговор:


Изпратих поредното писмо:
ОЗ “ОХРАНА” – гр. Кърджали
Г-н Делчо Ташев

Във връзка с Ваш изх. №650 / 20.08.2007 г.

Уважаеми г-н Ташев,

Благодаря за писмото. За съжаление в него отново не получавам отговор на всички поставени от мен въпроси. Аз много внимателно прочитам писмата които получавам от Вас и ОС – Кърджали и отговарям на всички поставени въпроси или изисквания за уточняваща информация. Моля, и Вие да правите същото. За улеснение номерирам въпросите си:

1. (от предишното ми писмо) Ако никъде няма нормативно определени критерии, да смятам ли, че се разчита на субективната преценка на служителя на смяна?
2. Бихте ли посочили къде точно и в кои мои писма сам казвам, че понятието „неприличен външен вид“ не може да бъде формулирано еднозначно и записано пълно и дословно в нормативен акт? Ако смятах нещо за невъзможно нямаше да ви питам къде и как е направено. Понятието „безопасна скорост“ е също толкова субективно, но в Закона за движение по пътищата е записано, че максималната допустима скорост в населени места е 50 км/ч, извън тях 90 км/ч и т. н.
3. Благодаря за поканата за среща! Давате ли съгласието си да бъде направен аудио/видео запис на нашата среща, който да мога да разпространявам свободно?
4. Бихте ли ме запознали със съдържанието на указанията дадени на служителите Ви във връзка с моя случай за които споменавате във Вашия предишен отговор?

Адрес за кореспонденция:

6600 Кърджали
ул. ********
Радослав Колев

13.09.2007 г. С уважение:

Кърджали /Р. Колев/

Както вероятно се досещате отговор на горното така и не съм получил.

http://bgrun.com – обиколка на България

Моят приятел Божко е решил да прави обиколка на Бълария. Планът му е да пробягва по около 50 километра на ден в продължение на месец.

Мислех да го придружа първата седмица – с колелото разбира се, трудно бих пробягал такова разстояние. В крайна сметка пак го придружавам, но карайки колата с багажа. Имаше проблем с първоначално уговореният шофьор.

Вчера тръгнахме от Кърджали по пътя за Смолян и завършихме в село Леска. Спахме на палатка близо до реката и като цяло беше доста приятно. След като разпънахме лагера на една ливада отидохме в местната кръчма да заредим GPS-a и да пийнем нещо. После на връщане по тъмното малко трудно намерихме точно къде е палатката, но все пак успяхме и спахме на топло и удобно.

Аз сега съм в Смолян в хотел-ресторант „СПАРТАК“. Приятно е, а и имат безжичен интернет. Утре живот и здраве се надявам да се изкъпем в минералните басейни на Девин.

Официалният сайт за момента е само статичен HTML и е малко неудобно, но ще се опитам скоро да пусна един WordPress и да качваме там по-често новини и снимки. Може и да се пробваме на покажем логовете от GPS-a върху google maps или нещо подобно ама не съм правил до сега такова нещо и не знам точно как е най-добре.

Ако живеете някъде по пътя на обиколката, и искате да ви дойдем на гости само се обадете :).

svn: Cannot replace a directory from within

Yesterday I was trying to do a merge in a svn repository using a command like:

rado@ubuntu-laptop:~/svn-wc/$svn merge svn://somehost.net:3690/some/very/long/path svn://somehost.net:3690/some/other/very/long/path

just to get the really strange error – „svn: Cannot replace a directory from within“.

After reading through mailing lists messages, bug reports and anything else I could find about this error there was no enlightenment.

In the end the cause turned out to be a simple typo in one of my very/long/paths.

I shouldn’t trust error messages too much!

Всяко хлапе знае за Линукс

Вчера гледах част от предаването „Това го знае всяко хлапе“ по BTV. За моя изненада на участичката зададоха следния въпрос: „Кое животно е знак на операционната система Линукс?“ (може и да не бяха точно тези думи, цитирам по памет). Споменаването на Линукс по телевизията може само да ме радва, защото това означава, че свободният софтуер е все по-популярен. За съжаление обаче организаторите на предаването не си бяха свършили работата както трябва и според мен въпросът е формулиран некоректно.

Линукс е само ядро, един от компонентите на операционна система. Освен ядрото за да имаме функционираща операционна система ни трябват много библиотеки, обвивка, иснтрументи и помощни програми, а вече хората очакват и графична среда. Ричард Столман предлага тази съвкупност от програми да се нарича ГНУ/Линукс, тъй като голяма част тях са разработени от проекта ГНУ. Освен това има много ГНУ/Линукс операционни системи, или различни набори от компоненти, които наричаме дистрибуции.

Често в ежедневната реч много от нас използват просто думата Линукс, но обикновено от контекста се разбира дали става въпрос за ядрото или за някоя от ГНУ/Линукс дистрибуциите. Когато е възможно двусмислие обаче, смятам че винаги трябва да се поясни какво точно се има предвид. Горният случай е точно такъв.

Според мен по-добре би било да се каже „Кое живото е знакът на Линукс?“, за да не се затормозяват хората незапознати с термина ядро. Употребата на пълен член „операционната система Линукс“ е логически неправилно, тъй като нямо точно една Линукс операционна система, а много ГНУ/Линукс дистрибуции. Всичко това може да ви се струва излишно мрънкане, но както се оказа от тези детайли зависи дали отговорът който сте дали ще се приеме за верен.

Във вчерашния случай девойката отговори, че животното е гущер, тъй като очевидно тя е потребител на дистрибуцията Сусе. Водещите и сценаристите обаче се оказаха доста незапознати с темата и обявиха отговорът и за грешен. Верният отговор според тях е пингвин.

Скъпи сценаристи на предаването, или който там от екипа подготвя въпросите: на така зададеният въпрос има повече от един верен отговор!

Освен Тукс пингвина талисман на Линукс ядрото, и Гийко гущера за които вече споменахме ще се учудите колко още представители на животинския свят ползват ГНУ/Линукс.

Та само във Федора проекта има цяла зоологическа градина, дори някои видове за пръв път са били открити там! Ето и списък, който не претендира за изчерпателност*:

* извадил съм жвотните свързани с дистрибуции от http://chl.be/mascots/

В борбата за сериен порт

Историята по-долу се разви преди доста време, но скоро ми се наложи да си я припомня. Реших, да си запиша нещата тук, пък може и на някой друг да свърши работа.

Напоследък серийните портове взеха напълно да изчезват от компютрите – осбено от преносимите. Дори и моят, който не е първа младост няма такъв (сигурно и защото е евтин модел).

RS232 интерфейсът може да е бавен, с обемист конектор и да работи на малки разстояния, но той има и едно предимство – изклютително прост е. Ако се занимавате с разни малки контролери ще знаете, че той е в порядъци по-удобен, достъпен, евтин и прост за реализация от USB или ETHERNET например.

И така, за да се сдобия с тази незаменима екстра се запътих към близкия магазин за конвертор от USB към сериен порт. Взех си и компютъра, защото за мен е важно чудото да работи под Линукс, а обикновено по опаковките това не го рекламират много. Преди да го купя включих USB конверторът и ядрото веднага го разпозна и се появи нов сериен порт. Купих го.

За съжаление радостта ми беше кратка, защото след като се прибрах установих, че въпросният конвертор не може да си комуникира с никакво серийно устройство – макар, че се разпознава. Може да е бил дефектен моя, но по-сокоро предположението ми е, че има проблеми с драйвера – cypres_m8. След това съм пробвал с други конвертори с чипове на FTDI и Prolific 2303 и при тях нямаше такъв проблем със серийната комуникация. Въпреки това при ситуации в които използвате серийния порт не съвсем по предназначение, а примерно превключвате контролните линии много бързо (bit banging) за да говорите някакъв друг протокол тези конвертори може и да не работят.

В крайна сметка реших да си взема „истински“ RS232 под формата на PCMCIA карта. След търсене с Гугъл попаднах на блога на Данчо, където той беше обявил за продажба точно такава карта поради несъвместимост с неговия компютър. Видяхме се. Пъхнах картата в моя компютър – ядрото я разпозна веднага – взех я.

Прибрах се. Първата ми работа беше да тествам новата придобивка – отново нищо! Никаква комуникация, нито с мобилния ми телефон, нито със стар външен модем, който успях да изровя.

Самата платка получих в картонена кутия, на която имаше йероглифи и единствено се разбираше, че пристига от Хонг Конг. Имаше и диск с драйвери – само за Унидоус. Всички отличителни белези по картата се свеждаха до надпис „BBL PCMCIA RS-232 CARD“. Търсенето за информация по тези ключови думи не даде полезен резултат.

Решен да не се предавам толкова лесно направих следния експеримент. Стартирах minicom и настроих порта на скорост 9600 бита в секунда. Пуснах да се изпраща файл съдържащ единствено буквата „а“. След това закачих изходящата линия (TX) към осцилоскоп и видях следното:

oscilloscope screen

Ура! Картата все пак работи и дори предава данни. Единствената малка подробност е, че ги предава доста по-бързо от колкото се очаква. На картинката по-горе осцилоскопът е настроен на 50 микросекуни за деление по оста Х. Грубо в едно деление се предават 3 бита, значи скоростта е над 62500 бита/секунда – доста над очакваните 9600.

След още малко търсене, проблемът напълно се изясни. Основният компомент осигуряващ серийната връзка e чип от вида UART (Universal Asynchronous Receiver-Transmitter). По-конкретно в моята платка има 16c950. Ядрото го разпознава правилно и драйверът успешно си говори с него. Скоростта обаче се определя чрез делене на тактовата честота получена от външен кварцов резонатор. Оказва се, че няма начин драйверът да разбере каква е честотата на този резонатор. До преди време най-масово се е използвал резонатор с честота 1.8432 MHz, която разделена на 16 дава базова скорост от 115200 бита/сек. Това е записано и в кода на драйвера като стойност по подразбиране.

В момента често се използват резонатори с по-високи честоти за да се постигнат по-големи скорости. Имайки предвид, че при мен получената скорост е около 7-8 пъти по-голяма от очакваната и стандартните стойности дадени в спецификацията на чипа установих, че в моята платка резонаторър най-вероятно е с честота 14.7456MHz, което разделено на 16 дава базова скорост от 921600 бита/сек. За щастие има лесен начин тази скорост да бъде указана с помощта на програмата setserial:

setserial /dev/ttyS0 baud_base 921600

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

oscilloscope screen

Предаването на един бит отнема малко над 2 деления или 100 микросекунди. При зададена скорост от 9600 това е точно колкото се очаква – 1/9600=0,000104167 сек или около 104 микросекунди.

Комуникацията с мобилния телефон, стария външен модем и всичко друго което закача вече работи!

Остана само да добявя едно udev правило, за да не пиша горната команда всеки път когато пъхам картата. Аз си създадох нов файл – /etc/udev/rules.d/10-serial.rules и в него добавих само един ред:

KERNEL=="ttyS0", RUN+="/bin/setserial /dev/ttyS0 baud_base 921600"

Вече всички инструменти са на лице и мога да се заема с работата по проекта за монтаж на вентилатор в банята :).

Линукс курсът приключи

Миналата седмица беше последната лекция от Линукс курса.

В началото дойдоха повече от 25 човека и дори не стигнаха столовете в залата. Към края редовните поситетили останаха 4-5.

Предполагам, че целевата група към която бяхме насочили рекламата е била погрешна. Със Свилен си мислехме, че ще се заинтересуват най-много ученици, затова разлепихме плакати по всички училища. В крайна сметка обаче, нито един от останалите към края не беше ученик. Повечето от тях бяха разбрали за курса напълно случайно – от приятели, колеги. Не знам, ако правим пак нещо подобно кои хора да очакваме като потенциална аудитория и къде да обявим нещата, че да ги видят.

Надявам се на тези които избраха да слушат какви ги говорим да им е било интересно и да са научили ползени неща. Благодаря им за сериозното отношение и постоянството! Също така специални благодарнисти на Васко за любезното домакинство!

За който се интересува дали и какво ще има за в бъдеще – не мога да кажа, зависи от всички нас. Ще се опитаме да не оставим нещата до тук, но кога и под каква форма ще продължат все още нямам идея.

Може би вие имате?

Мартеници онлайн

Независимо дали вече сте изтрезняли след вчерашният празник на виното, или сте още опиянени от любовта ви предлагам да разгледате сайта http://martendom.com. Ако искате да зарадвате приятелите си с красиви и качествени мартенички, а нямате време да обикаляте сергиите със сигурност ще ви е от полза.

Хората от Мартендом изработват всички техни продукти ръчно, с желание и внимание към детайлите. Ако разгледате снимките ще разберете какво имам предвид. А ако решите и си поръчате някои от тях ще видите, че на живо изглеждат още по-добре.

Аз имам скромен принос в направата на сайта. Разбира се, като почти всеки сайт и този не е завършен, но вече е напълно функционален. Имаше няколко интересни идеи за които не остана време. Живот и здраве – догодина!