<?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; colibri</title>
	<atom:link href="http://blog.metrotek.spb.ru/tag/colibri/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.metrotek.spb.ru</link>
	<description>блог разработчиков</description>
	<lastBuildDate>Fri, 27 Aug 2010 08:42:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<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) нужно было двигаться дальше &#8211; собрать 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) нужно было двигаться дальше &#8211; собрать 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 флэш поддерживаются основной веткой ядра. В общем, ничто не предвещало беды и было решено пойти  по накатанной &#8211; развернуть на 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 нет, но это не беда &#8211; можно скачать патч с сайта проэкта и запатчить им ядро), собрал, запустил &#8211; сканирование всего раздела (чуть меньше гига) заняло минуту с небольшим, при последующих загрузках все происходило быстро, без задержек. Но при первом же аварийном завершении — опять минуту с небольшим. В остальном, вполне работоспособная вещь.</p>
<p>Вторым была выбрана <a href="http://www.linux-mtd.infradead.org/doc/ubifs.html">UBIFS</a> (Unsorted Block Image File System) &#8211; файловая система от создателей JFFS2. Перелопатив тонны описаний от разработчиков обнаружил интересную вещь &#8211; UBIFS состоит из двух частей &#8211; <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) &#8211; тоже поддерживает создание логических томов на одном физическом разделе. Причем  в роли файловой системы поверх UBI можно запустить тот же JFFS2, как утверждают разработчкики. А можно загрузить FTL (Flash Translations Layer) и получить обычное блочное устройство, на которое хоть EXT3 можно натянуть. При этом такие вещи, как журналирование и слежение за равномерным износом NAND будет выполнять UBI.</p>
<p>Я поставил поверх UBI файловою систему UBIFS. Разработчики обещали быстро и надежно, да и сравнительные тесты показывали тоже самое. Первый запуск &#8211; присоединение тома занимает около 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>Colibri PXA320: вести с полей</title>
		<link>http://blog.metrotek.spb.ru/2009/12/18/colibri-pxa320-vesti-s-poley/</link>
		<comments>http://blog.metrotek.spb.ru/2009/12/18/colibri-pxa320-vesti-s-poley/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 13:42:40 +0000</pubDate>
		<dc:creator>Юрий Людкевич</dc:creator>
				<category><![CDATA[разработка]]></category>
		<category><![CDATA[colibri]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=1568</guid>
		<description><![CDATA[В то время как некрофилы мучают ни в чем не повинные приборы и космические корабли бороздят&#8230;, у нас на colibri pxa320 загрузилось линуксовое ядро. Загуглив ранним утром на тему PXA320 NAND-контроллера я случайно наткнулся на проект, в котором разработка ведется ровно в том же направлении &#8211; поддержка OpenOCD процессора PXA320 и его NAND контроллера. Покурив [...]]]></description>
			<content:encoded><![CDATA[<p>В то время как <a href="/2009/12/17/nemnogo-o-nekrofilah/" target="_blank">некрофилы</a> мучают ни в чем не повинные приборы <span style="text-decoration: line-through">и космические корабли бороздят&#8230;</span>, у нас на <a href="/2009/12/04/colibri-pxa320/">colibri pxa320</a> загрузилось линуксовое ядро. <span id="more-1568"></span></p>
<p style="text-align: justify">Загуглив ранним утром на тему PXA320 NAND-контроллера я случайно наткнулся на <a href="http://openpxa.sourceforge.net" target="_blank">проект</a>, в котором разработка ведется ровно в том же направлении &#8211; поддержка <a href="http://openocd.berlios.de" target="_blank">OpenOCD</a> процессора PXA320 и его NAND контроллера. Покурив исходники проекта и почитав <a href="http://marex-hnd.blogspot.com/" target="_blank">блог</a> разработчика было решено не изобретать еще один велосипед, а использовать уже готовый. Начали с <a href="http://openocd.berlios.de" target="_blank">OpenOCD</a> &#8211; скачали, пропатчили, подключили нашего Франкенштейна (макет с Colibri на борту), а оно возьми да и заработай &#8211; TAP контроллер виден, NAND флэш виден и даже читается/пишется.</p>
<p style="text-align: justify">Дальше пришла очередь <a href="http://www.denx.de/wiki/U-Boot" target="_blank">U-Boot</a>. Посмотрев на доступные в данный момент компиляторы решил все-таки попытать счастья с arm-angstrom-linux-uclibceabi-gcc версии  4.3.3. Собрал, прошил, но счастья не вышло &#8211; <a href="http://www.denx.de/wiki/U-Boot" target="_blank">U-Boot</a> нещадно вис после вывода инфы о NAND флэшке.</p>
<p style="text-align: justify">Собрали тулчейн на базе gcc-4.2.2 и glibc, пересобрали <a href="http://www.denx.de/wiki/U-Boot" target="_blank">U-Boot</a>, прошили (прошивка &#8211; это отдельная песня: 256 Kb прошивается за 23 минуты, но лучше уж так, чем никак) &#8211; работает!</p>
<p style="text-align: justify">Скачали последнее ядро с kernel.org, собрали, загрузили в память по tftp &#8211; висит. Потом были многие часы развлекалова с разными версиями компилятора, конфигами, грязным хаком функции printk(), разными Load Point и Entri Point.</p>
<p style="text-align: justify">Ключевыми моментами оказались:</p>
<ul>
<li>компилятор arm-angstrom-linux-gnueabi-gcc версии 4.2.2 (тот же что и для <a href="http://www.denx.de/wiki/U-Boot" target="_blank">U-Boot</a>)</li>
<li>выключенная опция Enable stack unwinding support в конфиге ядра</li>
<li>загружать uImage надо в память по адресу 0&#215;80000000 (не смотря на Load point: 0xa0008000 )</li>
</ul>
<p>Не хватает только initramfs, но об этом в следующих сериях :)</p>
<p>Фоторепортаж с места событий:</p>

<a href='http://blog.metrotek.spb.ru/2009/12/18/colibri-pxa320-vesti-s-poley/img_0095/' title='IMG_0095'><img width="150" height="150" src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/12/IMG_0095-150x150.jpg" class="attachment-thumbnail" alt="IMG_0095" title="IMG_0095" /></a>
<a href='http://blog.metrotek.spb.ru/2009/12/18/colibri-pxa320-vesti-s-poley/img_0091/' title='IMG_0091'><img width="150" height="150" src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/12/IMG_0091-150x150.jpg" class="attachment-thumbnail" alt="Наш &quot;Франкенштейн&quot;" title="IMG_0091" /></a>

]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2009/12/18/colibri-pxa320-vesti-s-poley/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Colibri PXA320</title>
		<link>http://blog.metrotek.spb.ru/2009/12/04/colibri-pxa320/</link>
		<comments>http://blog.metrotek.spb.ru/2009/12/04/colibri-pxa320/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 11:23:06 +0000</pubDate>
		<dc:creator>Антон Фельдман</dc:creator>
				<category><![CDATA[разработка]]></category>
		<category><![CDATA[colibri]]></category>
		<category><![CDATA[openocd]]></category>
		<category><![CDATA[patches]]></category>

		<guid isPermaLink="false">http://blog.metrotek.spb.ru/?p=1537</guid>
		<description><![CDATA[В то время, когда космические корабли бороздят просторы космических морей&#8230; В общем, героическими усилиями Юры Людкевича написан патч для openocd, который даёт возможность работы с платой Colibri PXA320. Это такой компьютерный модуль в форм-факторе SO-DIMM. Ура! Если не будет лень, а лень нам не будет, попробуем ради интереса перенести на него функционал Беркут-ММТ. Сам патч [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.metrotek.spb.ru/wp-content/uploads/2009/12/colibri.jpg" alt="colibri" title="colibri" width="150" height="113" class="alignleft size-full wp-image-1538" /> В то время, когда космические корабли бороздят просторы космических морей&#8230; В общем, героическими усилиями Юры Людкевича написан патч для <a href="http://openocd.berlios.de">openocd</a>, который даёт возможность работы с платой <a href="http://www.toradex.com/En/Products/Colibri_XScale_Computer_Modules_Overview_PXA255_PXA270_PXA270M_PXA300_PXA310_PXA320_ARM">Colibri PXA320</a>. Это такой компьютерный модуль в форм-факторе SO-DIMM. Ура!</p>
<p>Если не будет лень, а лень нам не будет, попробуем ради интереса перенести на него функционал <a href="http://metrotek.spb.ru/b4.html">Беркут-ММТ</a>.</p>
<p>Сам патч через неделю-полторы будет отправлен разработчикам openocd.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.metrotek.spb.ru/2009/12/04/colibri-pxa320/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
