пʼятниця, 19 січня 2018 р.

Прикрий баг в avt-gcc *** buffer overflow detected ***


 Якщо при компіляції проекту AVR avr-gcc видає подібну помилку, читайте далі, як її вирішити.

Linking: main.elf
avr-gcc -mmcu=atmega328p -I. -gdwarf-2 -DF_CPU=16000000UL  -DVARIANT= -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o  -std=gnu99 -MMD -MP -MF .dep/main.elf.d main.o uart/uart.o timer.o --output main.elf -Wl,-Map=main.map,--cref     -lm
*** buffer overflow detected ***: /usr/lib/gcc/avr/4.9.2/../../../avr/bin/ld terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7fcf38d007e5]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7fcf38da215c]
/lib/x86_64-linux-gnu/libc.so.6(+0x117160)[0x7fcf38da0160]
/lib/x86_64-linux-gnu/libc.so.6(+0x1166c9)[0x7fcf38d9f6c9]
/lib/x86_64-linux-gnu/libc.so.6(_IO_default_xsputn+0x80)[0x7fcf38d046b0]
/lib/x86_64-linux-gnu/libc.so.6(_IO_vfprintf+0xd1)[0x7fcf38cd6241]
/lib/x86_64-linux-gnu/libc.so.6(__vsprintf_chk+0x84)[0x7fcf38d9f754]
/lib/x86_64-linux-gnu/libc.so.6(__sprintf_chk+0x7d)[0x7fcf38d9f6ad]
/usr/lib/gcc/avr/4.9.2/../../../avr/bin/ld[0x416c47]
/usr/lib/gcc/avr/4.9.2/../../../avr/bin/ld[0x488174]
/usr/lib/gcc/avr/4.9.2/../../../avr/bin/ld[0x411120]
/usr/lib/gcc/avr/4.9.2/../../../avr/bin/ld[0x411ccf]
/usr/lib/gcc/avr/4.9.2/../../../avr/bin/ld[0x411b9f]

        ................................................

7fcf39475000-7fcf3947c000 r--s 00000000 08:06 1312076                    /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
7fcf3947c000-7fcf3947d000 r--p 00025000 08:06 671634                     /lib/x86_64-linux-gnu/ld-2.23.so
7fcf3947d000-7fcf3947e000 rw-p 00026000 08:06 671634                     /lib/x86_64-linux-gnu/ld-2.23.so
7fcf3947e000-7fcf3947f000 rw-p 00000000 00:00 0
7ffeec276000-7ffeec298000 rw-p 00000000 00:00 0                          [stack]
7ffeec2a9000-7ffeec2ab000 r--p 00000000 00:00 0                          [vvar]
7ffeec2ab000-7ffeec2ad000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
collect2: error: ld terminated with signal 6 [Перервано], core dumped
Makefile:557: спроба виконання рецепта для мети «main.elf» зазнала невдачі
make: *** [main.elf] Помилка 1

Рішення я випадково знайшов і хочу поділитися, бо ніде не знайшов рішення. Потратив 2 дні, дійшов до компіляції всього avr-toolchain. Так і не добився нічого. Аж поки в одному з вікон терміналу тестовий проект скомпілювався. В іншому вікні цей же проект видавав цю помилку. І, як і всі подібні баги, все було до непристойного просто: в тому терміналі, де лінковка проходила успішно, я перед цим змінив мову середовища на англійську: LANG=en !!!

З-за цього прикрого бага я більше року мусив вести розробку на AVR в Windows, добре що була наклейка на ноутбуці, бо я проти піратського софту.

Може комусь знадобиться.

Баг цей, здається, з'явився починаючи з xUbuntu 16.04. Зараз в мене Mint Cinnamon 17.3,
avr-gcc 4.9.2+Atmel3.5.0-1
avr-libc 1.8.0+Atmel3.5.0-1
binutils-avr 2.25+Atmel3.5.0-2
gdb-avr 7.7-2build1

Навздогін: також можна скористатися рішенням, що я надибав вже після того як знайшов своє рішення, на якомусь болгарському форумі: http://www.linux-bg.org/forum/index.php?topic=47519.msg300845#msg300845

В файлі Makefile чи в відповідних налаштуваннях IDE видалити опцію -Map=$(TARGET).map, тобто наприклад рядок


