Кошик

Ваш кошик порожній

FAQ

Тут зібрана базова інформація, яка допоможе зрозуміти філософію rosco_m68k та уникнути типових помилок на старті.

Для кого цей комп’ютер?

rosco_m68k в першу чергу орієнтований на людей, які хочуть зрозуміти, як комп’ютер працює на низькому рівні. Це платформа для тих, хто цікавиться архітектурою комп’ютерів, boot-процесом, пам’яттю, перериваннями, а також хоче писати низькорівневий код: загрузчики, драйвери, власні ОС або системні утиліти.

Також він підійде ентузіастам ретро-комп’ютерів і тим, кому цікаво працювати з залізом без сучасної абстракції.

Чим ROSCO відрізняється від Raspberry Pi та Arduino?

rosco_m68k — це відкритий проєкт класичного комп’ютера на базі Motorola 68010. Тут є реальна адресна та data-шина, окрема пам’ять, контролери, переривання та повноцінний boot-процес. Ти працюєш із системою майже так само, як інженери працювали з комп’ютерами 80–90-х років. Це навчальний і дослідницький інструмент для розуміння того, як комп’ютер працює насправді.

Arduino — це мікроконтролер. Один чіп, всередині якого вже є RAM, Flash і периферія. Код просто компілюється й крутиться в нескінченному циклі. Пам’ять, шини та більшість апаратних деталей повністю абстраговані. Arduino ідеально підходить для датчиків, автоматики й прототипування, але майже не вчить архітектурі комп’ютерів.

Raspberry Pi — це одноплатний комп’ютер із ARM SoC, GPU, USB, мережею та готовою ОС (зазвичай Linux). Ти просто завантажуєшся з SD-карти й одразу маєш драйвери, файлову систему та користувацький простір. Це зручно для серверів, медіацентрів або прикладних задач, але більшість апаратної частини схована за багатьма шарами абстракції. Навіть GPIO працює через прошарки.

Ключова різниця така:
ROSCO — це комп’ютер у класичному розумінні, з мінімальним загрузчиком і максимальною прозорістю.
Arduino — це мікроконтролер, а не комп’ютер.
Raspberry Pi — сучасний комп’ютер, де майже все вже зроблено за тебе.

Чого ROSCO НЕ вміє і не буде вміти?

ROSCO не є і не намагається бути універсальним комп’ютером або заміною популярних плат. Є обмеження, які є принциповими.

  1. rosco_m68k не орієнтований на plug-and-play. Плата не «все-в-одному», і користувач має розуміти, що він збирає. Водночас, при правильному складанні система зазвичай стартує з першого разу.
  2. У rosco_m68k немає великої екосистеми готових бібліотек, фреймворків і туторіалів. Основними джерелами знань є офіційна документація, datasheet-и на чіпи та власні експерименти. Це свідомий компроміс.
  3. rosco_m68k не призначений для сучасних прикладних задач: вебу, мультимедіа, AI чи desktop досвіду.

Це інструмент для навчання, експериментів і хакінгу на низькому рівні, а не готове рішення з коробки.


Я зібрав ROSCO. Що робити далі?

Найлогічніший наступний крок — запустити тестові програми й переконатися, що система працює стабільно. Це дозволяє перевірити пам’ять, UART, таймери та базову логіку плати. Детальний гайд доступний у документації.

Після цього обмеження фактично одне — твоя уява.

Я все підключив, але система не стартує. Що перевірити?

Почни зі світлодіодів. Успішний запуск виглядає так:

Якщо UART-світлодіоди блимають, але немає виводу в терміналі, перевір:

  • правильність підключення RX/TX,
  • швидкість порту (має бути 38400).

Якщо не світяться LED-и RUN або RESET:

  • перевір живлення (напруга та полярність),
  • перевір орієнтацію чіпів,
  • переконайся, що немає короткого замикання.

Якщо проблема не вирішується, звернися до нас — контакти доступні тут.


Якою мовою пишеться код для rosco_m68k?

Будь-якою мовою, яка може бути скомпільована в машинний код для архітектури m68k. Найчастіше використовується асемблер (vasm) або C.

Асемблер дає повний контроль над системою без обмежень, але вимагає більше часу. C-код писати простіше, але він має обмеження, пов’язані з середовищем виконання та стандартною бібліотекою.

Чи можна запускати C-код?

Так. rosco_m68k має власний bare metal C runtime і набір стандартних бібліотек, розроблених спеціально для роботи без операційної системи. Вони надають базовий функціонал, включно з printf, роботою через UART, підтримкою SD-карти, heap-алокатором та іншими утилітами.

Важливо розуміти такі особливості:

  • це freestanding C-середовище, а не POSIX і не glibc;
  • стандартна бібліотека є мінімальною та адаптованою під bare metal;
  • динамічна памʼять (heap) реалізована через простий алокатор і має обмеження;
  • точка входу програми — kmain, а не класична main;
  • базову ініціалізацію (стек, .bss, .data) виконує startup-код, але подальший контроль над перериваннями, memory map і системною логікою лежить на розробнику.

ROSCO надає зручний старт для C коду, але не приховує низькорівневу природу системи.

Як виглядає типовий workflow запуску програми?

У спрощеному вигляді процес такий:
компіляція → передача бінарника (через Kermit або SD-карту) → загрузчик одразу запускає програму.

Як завантажити програму на rosco_m68k?

Є два основних варіанти:

  • через SD-карту,
  • через UART з використанням Kermit.

Обидва способи описані в документації.

Чи є готові приклади програм?

Так, у документації є приклади та відео-гайди.
Зверни увагу: при запуску з SD-карти файл має називатися ROSCODE1.bin, і SD-карта повинна бути відформатована в FAT32. Інакше програма не буде запущена.

Чи можна написати власну міні-ОС?

Можна. rosco_m68k цьому не заважає.
Але без досвіду в low-level і системному програмуванні це буде складно. Водночас це дуже хороший навчальний проєкт. Головне — не кинути його на півдорозі.

Чи є емулятор?

Так, існує емулятор, який дозволяє запускати та тестувати код на основному ПК без фізичного rosco_m68k. Це значно спрощує налагодження.


З чого почати, якщо я новачок у low-level?

Почни з базових речей:

  • ознайомся з архітектурою m68k,
  • прочитай документацію rosco_m68k та datasheet на основні чіпи,
  • запусти готові приклади,
  • розбери простий асемблерний код, навіть якщо плануєш писати на C.

Які прості проєкти варто реалізувати першими?

Базовий рівень:

  1. Hello World (C та ASM) — компіляція, завантаження, запуск.
  2. Hex dump — утиліта для читання й виводу пам’яті.

Середній рівень:
3. Таймер і delay без busy-loop — використання переривань.
4. Простий монітор пам’яті через UART.

Просунутий рівень:
5. Примітивний scheduler.
6. Файлова робота з SD-картою.
7. Власний boot-loader або mini-kernel.


Чи можна запустити Linux?

Теоретично так. Практично — з великими обмеженнями. Відсутність MMU та обмежені ресурси роблять можливим запуск лише uClinux або подібних систем. Це радше експеримент, ніж практичне рішення. Репозиторій uClinux і гайд доступні в документації.

Чи можна підключити Ethernet або Wi-Fi?

Можна, але з обмеженнями. Потрібно використовувати зовнішні контролери, писати або адаптувати драйвери та враховувати обмежену пропускну здатність і ресурси системи. rosco_m68k не орієнтований на мережеві задачі, але не забороняє експерименти.