<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dw="https://www.dreamwidth.org">
  <id>tag:dreamwidth.org,2016-12-25:2601916</id>
  <title>Пятнадцать байтов на стек от конца</title>
  <subtitle>Serge Vakulenko</subtitle>
  <author>
    <name>Serge Vakulenko</name>
  </author>
  <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/"/>
  <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom"/>
  <updated>2025-07-09T00:39:23Z</updated>
  <dw:journal username="vak" type="personal"/>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:1415589</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/1415589.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=1415589"/>
    <title>MIPS всё</title>
    <published>2025-07-09T00:39:23Z</published>
    <updated>2025-07-09T00:39:23Z</updated>
    <category term="mips"/>
    <dw:security>public</dw:security>
    <dw:reply-count>11</dw:reply-count>
    <content type="html">&lt;a href="https://mips.com/press-releases/gf-mips/"&gt;GlobalFoundries today announced a definitive agreement to acquire MIPS, a leading supplier of AI and processor IP. This strategic acquisition will expand GF&amp;rsquo;s portfolio of customizable IP offerings, allowing it to further differentiate its process technologies with IP and software capabilities.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=1415589" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:1341992</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/1341992.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=1341992"/>
    <title>RetroBSD теперь на Clang</title>
    <published>2025-02-10T08:52:54Z</published>
    <updated>2025-02-10T09:29:09Z</updated>
    <category term="qemu"/>
    <category term="bsd"/>
    <category term="mips"/>
    <category term="компьютерная археология"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">За последние три дня я могучим рывком, броском, пинком и нахрапом закончил таки переделку &lt;a href="https://github.com/RetroBSD/retrobsd/wiki"&gt;RetroBSD&lt;/a&gt; под компилятор Clang. Теперь не нужно бегать искать GCC для mips32. Ставите стандартный Clang и вперёд. Инструкция по сборке лежит в корневом файле README. Для запуска на симуляторе годится обновлённый &lt;a href="https://github.com/sergev/qemu/wiki"&gt;QEMU для pic32&lt;/a&gt;. Если кому понадобится старая версия с GCC - она лежит в бранче &lt;a href="https://github.com/RetroBSD/retrobsd/tree/gcc"&gt;gcc&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Поддержку устаревшего хардвера я убрал. Оставил только две платы, обе имеются в продаже:&lt;ul&gt;&lt;li&gt;&lt;a href="https://www.olimex.com/Products/Duino/PIC32/PIC32-RETROBSD/open-source-hardware"&gt;Olimex PIC32-RetroBSD&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.microchipdirect.com/dev-tools/DM240001-3"&gt;Microchip Explorer 16&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Из минусов: потеряны две фичи.&lt;ul&gt;&lt;li&gt;MIPS16e - компактная система команд - не поддерживается компилятором Clang. Формально она там есть, но код генерится совершенно нерабочий. Так что приходится довольствоваться стандартным набором инструкций. Из-за этого некоторые &amp;quot;толстые&amp;quot; приложения не лезут в память, к примеру компилятор &lt;a href="https://github.com/alexfru/SmallerC"&gt;SmallerC&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Не удаётся собрать библиотеку libc.а в формате a.out для того же компилятора SmallerC. Потому что имеющийся ассемблер mips32 не понимает некоторые навороченные конструкции, порождаемые компилятором Clang. Надо будет допиливать.&lt;/li&gt;&lt;/ul&gt;Но в целом система фурычит довольно неплохо. Открывается путь для переноса на другие платформы: esp32, &lt;a href="https://github.com/chettrick/discobsd"&gt;stm32&lt;/a&gt;, riscv и другие.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=1341992" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:1341801</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/1341801.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=1341801"/>
    <title>Как стартует BSD</title>
    <published>2025-02-09T23:50:20Z</published>
    <updated>2025-02-09T23:52:04Z</updated>
    <category term="компьютерная археология"/>
    <category term="mips"/>
    <category term="qemu"/>
    <category term="bsd"/>
    <dw:security>public</dw:security>
    <dw:reply-count>2</dw:reply-count>
    <content type="html">Хотите взглянуть, как грузится &lt;a href="https://github.com/RetroBSD/retrobsd/wiki"&gt;RetroBSD&lt;/a&gt; с точки зрения последовательности системных вызовов? Стартует /sbin/iuit, из-под него /bin/sh выполняет скрипт /etc/rc, проверяет файловую систему, запускает cron и в конце концов getty. Я сделал флажок в &lt;a href="https://github.com/sergev/qemu/wiki"&gt;QEMU для pic32&lt;/a&gt;, чтобы трассировать системные вызовы. Вывод слегка обработал вручную, вот результат.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://gist.github.com/sergev/c0c21f47220e2d3ec6eee4b5b076ec0f"&gt;gist.github.com/sergev/c0c21f47220e2d3ec6eee4b5b076ec0f&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=1341801" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:1339994</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/1339994.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=1339994"/>
    <title>LiteBSD восстал из забвения</title>
    <published>2025-02-05T08:41:36Z</published>
    <updated>2025-02-05T18:02:47Z</updated>
    <category term="компьютерная археология"/>
    <category term="mips"/>
    <category term="bsd"/>
    <dw:security>public</dw:security>
    <dw:reply-count>3</dw:reply-count>
    <content type="html">Нашёлся умный человек, &lt;a href="https://github.com/sergev/qemu/issues/17"&gt;подсказал&lt;/a&gt; как собрать на нынешнем Debian 12 (bookworm) симулятор pic32, который я сварганил десять лет назад. Приятно вспомнить.&lt;br /&gt;&lt;br /&gt;Главная хитрость - установить Python 2.7. Официально делать это крайне не рекомендуется, но оно работает, как ни странно.&lt;blockquote&gt;&lt;pre&gt;