#---------------- Linker Options ----------------
#  -Wl,...:     tell GCC to pass this to linker.
#    -Map:      create map file
#    --cref:    add cross reference to  map file
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref

замінити на:

#---------------- Linker Options ----------------
#  -Wl,...:     tell GCC to pass this to linker.
#    -Map:      create map file
#    --cref:    add cross reference to  map file
LDFLAGS = -Wl,--cref


понеділок, 11 листопада 2013 р.

Перегнати відео з Youtube на Ex.ua

Вирішив забекапити відео збережене на Youtube. Хто зна що може статися, забанять в Україні чи просто глюкне, а деякі відео є лише там. Вирішив перекинути в перший, що попадеться відеохостинг. Попався Ex.ua.

Викачуємо всі відео з Y. з допомогою скрипта yuotube-dl.

Наприклад:

python26 youtube-dl -c --write-thumbnail --playlist-start 17 -o '%(playlist_index)s.%(title)s (%(format)s %(id)s).%(ext)s' --autonumber-size 3 -f 22/35/18 http://www.youtube.com/user/rivnegrace

Всі параметри прописані в довідці до скрипта.
Потрібні формати відео я підібрав проглянувши в яких форматах вон є збережені на Y.

python26 youtube-dl --get-filename -o '%(playlist_index)s.%(title)s (%(format)s %(id)s).%(ext)s' --autonumber-size 3 -F http://www.youtube.com/user/rivnegrace

Отримав для кожного відео щось на зразок:
Available formats:
22    :    mp4    [720x1280]
18    :    mp4    [360x640]
43    :    webm    [360x640]
5    :    flv    [240x400]
36    :    3gp    [240x320]
17    :    3gp    [144x176]
137    :    mp4    [1080p] (DASH Video)
136    :    mp4    [720p] (DASH Video)
135    :    mp4    [480p] (DASH Video)
134    :    mp4    [360p] (DASH Video)
133    :    mp4    [240p] (DASH Video)
160    :    mp4    [192p] (DASH Video)
141    :    m4a    [256k] (DASH Audio)
140    :    m4a    [128k] (DASH Audio)
139    :    m4a    [48k] (DASH Audio)


Інформація про формати тут:
http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs

Викачавши таким чином відео + превьюшки до них, перекачую їх на Ex.ua за допомогою скрипта ex.ua-loader.pl , котрого можна знайти на ньому ж.

ex.ua-loader.pl onivan пароль 74031054 '*.*' UTF8

 При цьому обов’язково потрібно взяти маску в лапки, щоб perl екранував пробіли і т.п. Також вказуємо UTF8, щоб імена файлів в кирилиці не викачалися на Ex.ua крякозяблами.

От і все!

О! Забувся додати, що всі ці маніпуляції я проводив на VPS де розміщений наш сайт, так що мав в своєму розпорядженні канал в 100Mbit/s, так що це перекачування зайняло зовсім небагато часу!



неділя, 17 березня 2013 р.

Онлайн відео трансляція з сайту в XBMC

Знадобилося налаштувати перегляд онлайн-трансляції з сайту http://grace.od.ua/ безпосередньо в плеєрі XBMC. Через веб-оглядач на Android, то не дуже зручно.

Запускаю будь-який сніфер, наприклад Wireshark.
Запускаю програвання на сайті і вводжу в фільтр rtmpt

Шукаю пакунок з командою play. Знаходжу mp4:grace.f4v. Це -- файл для програвання.

 Інший пакунок містить url плеєра та шлях до потоку.

Вставляю це все за зразком в файл example_streams.xml в папці addons\plugin.video.live.streams\
<item>
  <title>Благодать</title>        
  <link>rtmp://ms.grace.od.ua/liveg/ app=live swfUrl=http://grace.od.ua/plugins/content/jw_allvideos/includes/js/mediaplayer/player.swf pageURL=http://grace.od.ua/index.php?option=com_content&amp;view=article&amp;id=8&amp;Itemid=19 playpath=mp4:grace.f4v live=true</link>
 <thumbnail>http://grace.od.ua/images/Shape5_University_logo.png</thumbnail>
</item>


Перевірив на Windows версії XBMC. При нагоді перевірю й на Android.

вівторок, 12 лютого 2013 р.

Апгрейд процесора в ноутбуці

