Budowa własnego linuksowego komputerka

Właściwie odkąd zacząłem się bawić amatorską elektroniką moje projekty można było podzielić na dwie główne kategorie. Do pierwszej z nich należały wszelkie użyteczne konstrukcje (np. narzędzia warsztatowe, sprzęt krótkofalarski) których albo nie dało się łatwo kupić, albo były zdecydowanie za drogie. Do drugiej kategorii należą wszystkie konstrukcje będące "sztuką dla sztuki". Swoje pierwsze odbiorniki radiowe zbudowałem pomimo tego, że w domu było ich już kilka - po prostu chciałem się przekonać czy potrafię. Od tamtego czasu powstało trochę podobnych konstrukcji, m.in. komputerów retro.

Od dłuższego czasu mam w planach zbudowanie od podstaw własnego komputerka, który byłby w stanie odpalić jakiegoś Linuksa. Przez "od podstaw" rozumiem zaprojektowanie i zmontowanie płytki, a także napisanie/przeportowanie niskopoziomowych komponentów umożliwiających uruchomienie systemu.

Chodzą mi tutaj po głowie dwie możliwe koncepcje:

1) Wykorzystanie któregoś z procesorów z serii 68k, posiadających MMU. Niskie taktowanie powinno ułatwić projektowanie płytki, a logikę w znacznej mierze można by ogarnąć za pomocą CPLD. Pewnie jakiegoś Linuksa dałoby się na tym odpalić w trybie tekstowym, tyle tylko, że chodziłby wolno. Kolejną zaletą byłaby prostota montażu - zwłaszcza jeśli płytki zamawiałoby się w Chinach. 2) Coś nieco bardziej współczesnego. Tutaj myślę o wykorzystaniu któregoś ze współczesnych układów MCU/SoC wyposażonych w zewnętrzną magistralę oraz MMU, np. PIC32MZ, MT7688, Allwinner A13 czy STM32MP1, ewentualnie coś starszego, jak AT91SAM9.

No i właśnie w tym drugim przypadku zaprojektowanie tego będzie nieco trudniejsze. Odpada stosowanie płytek produkowanych domową metodą, a łącząc pamięć DDR z układem trzeba pilnować sposobu prowadzenia ścieżek. Do tego dochodzi jeszcze kwestia lutowania elementów w obudowach BGA albo chociażby dwurzędowych QFN.

Czy ktoś mógłby mi polecić jakieś dobre materiały edukacyjne (książki, tutoriale z sieci) poświęcone zagadnieniu projektowania płytek pod takie układy? Chciałbym się nieco doszkolić w tej materii.

Czy w domowych warunkach można poprawnie przylutować element BGA za pomocą hot aira, szczególnie bez stosowania solderpasty i matrycy do jej nakładania? Czy też powinienem raczej celować w elementy TQFP/LQFP?

Reply to
Atlantis
Loading thread data ...

niedziela, 29 maja 2022 o 11:15:00 UTC+2 Atlantis napisał(a):

Najpierw zrób najkrótszą listę tego, co Linux potrzebuje do działania. CPU i RAM na pewno (MMU niekoniecznie). ROM do bootowania. Coś (może być ROM) na obraz kernela i initrd, ew. coś większego na rootfs. Na pewno jakiś timer generujący przerwanie. No i port szeregowy dla najprostszej konsoli - ew. do SLIP/PPP, lub coś innego, co prześle TCP/IP. Chyba że chcesz zrobić X-Terminal.

If you want to make apple pie (or linux computer) from scratch, you first have to create an universe...

Reply to
Dawid Rutkowski

Jeśli cel edukacyjny, to ok.

Jesli praktyczny - to nie. Bierz Pi Zero.

Współczesne linuxy odpalają się cała wieczność na wolnych procesorach.

Zajedziesz się ilością pinów, powolnością, brakiem wsparcia.