wget http://ftp.debian.org/debian/pool/main/libf/libffi/libffi7_3.3-6_amd64.deb&lt;br /&gt;wget http://ftp.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.1w-0+deb11u1_amd64.deb&lt;br /&gt;wget http://ftp.debian.org/debian/pool/main/p/python2.7/libpython2.7-minimal_2.7.18-8+deb11u1_amd64.deb&lt;br /&gt;wget http://ftp.debian.org/debian/pool/main/p/python2.7/python2.7-minimal_2.7.18-8+deb11u1_amd64.deb&lt;br /&gt;wget http://ftp.debian.org/debian/pool/main/p/python2.7/libpython2.7-stdlib_2.7.18-8+deb11u1_amd64.deb&lt;br /&gt;wget http://ftp.debian.org/debian/pool/main/p/python2.7/python2.7_2.7.18-8+deb11u1_amd64.deb&lt;br /&gt;sudo dpkg -i libffi7_3.3-6_amd64.deb \&lt;br /&gt;    libssl1.1_1.1.1w-0+deb11u1_amd64.deb \&lt;br /&gt;    libpython2.7-minimal_2.7.18-8+deb11u1_amd64.deb \&lt;br /&gt;    python2.7-minimal_2.7.18-8+deb11u1_amd64.deb \&lt;br /&gt;    libpython2.7-stdlib_2.7.18-8+deb11u1_amd64.deb \&lt;br /&gt;    python2.7_2.7.18-8+deb11u1_amd64.deb&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Теперь соберём и установим QEMU для pic32:&lt;blockquote&gt;&lt;pre&gt;
sudo apt install libpixman-1-dev libfdt-dev zlib1g-dev libglib2.0-dev libsdl1.2-dev&lt;br /&gt;git clone https://github.com/sergev/qemu.git&lt;br /&gt;mkdir qemu-build&lt;br /&gt;cd qemu-build&lt;br /&gt;../qemu/configure --prefix=/usr/local/qemu-mips \&lt;br /&gt;    --target-list=mipsel-softmmu \&lt;br /&gt;    --python=/usr/bin/python2.7 \&lt;br /&gt;    --disable-werror&lt;br /&gt;make CFLAGS=&amp;quot;-O3 -Wno-error -isystem /usr/include/glib-2.0 -isystem /usr/lib/$(uname -m)-linux-gnu/glib-2.0/include&amp;quot; -j &amp;quot;$(nproc)&amp;quot;&lt;br /&gt;make install&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Бинарник QEMU будет установлен как &lt;tt&gt;/usr/local/qemu-mips/bin/qemu-system-mipsel&lt;/tt&gt;. Запустим &lt;a href="https://github.com/sergev/LiteBSD/wiki"&gt;LiteBSD&lt;/a&gt;:&lt;blockquote&gt;&lt;pre&gt;
wget https://raw.githubusercontent.com/wiki/sergev/qemu/binaries/boot-wifire.hex&lt;br /&gt;wget https://raw.githubusercontent.com/wiki/sergev/qemu/binaries/vmunix.hex&lt;br /&gt;wget https://raw.githubusercontent.com/wiki/sergev/qemu/binaries/litebsd.zip&lt;br /&gt;unzip litebsd.zip&lt;br /&gt;/usr/local/qemu-mips/bin/qemu-system-mipsel \&lt;br /&gt;    -machine pic32mz-wifire \&lt;br /&gt;    -nographic \&lt;br /&gt;    -monitor none \&lt;br /&gt;    -serial vc \&lt;br /&gt;    -serial vc \&lt;br /&gt;    -serial vc \&lt;br /&gt;    -serial stdio \&lt;br /&gt;    -bios &amp;quot;boot-wifire.hex&amp;quot; \&lt;br /&gt;    -kernel &amp;quot;vmunix.hex&amp;quot; \&lt;br /&gt;    -sd &amp;quot;litebsd.img&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Стартует классический юникс 30-летней давности:&lt;blockquote&gt;&lt;pre&gt;
Board: chipKIT WiFire&lt;br /&gt;Processor: microAptivP&lt;br /&gt;RAM size: 512 kbytes&lt;br /&gt;Load file: 'boot-wifire.hex', 6916 bytes&lt;br /&gt;Load file: 'vmunix.hex', 522408 bytes&lt;br /&gt;Card0 image 'litebsd.img', 339969 kbytes&lt;br /&gt;Copyright (c) 1982, 1986, 1989, 1991, 1993&lt;br /&gt;	The Regents of the University of California.  All rights reserved.&lt;br /&gt;&lt;br /&gt;4.4BSD-Lite build 13 compiled 2015-01-20&lt;br /&gt;    sergev@ubuntu-sergev:LiteBSD/sys/compile/WIFIRE.pic32&lt;br /&gt;cpu: PIC32MZ2048ECG100 rev A4, 200 MHz&lt;br /&gt;oscillator: system PLL div 1:6 mult x50&lt;br /&gt;real mem = 512 kbytes&lt;br /&gt;avail mem = 344 kbytes&lt;br /&gt;using 18 buffers containing 73728 bytes of memory&lt;br /&gt;spi1 at pins sdi=D14/sdo=C1/sck=D1&lt;br /&gt;spi2 at pins sdi=F0/sdo=D11/sck=G6&lt;br /&gt;spi3 at pins sdi=B10/sdo=C4/sck=B14&lt;br /&gt;spi4 at pins sdi=F5/sdo=G0/sck=D10&lt;br /&gt;uart1 at pins rx=F1/tx=D15, interrupts 112/113/114&lt;br /&gt;uart4 at pins rx=F2/tx=F8, interrupts 170/171/172, console&lt;br /&gt;sd0 at port spi3, pin cs=C3&lt;br /&gt;sd0: type I, size 339968 kbytes, speed 12 Mbit/sec&lt;br /&gt;sd0a: partition type b7, sector 2, size 204800 kbytes&lt;br /&gt;sd0b: partition type b8, sector 409602, size 32768 kbytes&lt;br /&gt;sd0c: partition type b7, sector 475138, size 102400 kbytes&lt;br /&gt;bpf: sl0 attached&lt;br /&gt;bpf: lo0 attached&lt;br /&gt;WARNING: preposterous clock chip time -- CHECK AND RESET THE DATE!&lt;br /&gt;&lt;br /&gt;starting file system checks.&lt;br /&gt;/dev/rsd0a: file system is clean; not checking&lt;br /&gt;starting network&lt;br /&gt;clearing /tmp&lt;br /&gt;standard daemons: update.&lt;br /&gt;Wed Dec 10 21:07:36 PST 2014&lt;br /&gt;&lt;br /&gt;4.4BSD-Lite (bsd.net) (tty4)&lt;br /&gt;&lt;br /&gt;login: _&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Заходите как root, без пароля. Остановить систему можно командой &lt;tt&gt;halt -q&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=1339994" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:1181640</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/1181640.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=1181640"/>
    <title>Windows на MIPS под Wine</title>
    <published>2024-02-19T23:47:21Z</published>
    <updated>2024-02-20T00:11:56Z</updated>
    <category term="mips"/>
    <category term="компьютерная археология"/>
    <dw:security>public</dw:security>
    <dw:reply-count>4</dw:reply-count>
    <content type="html">Казалось бы, какое может быть удовольствие от древних бинарников Windows, да еще с платформы MIPS. Но вот один весёлый чувак сбацал симулятор, на котором можно запускать такие файлы. &lt;br /&gt;&lt;br /&gt;Все исходники и бинарники здесь: &lt;a href="https://github.com/x86matthew/WoWMIPS"&gt;https://github.com/x86matthew/WoWMIPS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Подробности в его блоге: &lt;a href="https://www.x86matthew.com/view_post?id=mips_1"&gt;1&lt;/a&gt; &lt;a href="https://www.x86matthew.com/view_post?id=mips_2"&gt;2&lt;/a&gt; &lt;a href="https://www.x86matthew.com/view_post?id=mips_3"&gt;3&lt;/a&gt; &lt;a href="https://www.x86matthew.com/view_post?id=mips_4"&gt;4&lt;/a&gt; &lt;a href="https://www.x86matthew.com/view_post?id=mips_5"&gt;5&lt;/a&gt; &lt;a href="https://www.x86matthew.com/view_post?id=mips_6"&gt;6&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Я погонял этот симулятор под Wine на линуксе и маке - отлично работает. Вот скриншоты.&lt;br /&gt;&lt;pre&gt;
wine ./WoWMIPS.exe winmine.exe&lt;/pre&gt;&lt;a href="https://vak.dreamwidth.org/file/1377788.png"&gt;&lt;img src="https://vak.dreamwidth.org/file/1377788.png" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="cut-wrapper"&gt;&lt;span style="display: none;" id="span-cuttag___1" class="cuttag"&gt;&lt;/span&gt;&lt;b class="cut-open"&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class="cut-text"&gt;&lt;a href="https://vak.dreamwidth.org/1181640.html#cutid1"&gt;+5&lt;/a&gt;&lt;/b&gt;&lt;b class="cut-close"&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style="display: none;" id="div-cuttag___1" aria-live="assertive"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=1181640" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:1164296</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/1164296.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=1164296"/>
    <title>Роутер GL-SFT1200 на процессоре MIPS32</title>
    <published>2024-01-20T05:44:50Z</published>
    <updated>2024-12-21T07:50:17Z</updated>
    <category term="mips"/>
    <category term="компьютерное"/>
    <dw:security>public</dw:security>
    <dw:reply-count>9</dw:reply-count>
    <content type="html">Когда-то &lt;span style='white-space: nowrap;'&gt;&lt;a href='https://is39.dreamwidth.org/profile'&gt;&lt;img src='https://www.dreamwidth.org/img/silk/identity/user.png' alt='[personal profile] ' width='17' height='17' style='vertical-align: text-bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='https://is39.dreamwidth.org/'&gt;&lt;b&gt;is39&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; подарил мне забавный прибамбас, в просторечии называемый &lt;a href="https://www.gl-inet.com/products/gl-mt300n-v2/"&gt;манго&lt;/a&gt;. Миниатюрный роутер Wi-Fi, оказавшийся удивительно полезным в быту. К сожалению, только на диапазон 2.4ГГц. А тут понадобилось мне аналогичное, но на 5ГГц. Ну я недолго думая &lt;a href="https://www.amazon.com/dp/B09N72FMH5"&gt;заказал с Амазона&lt;/a&gt; - оказалось той же фирмы, и тоже на процессоре MIPS. Мелочь, а приятно. Причём тот самый MIPS Interaptive, к симуляции и верификации которого я лично немало сил приложил. Вот теперь приносит пользу людям.&lt;br /&gt;&lt;br /&gt;Часто при возне с разными компьютерами, особенно древними, бывает нужно подключить их к интернету через порт Ethernet. А по нынешним временам обычно имеется только Wi-Fi. Тут и спасает такой роутер. Достал из кармана, подключил - готово. Держу его преднастроенным на все актуальные беспроводные сетки: домашнюю, на работе, плюс xfinitywifi, если вдруг в дороге припекло. Роутер ещё много всякого умеет, но для меня Ethernet главная полезность.&lt;br /&gt;&lt;a href="https://vak.dreamwidth.org/file/1346416.jpg"&gt;&lt;img src="https://vak.dreamwidth.org/file/200x200/1346416.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Страничка на сайте производителя: &lt;a href="https://www.gl-inet.com/products/gl-sft1200/"&gt;gl-inet.com/products/gl-sft1200/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ну и раз уж оно старый добрый MIPS с прошивкой OpenWRT, почему бы не запихнуть туда заодно и полноценный линукс. Благо USB имеется для внешней флешки под файловую систему. Много лет назад я излагал &lt;a href="https://vak.dreamwidth.org/171460.html"&gt;способ запускать Debian на андроидном таблете&lt;/a&gt;, посредством chroot. Тот же метод сработал и здесь, только &lt;a href="https://github.com/sergev/vak-opensource/blob/master/microcontrollers/debian-on-openwrt/build-debian-rootfs.sh"&gt;инструкцию&lt;/a&gt; понадобилось обновить. Пусть будет хоть один живой MIPS-компьютер в хозяйстве.&amp;nbsp;Жаль, памяти RAM всего 128 мегабайт.&lt;br /&gt;&lt;br /&gt;Подробности конфигурации:&lt;ul&gt;&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/sergev/vak-opensource/master/sysinfo/GL-SFT1200-Debian/neofetch.txt"&gt;neofetch&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/sergev/vak-opensource/master/sysinfo/GL-SFT1200-Debian/cpuinfo.txt"&gt;cpuinfo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/sergev/vak-opensource/master/sysinfo/GL-SFT1200-Debian/dmesg.txt"&gt;dmesg&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/sergev/vak-opensource/master/sysinfo/GL-SFT1200-Debian/lsblk.txt"&gt;lsblk&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/sergev/vak-opensource/master/sysinfo/GL-SFT1200-Debian/lscpu.txt"&gt;lscpu&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/sergev/vak-opensource/master/sysinfo/GL-SFT1200-Debian/lshw.txt"&gt;lshw&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/sergev/vak-opensource/master/sysinfo/GL-SFT1200-Debian/lsusb.txt"&gt;lsusb&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Меряем скорость:&lt;blockquote&gt;&lt;pre&gt;