В HP Compaq 6720s (RM388UT) стояв Intel Celeron M 550 -- реальне гальмо, з яким нічого не можливо було робити, навіть звичайне відео на весь екран заїдало. Пошук в мережі дав надію, що можна поставити щось потужніше.
Вихідні дані:
Чіпсет: GL960.
Роз'єм: Socket P.
Процесор:  Intel Celeron M 550

Натрапив на дуже практичне обговорення стосовно саме цього чіпсета: http://forum.notebookreview.com/hardware-components-aftermarket-upgrades/212097-gl960-chipset-processor-upgradability-9.html#post6578101

На даному сайті знайшов список сумісних процесорів: http://www.sparepartswarehouse.com/HP-Compaq,6720s,RM388UT,Laptop,Processors-CPU.aspx

Як видно з цього сайту, серед підтримуваних є досить потужні http://www.notebookcheck.net/Mobile-Processors-Benchmarklist.2436.0.html

Ось зведена табличка в порядку спадання продуктивності:


На місцевій "барахолці" знайшов і придбав Intel Core 2 Duo T5450 за ~$20. На ebay був більший вибір, але хотілося мати можливість швидко повернути в разі невдачі.

Після того, як я поставив новий проц, комп преобразився, став дуже швидким! Але як і писалося в  обговоренні по посиланню вище, комп'ютер після виходу з режиму очікування зависав з артефактами на екрані. Також завантажитися можна було лише з другої спроби, зайшовши перед тим в BIOS.

Постало питання заміни однієї з планок пам'яті на DDR2 PC-4200, аби понизити частоту шини пам'яті відносно, якої встановлювалася частота графічного процесора і яка з новим процесором стала вище номінальної, так що він працював в розігнаному режимі і тому глючив.

На щастя я знайшов простіший вихід. Скачав SPDTool і перешив один з модулів пам'яті встановивши в прошивці найвишу її частоту в 267 МГц. Після перезавантаження, все стало на місця, при цьому процесор залишився працювати з FSB 667МГц. Табличка частот і множників, як я їх зрозумів, наведена в табличці вище.





Правильне сортування прізвищ в таблиці SQLite

Пам'ятка
При розробці бази імен з використанням SQLite3 вилізла одна маленька, але неприємна річ -- при сортуванні за іменами/прізвищами порядок виявився досить диким: на початку списку йшли люди з прізвищами на "Є", "І", "Ї". Потім йшли на "А" і далі, як і повинно бути, а в самому кінці, після "Я" тулилася нещасна літера "Ґ".

Спочатку я намагався вирішити цю проблему шляхом:
SELECT icu_load_collation('uk_UA', 'UKRAINIAN');
але проблема виявилася в тому, що це вимагало додаткової мороки з нестандартною збіркою sqlite3.dll/sqlite3.so.Також вилазили інші глюки.

Спочатку я залишив це як є, але оце вирішив все-таки побороти цю проблему.

Рішення (aka "милиця" aka "костиль").
SELECT name, CASE
WHEN SUBSTR(name,1,1) LIKE '%Ґ%' OR  SUBSTR(name,1,1)   LIKE '%ґ%'  THEN 'Гя' || SUBSTR (name, 2) 
WHEN SUBSTR(name,1,1) LIKE '%Є%' OR  SUBSTR(name,1,1) LIKE '%є%'  THEN 'Ея' || SUBSTR (name, 2)
WHEN SUBSTR(name,1,1) LIKE '%І%' OR  SUBSTR(name,1,1) LIKE '%і%'  THEN 'Ию' || SUBSTR (name, 2) 
WHEN SUBSTR(name,1,1) LIKE '%Ї%' OR  SUBSTR(name,1,1) LIKE '%ї%'  THEN 'Ия' || SUBSTR (name, 2) 
ELSE name END AS SortField 
FROM grace_people_c ORDER BY SortField ASC
Виглядає незвично, але працює як годинник! Мені достатньо було правильного сортування по першим буквам. Інакше можна аналогічно застосувати SQLite-функцію REPLACE

От що значить пару годин порухати мізками і вдумливо покурити мануали!


понеділок, 7 січня 2013 р.

Поштова система на VDS CentOS 5

Виникла потреба налаштувати повноцінну поштову систему. Після ознайомлення в мережі вибір впав на Postfix, MySQL, Squirrelmail, Dovecot, SSL.