BGA można na spokojnie lutować domowo robię to bez większych problemów. Współcześnie masz sito do konkretngo scalaka i pastę. W efekcie da się "postawić kulki" w 30 sekund. Problemem jest sito: tanie są tylko do popularnych elementów.

Problem w tym, że większe BGA wymagają podgrzewania wstępnego, wiec ogólnie musisz mieć kilka dodatkowych urządzeń i zabawa jest droga.

Ale tak, układy BGA lutuje się amatorsko używajac hotair i kilku gadżetów.

Tylko po co ;)

Koszt PCB pod BGA będzie wysoki.

Reply to
heby

Allwinner V3s ale to raczej sztuka dla sztuki bo on ma wszystko na pokładzie.

c.

Reply to
Cezar

Atlantis snipped-for-privacy@wp.pl napisał(a):

Myślę, że lepsza będzie właśnie powyższa droga skoro nie chodzi o komputer retro.

I dobrze że odpada, bo jest sztuką dla sztuki i tylko utrudnia życie. Jeśli nie chodzi o szybkie proste prototypy, potrzebne na już, to zamawiasz płytki w PCBWay lub JLCPCB i po problemie.

A musi być zewnętrzna pamięć?

formatting link

Reply to
Grzegorz Niemirowski

niedziela, 29 maja 2022 o 04:15:00 UTC-5 Atlantis napisał(a):

Szukaj prostych platform z tym co ci potrzeba.Albo wogole zacznij od rozgrzebania co jest w raspberry zero i jej dystrybucji. Jak ją okropisz do prostego commandline bez zadnych innych zaleznosci to bedziesz miec pojecie co i jak po kolei sie tam odbywa przy bootowaniu. Nastepnie okroisz kernel aby wyrzucic wszystko to co ci nie jest niezbedne tak aby dostac to co uwazasz za esencje/podstawe.

I stad jus prosciej do jakiegos popularnego nieskomplikowanego cpu przejsc.

Mozesz poszukac projektow linuxow bootujacych ponizej sekundy. Tam cos mozesz napasowac. Ale raczej nie bedzie to takie gole jak opisujesz. Wiec i tak skonczysz na wycinaniu tego co niepotrzebne.

Reply to
ptoki

Tak, wiem. Jednak mimo wszystko chciałbym celować w pełnego Linuksa z systemem ochrony pamięci, nie uproszczone wersje pod mikrokontrolery.

Pewnie wykorzystam kartę SD i ewentualnie jakąś pamięć Flash na SPI.

Łączność sieciową na pewno będę chciał dodać, bo głupio byłoby nie wykorzystać interfejsu Ethernet, który jest obecny właściwie we wszystkich współczesnych układach MCU/SoC. Pewne doświadczenie w tej materii już mam - udawało mi się odpalić FastEthernet z zewnętrznym PHY na samodzielnie trawionych płytkach (układy PIC32 i STM32). Więc ta kwestia nie powinna generować specjalnych problemów.

Oczywiście na początku będę chciał odpalić terminal przez UART. W dalszej kolejności mógłbym pomyśleć o dodaniu jakiegoś interfejsu klawiatury, wyjścia wideo i/lub wyświetlacza.

Reply to
Atlantis

na samodzielnie zbudowanym komputerze z 68k. Czysto edukacyjny projekt.

AT91SAM9).

Reply to
Atlantis

linia 68k nie jest juz martwa?

Niekoniecznie. W koncu kiedys przeciez takie te komputery byly. Czy od tego czasu linux sie rozbudowal w warstwie "niegraficznej" ?

Jakos sensownie, to byloby na ARM zrobic, i to na ARM64 :-)

A dalszy etap tej sensownosci to np Raspberry :-(

J.

Reply to
J.F

J.F <jfox snipped-for-privacy@poczta.onet.pl> napisał(a):

Przykładowo w wielu dystrybucjach pojawiło się (nie)sławne systemd :)

Reply to
Grzegorz Niemirowski