Nanoseconds for one run through Dhrystone: 514.7&lt;br /&gt;            Million Dhrystones per Second: 1.943&lt;br /&gt;                                    DMIPS: &lt;span style="color: rgb(51, 153, 102);"&gt;&lt;strong&gt;1105.8&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;Это 14% от Raspberry Pi 4 или 30% от Raspberry Pi 3B.&lt;br /&gt;&lt;br /&gt;Чтобы зайти в Debian на роутере:&lt;br /&gt;1. Подаём на него питание.&amp;nbsp;&lt;br /&gt;2. Появляется WiFi сеть с названием GL-SFT1200-abc-5G. Подключаемся к ней.&amp;nbsp;&lt;br /&gt;3. Заходим через SSH по адресу 192.168.8.1. Нужны хитрые флаги.&lt;pre&gt;ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostkeyAlgorithms=+ssh-rsa,ssh-dss -oCiphers=+aes128-ctr,aes256-ctr root@192.168.8.1&lt;/pre&gt;4. Пароль смотри в pass.&lt;br /&gt;5. В шелле вызываем скрипт &lt;tt&gt;./debian.sh&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=1164296" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:1013040</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/1013040.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=1013040"/>
    <title>Кое-что новенькое для PIC32</title>
    <published>2023-04-15T01:11:34Z</published>
    <updated>2023-04-15T01:17:36Z</updated>
    <category term="mips"/>
    <category term="электроника"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Один клёвый чувак сделал красивую простую платку на процессоре PIC32MX250, и некоторое количество полезного софта для неё. Продаётся за &lt;a href="https://www.tindie.com/products/dgtie/stick250/"&gt;$13 на tindie.com&lt;/a&gt; (плюс доставка). &lt;br /&gt;&lt;br /&gt;Бутлоадер: &lt;a href="https://github.com/dgtie/STICK250"&gt;github.com/dgtie/STICK250&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Программатор для PIC32: &lt;a href="https://github.com/dgtie/NPickit2"&gt;github.com/dgtie/NPickit2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Программатор для ATmega: &lt;a href="https://github.com/dgtie/STK500v2_clone"&gt;github.com/dgtie/STK500v2_clone&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;Конвертер USB - serial:&amp;nbsp;&lt;a href="https://github.com/dgtie/usbSerial"&gt;github.com/dgtie/usbSerial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://lamsworkshop.blogspot.com/2023/01/stick250-pic32mx250f128d-experiment.html"&gt;&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9A_CKslflFKKoih48guQKiZD23kqqohCHzffa1l8geqDDGRgl5-UJmcGXcIg9S_hDSJL-vqCFOOlUXvIcJImjkbjeX96mHm_-7aA6VqIIptiKpAq8dNgDMmPHIVkQODdkNzv_o-hRYE8wqjD1Rfnqd7i9eoSfogATNlsEwnV5XnkX0zHZieAvK4Up/w640-h426/20230313_140952.jpg" width="639" height="426" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="cut-wrapper"&gt;&lt;span style="display: none;" id="span-cuttag___1" class="cuttag"&gt;&lt;/span&gt;&lt;b class="cut-open"&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class="cut-text"&gt;&lt;a href="https://vak.dreamwidth.org/1013040.html#cutid1"&gt;Схема&lt;/a&gt;&lt;/b&gt;&lt;b class="cut-close"&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style="display: none;" id="div-cuttag___1" aria-live="assertive"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=1013040" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:891293</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/891293.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=891293"/>
    <title>Clang для pic32</title>
    <published>2022-05-26T21:17:14Z</published>
    <updated>2022-05-26T22:11:43Z</updated>
    <category term="mips"/>
    <category term="bsd"/>
    <category term="программистское"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Народ на днях задал мне вопрос, нет ли способа пересобрать &lt;a href="https://github.com/RetroBSD/retrobsd/wiki"&gt;RetroBSD&lt;/a&gt; из исходников на каком-нибудь современном линуксе, типа Ubuntu 22.04, не откатываясь на десять лет назад. Я потыркался маленько, и оказалось, что компилятор для mips32r2 найти не так уж легко. Нет способа просто установить GCC для MIPS из готовых пакетов ни на линуксе, ни на маке. Старые бинарные сборки устарели и на новых MacOS вообще не запускаются. Пытался скомпилировать последний GCC из исходников - валится где-то при сборке runtime библиотеки. Непруха в общем.&lt;br /&gt;&lt;br /&gt;Неожиданно обнаружилось, что ситуацию может спасти Clang. Это другой Си компилятор, из проекта LLVM. Оказалось, что стандартный пакет типа clang-14 содержит бэкенд не только для x86-64, но и для кучи других архитектур, включая mips32. Вот полный список.&lt;blockquote&gt;&lt;pre&gt;