Спочатку налаштував по ось цим керівництвам: http://daily-notes.ru/2011/11/vds_hetzner_hosting_mail_server/
http://sudouser.com/ustanovka-pochtovogo-servera-postfix-dovecot-mysql-i-virtualnyx-domenov.html

Потім натрапив на Postfixadmin і переналаштовую по ось цим:
http://www.houseoflinux.com/e-mail/postfix-dovecot-mysql-squirrelmail-on-centos-5-5-32-64-bits/all-pages
http://www.hilik.org.ua/%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BC-%D0%BF%D0%BE%D1%87%D1%82%D0%BE%D0%B2%D1%83%D1%8E-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%83postfix-dovecot-postfixadmin-%D1%87%D0%B0%D1%81%D1%82%D1%8C-%D0%BF-2/

Наразі відправка пошти працює ідеально з правильними заголовками (в тому числі PTR). З отриманням пошти щось не так ще. Підозрюю, щось недопиляв з записами DNS.

Update:
На даний момент налаштував можливість відправки пошти з віддаленого клієнта по smtp з SSL/TLS  авторизацією. Мені це ніяк не вдавалося -- робив все що міг: міняв налаштування iptables, DNS записи, кілька разів заново переналаштовував postfix. Писав в підтримку хостинг-провайдера -- питав чи не закривають порти. В кінці кінців вияснилося, що доступ до 25-й порту закриває інтернет провайдер (Intertelecom). Та взагалі-то мені й не крепко те треба було, бо я врешті мав налаштувати на 587/465 порт. Але ці порти взагалі не відкликалися.

Після всього цього микання натрапив в тирнеті, як поміняти, щоб postfix слухав не 25-й порт, а якийсь інший. Це робиться в /etc/postfix/master.cf

smtp      inet  n       -       n       -       -       smtpd 
замінити на
425       inet  n       -       n       -       -       smtpd


І тут я побачив рядки, котрі йшли відразу після цього і були закоментовані:

submission inet n       -       n       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject


Тю! submission це 587 порт, а smtps -- 465 і вони закоментовані.

Після того, як я їх розкоментував, все запрацювало.

Я 4 дні рив тирнет, перечитав безліч інструкцій і ніде про ці рядки не було написано!

Треба ще розібратися, що потрібно залишити 465 чи 587.

Правда залишилася проблема з доставкою пошти від інших MTA ззовні на сервер. Поправив DNS-записи для домена (трохи наплутав там, поки розбирався) і логи показали, що сервери намагаються доставити пошту, але не можуть знайти користувачів. Ну та це вже треба знову заново начисто все налаштувати. Головну проблему я виявив. Теж саме з Dovecot. Але зараз мені це не є вкрай необхідним і немає коли розбиратися.




пʼятниця, 28 вересня 2012 р.

Антена для 3g CDMA модема


Так сталося, що переїхали в село. Там, поки що, єдиний доступний варіант -- 3g CDMA. Без антени хоч якийсь сигнал був лише якщо вивішувати модема за вікно. Тому постало питання виготовлення антени. Спочатку зробив схожу на таку:
http://i-net.com.ua/index.php?option=com_content&task=view&id=118&Itemid=20
або тут http://netobzor.org/forum/index.php?topic=554.0
Працювала непогано, але віддав її товаришеві, який живе в сусідньому селі.
Собі зробив таку як тут:
http://netobzor.org/forum/index.php?topic=1059.msg11359#msg11359

Антена -- те, що треба! За даними AxesstelPst підсилення разом з 7 метрами 50-омного кабелю Vector не менше 14 дБ! Принаймні, модем за вікном дає максимум -89..-93 дБ, а антена -74..-76!
Пропускна здатність каналу -- 3 мегабіта в секунду. Правда, в середньому є 500 кбіт/с, але без обривів і підвисань. Вранці, буває, можна зловити і 2 мбіт/с.

Джерело: 6-елементна рамкова антена для 3g CDMA 859МГц

Джерело: 6-елементна рамкова антена для 3g CDMA 859МГц
На антену пішло:
 - 2 метри мідного дроту перерізом 10мм2;
 - кусок витої пари для того, щоб зкрутити між собою в потрібних місцях рамки перед їх спаюванням;
 - кусок коаксіального 50-омного кабелю;
 - конектор на кабель;
 - самий дорогий компонент -- перехідник для модема;

 - пара годин терпіння і пара плоскогубців, щоб з товстенного дроту вигнути рамки максимально близько до потрібних розмірів.

