Ostatnie wiadomości

Strony: 1 2 3 [4] 5 6 7
31
Asembler / Odp: Propozycja współpracy
« Ostatnia wiadomość wysłana przez devport dnia Listopad 19, 2013, 21:59:53 »
Rozumiem,
ale niechaj każdy za są wizją podąża, a może któremuś się coś fajnego uda :)
Mi podoba się wizja rodem BareMetal OS (http://www.returninfinity.com)
Co do Assembler'a myślałem kiedyś o stworzeniu IDE z pewnymi dogodnościami...
Co by w komentarzach asma pisał bloki (zrozumiałe przez edytor).
32
Asembler / Odp: Propozycja współpracy
« Ostatnia wiadomość wysłana przez Nevar dnia Listopad 19, 2013, 16:28:37 »
ASM jest ciężki do utrzymania na dłuższą metę. Wiem to z własnego doświadczenia bo po przerwie kilku miesięcznej nic nie rozumiałem z kodu. W tym sensie, że za dużo jest kodu względem treści. Przez ostatni rok udało mi się trochę podszkolić i docenić programowanie obiektowe.
Dlatego też cały czas staram się obadać jak można napisać kernel w C++ i to nawet najwcześniej jak tylko się da. Dodatkowo kombinuje cały czas z ARMami. Chciał bym skompletować jakieś proste środowisko do kompilacji ARM/x86+qemu+cmake i odpowiednie toolchainy.
Obecnie jestem na etapie implementowania wsparcia dla operatorów C++ i wołania konstruktorów itp, ale to jest do do zrobienia.

Najważniejsze zostają jak zwykle nie sprecyzowane założenia co do samego systemu itp. :P
33
Asembler / Odp: Propozycja współpracy
« Ostatnia wiadomość wysłana przez devport dnia Listopad 19, 2013, 14:01:30 »
Hej, myślę, że nadal było by fajnie wziąć się za ten projekt... (mikro jądro w ASM).
Sam staram się coś tam rzeźbić :) ale kiepsko mi wychodzi (mało strasznie czasu... rodzinka itp.)
Ale myślę o tym dość intensywnie :P
Jajko z obsługą fat12 (początek, później fat32) i reszta to ładowne z plików jako moduły.
Pożyjemy zobaczymy :D
34
Asembler / Bootsector FAT16 dla dysku twardego IDE0 Master (32, 64 bit)
« Ostatnia wiadomość wysłana przez akasei dnia Listopad 15, 2013, 01:43:42 »
Totalna aktualizacja!

Prezentuje teraz dwa sektory rozruchowe 32bit i 64bit.

Wersja 32bit: http://wataha.net/system/32bit/
Wersja 64bit: http://wataha.net/system/64bit/

Rzuty ekranu z przykładu działania:
- http://wataha.net/system/32bit/32bit.png
- http://wataha.net/system/64bit/64bit.png

Bootsector i program GRUB ładuje plik o nazwie KERNEL znajdujący się w głównym katalogu systemu plików FAT 16 do pamięci pod adres 0x100000 (pierwszy mebibajt pamięci)

Aby załadować własny plik jądra 32 lub 64 bitowego, w przypadku systemu operacyjnego Windows należy wykorzystać darmowe oprogramowanie np. OSFMount http://www.osforensics.com/tools/mount-disk-images.html.

Jeśli chodzi o systemy GNU/Linux, osoby z niego korzystające już wiedzą jak to zrobić 8)

Konfiguracja programu do wirtualizacji (np Bochs) powinna być ustawiona na minimum 2 MiB pamięci RAM (standardowo Bochs ustawia 32 MiB).

Nic teraz nie stoi na przeszkodzie do pisania własnego jądra w samym C, C++ itp.

Jakakolwiek modyfikacja pliku GRUB z załączonego dysku, może być wynikiem nieprawidłowego działania sektora rozruchowego.

Przykładowe 64 bitowe jądro w języku asemblera ;)
[BITS 64] ; kod 64 bitowy
[ORG 100000h] ; pierwszy mebibajt pamięci

mov rsi, powitanie
call wypisz_tekst_64bit

jmp $ ; koniec programu

; prodstawowe procedury obsługi ekranu
%include "wypisz 64bit.asm"

powitanie db 'Witaj w 64 bitowym jajku!', 0

Błąd 0x00:
Brak pętli w przygotowywaniu stronicowania ograniczał rozmiar ładowanego jądra systemu do 960 KiB (0x100000 - tablice ACPI). Stronicowane było tylko pierwsze 2 MiB pamięci.
Naprawa 0x00:
Stronicowana jest pamięć 64 MiB, dwukrotnie większy rozmiar pamięci, niż możliwy rozmiar jądra na załączonym obrazie dysku. (Twoje jądro systemu jest większe niż wirtualny dysk? Wiedz, że coś się dzieje!  :o)

Jakiekolwiek problemy z działaniem, proszę zgłaszać poniżej.
35
Asembler / Odp: Propozycja współpracy
« Ostatnia wiadomość wysłana przez Nevar dnia Sierpień 26, 2013, 00:14:13 »
Wiadomo, że na początku bez asm się nie obejdzie. Miałem zamiar podzielić kernela na dwie części i pierwszą napisać w C, a drugą w C++. Ta część C++ miała by być w miarę możliwości na takim poziomie niezależnym od sprzętu.

O racja zapomniałem o kanale IRC, postaram się tam wpadać częściej.
36
Asembler / Odp: Bootsector FAT12 dyskietka 1,44 MiB
« Ostatnia wiadomość wysłana przez mangado dnia Maj 12, 2013, 10:14:58 »
pozostało:
- sterownik stacji dyskietek
- operacja wyszukania i załadowania pliku KERNEL (jądra) do obszaru 1 MiB+

