<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блог НТЦ Метротек &#187; софт</title>
	<atom:link href="http://blog.metrotek.spb.ru/category/soft/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.metrotek.spb.ru</link>
	<description>блог разработчиков</description>
	<lastBuildDate>Sat, 21 Jan 2012 12:36:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>USB сеть на Cortex-M3</title>
		<link>http://blog.metrotek.spb.ru/2011/07/07/usb-set-na-cortex-m3/</link>
		<comments>http://blog.metrotek.spb.ru/2011/07/07/usb-set-na-cortex-m3/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 06:35:42 +0000</pubDate>
		<dc:creator>Николай Замотаев</dc:creator>
				<category><![CDATA[b5]]></category>
		<category><![CDATA[разработка]]></category>
		<category><![CDATA[софт]]></category>
		<category><![CDATA[cortex-m3]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[круто]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=2849</guid>
		<description><![CDATA[В процессе разработки наших мега-дивайсов возник вопрос о реализации захвата пакетов с карты и использования ip-utils (ping/traceroute и тд) с карты.  Из нескольких возможных вариантов, было решено пойти средствами операционной системы и реализовать в дополнение к основному последовательному интерфейсу ещё и два сетевых (по количеству ethernet-портов модуля b5-gbe, для которого мы сейчас пишем софт). Такой [...]]]></description>
			<content:encoded><![CDATA[<p>В процессе разработки наших мега-дивайсов возник вопрос о реализации захвата пакетов с карты и использования ip-utils (ping/traceroute и тд) с карты.  Из нескольких возможных вариантов, было решено пойти средствами операционной системы и реализовать в дополнение к основному последовательному интерфейсу ещё и два сетевых <span id="more-2849"></span>(по количеству ethernet-портов модуля b5-gbe, для которого мы сейчас пишем софт).</p>
<p>Такой подход позволяет использовать стандартные средства ping и traceroute.</p>
<p>Для реализации сетевого интерфейса (как собственно и консоли карты) использовался любимый нами USB-шный класс CDC (Communication Device Class). В этот класс входят подклассы позволяющие реализовать интерфейсы к телефонным линиям, модемы и сетевые карты (проводные и беспроводные). Большим плюсом использования стандартного класса USB-устройства, является отсутствие необходимости писать драйвера (в Linux/*nix, Windows всё равно требует хотя бы .inf файл).</p>
<p>Так вот сетевых устройств в классе CDC может быть несколько видов. Это подклассы ECM,EEM, NCM и вариации на тему ACM (вместе с rndis), которые так любит windows. Устройства отличаются степенью поддержки операционной системы, степенью документированности и некоторыми другими особенностями.</p>
<p>Итак:</p>
<ul>
<li>Rndis &#8212; нестандартная вариация на тему ACM. Вообще-то подкласс ACM &#8212; это последовательный порт или модем, но microsoft, традиционно наплевав на все имеющиеся стандарты создала собственный. Rndis, по своей сути, представляет собой реализацию ndis API поверх usb. Используется microsoft-ом и в КПК под windows mobile для синхронизации и связи с компьютером. Так как этот класс не полностью документирован, да и не стандартен &#8212; это не наш путь.</li>
<li>ECM &#8212; Ethernet Control Model &#8212; это реализация сетевой карты (в стандарте есть поддержка проверка состояния линка, мак-адрес карты хранится в дескрипторе и тд). Данный стандарт требует двух интерфейсов: для передачи данных и управляющего. За терминологией обращаться на <a href="http://usb.org">usb.org</a> или сюда: <a href="http://www.beyondlogic.org/usbnutshell/usb1.shtml">http://www.beyondlogic.org/usbnutshell/usb1.shtml</a>. Вторая ссылка намного короче и более просто расписана :).</li>
<li>EEM &#8212; это Ethernet Emulation Model &#8212; в этом случае USB используется исключительно как транспорт ethernet пакетов. Состояние линка не передаётся, скорость не настраивается и так далее. Зато интерфейс просто и для него нужно только 2 endpoint-а.</li>
</ul>
<p>Отсюда мы и подходим к выбору варианта сетевого интерфейса. Тут всё оказалось совсем просто &#8212; для реализации ECM нам просто не хватило доступных endpoint-ов в контроллере. Так что выбор остановился на EEM. Даже с ним, доступные 6 endpoint-ов, разделились полностью, и пришлось слегка обмануть реализацию консоли, указав в дескрипторе несуществующий endpoint.</p>
<p>Так вот, в stm32f105 есть 6 доступных endpoint-ов, не считая нулевого (по 3 IN и OUT). В итоге хватает впритык и резерва не остаётся. Для ECM уже endpoint-ов не хватает, так как под эту модель требуется по 3 endpoint-а на интерфейс.</p>
<p>Передача данных в модели EEM, или как же это заставить работать&#8230;.</p>
<p>Для того, чтобы сетевое устройство с классом EEM зарегистрировалось в системе, достаточно правильно написать USB дескриптор. Создаётся интерфейс состоящий из двух bulk endpoint-ов, одного IN и одного OUT, ему приписывается класс CDC (0&#215;02), подкласс EEM (0x0c), и протокол EEM (0&#215;07). На этом все тонкости и заканчиваются. Пакеты в EEM передаются как есть, в виде ethernet фреймов, с дописанным в начале двухбайтным заголовком.</p>
<p>Выглядит он так:</p>
<table border="1">
<tbody>
<tr>
<td style="text-align: center" colspan="3">Биты</td>
</tr>
<tr>
<td>15</td>
<td>14</td>
<td>13-0</td>
</tr>
<tr>
<td>Команда/данные</td>
<td>CRC &#8212; используется или  fake</td>
<td>Длина кадра</td>
</tr>
</tbody>
</table>
<p>Пятнадцатый бит определяет &#8212; является ли этот кадр данными идущими в интерфейс или служебной командой EEM. Всего есть 6 команд, из которых обязательными являются только Echo и Echo response. (Хотя как выяснилось, линуксовый драйвер, даже без реализации разбора этих команд вполне нормально работает).</p>
<p>Четырнадцатый бит определяет, используется ли реальный подсчёт CRC, или на месте CRC передаётся последовательносьт 0xdeadbeef.</p>
<p>Оставшиеся биты кодируют длину фрейма следующего за этими двумя байтами заголовка.</p>
<p>После реализации разбора заголовков, приём и передача заработали без проблем, за исключением того, что USB-шная библиотека от ST не позволяет реализовать USB-transfer длинее чем размер FIFO в stm32, а ethernet пакеты в EEM нельзя разбивать между transfer-ами.<br />
Таким образом, сейчас реализован приём и передача пакетов до 254 байт длиной. Пропускная способность не измерялась.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2011/07/07/usb-set-na-cortex-m3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Беркут-ММТ: новый релиз. Починили хроно-/гистограммы!</title>
		<link>http://blog.metrotek.spb.ru/2011/06/17/berkut-mmt-novyiy-reliz/</link>
		<comments>http://blog.metrotek.spb.ru/2011/06/17/berkut-mmt-novyiy-reliz/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 08:54:26 +0000</pubDate>
		<dc:creator>Юрий Людкевич</dc:creator>
				<category><![CDATA[b4]]></category>
		<category><![CDATA[софт]]></category>
		<category><![CDATA[релиз]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=2842</guid>
		<description><![CDATA[Наконец-то вышел новый релиз ПО для прибора Беркут-ММТ. В этом релизе исправлена ошибка в хронограммах/гистограммах. Терзали-терзали код и таки нашли. Поиски решения отняли больше времени, чем мы планировали. Поэтому картинку с гордой надписью &#171;yes!&#187; решено к новости не прикручивать.]]></description>
			<content:encoded><![CDATA[<p>Наконец-то вышел новый <a href="http://metrotek.spb.ru/files/b4/0.0.7-rc5/" target="_blank">релиз</a> ПО для прибора Беркут-ММТ. В этом релизе исправлена <a href="http://bugs.metrotek.spb.ru/show_bug.cgi?id=1192" target="_blank">ошибка</a> в хронограммах/гистограммах. Терзали-терзали код и таки нашли. Поиски решения отняли больше времени, чем мы планировали. Поэтому картинку с гордой надписью &#171;yes!&#187; решено к новости не прикручивать.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2011/06/17/berkut-mmt-novyiy-reliz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Беркут-ETX: 0.0.5-4. Первое обновление ПО!</title>
		<link>http://blog.metrotek.spb.ru/2011/04/20/berkut-etx-0-0-5-4-pervoe-po/</link>
		<comments>http://blog.metrotek.spb.ru/2011/04/20/berkut-etx-0-0-5-4-pervoe-po/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 10:30:02 +0000</pubDate>
		<dc:creator>Алексей Литвинов</dc:creator>
				<category><![CDATA[b3etx]]></category>
		<category><![CDATA[etx]]></category>
		<category><![CDATA[разработка]]></category>
		<category><![CDATA[софт]]></category>
		<category><![CDATA[релиз]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=2770</guid>
		<description><![CDATA[Как уже было сказано, Беркут-ЕТХ официально поставляется в России. Вот и первое обновление ПО, которое полностью поддерживает заявленную спецификацию. Скачать можно отсюда.]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.metrotek.spb.ru/wp-content/uploads/2010/11/yes.png" alt="" title="yes" width="80" height="82" class="alignleft size-full wp-image-2403" />Как уже <a href="http://blog.metrotek.spb.ru/2011/02/16/bercut-etx/">было сказано</a>, Беркут-ЕТХ официально поставляется в России. Вот и первое обновление ПО, которое полностью поддерживает заявленную <a href="http://blog.metrotek.spb.ru/2011/01/12/etx-aka-analizator-10-gigabit-ethernet/">спецификацию</a>.</p>
<p>Скачать можно <a href="http://metrotek.spb.ru/files/b3etx/0.0.5/b3etx_0.0.5-4/">отсюда</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2011/04/20/berkut-etx-0-0-5-4-pervoe-po/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vim + qt4 assistant</title>
		<link>http://blog.metrotek.spb.ru/2011/03/22/vim-qt4-assistant/</link>
		<comments>http://blog.metrotek.spb.ru/2011/03/22/vim-qt4-assistant/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 12:58:52 +0000</pubDate>
		<dc:creator>Павел Курочкин</dc:creator>
				<category><![CDATA[разработка]]></category>
		<category><![CDATA[софт]]></category>
		<category><![CDATA[qt4 assistant vim]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=2666</guid>
		<description><![CDATA[qt4 assistant, конечно, штука удобная. но я разрабатываю программы в vim&#8217;e и каждый раз, когда мне надо посмотреть документацию на какой-то класс или функцию, переключаться между окнами мне не нравится. задалбывает. спасибо троллям, что они предусмотрели remote control в assistant&#8217;e. поясню. assistant можно запустить с ключом -enableRemoteControl и управлять им &#171;без мышки&#187; посредством команд, отправляемых [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://doc.trolltech.com/4.7/assistant-manual.html">qt4 assistant</a>, конечно, штука удобная. но я разрабатываю программы в vim&#8217;e и каждый раз, когда мне надо посмотреть документацию на какой-то класс или функцию, переключаться между окнами мне не нравится. задалбывает.<br />
спасибо троллям, что они предусмотрели <a href="http://doc.trolltech.com/4.7/assistant-custom-help-viewer.html#using-qt-assistant-remotely">remote control в assistant&#8217;e</a>.</p>
<p><span id="more-2666"></span></p>
<p>поясню. assistant можно запустить с ключом <strong>-enableRemoteControl</strong> и управлять им &#171;без мышки&#187; посредством команд, отправляемых на stdin.<br />
для тестов я выполнил следующее:<br />
<code><br />
$ mkfifo /tmp/qt4a<br />
$ tail -f /tmp/qt4a | assistant-qt4 -enableRemoteControl &amp;<br />
</code></p>
<p>далее активируем окно поиска по индексу:<br />
<code><br />
$ echo "show index" &gt; /tmp/qt4a<br />
</code></p>
<p>и выполняем<br />
<code><br />
$ echo "activateKeyword QColor" &gt; /tmp/qt4a<br />
</code></p>
<p>последняя строчка открывает описание класса QColor, и (что особенно приятно)<br />
окно assistant&#8217;a становится topmost.</p>
<p>всё это натолкнуло меня на мысль, что, написав макрос для любимого редактора,<br />
можно обрести счастье.<br />
открываю .vimrc и добавляю туда:<br />
<code><br />
function! Qt4AssistantDoc()<br />
  let s:wordUnderCursor = expand("&lt;cword&gt;")<br />
  let s:cmd = "!echo activateKeyword " . s:wordUnderCursor . " &gt; /tmp/qt4a"<br />
  execute s:cmd<br />
endfunction<br />
" Online doc search.<br />
map   :call Qt4AssistantDoc()<br />
</code></p>
<p>теперь, нажатие Alt+d в vim&#8217;e на той функции или классе, где стоит курсор<br />
практически мгновенно открывается документация ;)</p>
<p>будет время, надо будет сгенерировать man&#8217;ы по qt4 class&#8217;ам.<br />
тогда можно будет не стартовать даже qt4 assistant. правда и навигация по ссылкам работать не будет ;(</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2011/03/22/vim-qt4-assistant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Хронограммы аварий: работа над ошибками.</title>
		<link>http://blog.metrotek.spb.ru/2011/02/16/hronogrammyi-avariy-rabota-nad-oshibkami/</link>
		<comments>http://blog.metrotek.spb.ru/2011/02/16/hronogrammyi-avariy-rabota-nad-oshibkami/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 13:16:31 +0000</pubDate>
		<dc:creator>Юрий Людкевич</dc:creator>
				<category><![CDATA[b4]]></category>
		<category><![CDATA[объявления]]></category>
		<category><![CDATA[разработка]]></category>
		<category><![CDATA[софт]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=2610</guid>
		<description><![CDATA[Потратив огромное количество времени на попытку по-быстрому починить хронограммы аварий в базовых измерениях прибора Беркут-ММТ, мы обнаружили, что исправить ошибку нам так и не удалось. Да, стыдно. Посыпаем голову пеплом и приносим свои извинения тем, кто ждал от нас багфикса.  Не смотря на полный epic fail, мы решили не отступать и найти новое решение, которое можно [...]]]></description>
			<content:encoded><![CDATA[<p>Потратив огромное количество времени на попытку по-быстрому починить хронограммы аварий в базовых измерениях прибора Беркут-ММТ, мы обнаружили, что исправить <a href="http://bugs.metrotek.spb.ru/show_bug.cgi?id=1192">ошибку</a> нам так и не удалось. Да, стыдно. Посыпаем голову пеплом и приносим свои извинения тем, кто ждал от нас багфикса.  Не смотря на полный epic fail, мы решили не отступать и найти новое решение, которое можно будет использовать и на новой платформе, и на старой (aka <a href="http://metrotek.spb.ru/b4.html">b4</a>). Появление работающей версии ожидается примерно через месяц.<br />
Вот шпионские снимки пользовательского интерфейса, предоставлены нашими инсайдерами:<br />
<img class="aligncenter size-medium wp-image-2611" src="http://blog.metrotek.spb.ru/wp-content/uploads/2011/02/chrono-300x194.png" alt="" width="300" height="194" /><br />
Для пользователей старой платформы интерфейс будет отличаться, пока мы полностью не портируем весь новый интерфейс на старую платформу.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2011/02/16/hronogrammyi-avariy-rabota-nad-oshibkami/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Беркут-ET: релиз 0.3.3-5</title>
		<link>http://blog.metrotek.spb.ru/2010/11/11/berkut-et-reliz-0-3-3-5/</link>
		<comments>http://blog.metrotek.spb.ru/2010/11/11/berkut-et-reliz-0-3-3-5/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 14:31:12 +0000</pubDate>
		<dc:creator>Алексей Литвинов</dc:creator>
				<category><![CDATA[b3et]]></category>
		<category><![CDATA[новости]]></category>
		<category><![CDATA[софт]]></category>
		<category><![CDATA[релиз]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=2400</guid>
		<description><![CDATA[Вышла новая прошивка для Беркут-ЕТ, в которой: BERT, PJ, CTRAF: добавлена возможность проведения теста более 24 часов.(до 99:59:59) RFC2544, BERT, CTRAF, PJ: добавлена возможность настройки поля DSCP в заголовке IP. Добавлен значок молнии при питании от внешнего источника. Скачать новую прошивку можно вот здесь.]]></description>
			<content:encoded><![CDATA[<p>Вышла новая прошивка для <a href="http://metrotek.spb.ru/b3et.html">Беркут-ЕТ</a>, в которой:</p>
<ul>
<li> BERT, PJ, CTRAF: добавлена возможность проведения теста более 24 часов.(до 99:59:59)</li>
<li> RFC2544, BERT, CTRAF, PJ: добавлена возможность настройки поля DSCP в заголовке IP.</li>
<li> Добавлен значок молнии при питании от внешнего источника.</li>
</ul>
<p>Скачать новую прошивку можно <a href="http://metrotek.spb.ru/files/b3et/release/latest/">вот здесь</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2010/11/11/berkut-et-reliz-0-3-3-5/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>FreeRTOS на Sam3u</title>
		<link>http://blog.metrotek.spb.ru/2010/03/10/freertos-na-sam3u/</link>
		<comments>http://blog.metrotek.spb.ru/2010/03/10/freertos-na-sam3u/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 05:47:02 +0000</pubDate>
		<dc:creator>Артём Двинин</dc:creator>
				<category><![CDATA[интересное]]></category>
		<category><![CDATA[разработка]]></category>
		<category><![CDATA[софт]]></category>
		<category><![CDATA[cortex-m3]]></category>
		<category><![CDATA[embedded]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=1852</guid>
		<description><![CDATA[Решили мы как-то попробовать какой-нибудь микроконтроллер, для замены устаревающих Avr&#8217;ов, выбор пал на SAM3U.  В качестве теста выступила демонстрационная программа от операционной системы FreeRTOS . А что из этого вышло можно прочитать в статье FreeRTOS на Sam3u.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.metrotek.spb.ru/wp-content/uploads/2010/03/Sam3U-loupe22.jpg"><img class="alignleft size-full wp-image-1862" src="http://blog.metrotek.spb.ru/wp-content/uploads/2010/03/Sam3U-loupe22.jpg" alt="" width="200" height="150" /></a> Решили мы как-то попробовать какой-нибудь микроконтроллер, для замены устаревающих Avr&#8217;ов, выбор пал на <a title="http://www.atmel.com/products/AT91/sam3landing.asp?family_id=605" rel="nofollow" href="http://www.atmel.com/products/AT91/sam3landing.asp?family_id=605">SAM3U</a>.  В качестве теста выступила демонстрационная программа от операционной системы <a title="http://www.freertos.org" rel="nofollow" href="http://www.freertos.org/">FreeRTOS </a>. А что из этого вышло можно прочитать в статье <a title="FreeRTOS на Sam3u" href="http://wiki.metrotek.spb.ru/wiki/FreeRTOS_%D0%BD%D0%B0_Sam3u">FreeRTOS на Sam3u.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2010/03/10/freertos-na-sam3u/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Франкенштейн: восстание JFFS2 или Немного о файловых системах для raw flash</title>
		<link>http://blog.metrotek.spb.ru/2010/01/28/frankenshteyn-vosstanie-jffs2-ili-nemnogo-o-faylovyih-sistemah-dlya-raw-flash/</link>
		<comments>http://blog.metrotek.spb.ru/2010/01/28/frankenshteyn-vosstanie-jffs2-ili-nemnogo-o-faylovyih-sistemah-dlya-raw-flash/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 08:06:18 +0000</pubDate>
		<dc:creator>Юрий Людкевич</dc:creator>
				<category><![CDATA[разработка]]></category>
		<category><![CDATA[софт]]></category>
		<category><![CDATA[b5]]></category>
		<category><![CDATA[colibri]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=1658</guid>
		<description><![CDATA[После успешного запуска ядра Linux на нашем франкенштейне (модуль Colibri PXA320 c 128Mb RAM и 1Gb  NAND FLASH) нужно было двигаться дальше &#8212; собрать bootstrap и загрузиться хотя бы в консоль. В отличие от нашего предыдущего проекта, в Colibri стоит NAND флэш, а не NOR. NAND получает все большее и большее распространение в силу своей [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.metrotek.spb.ru/wp-content/uploads/2009/12/colibri.jpg"><img class="alignleft size-full wp-image-1538" src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/12/colibri.jpg" alt="" width="150" height="113" /></a> После успешного запуска ядра Linux на нашем <a href="http://blog.metrotek.spb.ru/2009/12/18/colibri-pxa320-vesti-s-poley">франкенштейне</a> (модуль<a href="http://www.toradex.com/En/Products/Colibri_Modules"> Colibri PXA320</a> c 128Mb RAM и 1Gb  NAND FLASH) нужно было двигаться дальше &#8212; собрать bootstrap и загрузиться хотя бы в консоль.</p>
<p>В отличие от нашего <a href="http://metrotek.spb.ru/b4.html">предыдущего</a> проекта, в Colibri стоит NAND флэш, а не NOR. NAND получает все большее и большее распространение в силу своей дешевизны и при этом большей вмесимости чем NOR (небольшое сравнение NOR  и NAND можно посмотреть <a href="http://www.linux-mtd.infradead.org/doc/nand.html">тут</a>).</p>
<p>Процессор Marvell PXA320 со своим встроенным NAND контроллером и сама микросхема NAND флэш поддерживаются основной веткой ядра. В общем, ничто не предвещало беды и было решено пойти  по накатанной &#8212; развернуть на NAND <a href="http://en.wikipedia.org/wiki/JFFS2">JFFS2</a> (Journaling Flash File System version 2) с корневой файловой системой.</p>
<p>Но тут вдруг обнаружилось что старый добрый JFFS2  мало того что полторы минуты сканирует NAND, дак еще и работать отказывается напрочь =(. Попробовав различные версии ядра, различные конфиги ядра и способы разворачивания файловой системы на флэш (монтирование и разворачивание из архива, запись образа напрямую в NAND) работоспособности я так и не добился. Ну да не JFFS-ом единым подумал я и стал смотреть в сторону других файловых систем.<span id="more-1658"></span></p>
<p>Первым под руку попался проект <a href="http://www.yaffs.net/">YAFFS</a> (Yet Another Flash File System) — пропатчил ядро (в основной ветки поддержки YAFFS нет, но это не беда &#8212; можно скачать патч с сайта проэкта и запатчить им ядро), собрал, запустил &#8212; сканирование всего раздела (чуть меньше гига) заняло минуту с небольшим, при последующих загрузках все происходило быстро, без задержек. Но при первом же аварийном завершении — опять минуту с небольшим. В остальном, вполне работоспособная вещь.</p>
<p>Вторым была выбрана <a href="http://www.linux-mtd.infradead.org/doc/ubifs.html">UBIFS</a> (Unsorted Block Image File System) &#8212; файловая система от создателей JFFS2. Перелопатив тонны описаний от разработчиков обнаружил интересную вещь &#8212; UBIFS состоит из двух частей &#8212; <a href="http://www.linux-mtd.infradead.org/doc/ubi.html">UBI</a> (Unsorted Block Image) и UBIFS. UBI очень похож на <a href="http://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)">LVM</a> (Logical Volume Manager) &#8212; тоже поддерживает создание логических томов на одном физическом разделе. Причем  в роли файловой системы поверх UBI можно запустить тот же JFFS2, как утверждают разработчкики. А можно загрузить FTL (Flash Translations Layer) и получить обычное блочное устройство, на которое хоть EXT3 можно натянуть. При этом такие вещи, как журналирование и слежение за равномерным износом NAND будет выполнять UBI.</p>
<p>Я поставил поверх UBI файловою систему UBIFS. Разработчики обещали быстро и надежно, да и сравнительные тесты показывали тоже самое. Первый запуск &#8212; присоединение тома занимает около 10 секунд, монтирование происходит моментально, без задержек. Особенность UBI — присоединение тома занимает на гиговом разделе (том 900Мб. Почему не весь раздел — об этом далее) всегда занимает 10 секунд. С одной стороны, много. Но с другой, если работа была завершена аварийно, присоединение тома займет те же 10 секунд, но монтироваться система будет чуть дольше. Но с JFFS2/YAFFS все равно не сравнимо. Как и JFFS2, UBIFS  поддерживает сжатие on the fly, что уже не может не радовать.</p>
<p>Почему том не занимает весь раздел? Потому что UBI резервирует часть свободного места: если какой либо блок будет помечен как плохой то вместо него будет использоваться блок из свободного места. По умолчанию UBI резервирует 1% для этого, но это можно изменить в конфигурации ядра.</p>
<p>Cравнение различных файловых систем для raw flash — <a href="http://tree.celinuxforum.org/CelfPubWiki/ELCEurope2008Presentations?action=AttachFile&amp;do=get&amp;target=flash-filesystems.pdf">тут</a>.</p>
<p>Почему в качестве файловой системы не была взята привычная ext2/ext3/raiserfs? А все потому, что эти системы рассчитаны на работу с блочным устройством, т.е. между самой памятью и ядром есть еще некая реализация FTL внутри устройства. NAND/NOR же таких продвинутых штук не имеют, да и не надо им это. По этому для них и используются такие хитрые файловые системы.</p>
<p>Для тех кто хочет помучать UBI и UBIFS , или кто хочет более детально разобраться:</p>
<ol>
<li>http://www.linux-mtd.infradead.org/faq/ubi.html</li>
<li>http://www.linux-mtd.infradead.org/doc/ubi.html</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2010/01/28/frankenshteyn-vosstanie-jffs2-ili-nemnogo-o-faylovyih-sistemah-dlya-raw-flash/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>История разработки нового UI для b4</title>
		<link>http://blog.metrotek.spb.ru/2009/05/22/istoriya-razrabotki-novogo-ui-dlya-b4/</link>
		<comments>http://blog.metrotek.spb.ru/2009/05/22/istoriya-razrabotki-novogo-ui-dlya-b4/#comments</comments>
		<pubDate>Fri, 22 May 2009 20:24:07 +0000</pubDate>
		<dc:creator>Евгений Питель</dc:creator>
				<category><![CDATA[b4]]></category>
		<category><![CDATA[новости]]></category>
		<category><![CDATA[софт]]></category>
		<category><![CDATA[bitbake]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[openembedded]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=1006</guid>
		<description><![CDATA[Начало было положено 10 декабря 2008 с мозгового штурма, создавшего схему в стиле mind map. Ну, и первой задачей была разработка нового интерфейса &#8212; чтобы, значит, приспособленного под работу просто пальцами и всяко симпатичнее айфона. Антон предложил начать с оценки &#171;чистого&#187; Framebuffer&#8217;а, то есть: своя библиотека под FB; Direct FB; Cairo. Схема: Разбираясь с Direct [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-1069" src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/qt-150x150.png" alt="qt" width="150" height="150" /> Начало было положено 10 декабря 2008 с мозгового штурма, создавшего схему в стиле mind map.</p>
<p>Ну, и первой задачей была разработка нового интерфейса &#8212; <strong>чтобы, значит, приспособленного под работу просто пальцами и всяко симпатичнее айфона</strong>. Антон предложил начать с оценки &#171;чистого&#187; Framebuffer&#8217;а, то есть:</p>
<ul>
<li>своя библиотека под <a href="http://en.wikipedia.org/wiki/Framebuffer">FB</a>;</li>
<li><a href="http://www.directfb.org">Direct FB</a>;</li>
<li><a href="http://www.cairographics.org">Cairo.</a></li>
</ul>
<p><span id="more-1006"></span></p>
<p>Схема:</p>
<p><img class="size-full wp-image-1007  alignnone" src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/diagram2.png" alt="diagram2" width="579" height="363" /></p>
<p>Разбираясь с Direct FB вышли на <a href="http://www.directfb.org/wiki/index.php/Projects:GTK_on_DirectFB">GTK+ поверх DFB</a> &#8212; получалось, что не было смысла городить свою библиотеку, когда есть все готовое.</p>
<p>Но, с подачи Юры, с учетом наличия Openembedded, решено было сделать хитрее. Мы собрали образ для B4 &#8212; c X-ами на базе Ангстрома, с GTK+/KDrive</p>
<p>Вот KDrive, как известно, работает поверх FB. Это было уже не чистое GTK+DFB, но так было интереснее</p>
<p>ДА!, кстати, в процессе был собран и запущен под QEMU дистрибутив <a href="http://www.pokylinux.org">POKY</a> , созданный компанией <a href="http://o-hand.com/work/">O-Hand</a>, которую купил интел, который вот, как раз, выпустил таки <a href="http://www.opennet.ru/opennews/art.shtml?num=21808">Moblin beta</a></p>
<div class="wp-caption alignnone" style="width: 285px"><a title="Интерфейс платформы Moblin" href="http://moblin.org/community/blogs/imad/2009/moblin-v20-beta-netbooks-and-nettops-its-here#comments-title"><img class=" " src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/m_zone.png" alt="m_zone" width="275" height="161" /></a><p class="wp-caption-text">Интерфейс платформы Moblin</p></div>
<div id="attachment_1019" class="wp-caption alignnone" style="width: 285px"><a href="http://moblin.org/documentation/moblin-overview/moblin-core"><img class="size-full wp-image-1019" src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/moblin-arch-diagram.jpg" alt="moblin-arch-diagram" width="275" height="161" /></a><p class="wp-caption-text">Moblin Core</p></div>
<p>Ну а мы зато сделали прототип на GTK+.</p>
<div id="attachment_1022" class="wp-caption alignnone" style="width: 410px"><img class="size-full wp-image-1022 " src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/screenshot-1.png" alt="screenshot-1" width="400" height="240" /><p class="wp-caption-text">Внешний вид прототипа OTDR на B4 на GTK+, GtkPlot</p></div>
<p>и нарвались на &#171;странность&#187; с отрисовкой GtkEntry &#8212; <a href="http://blog.metrotek.spb.ru/2009/04/21/bitbake-angstrom-i-dvizhenie-v-storonu-gtk/comment-page-1/#comment-309">см.блог</a></p>
<p>смущало также, немного, что в то время как мы уходим c QT на GTK, такие парни как NOKIA и OPENMOKO наоборот, идут в сторону QT от GTK.</p>
<p>А NOKIA так вообще, купила троллтек и, похоже, собирается выпустить новый релиз Маемо на QT4.</p>
<div id="attachment_1021" class="wp-caption alignleft" style="width: 250px"><img class="size-full wp-image-1021   " src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/conv_p1020650.jpg" alt="conv_p1020650" width="240" height="320" /><p class="wp-caption-text">Запустили QT Embedded Widgets на B4!</p></div>
<p>Таки мы решили проверить работу QT4 на B4!</p>
<p>Количество QT вариантов &#8212; отдельная тема, но и в этом разобрались.</p>
<p>Сейчас есть:</p>
<p>QT4X11.</p>
<p>QT4Embedded &#8212; в молодости QTopia core, QT4 поверх QWS</p>
<p>QT4Extended &#8212; ранее QTopia, пакет приложений под QTE.</p>
<p>OE рулит &#8212; мы собрали QT Embedded widgets  и запустили его на том самом образе.</p>
<p>В процессе разобравшись с &#171;как же собрать qt4 приложение битбэйком&#187; и глюком TSLib, с патчем от 2007 года.</p>
<p>Всем понравилось и мы сделали прототип на QT4.</p>
<div id="attachment_1023" class="wp-caption alignnone" style="width: 410px"><img class="size-full wp-image-1023 " src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/05/s.png" alt="s" width="400" height="240" /><p class="wp-caption-text">Прототип OTDR на B4 под QT Embedded 4.4.3, QWT Plot</p></div>
<p>А вот видео:</p>
<h3>Что в итоге</h3>
<p>QT</p>
<ul>
<li>&#171;out of the box&#187; приятней GTK</li>
<li>C++</li>
<li>легко меняется стиль внешнего вида</li>
<li>есть QT Creator способствующий разработке (нокиа крепко взялась за кьют)</li>
<li>QT под X-ами, увы, угнетающе по скорости на B4</li>
</ul>
<p>GTK</p>
<ul>
<li>проще внутри (Владимир со мной не согласен :)</li>
<li> С</li>
<li>быстрее процентов на 30 чем QT</li>
<li>для стилистики нужно применять engines и темы (кстати вот Sato из Poky оказался просто енжином)</li>
</ul>
<p><span style="text-decoration: underline;">Выбираем QT</span></p>
<p>ps. А Юра знал с самого начала :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2009/05/22/istoriya-razrabotki-novogo-ui-dlya-b4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Беркут-ЕТ/ETL. Очередной firmware релиз</title>
		<link>http://blog.metrotek.spb.ru/2009/02/17/berkut-et-etl-ocherednoy-firmware-reliz/</link>
		<comments>http://blog.metrotek.spb.ru/2009/02/17/berkut-et-etl-ocherednoy-firmware-reliz/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 06:46:40 +0000</pubDate>
		<dc:creator>Антон Фельдман</dc:creator>
				<category><![CDATA[b3et]]></category>
		<category><![CDATA[b3etl]]></category>
		<category><![CDATA[софт]]></category>
		<category><![CDATA[релиз]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=625</guid>
		<description><![CDATA[Жена и тёща уехали на дачу и взяли с собой детей&#8230; Это был комментарий к картинке. А на самом деле, в конце итерации принято выпускать релиз софта и, как это ни странно, в прошлую пятницу нам снова удалось это сделать для Беркут-ET и Беркут-ETL. Только здесь отметиться как-то позабыли. Вот краткий список изменений и исправлений. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/02/yes.png" alt="yes" title="yes" width="80" height="82" class="alignleft size-full wp-image-638" /><s>Жена и тёща уехали на дачу и взяли с собой детей&#8230;</s> Это был комментарий к картинке. А на самом деле, в конце итерации принято выпускать релиз софта и, как это ни странно, в прошлую пятницу нам снова удалось это сделать для <a href="http://metrotek.spb.ru/b3et.html">Беркут-ET</a> и <a href="http://metrotek.spb.ru/b3etl.html">Беркут-ETL</a>. Только здесь отметиться как-то позабыли.</p>
<p>Вот краткий список изменений и исправлений.<span id="more-625"></span></p>
<p>Беркут-ET (MCU v.0.2.38):</p>
<ul>
<li> в параметрах интерфейсов появилась настройка &#171;Автосогласование&#187;. Теперь есть возможность установить линк с любым оборудованием
<li>исправлена ошибка &#8212; в режиме &#171;Шлейф&#187; оборудование Cisco определяло Bercut-ET как &#171;Loopback device&#187; и отключало порт.
<li>исправлена ошибка &#8212; в режиме &#171;Шлейф&#187; первого уровня корректно функционирует диодная индикация и статистика по передаче
<li>пакетный джиттер теперь можно использовать с генератором трафика на одном порту
<li> исправлена ошибка &#8212; теперь при использовании удалённого доступа все порты могут находиться в одной подсети
<li> повышена стабильность работы теста rfc2544. раньше были сообщения от пользователей, что тест зависал
<li> исправлена ошибка &#8212; в режиме &#171;Шлейф&#187; второго и третьего уровней на 1000 Mbps потери составляют 0%
<li> аппаратные тесты теперь запускаются только при удержании кнопки включения с одновременным нажатием кнопки аппаратного сброса
<li> исправлена критическая ошибка &#8212; в версии 0.2.37 прибор не включался без внешнего питания
<li> исправлена ошибка &#8212; корректно работает кнопка &#171;Журнал&#187; в тесте Back-to-back
</ul>
<p>Новые версии firmware для Беркут-ET лежат <a href="http://metrotek.spb.ru/files/b3et/release">здесь</a>.</p>
<p>Беркут-ETL (MCU v.0.2.2):</p>
<ul>
<li> исправлена ошибка &#8212; в режиме &#171;Шлейф&#187; второго и третьего уровней на 1000 Mbps потери составляют 0%
<li> исправлена ошибка &#8212; в режиме &#171;Шлейф&#187; оборудование Cisco определяло Bercut-ETL как &#171;Loopback device&#187; и отключало порт.
<li> при включении прибора проводятся аппаратные тесты
<li> при выключении прибора сохраняются настройки шлейфа
<li> добавлена поддержка VLAN
</ul>
<p>Обновления для Беркут-ETL можно скачать <a href="http://metrotek.spb.ru/files/b3etl/release">тут</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2009/02/17/berkut-et-etl-ocherednoy-firmware-reliz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