вівторок, 10 липня 2012 р.

Коряві шрифти в qt-додатках

Налаштування qtconfig не зберігаються.
Лікуєтсья видаленням пакунку fonts-nanum. Може можна ще якось, але в xubuntu 12.04  допомагає саме це.

неділя, 1 липня 2012 р.

Мережева смерть

Натрапивши на ось це Тайные профили, пароли-отмычки, "сливы" "органам" США и аморалка в компании "маленького императора" Цукерберга і давно маючи певні параноїдальні відчуття стосовно Інтернету, збираюся вчинити "Інтернет самогубство" -- іншими словами, знищити будь які дані про себе із Інтернет мережі. Мається на увазі, всі дані, за якими можна ідентифікувати особу. Боюся чим далі, то важче то буде зробити. І є сумніви щодо того, чи навіть сьогодні це на 100% реально.

До речі, з Facebooka я д-у-у-же давно звалив. Але ще донедавна оримував від них гадкі приставучі мила про "друзі просять повернутися" з пропозиціями відновити "знищений" профіль.

Інструкція, яка першою потрапила на очі: http://smashgods.com/2008/08/20/become-web-dead-erase-your-online-identity-in-10-steps/

вівторок, 26 червня 2012 р.

Як я запікав відеокарту

Дісталася мені глючна відеоплата Gigabyte GV-NX85T256H (NVIDIA GeForce 8500 GT 256 Mb DDR2 128bit). Несправність проявлялася в страшних артефактах у вигляді мозаїки на екрані зі смугами + підвисання системи.
Після пошуку по темі запікання відеоплат, перечитування різних рекомендацій і перегляду відео, вирішив спробувати собі. Спочатку спробував на старезній дохлій відеоплаті. Все пройшло, як задумувалося, тому я сміливо взявся за GForce.
Фотозвіт процесу і наслідків:

Все це робилося при навстіж відкритому вікні, бо запах печеної відеоплати не з кращих (окрім того шкідливий, хоч там і безсвинцева пайка)
Побачимо скільки протягне ця відеоплата після такої реанімації.

субота, 2 червня 2012 р.

Підсвітка синтаксису коду

http://softwaremaniacs.org/soft/highlight/
http://hilite.me/

пʼятниця, 1 червня 2012 р.

Lazarus. При використанні SQLite3Connection не зберігаються зміни



Кліпаю тут на дозвіллі програму базу даних членів церкви. Все чудово, але вона не хотіла зберігати внесені в записи зміни при використанні DB-aware компонентів (TDBEdit, TDBGrid і т.д.). Намучившися в пошуках баґа вже думав, що такий глюкавий TSQLite3Connection і думав прописувати всі запроси вручну. Але вчора знайшов простенький приклад і там все працює. При порівнянні, вияснилося, що якщо в Design-time в об’єкті SQLite3Connection встановити властивість Connected в True, та в відповідному SQLQuery Active в True, то база виявляється заблокованою і зміни не зберігаються. Як що ж зробити навпаки, то все чудово зберігається!

Ну і в події AfterPost об’єкта SQLQuery треба прописати щось таке:


procedure TForm1.SQLQuery1AfterPost(DataSet: TDataSet);
var bm: TBookMark;
begin
   try
     bm := SQLQuery1.GetBookmark;
     SQLQuery1.ApplyUpdates;
     if SQLTransaction1.Active then
     begin
        SQLTransaction1.CommitRetaining;
        SQLQuery1.GotoBookmark(bm);
     end;
  except
     SQLTransaction1.Rollback;
  end;
end; 

Підглянув ось тут http://professorcarlos.blogspot.com/2010/02/lazarus-acessando-banco-de-dados-com_24.html

середа, 25 квітня 2012 р.

Euro 2012 city cares about your dogs!

Dear animal lovers and Euro 2012  visitors!

Please do not worry about the fate of your cute nitty dogs. Here you can see one of the numerous nature reserves specifically created for them in Donetsk - one of the cities of Euro 2012. The best possible conditions for their happy and carefree life are carefully maintained in these ecosystems.
You can look at the exact address of this place to be able to visit your beloved animals.

