vak: (Daemon)
Serge Vakulenko ([personal profile] vak) wrote2014-10-30 09:29 pm

4.4bsd на микроконтроллере pic32

Сегодня есть повод отметить. После нескольких месяцев колдовства и шаманства операционная система 4.4BSD таки загрузилась на микроконтроллере PIC32MZ, и дошла до приглашения командной строки.
Copyright (c) 1982, 1986, 1989, 1991, 1993
	The Regents of the University of California.  All rights reserved.

4.4BSD-Lite build 91 compiled 2014-10-30
    sergev@ubuntu-sergev:Tilden/sys/compile/WIFIRE.pic32
cpu: PIC32MZ2048ECG100 rev A4, 200 MHz
oscillator: system PLL div 1:6 mult x50
real mem = 512 kbytes
avail mem = 336 kbytes
using 16 buffers containing 49152 bytes of memory
spi1 at pins sdi=F1/sdo=C1/sck=D1
spi2 at pins sdi=F0/sdo=D11/sck=G6
spi3 at pins sdi=B10/sdo=C4/sck=B14
spi4 at pins sdi=F5/sdo=G0/sck=D10
uart1 at pins rx=D14/tx=D15, interrupts 112/113/114
uart4 at pins rx=F2/tx=F8, interrupts 170/171/172, console
sd0 at port spi3, pin cs=C3
bpf: lo0 attached
sd0: type I, size 339968 kbytes, speed 12 Mbit/sec
sd0a: partition type b7, sector 2, size 204800 kbytes
sd0b: partition type b8, sector 409602, size 32768 kbytes
sd0c: partition type b7, sector 475138, size 102400 kbytes
WARNING: preposterous clock chip time -- CHECK AND RESET THE DATE!
Enter pathname of shell or RETURN for sh: 
erase ^H, kill ^U, intr ^C status ^T
Don't login as root, use the su command.
# ls
.cshrc          bin             root            u
.profile        dev             sbin            usr
COPYRIGHT       etc             tmp             var
# date
Thu Oct 30 19:02:37 PST 2014
# cal
    October 2014
 S  M Tu  W Th  F  S
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

# _

Оно пока еще страшно глючит и регулярно валится с переполнением стека ядра, но уже понятно, что жить будет.

[identity profile] b0p0h0k.livejournal.com 2014-10-31 06:43 am (UTC)(link)
Уведомляю (http://ivan-gandhi.livejournal.com/2944671.html?thread=45145247#t45145247).

[identity profile] dom3d.livejournal.com 2014-10-31 07:13 am (UTC)(link)
Непонятно, но здорово.

Сергей, на всякий случай поздравляю!

[identity profile] b0p0h0k.livejournal.com 2014-10-31 07:27 am (UTC)(link)
Кстати, да, присоединяюсь. Большая осмысленная работа.

[identity profile] dom3d.livejournal.com 2014-10-31 09:22 am (UTC)(link)
Чайник с Юниксом на борту - это круто!

[identity profile] dvv.livejournal.com 2014-10-31 01:23 pm (UTC)(link)
Шо, победит не Линукс/Андроид, а BSD/iOS?

[identity profile] 1500py470.livejournal.com 2014-10-31 03:18 pm (UTC)(link)
Победит дружба, а в конце тепловая смерть :(
Но мы этого не дождёмся, ясно солнышко раньше подведёт :)

[identity profile] sir66.livejournal.com 2014-11-03 12:20 am (UTC)(link)
Ты меня почти довел до состояния заказа платы и начала тестирования. Сразу возникает несколько вопросов и соображений. Они не конкретно по этой реализации, а вообще по ретро.

Unix на сверхлегких платформах интересен, как мне кажется, прежде всего как Unix со сверхнизким энетргопортеблением. В связи с этим вопрос достаточно ли правильно ведет себя система в ситуации когда делать нечего? Нужно чтобы она честно уходила в аппаратный сон с пробуждением по прерываниям (внешним и таймерным). Uart, соответственно, должен работать строго по прерываниям, так же как и всякие обмены в флешкой (с этим напряг, насколько я понимаю????, но можно попробовать пофиксить это дело какими нибудь аппаратными нашлепками). Отдельный вопрос что делать с USB, но на крайний случай этот интерфейс можно когда не нужно просто отключать, на микроконтроллерах это обычно не проблема.

Как вообще предполагается подключать различные внешние устройства? Большая часть современных интерфейсов (USB, bluetooth со всеми его уровнями) вообще там не представлена по причине отсутствия в момент выхода системы. В виде сериала и ethernet-а можно изобразить далеко не все.

А чем вообще объясняется крайняя прожорливость современных сиcтем по памяти. Нет шансов просто жестко порезать современные версии той же BSD дабы получить компактную систему?

Кстати, а эмулятор БЭСМ компилить и запускать не пробовал? ;)

Пока заказал себе для порядку FubarinoSD. Пусть будет.

[identity profile] sir66.livejournal.com 2014-11-04 04:21 pm (UTC)(link)
SD по прерываниям было бы очень полезным функционалом. Будем ждать с нетерпением.

А что сейчас есть в стеке USB? И можно ли его отключить когда нужно для экономии потребления?

SPI это хорошо. Там все тоже по прерываниям? А кто сейчас кроме тебя работает над RetroBSD кроме тебя?

i2c реально нужно.

А что сжирает память память в современным версиях? Все таки 16Мб это в 128 раз больше, чем 128К.

Заказывал тут:

https://www.microchipdirect.com/productsearch.aspx?Keywords=TCHIP010

Это, вроде бы то, что нужно. А какие еще есть варианты не в плане места покупки, а в плане выбора контроллера?

Ты PIC32MZ на чем отлаживаешь?

Еще вопрос про максимальную скорость, которую тянет UART и пробовал ли ты PPP? Первое что я попробую это организовать связь с другим хостом по сериалу через bluetooth Модуль (что нибудь типа HC-06) дабы попробовать получить полноценное беспроводное подключение при потреблении менее десятка миллиампер.

И как там БЭСМ6?

[identity profile] sir66.livejournal.com 2014-11-04 04:29 pm (UTC)(link)
HC-06 поддерживает на serial скорости до 1382400. Потянет RetroBSD на Fubarino SD такую скорость?

[identity profile] dmarck.livejournal.com 2014-11-01 09:51 pm (UTC)(link)
Круто. Очень.

uart работает надёжно? а шедулер? потому как если эти двое норм, то остальное уже значительно проще...