$ clang-14 -print-targets&lt;br /&gt;  Registered Targets:&lt;br /&gt;    aarch64    - AArch64 (little endian)&lt;br /&gt;    aarch64_32 - AArch64 (little endian ILP32)&lt;br /&gt;    aarch64_be - AArch64 (big endian)&lt;br /&gt;    amdgcn     - AMD GCN GPUs&lt;br /&gt;    arm        - ARM&lt;br /&gt;    arm64      - ARM64 (little endian)&lt;br /&gt;    arm64_32   - ARM64 (little endian ILP32)&lt;br /&gt;    armeb      - ARM (big endian)&lt;br /&gt;    avr        - Atmel AVR Microcontroller&lt;br /&gt;    bpf        - BPF (host endian)&lt;br /&gt;    bpfeb      - BPF (big endian)&lt;br /&gt;    bpfel      - BPF (little endian)&lt;br /&gt;    hexagon    - Hexagon&lt;br /&gt;    lanai      - Lanai&lt;br /&gt;    m68k       - Motorola 68000 family&lt;br /&gt;    mips       - MIPS (32-bit big endian)&lt;br /&gt;    mips64     - MIPS (64-bit big endian)&lt;br /&gt;    mips64el   - MIPS (64-bit little endian)&lt;br /&gt;    mipsel     - MIPS (32-bit little endian)&lt;br /&gt;    msp430     - MSP430 [experimental]&lt;br /&gt;    nvptx      - NVIDIA PTX 32-bit&lt;br /&gt;    nvptx64    - NVIDIA PTX 64-bit&lt;br /&gt;    ppc32      - PowerPC 32&lt;br /&gt;    ppc32le    - PowerPC 32 LE&lt;br /&gt;    ppc64      - PowerPC 64&lt;br /&gt;    ppc64le    - PowerPC 64 LE&lt;br /&gt;    r600       - AMD GPUs HD2XXX-HD6XXX&lt;br /&gt;    riscv32    - 32-bit RISC-V&lt;br /&gt;    riscv64    - 64-bit RISC-V&lt;br /&gt;    sparc      - Sparc&lt;br /&gt;    sparcel    - Sparc LE&lt;br /&gt;    sparcv9    - Sparc V9&lt;br /&gt;    systemz    - SystemZ&lt;br /&gt;    thumb      - Thumb&lt;br /&gt;    thumbeb    - Thumb (big endian)&lt;br /&gt;    ve         - VE&lt;br /&gt;    wasm32     - WebAssembly 32-bit&lt;br /&gt;    wasm64     - WebAssembly 64-bit&lt;br /&gt;    x86        - 32-bit X86: Pentium-Pro and above&lt;br /&gt;    x86-64     - 64-bit X86: EM64T and AMD64&lt;br /&gt;    xcore      - XCore&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;У меня есть в запаснике &lt;a href="https://github.com/sergev/vak-opensource/tree/master/microcontrollers/pic32-max32"&gt;пример прошивки для pic32&lt;/a&gt;. Пришлось повозиться, чтобы поправить его для Clang, но вроде неплохо выходит. Компиляция выглядит следующим образом:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
$ make&lt;br /&gt;/usr/lib/llvm-14/bin/clang -target mipsel -mcpu=mips32r2 -mabi=o32 -mfloat-abi=soft -DPIC32MX7 -c uart.c&lt;br /&gt;/usr/lib/llvm-14/bin/ld.lld -m elf32ltsmip -T using-bootloader.ld -e _start -g uart.o -o uart.elf&lt;br /&gt;/usr/lib/llvm-14/bin/llvm-objcopy -O ihex uart.elf uart.hex&lt;br /&gt;/usr/lib/llvm-14/bin/llvm-objdump --mcpu=mips32r2 -d -S uart.elf &amp;gt; uart.dis&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;С компилятором разобрались, а теперь стоит большая задача поправить все исходники RetroBSD под него. Нынче Си гораздо более строгий, чем тридцать лет назад. Всяких глупостей не прощает.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=891293" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:869505</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/869505.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=869505"/>
    <title>Роутеры на процессорах «Байкал»</title>
    <published>2022-04-09T03:33:24Z</published>
    <updated>2022-04-09T07:02:46Z</updated>
    <category term="mips"/>
    <category term="программистское"/>
    <category term="электроника"/>
    <dw:security>public</dw:security>
    <dw:reply-count>17</dw:reply-count>
    <content type="html">Я по привычке продолжаю читать технические новости на российских сайтах, и в последнее время каждая новость оказывается враньём. Вот, к примеру.&lt;br /&gt;&lt;br /&gt;&amp;quot;&lt;a href="https://www.cnews.ru/news/top/2022-04-07_rossiyane_razrabotali_superzashchishchennye"&gt;Россияне создали &lt;em&gt;&lt;strong&gt;суперзащищенные&lt;/strong&gt;&lt;/em&gt; роутеры на древних процессорах &amp;laquo;Байкал&amp;raquo;&lt;/a&gt;&amp;quot;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Не создали они никакие роутеры, а &amp;quot;анонсировали&amp;quot;.&lt;/li&gt;&lt;li&gt;&amp;quot;Сроков начала производства у него пока нет.&amp;quot;&lt;/li&gt;&lt;li&gt;&amp;quot;Расширенная защита от хакерских атак&amp;quot; - чистая туфта. Просто линукс на процессоре MIPS. Я знаю, я участвовал в разработке этого процессора.&lt;/li&gt;&lt;li&gt;Эти процессоры тупо отсутствуют в наличии. За шесть лет процессоров Baikal-T было выпущено всего 50 тыс. штук, и они давно разошлись. По причине войны с Украиной Тайвань отказался производить что-либо для России. &amp;quot;В России нет современных производственных мощностей для выпуска процессоров.&amp;quot;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="https://www.cnews.ru/news/top/2022-04-07_rossiyane_razrabotali_superzashchishchennye"&gt;&lt;img src="https://filearchive.cnews.ru/img/news/2022/04/07/rout600.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=869505" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:787231</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/787231.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=787231"/>
    <title>nanoMIPS наконец-то попал в GCC</title>
    <published>2021-09-27T21:15:07Z</published>
    <updated>2021-09-27T21:15:07Z</updated>
    <category term="mips"/>
    <dw:security>public</dw:security>
    <dw:reply-count>5</dw:reply-count>
    <content type="html">Вчера в GCC был заслан &lt;a href="https://gcc.gnu.org/pipermail/gcc-patches/2021-September/580270.html"&gt;патч&lt;/a&gt;, добавляющий архитектуру nanoMIPS. С некоторыми из перечисленных авторов я работал в одной команде: Matthew Fortune, Faraz Shahbazker. Три года прошло, как мы закончили эту архитектуру, &lt;a href="https://www.anandtech.com/show/12699/mips-announces-i7200-32bit-cpu-with-new-nanomips-isa"&gt;отгрузили процессор I7200&lt;/a&gt; и закрыли контракт с MediaTek. &lt;br /&gt;&lt;br /&gt;&amp;quot;&lt;a href="https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MediaTek-2021-nanoMIPS-GCC"&gt;MediaTek engineers haven't mentioned why in 2021 they are working on nanoMIPS support for upstream GCC&lt;/a&gt;&amp;quot; - гадает автор статьи. А между тем модем LTE5, сделанный на процессоре I7200 от MediaTek, нынче работает в половине выпускаемых мобильных телефонов. И оно не случайно так вышло. Протокол LTE5 на порядок увеличивает пропускную способность за счёт распараллеливания. Нужны не один-два-четыре процессора, а десятки параллельно работающих ядер, чтобы обработать поток. Всё это в реальном времени и с минимальным энергопотреблением. Процессор nanoMIPS I7200 с его аппаратной многозадачностью отлично подходит для этой задачи. Остальные рядом не стояли. Не зря &lt;a href="https://www.gizchina.com/2021/09/24/amd-set-to-enter-the-mobile-processor-market-to-partner-with-mediatek/"&gt;AMD начал прицениваться купить MediaTek&lt;/a&gt; на корню. Там есть предмет разговора, а именно реализация LTE5 на процессоре nanoMIPS.&lt;br /&gt;&lt;br /&gt;Это к вопросу увидеть результаты своего труда в электронике. :)&lt;br /&gt;Много лет проходит.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=787231" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:737160</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/737160.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=737160"/>
    <title>Ещё одна компьютерная архитектура грядёт</title>
    <published>2021-04-17T19:39:59Z</published>
    <updated>2021-04-17T19:39:59Z</updated>
    <category term="компьютерное"/>
    <category term="mips"/>
    <dw:security>public</dw:security>
    <dw:reply-count>2</dw:reply-count>
    <content type="html">&amp;quot;&lt;a href="https://www.cnx-software.com/2021/04/17/loongson-loongarch-cpu-instruction-set-architecture/"&gt;Loongson unveils LoongArch CPU instruction set architecture for processors made in China&lt;/a&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Обещают скоро выложить описание архитектуры.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=737160" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:724908</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/724908.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=724908"/>
    <title>Fungible как светлое будущее сетевого человечества</title>
    <published>2021-03-10T07:08:21Z</published>
    <updated>2021-03-10T07:48:00Z</updated>
    <category term="кремниевая долина"/>
    <category term="mips"/>
    <dw:security>public</dw:security>
    <dw:reply-count>16</dw:reply-count>
    <content type="html">&lt;p align="right"&gt;- Папа, из чего сделаны облака?&lt;br /&gt;- Из линуксных серверов, в основном.&lt;/p&gt;&lt;br /&gt;Говорят, больше всего удовлетворения от работы получают парикмахеры и зубные врачи. Потому что они (а) работают с людьми, (б) сразу видят результат и (в) немедленно получают положительный отзыв от клиента.&lt;br /&gt;&lt;br /&gt;Разработчикам процессоров приходится труднее всего. Клиентов мы вообще в глаза не видим, а результаты в виде готовых продуктов появляются только через несколько лет.&lt;br /&gt;&lt;br /&gt;Но вот случился результат, и имеет смысл ним похвастаться. Процессоры от &lt;a href="https://www.fungible.com/"&gt;Fungible&lt;/a&gt; и сетевые хранилищи на их основе заслуживают внимания.&lt;br /&gt;&lt;br /&gt;Статья на русском: &lt;a href="http://www.storagenews.ru/news/2020/FSC_76.pdf"&gt;http://www.storagenews.ru/news/2020/FSC_76.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Процессоры &lt;a href="https://www.fungible.com/wp-content/uploads/2020/08/PB0028.00.02020811-Fungible-F1-Data-Processing-Unit-1.pdf"&gt;Fungible F1 DPU&lt;/a&gt; и &lt;a href="https://www.fungible.com/wp-content/uploads/2020/08/PB0029.00.02020811-Fungible-S1-Data-Processing-Unit.pdf"&gt;Fungible S1 DPU&lt;/a&gt; сделаны на основе ядра &lt;a href="https://www.mips.com/products/warrior/i-class-i6500-multiprocessor-core/"&gt;MIPS I6500&lt;/a&gt;, в разработке которого я принимал самое активное участие несколько лет назад. Чип F1 состоит из восьми кластеров обработки данных (48 ядер MIPS-64, в сумме 192 процессорных потока) и одного управляющего кластера (4 ядра, восемь процессорных потоков). Чип S1 чуть поменьше: 16 ядер, 56 процессорных потоков. Ядра MIPS работают на частоте 1.6 ГГц. Но самая фишка вовсе не в процессорах, а в сетевой системе общей пропускной способностью 800 гигабит в секунду. Десять 100-гигабитных портов Ethernet, плюс десять 40-гигабитных, двадцать 50-гигабитных, сорок 25-гигабитных и сорок 10-гигабитных портов. Какие-то сумасшедшие цифры.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.fungible.com/wp-content/themes/understrap-child/img/platform/2020-09/F1-chip.png" width="147" height="162" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;А вот &lt;a href="https://www.fungible.com/product/fungible-storage-cluster/"&gt;готовое изделие&lt;/a&gt;. Это невзрачное на первый взгляд устройство представляет собой... как бы флешку. Я сильно упрощаю, конечно, но по сути это такое же средство хранения данных, как и USB-флешка. Но только в &lt;em&gt;&lt;strong&gt;три тысячи&lt;/strong&gt;&lt;/em&gt; раз быстрее и в 20 тысяч раз ёмче. Скорость чтения данных 60 Гбайт/сек (у флешки порядка 20 Мбайт/сек). Это как минимум &lt;em&gt;&lt;strong&gt;на порядок&lt;/strong&gt;&lt;/em&gt; быстрее, чем любые другие известные решения.&lt;div&gt;&lt;br /&gt;&lt;a href="https://www.servethehome.com/fungible-dpu-based-storage-cluster-hands-on-look/"&gt;&lt;img src="https://www.servethehome.com/wp-content/uploads/2020/10/Fungible-FS1600-at-HQ-Front-Top-Open.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Конечно, это не просто флешка. Это сервер не только хранения, но и обработки данных. Специализированная операционная система реального времени позволяет молотить данные с самыми разными целями. Сетевое хранилище - только одно из возможных применений. &lt;br /&gt;&lt;br /&gt;На видео можно посмотреть испытания этого сетевого хранилища и реальные цифры.&lt;br /&gt;&lt;br /&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/NjhTTMNGBBw" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Глава Fungible Прадип Синду - в прошлом основатель известной фирмы Juniper Networks, на маршрутизаторах которой построены все главные магистрали интернета. Похоже, и для облаков он приготовил нам кое-что интересное. И оно гораздо прикольнее, чем линуксные сервера.&lt;br /&gt;&lt;br /&gt;Перед тем, как устроиться на работу в &lt;a href="https://sima.ai/"&gt;SiMa.ai&lt;/a&gt;, я сходил на собеседование в Fungible. Весьма неплохое место. Они готовы были меня взять, и я некоторое время колебался, но всё-таки выбрал Симу. У Fungible продукт был почти на выходе, а мне больше понравилась идея начать с нуля.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=724908" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:606695</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/606695.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=606695"/>
    <title>Линукс для pic32</title>
    <published>2019-11-02T23:51:51Z</published>
    <updated>2019-11-03T04:25:46Z</updated>
    <category term="mips"/>
    <category term="компьютерное"/>
    <category term="qemu"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Я &lt;a href="https://vak.dreamwidth.org/605984.html"&gt;уже писал&lt;/a&gt;, как за два простых шага установить и запустить Debian на плате pic32mz-da. Компиляцию U-Boot для микроконтроллера pic32 я &lt;a href="https://vak.dreamwidth.org/604480.html"&gt;тоже описывал&lt;/a&gt;. Здесь я покажу, как собрать из исходников ядро Linux, и как с нуля построить образ файловой системы Debian на карточке micro-SD.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: larger;"&gt;1. Строим ядро Linux для pic32&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Исходные тексты ядра Linux для микроконтроллеров семейства pic32mz-da были опубликованы фирмой Microchip а 2015 году. Я внес два небольших исправления: доработал драйвер SDHC, чтобы обойти багу с короткими обменами (описанную в Errata sheet), и добавил флаги в ядре, нужные для корректного функционирования systemd. &lt;br /&gt;&lt;br /&gt;Вот как выглядит компиляция под Ubuntu версии 18.04. Огромное спасибо Мите Коротину, который первым прошёл этот трудный путь и показал мне все хитрости. Устанавливаем кросс-компилятор:&lt;blockquote&gt;&lt;pre&gt;