Mimo, że to "zwykła obudowa SMD" bardzo cięzko jest zadowolić wszystkie linie zasilania na dwustronnym PCB. Te procesory nie są tak wygodne, jak się wydaje.

PCB o większej niż 2 warstwy ma skokowy i bolesny kosz wykonania. Dodatkowo tani producenci z chin mają precyzje na granicy sensu zabawy z BGA. Możesz walczyć, ale tylko strzegam. Moje dwa prototypy z BGA nie nadawały się nawet do prototypowania - jedna z przelotek była uszkodzona (pod BGA własnie) i miałem zwarcie padu do ścieżki w innej płyce oraz przemieszczoną soldermaskę przez co lutownie było dramatem. Tutaj nie da się raczej oszczędzić, więc licz się z wiekszymi kosztami, choć może będziesz miał szczęscie.

To nie jest problematyczne, tylko trzeba wiecej wydać na start. Niewątpliwie pouczajace.

Nie lepiej się zatrudnić w stosownej firmie ;) ?

Reply to
heby

Procesory oczywiście od dawna nie są produkowane (chociaż z tego co kojarzę fani Amigi ostatnio zaczęli tworzyć szybkie "dopałki" oparte na FPGA), jednak w tym wypadku nie chodziłoby o stworzenie czegoś, co mogłoby w jakimkolwiek stopniu konkurować ze współczesnymi SBC. Chodziłoby po prostu o cel dydaktyczny. Normalnych wydań mainstreamowych dystrybucji Linuksa na tę architekturę pewnie nie ma, ale coś się znajdzie - widziałem już w sieci kilka projektów komputerków na 68k, które odpalały bodajże Debiana. Być może nie najnowszego, ale jednak.

Zdaję sobie z tego sprawę. Widziałem jak Linuks działa na komputerach

68k budowanych przez pasjonatów. Samo uruchomienie systemu zajmuje długi minuty, podobnie jak negocjacja połączenia SSH. ;)

Obawiam się, że ciężko będzie znaleźć układ ARM64, do którego łatwo dałoby się zaprojektować płytkę (szczególnie dwuwarstwową) i przylutować go w domowych warunkach. Szczególnie jeśli mowa o pierwszym tego typu projekcie. Przy tych prędkościach magistral to już trochę wyższa szkoła jazdy.

Na szczęście Linux na komputerach jednopłytkowych może przybierać różne formy. Z jednej strony mamy wielordzeniowe ARM-y mogące już w niektórych zastosowaniach zastąpić desktopa, z drugiej są proste płytki na jednordzeniowych MIPS-ach czy ARM-ach taktowanych mocno poniżej 1GHz.

Reply to
Atlantis

Osobiście uruchomiłem Linuxa na pic32mz DA z wbudowanym 32MB DDR ram. Płytki nie lutowałem (skorzystałem z microchiopowego zestawu developerskiego dla MZ DA) ale ten mcu jest w opakowaniu QFP więc zdatne do lutowania warsztatowego no i nie potrzebuje extra zewnętrznych komponentów jak pamięć DDR (choć może obsługiwać do

128MB zew. DDR jeśli mnie pamięć nie myli). Co ciekawe oryginalna płytka deweloperska to tak na prawdę dwie płytki na kanapkę jedna to płytka z mcu+kondensatory z jakimś mini złączem goldpin z drugą, na której są gniazda ethernet, phy USB i drugi mcu 24F (już nie pamiętam po co on, nie używałem). Wygląda na to, że produkują ten mcu na takiej płytce ze złączem ale nie udało mi się tego namierzyć osobno. Co do Linuxa, żeby był używalny i w miarę responsywny to trzeba znaleźć najstarszą dostępną dystrybucję z binarami dla mips'a (najlepiej z lat 90) i z tego zrobić rootfs, współczesne zżerają na start zbyt dużo z tych 32MB, mają zbyt skomplikowany boot (dużo skryptów, wolny boot). Popularny też jest soc allwinner - też qfp, sporo jest DIY schematów w sieci z tym soc'em.

