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 # _
Оно пока еще страшно глючит и регулярно валится с переполнением стека ядра, но уже понятно, что жить будет.
no subject
no subject
А фильмец надо будет глянуть, прикольный вроде.
no subject
Сергей, на всякий случай поздравляю!
no subject
no subject
Когда еще и сетевой стек с драйвером Wi-Fi заработают, будет вообще красота.
no subject
Это микроконтроллер, который обычно встраивают во всякие умные чайники-холодильники. Возможность запускать на нем полноценный Юникс может сильно изменить расстановку сил в новомодной области "интернета вещей".
no subject
no subject
no subject
Но мы этого не дождёмся, ясно солнышко раньше подведёт :)
no subject
no subject
Unix на сверхлегких платформах интересен, как мне кажется, прежде всего как Unix со сверхнизким энетргопортеблением. В связи с этим вопрос достаточно ли правильно ведет себя система в ситуации когда делать нечего? Нужно чтобы она честно уходила в аппаратный сон с пробуждением по прерываниям (внешним и таймерным). Uart, соответственно, должен работать строго по прерываниям, так же как и всякие обмены в флешкой (с этим напряг, насколько я понимаю????, но можно попробовать пофиксить это дело какими нибудь аппаратными нашлепками). Отдельный вопрос что делать с USB, но на крайний случай этот интерфейс можно когда не нужно просто отключать, на микроконтроллерах это обычно не проблема.
Как вообще предполагается подключать различные внешние устройства? Большая часть современных интерфейсов (USB, bluetooth со всеми его уровнями) вообще там не представлена по причине отсутствия в момент выхода системы. В виде сериала и ethernet-а можно изобразить далеко не все.
А чем вообще объясняется крайняя прожорливость современных сиcтем по памяти. Нет шансов просто жестко порезать современные версии той же BSD дабы получить компактную систему?
Кстати, а эмулятор БЭСМ компилить и запускать не пробовал? ;)
Пока заказал себе для порядку FubarinoSD. Пусть будет.
no subject
Кое-какой USB стек в RetroBSD имеется, по сути портированный из библиотек Microchip. Его можно долго до ума доводить, там куча работы.
Есть драйверы для интерфейсов SPI, GPIO и ADC. Для I2C и I2S пока никто не сделал.
Никакую из современных BSD порезать не удается. На прошлой конференции было бурное обсуждение этой проблемы. По сути, меньше чем в 16 мегабайт RAM никакая мало-мальски полезная конфигурация не лезет. И мелкими улучшениями системы уже ничего сделать нельзя. Поэтому я и начал плясать от печки - от 4.4BSD, тут хоть какой-то шанс есть.
Fubarino SD бери правильную, с процессором MX795, иначе RetroBSD не запустится. Сейчас на Ebay продается куча клонов с чипом MX440 - он не годится, памяти маловато.
no subject
А что сейчас есть в стеке USB? И можно ли его отключить когда нужно для экономии потребления?
SPI это хорошо. Там все тоже по прерываниям? А кто сейчас кроме тебя работает над RetroBSD кроме тебя?
i2c реально нужно.
А что сжирает память память в современным версиях? Все таки 16Мб это в 128 раз больше, чем 128К.
Заказывал тут:
https://www.microchipdirect.com/productsearch.aspx?Keywords=TCHIP010
Это, вроде бы то, что нужно. А какие еще есть варианты не в плане места покупки, а в плане выбора контроллера?
Ты PIC32MZ на чем отлаживаешь?
Еще вопрос про максимальную скорость, которую тянет UART и пробовал ли ты PPP? Первое что я попробую это организовать связь с другим хостом по сериалу через bluetooth Модуль (что нибудь типа HC-06) дабы попробовать получить полноценное беспроводное подключение при потреблении менее десятка миллиампер.
И как там БЭСМ6?
no subject
no subject
uart работает надёжно? а шедулер? потому как если эти двое норм, то остальное уже значительно проще...
no subject
Но шедулер надо подкручивать, однозначно. Когда памяти мало (а ее всегда мало на микроконтроллере), он регулярно впадает в спячку - замирает по таймеру, в надежде что память магическим образом откуда-то возникнет.