ee to tylko ster do fdd w trybie chronionym... :P
i tylko FAT12... no ten chyba będzie prosty bo jajko pewnie będzie w katalogu głównym...

A w jajeczku będzie do zrobienia stronicowanie, managior pamięci, obsługa klawierki, myyyszki, obsługa dysków twardych.
Aaaa, jeszcze kłania się APIC! :D
37
Asembler / Bootsector FAT12 dyskietka 1,44 MiB
« Ostatnia wiadomość wysłana przez akasei dnia Maj 02, 2013, 15:26:01 »
Napisałem sektor rozruchowy dla nośnika jakim jest dyskietka 3,5" wykorzystując system plików FAT12.

Poniżej zamieszczam pliki do pobrania obrazu dyskietki z w pełni działającym egzemplarzem oraz przykładowym plikiem, który zostanie załadowany przez sektor rozruchowy.

Obraz dystkietki:
http://wataha.net/system/boot/obraz%20dyskietki%20z%20sektorem%20rozruchowym%20fat12.img
Sektor rozruchowy FAT12:
http://wataha.net/system/boot/sektor%20rozruchowy%20fat12.bin
Plik GRUB:
http://wataha.net/system/boot/GRUB

Plik "obraz dyskietki z sektorem rozruchowym fat12.img" możemy uruchomić w oprogramowaniu Bochs, VirtualBox lub Qemu. Jest to czysty system plików + załadowany 'sektor rozruchowy.bin' + skopiowany plik 'GRUB'

Sektor rozruchowy ładuje plik znajdujący się w głównym katalogu systemu plików o nazwie GRUB (nazwa nie jest przypadkowa). Maksymalna dozwolona wielkość pliku GRUB to 475,5 KiB, uzależnione od miejsca w które sektor rozruchowy załaduje plik do pamięci (0x0000:0x9000).

Jestem całkowicie pewien, że ponad 475 KiB w pełni wystarczy na napisanie własnego oprogramowania do skonfigurowania GDT, włączenia linii A20, przełączenia procesora w tryb chroniony oraz załadowanie jądra w miejsce 1 MiB+

PS: Nie działa prawidłowo przycisk URL z panelu pisania postów.

Poprawka 0x1 (1 Maja 2013):
Błąd w sektorze rozruchowym uniemożliwiał załadowanie pliku GRUB większego niż 512 Bajtów. Procedura zapisująca odczytany sektor w 0x0900:0x0000 nie zwiększała segmentu o 200h po umieszczeniu pierwszej partii danych w pamięci. Wynikiem był załadowany ostatni tylko sektor pliku GRUB pod adres 0x0900:0x0000. Naprawione.

Adnotacja 0x01 (2 Maja 2013):
Postęp prac nad plikiem rozruchowym GRUB:
    - odblokowanie linii a20
    - konfiguracja globalnej tablicy deskryptorów (base: 0, limit: 4 GiB, DPL: 0
[kod/dane])
- przełączenie procesora w tryb chroniony
- wyświetlenie informacji o przebiegu prac w trybie rzeczywistym i chronionym[/list]

Adnotacja 0x02 (7 Maja 2013):
Postęp prac nad plikiem rozruchowym GRUB:
    - konfiguracja tablicy deskryptorów przerwań (otrzymane wsparcie w poszukiwaniu błędu przez "mangado" IRC: freenode.net kanał: #osdev.pl)
    - konfiguracja przerwań sprzętowych (stacja dyskietek)
    - przeadresowanie przerwań sprzętowych IRQ0-15 do tablicy deskryptorów w miejsce 0x20h - 0x2F
pozostało:
    - sterownik stacji dyskietek
    - operacja wyszukania i załadowania pliku KERNEL (jądra) do obszaru 1 MiB+
38
Asembler / Odp: Propozycja współpracy
« Ostatnia wiadomość wysłana przez mangado dnia Kwiecień 24, 2013, 00:25:01 »
Ja cie Nevar zam..uje!
Czyżby jednak witamina C++?
:D :D :D

No ale... jednak...
Do jajka to nie obędzie się bez domieszki assemblerowej...
Na samej wytaminie to nie pojadymy! :P

A tak poza tym!

kajman, flipflop, Nevar, meldować się na  irc.freenode.net w kanalizacji #osdev.pl!!!
MAĆ!!!
39
Asembler / Odp: Propozycja współpracy
« Ostatnia wiadomość wysłana przez Nevar dnia Kwiecień 12, 2013, 00:42:15 »
Ogłoszenie jest jeszcze aktualne. Pomysł jednak nieznacznie się zmienił i teraz mam zamiar programować system głównie w języku C. Więcej informacji udzielam bezpośrednio na mailu.
40
Asembler / Odp: Propozycja współpracy
« Ostatnia wiadomość wysłana przez kajman dnia Kwiecień 05, 2013, 17:00:48 »
Witam, nie wiem czy to jeszcze aktualne, ale również chciał bym się włączyć do współpracy. W asemblerze mam nie wielkie doświadczenie ale, czuje że zostanę przy nim na dłużej, interesuje mnie głównie programowanie sterowników i inżynieria wsteczna. Znam też inne języki programowania, takie jak C czy Pascal. Dodam jeszcze że mam sporą wiedzę o użytkowaniu systemu Linux. Na odp. czekam w poście lub e-mailem.
Strony: 1 2 3 [4] 5 6 7