And do not believe gossips supposedly they are not allowed to live here, in Ukraine.  Passersby allow to be bitten with joy and love. Even young children relate to them with understanding.
Aiming not disturb them people prefer not walk around in night times.

Even more testimonies about Ukrainian people's extraordinary sacrificial and patient attitude towards stray dogs.


For curiouse: Psinosrach (better read in Russian!)


Even more related videos

неділя, 8 квітня 2012 р.

Карта Пд-Сх Європи для Garmin

Карта з адресним пошуком (поки що до вулиці) з позначеними номерами будинків.
Дані карти -- з проекту OpenStreetMap.org


Країни:
Боснія і Герцеговина, Болгарія, Хорватія, Чехія, Угорщина, Італія, Косово, Македонія, Молдова, Чорногорія, Польща, Румунія, Сербія, Словаччина, Словенія, Україна, Ватикан
Буде корисна для всіх прибульців в Україну та Польщу під час Євро-2012.

Зкачати безплатно готовий файл карти Пд-Сх Європи IMG для GPS навігаторів Garmin.
gmapsupp.img
Просто помістіть цей файл в папку Garmin на внутрішній пам'яті пристрою або SD-карти (Ви повинні створити каталог Garmin, якщо його там немає).

Download free maps for Garmin GPS navigators. Based on OpenStreetMap.org project.
gmapsupp.img 
Countries included:

Bosnia and Herzegovina, Bulgaria, Croatia, Czech Republic, Hungary, Italy, Kosovo, Macedonia, Moldova, Montenegro, Poland, Romania, Serbia, Slovakia, Slovenia, Ukraine, Vatican City
It will be useful for all newcomers to Ukraine and Poland during Euro 2012.
 
Just put this file into Garmin directory on your unit's internal memory or SD-card (you are to create Garmin directory if it is not there).

Важливо! Для коректної роботи прокладання маршрутів потрібно зкачати і записати в пристрій в основну пам'ять базову карту світу (gmapbmap.img), остання версія на даний час: Garmin WW Autoroute DEM Basemap NR 5.01. Зкачати можна або на сайті Garmin, або деінде. Взагалі-то, вона вже має бути в пристрої, але не завжди актуальна.

Пошук по номерам будинків, можливо буде, якщо його генерування з'явиться в пізніших версіях mkgmap. Або можна вручну редагувати OSM за зразком http://4pda.ru/forum/index.php?showtopic=70509&amp;st=1960#entry2032230 (що для величезних територій практично нереально)


Порядок створення. (Без розжовування)

Щоб не чекати годинами, поки відбудуться конвертування, можна тренуватися на невеличких країнах, або взагалі невеличких клаптиках, вирізаних програмою JOSM.

Для конвертації необхідно принаймні 1500 МБ вільної оперативної пам'яті. Також чим потужніший процесор, тим краще.

Визначити, яка теріторія має бути в карті (В прикладі це країни: 'Ukraine', 'Bulgaria', 'Poland', 'Romania', 'Republic of Moldova', 'Hungary', 'Slovakia').
Зкачати відповідні дані OSM в форматі osm.pbf наприклад звідси http://download.geofabrik.de/osm/ (я качаю всю Європу, тобто, http://download.geofabrik.de/osm/europe.osm.pbf  [7.6 Gb на момент 2012-04-01] ).