sudo apt-get install gcc-mips-linux-gnu&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Скачиваем тексты ядра Linux, с правками для PIC32:&lt;blockquote&gt;&lt;pre&gt;
git clone https://github.com/sergev/linux-pic32.git&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Конфигурируем и собираем. Здесь я предполагаю, что в каталоге u-boot-pic32 находится U-Boot, готовый и собранный для pic32. Нам от него понадобится утилита mkimage:&lt;blockquote&gt;&lt;pre&gt;
cd linux-pic32&lt;br /&gt;make ARCH=mips CROSS_COMPILE=mips-linux-gnu- pic32mzda_defconfig&lt;br /&gt;make ARCH=mips CROSS_COMPILE=mips-linux-gnu-&lt;br /&gt;gzip -9 &amp;lt; arch/mips/boot/vmlinux.bin &amp;gt; arch/mips/boot/vmlinux.bin.gz&lt;br /&gt;../u-boot-pic32/tools/mkimage -A MIPS -a 0x88000000 -e 0x88000400 -d arch/mips/boot/vmlinux.bin.gz arch/mips/boot/vmlinux-pic32&lt;br /&gt;mkdir -p ../boot&lt;br /&gt;cp -a arch/mips/boot/uImage ../boot/vmlinux-pic32&lt;br /&gt;cp -a arch/mips/boot/dts/pic32/pic32mzda_sk.dtb ../boot/pic32mzda.dtb&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;В результате мы имеем в папке boot бинарное ядро и дерево устройств, которое надо будет поместить в папку /boot файловой системы на SD-карточке.&lt;br /&gt;&lt;br /&gt;Собираем загружаемые модули:&lt;blockquote&gt;&lt;pre&gt;
make ARCH=mips CROSS_COMPILE=mips-linux-gnu- INSTALL_MOD_PATH=$PWD/.. modules_install&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Содержимое папки lib/modules/ надо будет скопировать в /lib/modules на SD-карточке.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: larger;"&gt;2. Собираем файловую систему Debian для mips32&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="cut-wrapper"&gt;&lt;span style="display: none;" id="span-cuttag___1" class="cuttag"&gt;&lt;/span&gt;&lt;b class="cut-open"&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class="cut-text"&gt;&lt;a href="https://vak.dreamwidth.org/606695.html#cutid1"&gt;Дальше...&lt;/a&gt;&lt;/b&gt;&lt;b class="cut-close"&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style="display: none;" id="div-cuttag___1" aria-live="assertive"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=606695" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:605984</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/605984.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=605984"/>
    <title>Установка Debian на pic32</title>
    <published>2019-11-01T21:00:53Z</published>
    <updated>2019-11-02T22:49:43Z</updated>
    <category term="mips"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;strong&gt;&lt;span style="font-size: larger;"&gt;Шаг 1: U-Boot&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Скачайте &lt;a href="https://github.com/sergev/u-boot-pic32/files/3800047/u-boot-pic32.zip"&gt;u-boot-pic32.zip&lt;/a&gt; и извлеките из него файл u-boot-pic32.hex. Прошейте его в плату с помощью &lt;a href="https://www.microchip.com/mplab/mplab-x-ide"&gt;MPLAB X&lt;/a&gt;. Или используйте один из прилагающихся скриптов для прошивки из командной строки. При необходимости U-Boot можно собрать из исходников: подробности смотрите в моём &lt;a href="https://vak.dreamwidth.org/604480.html"&gt;предыдущем посте&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Подключитесь к консольному порту платы на скорости 115200. При старте вы будете видеть общую информацию о плате:&lt;blockquote&gt;&lt;pre&gt;