Polecam stronę

formatting link
kompedium wiedzy od przeglądu soc'ow dla zastosowań DIY do wskazówek jak prawidłowo zaprojektować płytkę do soc'a/DDR.

Reply to
Marek

Podejrzewam, że tego zestawu deweloperskiego i tak nie będzie się dało obecnie kupić, a na pewno nie za rozsądne pieniądze. Tymczasem pojedyncze egzemplarze PIC32MZ z MMU kupiłem jakiś czas temu. Kilka innych układów potencjalnie nadających się do uruchomienia Linuksa też mam pod ręką. :) No i jednak korzystanie z gotowego zestawu deweloperskiego wyklucza jeden z najważniejszych elementów dydaktycznych przewidzianych w tym projekcie - nauczenie się czegoś nowego w dziedzinie projektowania PCB. :)

Te układy PIC32MZ które posiadam mają zaledwie 256kB wbudowanej pamięci RAM i pozwalają na podłączenie 32MB zewnętrznej pamięci DDR2.

Może jakiś OpenWRT by się tutaj sprawdził? W końcu ta dystrybucja była robiona z myślą o routerach, które niekiedy posiadały bardzo ograniczone zasoby sprzętowe i bardzo często pracowały właśnie na architekturze MIPS.

Dzięki. Może się przydać. :)

Reply to
Atlantis

Bo te 256kB to sram a nie DDR. Nawet jesli jest MZ z wewnętrznym DDR to nie jest on dostępny tak od razu, trzeba go prawidłowo zainicjować/skonfigurować przed użyciem, stąd MZ botujesz zawsze z użyciem SRAM, konfigurujesz DDR i dopiero można ładować kernel do DDR (te funkcje robi U-Boot, który musisz ręcznie wyrzeźbić). Generalnie z tego co pamiętam by uruchomić Linuxa na MZ to było konkretne rzeźbienie, najpierw trzeba było znaleźć odpowiedniego uboota, skonfigurować go i skompilować do hexa. Potem skompilować kernel Linuxa ze wsparciem dla mzda. Wgrać hexa z ubootem, potem wskazać obraz kernela do załadowania (chyba w moim przypadku to był pendrive USB) + rootfs. Projekt z Linuxem na MZ porzuciłem z kilku powodów: pierwszy taki, że wtedy były MZDA z jakimś bugiem w DDR, wg erraty DDR mogło nie (za)działać poniżej 0C (nie wiem czy to poprawiono w kolejnych rewizjach). Drugi to taki, że podobno mcu/soc'e z wewnętrznym DDR są nietrwałe, bo pamięć DDR się degraduje i po latach masz cały mcu do wymiany a nie tylko kość pamięci, co w efekcie dyskwalifikowało ten uklad do przewidzianych zastosowań. Ale do nauki i wrzucenia potem do szuflady nadaje się wyśmienicie :-)

Reply to
Marek

To może hardcorowo podejdź do tematu i weź motorolę 68000 :) z Amigi właśnie:) całe 7MHz:) ale w drukarkach były używane bodaj 10 lub 14

Montaż przewlekany - polutujesz lutolą ;)

Reply to
sirapacz

Model 68000 nie miał chyba MMU i dlatego nie można na nim uruchomić normalnego Linuksa. Gdyby ni ta kwestia, to w sumie można by to zrobić jeszcze prościej - za pomocą 68008 z ośmiobitową szyną danych. ;)

Reply to
Atlantis

Można mu było dać zewnętrzny MMU. Tylko z powodu błędów nie da się zrobić pamięci wirtualnej - trzeba wziąć 68010 albo wyżej (dopiero 68030 miał wbudowane MMU). Chyba że weźmie się dwa 68000, jak w apollo computer - co za kolesie...

Reply to
Dawid Rutkowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.