У випадку, коли потрібно лише якась одна країн, можна просто скачати відповідний osm.pbf і не обов'язково створювати файл OSM Poly. Також, напевне, можливо об'єднати готові файли кількох країн, але десь читав, що краще вирізати одним куском (щось пов'язане з навігацією і дублюванням ліній).

Створення OSM Poly для вибраної ділянки (лише для нестандартної ділянки).

Створити файл OSM Poly потрібної ділянки, якщо потрібна карта з нестандартним набором територій. http://wiki.openstreetmap.org/wiki/Osmosis/Polygon_Filter_File_Format за туторіалом http://oegeo.wordpress.com/2011/11/05/tutorial-poly/
 - качаємо Quantum GIS http://www.qgis.org/ і плагін OSM POLY export до нього.
 - качаємо дані кордонів країн http://thematicmapping.org/downloads/world_borders.php
 - додаємо векторний шар в Quantum GIS і вставляємо ці дані:

- вибираємо необхідний набір країн:
  ПКМ (права кнопка миші) по назві шару, "Запит" і створюємо потрібний запит:


 - результат:



- спрощуємо
Вектор Vector--&gt;Обробка даних--&gt; Буферні зони



"Додати результат до шару?" - "Так":


Вектор Vector--&gt;Обробка даних--&gt; Опуклі оболонки або, якщо потрібно точніше обмежити ділянку, користуємося іншими інструментами векторної обробки.


"Додати результат до шару?" - "Так":


 - експортуємо в OSM POLY
Потрібно виділити відповідний полігон і "Плагіни" --&gt; Export --&gt; OSM Poly, формат для ексорту ISO2.
Отримуємо файл .poly в папці з програмою Quantum GIS (вибрати директорію для збереження плагін не дає) з подібним вмістом:


Чудово! Тепер треба вирізати з файлу усієї Європи OSM-дані лише потрібної ділянки.
Для цього використовуємо  osmosis.jar (java) http://wiki.openstreetmap.org/wiki/Osmosis або osmconvert.exe http://wiki.openstreetmap.org/wiki/Osmconvert
Напр. Osmconvert:
  osmconvert.exe "j:\maps\europe\europe.osm.pbf" -B=soeseu\seu-op.poly -o=seu.pbf


Отримуємо потрібний pbf-файл.

Тепер, можливо, передостанній етап -- потрібно порізати цей величезний файл на дрібніші кусочки, щоб конвертер міг його переварювати..

Для цього є splitter.jar http://wiki.openstreetmap.org/wiki/Splitter

Я запускаю з такими параметрами:
java -Xmx1500m -jar splitter.jar --max-nodes=1000000 seu.pbf
 -Xmx1500m  -- дозволяю використати до 1500Мб ОЗП

Качаємо Mkgmap 
http://wiki.openstreetmap.org/wiki/Mkgmap,
http://wiki.openstreetmap.org/wiki/Mkgmap/help/How_to_create_a_map

Для того, щоб працював адресний пошук потрібні спеціальні дані адміністративного поділу. Можна скачати звідси http://www.navmaps.eu/index.php/developers/bound і розпакувати в папку bounds поряд з Mkgmap.jar

Також треба мати TYP-файл з іконками для POI
Його можна десь скачати, або виковиряти з готових карт. Напр. з цих, що тут  ftp://ftp5.gwdg.de/pub/misc/openstreetmap/download.openstreetmap.de/aio/ (до речі там є готові карти для заливки в Garmin, але без адресного пошуку наразі).
Виковиряти можна програмою GMapTool
Редагувати TYP-файли прогами TYPViewer або TYPWiz 2 http://www.pinns.co.uk/osm/


Також потрібний спеціальний набір файлів стилю конвертування для Mkgmap
Я використовую стилі з цього набору: http://maptourist.org/files/myConfigs/ . Я лише дещо підправив, щоб видаляти полігони житлових кварталів, бо вони накривали полігони будинків і також задав показувати будинки стилем спортивних комплексів (інакше на Garmin nuvi 350 номери будинків показувалися лише при підведенні курсора). І ще дещо несуттєве. Також в M00001ef.TYP додав іконку для дерев.

mymaptourist.zip

В файлі видалив name:ru, щоб правильно відображалися назви:
   name-tag-list = name:ua,name,name:en,int_name

Насамкінець моя команда запуску збирання IMG-файлу:
java -Xmx1500M -jar mkgmap.jar --style-file=examples\styles\maptourist  --route --remove-short-arcs  --add-pois-to-areas --index --location-autofill=bounds  --gmapsupp *.osm.pbf --family-id=495 M00001ef.TYP

На виході отримуємо gmapsupp.img, котрий кидаємо на картку в теку garmin і дивимося що вийшло.
Щоб не тикати туди сюди карткою, можна також відкривати один з готових фрагментів програмою MapSource і переглядати результат.

Ще посилання:
http://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin
http://4pda.ru/forum/index.php?showtopic=70509&amp;st=1960#entry2032230
http://www.dandra.cz/geo/gps/typ/typ_en.html
http://www.cferrero.net/maps/maps_index.html
http://gis-lab.info/data/mp/#
http://www.splav-with-gps.ru/karti-dlya-garmin/
http://maptourist.org/