U-Boot 2015.07-00021-g893592104d (Oct 29 2019 - 18:34:01 -0700)&lt;br /&gt;&lt;br /&gt;Board: PIC32MZ[DA]&lt;br /&gt;CPU Speed: 200 MHz&lt;br /&gt;SPI:   ready&lt;br /&gt;DRAM:  32 MiB&lt;br /&gt;Flash: 2 MiB&lt;br /&gt;MMC:   pic32-sdhci: 0&lt;br /&gt;In:    serial&lt;br /&gt;Out:   serial&lt;br /&gt;Err:   serial&lt;br /&gt;Net:   pic32_eth&lt;br /&gt;Error: pic32_eth address not set.&lt;br /&gt;&lt;br /&gt;Hit any key to stop autoboot:  0 &lt;br /&gt;dask # _&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Жмите &amp;lt;Enter&amp;gt; чтобы остановить автоматическую загрузку и получить приглашение &amp;quot;dask #&amp;quot;.&lt;br /&gt;&lt;br /&gt;Нужно задать и записать в постоянную память команды для загрузки ядра Линукса и карты устройств:&lt;blockquote&gt;&lt;pre&gt;
setenv bootargs &amp;quot;root=/dev/mmcblk0p1 console=ttyS1,115200 rootwait&amp;quot;&lt;br /&gt;setenv bootcmd &amp;quot;ext4load mmc 0:1 0x88500000 /boot/vmlinux-pic32 ; ext4load mmc 0:1 0x88C00000 /boot/pic32mzda.dtb ; bootm 0x88500000 - 0x88C00000&amp;quot;&lt;br /&gt;saveenv&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Всё, U-Boot готов грузить Линукс с карточки.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: larger;"&gt;Шаг 2: SD-карточка&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Скачайте файл &lt;a href="https://github.com/sergev/linux-pic32/releases/download/v1.1/pic32fs-minimal.zip"&gt;pic32fs-minimal.zip&lt;/a&gt; и запишите на 8-гигабайтную карточку micro-SD с помощью &lt;a href="https://www.balena.io/etcher/"&gt;balenaEtcher&lt;/a&gt; или аналогичного софта. Карточки большего размера тоже годятся. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: larger;"&gt;Шаг 3: Запускаем Линукс&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Вставьте карточку в плату и на приглашение загрузчика &amp;quot;dask #&amp;quot; введите &amp;quot;boot&amp;quot;. Или передёрните питание и подождите пять секунд, загрузка начнётся автоматически. Вы увидите примерно такой протокол: &lt;a href="https://gist.github.com/sergev/e96aff8c3c5a312274e630d37af36291"&gt;boot-debian-pic32mz-dar169.log&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Входите под именем &amp;quot;root&amp;quot; с паролем &amp;quot;mips&amp;quot;.&lt;br /&gt;&lt;br /&gt;Файловая система содержит минимальную конфигурацию Debian. Чтобы обновить или установить дополнительный софт, подключите кабель Ethernet и используйте команды apt или apt-get:&lt;blockquote&gt;apt-get update&lt;br /&gt;apt-get upgrade&lt;br /&gt;apt-get install bsdgames&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=605984" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:600344</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/600344.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=600344"/>
    <title>Как запускать отладчик GDB с микроконтроллером PIC32</title>
    <published>2019-09-20T03:14:55Z</published>
    <updated>2019-09-20T03:21:19Z</updated>
    <category term="bsd"/>
    <category term="mips"/>
    <category term="электроника"/>
    <dw:security>public</dw:security>
    <dw:reply-count>2</dw:reply-count>
    <content type="html">Спросили меня тут недавно, как приспособить дебаггер GDB для отладки софта на микроконтроллере PIC32. Подготовил краткий обзор.&lt;br /&gt;&lt;br /&gt;Вам понадобится:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Компьютер с установленныи Линуксом. В принципе, всё то же самое можно проделать на Маке или на Windows, но мне с Линуксом удобнее.&lt;/li&gt;&lt;li&gt;Плата &lt;a href="https://store.digilentinc.com/chipkit-wi-fire-wifi-enabled-mz-microcontroller-board/"&gt;chipKIT Wi-Fire&lt;/a&gt; с каким-нибудь приложением. В качестве примера я задействую ядро опреационной системы &lt;a href="http://litebsd.org"&gt;LiteBSD&lt;/a&gt;, прошитое во Flash-память микроконтроллера, с файловой системой на карточке micro-SD.&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.seeedstudio.com/Bus-Blaster-V3c-for-MIPS-Kit-p-2258.html"&gt;Bus Blaster for MIPS&lt;/a&gt; для подключения к отладочному порту EJTAG через USB.&lt;/li&gt;&lt;li&gt;Два кабеля мини-USB, для подключения плат Wi-Fire и Bus Blaster к линуксному компьютеру.&lt;/li&gt;&lt;li&gt;Бинарник GDB из пакета &lt;a href="https://codescape.mips.com/components/toolchain/2018.09-03/downloads.html"&gt;MIPS Codescape GNU Toolchain, MTI Bare Metal release&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;1. Подсоединяем Bus Blaster к отладочному порту&lt;/h3&gt;Подключите Bus Blaster через плоский кабель и переходник 14-на-6 контактов к разъёму JTAG платы Wi-Fire.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://raw.githubusercontent.com/wiki/sergev/ejtagproxy/images/wifire-busblaster.jpg"&gt;&lt;img src="https://raw.githubusercontent.com/wiki/sergev/ejtagproxy/images/wifire-busblaster-small.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;2. Втыкаем кабели USB&lt;/h3&gt;Подключите кабели мини-USB cables к Вашему линуксному компьютеру. Устройства должны быть видны как:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
$ lsusb&lt;br /&gt;Bus 002 Device 040: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC&lt;br /&gt;Bus 002 Device 041: ID 0403:6010 Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;h3&gt;3. Запускаем отлаживаемое приложение&lt;/h3&gt;В этом примере, мы входим в LiteBSD на PIC32 и запускаем утилиту vmstat.&lt;br /&gt;Консольный порт доступен как /dev/ttyUSB0, со скоростью 115200 бит/сек:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
$ kermit -c -l /dev/ttyUSB0 -b 115200&lt;br /&gt;&lt;br /&gt;4.4BSD-Lite (bsd.net) (console)&lt;br /&gt;&lt;br /&gt;login: root&lt;br /&gt;/root # vmstat 1&lt;br /&gt; procs --memory---  ---------page---------- disk ---faults--- --cpu---&lt;br /&gt; r b w   avm   fre  flt  re  pi  po  fr  sr sd0   in   sy  cs us sy id&lt;br /&gt; 0 0 0 12968    16  294  15  84  25   0 110 143  104  150 289 17 18 64&lt;br /&gt; 0 0 0 12972    20    8   1   4   2   0   8   3  129   19  21  0  1 99&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;h3&gt;4. Запускаем ejtagproxy&lt;/h3&gt;Создайте новое окно терминала в Линуксе и запустите в нём утилиту ejtagproxy. Она создает TCP-порт с номером 2000 и ждёт подключения отладчика GDB:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
$ ejtagproxy&lt;br /&gt;GDB proxy for Microchip PIC32 processors, Version 1.0.34&lt;br /&gt;...&lt;br /&gt;ejtagproxy: waiting on TCP port 2000&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Утилита ejtagroxy будет перенаправлять запросы от GDB через Bus Blaster к отлаживаемому микроконтроллеру PIC32.&lt;br /&gt;&lt;h3&gt;5. Стартуем отладчик GDB&lt;/h3&gt;В случае, если у Вас имеется бинарный ELF-файл Вашего приложения - используйте его при запуске GDB. Без него отладчик не будет иметь представления об именах и адресах в Вашей программе, и все имена функций будут печататься как '??'.&lt;br /&gt;&lt;br /&gt;Здесь я использую 'vmunix.elf', бинарный файл ядра LiteBSD.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
$ mips-mti-elf-gdb vmunix.elf&lt;br /&gt;GNU gdb (Codescape GNU Tools 2019.02-01 for MIPS MTI Bare Metal) 7.9.1&lt;br /&gt;...&lt;br /&gt;Reading symbols from vmunix.elf...done.&lt;br /&gt;(gdb) _&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;GDB стартовал, но пока не соединился с отлаживаемой платой.&lt;br /&gt;&lt;br /&gt;Подключимся, но сначала сообщим отладчику &amp;quot;&lt;a href="https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2"&gt;остроконечность&lt;/a&gt;&amp;quot; нашего процессора, а также количество реализованных в аппаратуре точек останова и контроля данных. Эти значения можно узнать из документации на микроконтроллер PIC32:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
(gdb) set endian little&lt;br /&gt;The target is assumed to be little endian&lt;br /&gt;(gdb) set remote hardware-breakpoint-limit 6&lt;br /&gt;(gdb) set remote hardware-watchpoint-limit 2&lt;br /&gt;(gdb) target remote localhost:2000&lt;br /&gt;Remote debugging using localhost:2000&lt;br /&gt;0x9d00197c in idle ()&lt;br /&gt;(gdb) _&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Отладчик подключился и остановил выполнение программы на процессоре PIC32.&lt;br /&gt;В окошке ejtagproxy Вы можете видеть информацию об аппаратуре:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
ejtagproxy: connected&lt;br /&gt;adapter: Dangerous Prototypes Bus Blaster, id 0403:6010&lt;br /&gt;processor: Microchip PIC32MZ2048ECG100&lt;br /&gt;processor: reset occured&lt;br /&gt;hardware: 8 breakpoints, 4 watchpoints&lt;br /&gt;oscillator: internal Fast RC&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Продолжим выполнение приложения:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
(gdb) c&lt;br /&gt;Continuing.&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Чтобы остановить программу, нажмите ^C:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
^C&lt;br /&gt;Program received signal SIGTRAP, Trace/breakpoint trap.&lt;br /&gt;0x9d00197c in idle ()&lt;br /&gt;(gdb) _&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Сделаем несколько шагов по одной машинной команде, и напечатаем текущую команду:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
(gdb) si&lt;br /&gt;0x9d000200 in _interrupt_vector ()&lt;br /&gt;(gdb) si&lt;br /&gt;0x9d000204 in _interrupt_vector ()&lt;br /&gt;(gdb) si&lt;br /&gt;0x9d000208 in _interrupt_vector ()&lt;br /&gt;(gdb) si&lt;br /&gt;0x9d000210 in _interrupt_vector ()&lt;br /&gt;(gdb) x/i $pc&lt;br /&gt;=&amp;gt; 0x9d000210 &amp;lt;_interrupt_vector+16&amp;gt;:   j   0x9d000468 &amp;lt;kern_interrupt&amp;gt;&lt;br /&gt;   0x9d000214 &amp;lt;_interrupt_vector+20&amp;gt;:   nop&lt;br /&gt;(gdb) _&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Посмотрим содержимое машинных регистров:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
(gdb) i reg&lt;br /&gt;          zero       at       v0       v1       a0       a1       a2       a3&lt;br /&gt; R0   00000000 a0000000 00000000 00004bbb c0106000 00000800 591b9a64 00000000&lt;br /&gt;            t0       t1       t2       t3       t4       t5       t6       t7&lt;br /&gt; R8   00000000 00000000 00004bbc 00000000 00000000 00000000 00000000 00000000&lt;br /&gt;            s0       s1       s2       s3       s4       s5       s6       s7&lt;br /&gt; R16  c0106000 00000001 c010e600 00000000 a0000878 c0106100 00412c9c 00410000&lt;br /&gt;            t8       t9       k0       k1       gp       sp       s8       ra&lt;br /&gt; R24  00000001 00000000 00000000 9d00197c a0000000 ffffdf00 00410000 9d00b074&lt;br /&gt;            sr       lo       hi      bad    cause       pc&lt;br /&gt;      00000003 851f6cb8 0000ce2b c010a509 40801800 9d000210&lt;br /&gt;(gdb) _&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Опять продолжим выполнение:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;
(gdb) c&lt;br /&gt;Continuing.&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;И так далее.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=600344" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:567108</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/567108.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=567108"/>
    <title>Устанавливаем Linux MIPS64 на QEMU</title>
    <published>2019-01-12T05:23:01Z</published>
    <updated>2019-01-12T20:50:54Z</updated>
    <category term="qemu"/>
    <category term="компьютерное"/>
    <category term="mips"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Процедура установки: &lt;a href="https://gist.github.com/sergev/1cb8abf6d64c63378cca1bed00bdd4d2"&gt;debian-mips64el-on-qemu&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Протокол загрузки и информация об аппаратной конфигурации: &lt;a href="https://gist.github.com/sergev/9f7b35ffffafb3c955c729b89421e9b6"&gt;protocol-debian-mips64el&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Дерево устройств: &lt;a href="https://gist.github.com/sergev/09726b0a0716377d7d89daeebcec6739"&gt;device-tree-mips64el-on-qemu&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=567108" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:552842</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/552842.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=552842"/>
    <title>FreeBSD для MIPS, недорого</title>
    <published>2018-10-19T08:03:26Z</published>
    <updated>2018-10-19T08:03:26Z</updated>
    <category term="mips"/>
    <category term="компьютерное"/>
    <category term="bsd"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Оказывается, народ уже успешно затащил операционную систему FreeBSD на плату Omega.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://onion.io/store/"&gt;&lt;img src="https://onion.io/wp-content/uploads/2017/01/o2-45-top-300x300.png" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Omega это такая миниатюрная плата для IoT с процессором MIPS 600МГц и WiFi. Как бы старший брат ESP32.&lt;br /&gt;&lt;br /&gt;Инструкция по установке здесь: &lt;a href="https://github.com/freebsd/freebsd-wifi-build/wiki/Onion-Omega"&gt;https://github.com/freebsd/freebsd-wifi-build/wiki/Onion-Omega&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=552842" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:548714</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/548714.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=548714"/>
    <title>MEOS: MIPS embedded operating system</title>
    <published>2018-09-28T01:56:42Z</published>
    <updated>2018-09-28T01:56:42Z</updated>
    <category term="mips"/>
    <dw:security>public</dw:security>
    <dw:reply-count>3</dw:reply-count>
    <content type="html">Некоторое время назад MIPS выпустил операционную систему &lt;a href="https://www.mips.com/develop/tools/codescape-mips-sdk/meos/"&gt;MEOS&lt;/a&gt; в открытое плавание со свободной лицензией типа BSD. Исходники выложены на Github: &lt;a href="https://github.com/MIPS/meos"&gt;https://github.com/MIPS/meos&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=548714" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:536205</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/536205.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=536205"/>
    <title>Компилятор GCC для nanoMIPS</title>
    <published>2018-07-10T23:51:27Z</published>
    <updated>2018-07-10T23:51:27Z</updated>
    <category term="компьютерное"/>
    <category term="mips"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Кто спрашивал про компилятор для архитектуры nanoMIPS: скачивайте отсюда.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://codescape.mips.com/components/toolchain/nanomips/2018.06-01/downloads.html"&gt;https://codescape.mips.com/components/toolchain/nanomips/2018.06-01/downloads.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=536205" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:534579</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/534579.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=534579"/>
    <title>Если Wave нападёт на NVidia, кто кого сборет?</title>
    <published>2018-06-28T18:32:19Z</published>
    <updated>2018-06-28T18:32:19Z</updated>
    <category term="компьютерное"/>
    <category term="mips"/>
    <dw:security>public</dw:security>
    <dw:reply-count>3</dw:reply-count>
    <content type="html">Статья про то, чем занимается Wave Computing (вкупе с MIPS), и чем это круче конкурентов.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.electronicdesign.com/industrial-automation/crest-wave-computing"&gt;http://www.electronicdesign.com/industrial-automation/crest-wave-computing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=534579" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:534497</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/534497.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=534497"/>
    <title>Как приспособить pickit3 для pic32prog</title>
    <published>2018-06-27T21:05:52Z</published>
    <updated>2018-06-27T21:05:52Z</updated>
    <category term="микросхемы"/>
    <category term="mips"/>
    <category term="электроника"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Появилась инструкция, как приспособить &lt;a href="http://www.microchip.com/Developmenttools/ProductDetails/PG164130"&gt;программатор PICkit3&lt;/a&gt; для утилиты &lt;a href="https://github.com/sergev/pic32prog/wiki"&gt;pic32prog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://github.com/sergev/pic32prog/wiki/Using-PICkit3"&gt;https://github.com/sergev/pic32prog/wiki/Using-PICkit3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=534497" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:530281</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/530281.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=530281"/>
    <title>Бэджик с операционной системой CP/M</title>
    <published>2018-05-16T17:35:00Z</published>
    <updated>2018-05-16T17:38:49Z</updated>
    <category term="электроника"/>
    <category term="видео"/>
    <category term="компьютерное"/>
    <category term="микросхемы"/>
    <category term="mips"/>
    <dw:security>public</dw:security>
    <dw:reply-count>4</dw:reply-count>
    <content type="html">Известный хакер (в хорошем смысле) &lt;a href="https://hackaday.io/jaromir"&gt;Яромир Сукуба&lt;/a&gt; представил на конференции в Белграде своё творение: &lt;a href="https://hackaday.io/project/80627-badge-for-hackaday-conference-2018-in-belgrade"&gt;бэдж с миниатюрным компьютером на процессоре MIPS&lt;/a&gt;, с Бейсиком и операционной системой CP/M.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://cdn.hackaday.io/images/3214151526157521380.jpg"&gt;&lt;img src="https://cdn.hackaday.io/images/3214151526157521380.jpg" width="1000" height="821" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Принципиальная схема:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://cdn.hackaday.io/images/7659081526157559025.jpg"&gt;&lt;img src="https://cdn.hackaday.io/images/7659081526157559025.jpg" width="960" height="538" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Компьютер в действии: &lt;br /&gt;&lt;br /&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/4ZOwflpJq4U?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=530281" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:518311</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/518311.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=518311"/>
    <title>В офисе</title>
    <published>2018-03-10T05:24:05Z</published>
    <updated>2018-03-10T05:24:05Z</updated>
    <category term="кремниевая долина"/>
    <category term="mips"/>
    <dw:security>public</dw:security>
    <dw:reply-count>6</dw:reply-count>
    <content type="html">Хорошо в пятницу вечером в офисе: пустота, никто не мешает работать. :)&lt;br /&gt;&lt;br /&gt;Пока &lt;a href="https://en.wikipedia.org/wiki/Dado_Banatao"&gt;большой босс&lt;/a&gt; отсутствует, можно сделать селфи около его кабинета.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://vak.dreamwidth.org/file/189747.jpg"&gt;&lt;img src="https://vak.dreamwidth.org/file/800x800/189747.jpg" title="Селфи, пока большой босс отсутствует" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Сдаём часть офиса &lt;a href="https://www.intel.com/content/www/us/en/virtual-reality/true-vr-technology-overview.html"&gt;Интелу&lt;/a&gt; в субаренду.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://vak.dreamwidth.org/file/190067.jpg"&gt;&lt;img src="https://vak.dreamwidth.org/file/800x800/190067.jpg" title="Сдаём часть офиса Интелу в субаренду" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=518311" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:511311</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/511311.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=511311"/>
    <title>GCW Zero: практические советы</title>
    <published>2018-02-06T06:55:23Z</published>
    <updated>2018-02-06T22:14:30Z</updated>
    <category term="mips"/>
    <category term="компьютерные игры"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Здесь собраны некоторые заметки по обращению с игровой приставкой &lt;a href="http://www.gcw-zero.com"&gt;GCW Zero&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://en.wikipedia.org/wiki/GCW_Zero"&gt;&lt;img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/GCW_Zero_Front.png/298px-GCW_Zero_Front.png" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Как подключить сеть Wi-Fi&lt;/strong&gt;&lt;/em&gt;. Вызывает приложение &amp;quot;Wireless&amp;quot; и настраиваем имя сети, шифрование WPA/WPA2 и пароль. После этого выбираем &amp;quot;Connect&amp;quot;. Смотрим полученный IP-адрес.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Как войти в систему через сеть&lt;/strong&gt;&lt;/em&gt;. Используем IP адрес, полученный на предыдущем шаге. Вызывает приложение &amp;quot;Network&amp;quot; и разрешаем удалённый вход для root. После этого с другой машины входим, например: ssh root@192.168.1.78. Изначально пароль root пустой, его надо сразу изменить.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Как установить обновление системы&lt;/strong&gt;&lt;/em&gt;. На странице &lt;a href="http://www.gcw-zero.com/updates"&gt;http://www.gcw-zero.com/updates&lt;/a&gt; находим ссылку на нужный файл обновления. Заходим на игровую приставку через сеть и скачиваем файл в каталог приложений:&lt;pre&gt;$ ssh root@192.168.1.78
root@192.168.1.78's password: ******
# cd /media/data/apps
# wget http://www.gcw-zero.com/files/gcw0-update-2014-08-20.opk
&lt;/pre&gt;После этого на консоли вызываем появившееся приложение &amp;quot;OS Update&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Как войти в систему через USB&lt;/strong&gt;&lt;/em&gt;. Подключаем приставку кабелем микро-USB к линуксной машине. Она автоматически подключится как сетевой интерфейс и получит адрес 10.1.1.2. Входим через ssh, например:&lt;pre&gt;ssh root@10.1.1.2
&lt;/pre&gt;Файлы можно пересылать через scp или ftp.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Как установить Debian&lt;/strong&gt;&lt;/em&gt;. Внутренней Flash-памяти 12 Гбайт вполне достаточно, чтобы запустить полноценный Debian Linux, а под ним нормальные компиляторы Си, Си++ и прочие. Заходим через Wi-Fi на приставку, скачиваем и распаковываем файл debian-stretch-mini.tgz - минимальный вариант корневой файловой системы для Debian 9 (Stretch).&lt;pre&gt;
# mkdir /media/data/debian
# cd /media/data/debian
# wget http://vak.ru/pub/unix/debian-stretch-mini.tgz
# tar xzf debian-stretch-mini.tgz&lt;/pre&gt;Стартуем среду Debian. Можно создать скрипт для удобства.&lt;pre&gt;
mount --bind /dev /media/data/debian/dev
mount --bind /proc /media/data/debian/proc
mount --bind /sys /media/data/debian/sys
HOME=/root chroot /media/data/debian /bin/bash&lt;/pre&gt;Вы оказываетесь в оболочке bash из окружения Debian. Здесь при первом запуске имеет смысл установить полезные пакеты:&lt;pre&gt;apt-get update
apt-get install locales bison byacc flex libelf-dev libfuse-dev \
build-essential make autoconf automake libtool gdb fuse man-db \
groff less ed bmake git byacc flex exuberant-ctags libfuse-dev \
bmake git byacc flex exuberant-ctags libfuse-dev dialog usbutils \
openssh-client subversion le vim gettext iputils-ping locate procps&lt;/pre&gt;Теперь у вас имеется полноценный Debian Linux, со всеми наворотами и Wi-Fi подключением к интернету. Можно скачивать, компилировать и запускать любой софт.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=511311" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2016-12-25:2601916:511087</id>
    <link rel="alternate" type="text/html" href="https://vak.dreamwidth.org/511087.html"/>
    <link rel="self" type="text/xml" href="https://vak.dreamwidth.org/data/atom/?itemid=511087"/>
    <title>GCW Zero Quick Start Guide</title>
    <published>2018-02-06T06:29:42Z</published>
    <updated>2018-02-06T06:34:39Z</updated>
    <category term="mips"/>
    <category term="компьютерные игры"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Эта инструкция для игровой консоли GCW Zero почему-то исчезла &lt;a href="http://wiki.gcw-zero.com/Quick_Start_Guide"&gt;с официального сайта&lt;/a&gt;. Сохраню её у себя, целее будет.&lt;br /&gt;&lt;br /&gt;&lt;h1 class="firstHeading" lang="en" style="background: none; font-weight: normal; margin: 0px 0px 0.1em; overflow: hidden; padding-top: 0px; padding-bottom: 0px; border-bottom: 1px solid rgb(170, 170, 170); font-size: 1.6em; line-height: 1.2em; font-family: sans-serif;"&gt;&lt;span dir="auto"&gt;Quick Start Guide&lt;/span&gt;&lt;/h1&gt;&lt;div style="font-size: 0.8em; position: relative; width: 1062.3px; line-height: 1.5em; font-family: sans-serif;"&gt;&lt;div style="font-size: 10.752px; line-height: 1.2em; margin: 0px 0px 1.4em 1em; color: rgb(125, 125, 125); width: auto;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="mw-jump" style="overflow: hidden; height: 0px; zoom: 1; margin-top: -1.4em; margin-bottom: 1.4em;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div lang="en" dir="ltr" class="mw-content-ltr" style="direction: ltr;"&gt;&lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;You just got your GCW Zero. Congratulations!&lt;/p&gt;&lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;Below you will find instructions that will help you take your first steps with the device.&lt;/p&gt;&lt;span class="cut-wrapper"&gt;&lt;span style="display: none;" id="span-cuttag___1" class="cuttag"&gt;&lt;/span&gt;&lt;b class="cut-open"&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class="cut-text"&gt;&lt;a href="https://vak.dreamwidth.org/511087.html#cutid1"&gt;Read more...&lt;/a&gt;&lt;/b&gt;&lt;b class="cut-close"&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style="display: none;" id="div-cuttag___1" aria-live="assertive"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=vak&amp;ditemid=511087" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
</feed>
