|
Mounter
|
 |
« : Maio 14, 2011, 05:39:39 » |
|
Boa tarde pessoal!
Estamos avançando o desenvolvimento do SOmBRA para termos uma futura versão de 64-bit e estamos com uma nova linha de desenvolvimento. A linha de desenvolvimento deve prosseguir da seguinte maneira: Vamos iniciar com uma versão de 64-bit do kernel e com isso passar a fazer uma documentação extensa do sistema, juntamente com um novo padrão de drivers, feito isso passaremos ao lançamento do novo site do projeto junto com tudo que foi produzido, daremos maior dedicação aos desenvolvedores interessados para que assim podemos passar a ter novos programas, além da portabilidade de vários outros programas e compiladores. Mais para frente daremos suporte a multi-processadores ou multicores através da interface SMP, assim indo para mais uma nova versão.
Atualmente estamos trabalhando encima da paginação e gerenciamento de memória do sistema, que agora irá suportar endereços de 64-bit no caso iremos utilizar 4 níveis de paginação ao que nos darão endereços de 48-bit no total sendo este um padrão da arquitetura de 64-bit atual.
Sei que muitas dessas funcionalidades podem ser demoradas para serem concluídas, mas se acompanharem o site do projeto no Google Code, poderão ver quais são as novidades em desenvolvimento!
Se alguém tiver alguma duvida ou interesse em algo do que está sendo feito, é só perguntar.
Abraço, Mounter
|
|
|
|
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #1 : Maio 18, 2011, 11:28:46 » |
|
Alguns resultados, vejam no bochs já indica que estamos em modo longo!
00041859187i[CPU0 ] WARNING: HLT instruction with IF=0! 00339520000p[XGUI ] >>PANIC<< POWER button turned off. 00339520000i[CPU0 ] CPU is in long mode (halted) 00339520000i[CPU0 ] CS.d_b = 16 bit 00339520000i[CPU0 ] SS.d_b = 32 bit 00339520000i[CPU0 ] EFER = 0x00000500 00339520000i[CPU0 ] | RAX=0000000000000000 RBX=0000000000000000 00339520000i[CPU0 ] | RCX=00000000000b8000 RDX=0000000000000018 00339520000i[CPU0 ] | RSP=0000000000106fd8 RBP=0000000000106ffc 00339520000i[CPU0 ] | RSI=0000000000054784 RDI=0000000000000021 00339520000i[CPU0 ] | R8=0000000000000000 R9=0000000000000000 00339520000i[CPU0 ] | R10=0000000000000000 R11=0000000000000000 00339520000i[CPU0 ] | R12=0000000000000000 R13=0000000000000000 00339520000i[CPU0 ] | R14=0000000000000000 R15=0000000000000000 00339520000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf 00339520000i[CPU0 ] | SEG selector base limit G D 00339520000i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D 00339520000i[CPU0 ] | CS:0008( 0001| 0| 0) 00000000 00000000 0 0 00339520000i[CPU0 ] | DS:0010( 0002| 0| 0) 00000000 20000fff 1 0 00339520000i[CPU0 ] | SS:0010( 0002| 0| 0) 00000000 ffffffff 1 1 00339520000i[CPU0 ] | ES:0010( 0002| 0| 0) 00000000 20000fff 1 0 00339520000i[CPU0 ] | FS:0010( 0002| 0| 0) 00000000 20000fff 1 0 00339520000i[CPU0 ] | GS:0010( 0002| 0| 0) 00000000 20000fff 1 0 00339520000i[CPU0 ] | MSR_FS_BASE:0000000000000000 00339520000i[CPU0 ] | MSR_GS_BASE:0000000000000000 00339520000i[CPU0 ] | RIP=000000000020004e (000000000020004e) 00339520000i[CPU0 ] | CR0=0xe0000011 CR2=0x0000000000000000 00339520000i[CPU0 ] | CR3=0x00108000 CR4=0x00000020 00339520000i[CPU0 ] 0x000000000020004e>> jmp .+0xfffffffffffffffa (0x000000000020004d) : E9FAFFFFFF
Em breve estarei portando os vários códigos feitos para o Kernel do SOmBRA atual e adaptando as estruturas do processador (IDT, IRQ's, ...)!
|
|
|
|
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #2 : Maio 26, 2011, 09:32:39 » |
|
Bom dia pessoal! Mais novas! Concluímos parte da migração do Kernel para 64-bit, mas podesse considerar que temos uns 30% do que tem a se fazer pronto, deste ponto poderemos considerar melhorias, a baixo passo a lista do que foi finalizado: - Loader ELF do kernel de 64-bit
- Startup do kernel
- GDT - Global Descriptor Table
- IDT - Interrupt Descriptor Table
- IRQs
- Correções de printf e suas variantes
- Finalizando paginação
O próximo passo é a alocação de memória e portar os drivers do sistema, chegando no ponto de portar os programas. Abraço Mounter
|
|
|
|
|
Registrado
|
|
|
|
Windowstec
OS Jr. Member

Karma: 1
Mensagens: 65
Estudante
|
 |
« Responder #3 : Maio 28, 2011, 06:43:07 » |
|
Parabéns pelo trabalho e força  _______ Neste momento estou a desenvolver um projecto para final do ano escolar e não tenho tempo para outras coisas, mas logo logo vou continuar a programação do kernel da Windowstec e ajudar em algumas coisa por aqui.
|
|
|
|
|
Registrado
|
|
|
|
|
anthony collucci
|
 |
« Responder #4 : Junho 06, 2011, 04:19:38 » |
|
Parabéns Mounter,
Voce esta ficando cada vez mais fera, seus codigos estao ano-luz na minha frente.. Eu ainda to brincando com o sd-bra
|
|
|
|
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #5 : Junho 07, 2011, 08:51:34 » |
|
E ai pessoal! Alguém tem alguma novidade que desejam que eu acrescente ao novo kernel? Estou aberto a sugestões, e poderei ver se é possível acrescentar um nova opção ou não...
E agradeço o apoio que estão me dando, estou um pouco ocupado com a faculdade, mas mês que vem todos terão mais novidades!
|
|
|
|
|
Registrado
|
|
|
|
zMad
OS Newbie
Karma: 1
Mensagens: 30
|
 |
« Responder #6 : Junho 08, 2011, 06:48:08 » |
|
Bem, eu gostaria de sugerir algo que seria bem útil... Como nos ultimos testes que fiz, o código da paginação pra mapear endereços fisicos foi meio improvisado sem checar nada que eu fiz, que isso seja implementado, porque é algo de extrema necessidade no desenvolvimento de drivers ;s Mas creio que a nova interface pra eles que você esteja fazendo venha a corrigir esse problema.
Um sistema de IPC seria legal xD
|
|
|
|
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #7 : Junho 08, 2011, 11:11:39 » |
|
A questão da paginação de memória física já estou cuidando para que fique certa desde o inicio, já a parte de IPC, é interessante e dependendo do IPC, ele se integra ao sistema de arquivos... Vou ver o que posso fazer!
|
|
|
|
|
Registrado
|
|
|
|
zMad
OS Newbie
Karma: 1
Mensagens: 30
|
 |
« Responder #8 : Junho 08, 2011, 11:31:58 » |
|
Sobre a questão do IPC sobre sistema de arquivos, é justamente isso que eu estava pensando xD pois no sombra já existe isso, eu estou querendo entender como funciona direito, que é o caso de aplicativos em userland escreverem no console através de um arquivo e ler o teclado apartir dele também, bem ala unix mesmo XD Minha idéia é implementar um micro x server.
|
|
|
|
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #9 : Junho 09, 2011, 12:17:05 » |
|
Sobre a questão do IPC sobre sistema de arquivos, é justamente isso que eu estava pensando xD pois no sombra já existe isso, eu estou querendo entender como funciona direito, que é o caso de aplicativos em userland escreverem no console através de um arquivo e ler o teclado apartir dele também, bem ala unix mesmo XD Minha idéia é implementar um micro x server.
Eu sei o que é isso, se chamam pipes, da uma olhada, tem no Windows também, no SOmBRA tem parte disso pronto, só estou para finalizar...
|
|
|
|
|
Registrado
|
|
|
|
zMad
OS Newbie
Karma: 1
Mensagens: 30
|
 |
« Responder #10 : Junho 11, 2011, 01:50:52 » |
|
Ah, aqui para mais alguns testes, eu criei um console que roda sobre o framebuffer, que são independentes... No caso, é só o driver do framebuffer registra-lo no momento da detecção... no main do kernel só chamo fbcon_init(). e pronto. Rodando dentro do kernel funciona normalmente, porém quando algum programa em modo user chama o conwrite dá problema e reinicia o sistema...
|
|
|
|
« Última modificação: Junho 11, 2011, 04:16:04 por zMad »
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #11 : Junho 11, 2011, 03:25:05 » |
|
Pode ser alguma fuga de código... Ou alguma página já sendo usada, é um pouco relativo. Tentou checar os ponteiros pra ver se não tinha fuga de memória?
|
|
|
|
|
Registrado
|
|
|
|
zMad
OS Newbie
Karma: 1
Mensagens: 30
|
 |
« Responder #12 : Junho 12, 2011, 01:53:24 » |
|
Depois eu verei isso, uma coisa que me está dando muita dor de cabeça é o driver do mouse, o que tem no sombra retorna valores totalmente errados ;S tentando escrever meu próprio driver, ele só dispara a irq quando o mouse é habilitado no bochs... EDIT: Encontrei o problema com meu driver do mouse... lendo nos forums da osdev, vi que é necessário comunicar o fim da interrupção xD Aquele: outportb(0xA0, 0x20); // eoi slave outportb(0x20, 0x20); // eoi master Bem, o driver agora está funcionando xD está até com o ponteiro se arrastando pelo framebuffer   Só falta implementar um sistema de resolução... e como pode ver, o mouse vai limpando a tela kkkkkkk
|
|
|
|
« Última modificação: Junho 12, 2011, 03:51:04 por zMad »
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #13 : Junho 13, 2011, 03:56:33 » |
|
Muito legal zMad, se poder me enviar o driver de mouse, já poderei ver como adiciona-lo... Claro que estou fazendo um sistema de drivers orientados a objeto, mas já poderia enquadra-lo no sistema!
|
|
|
|
|
Registrado
|
|
|
|
zMad
OS Newbie
Karma: 1
Mensagens: 30
|
 |
« Responder #14 : Junho 13, 2011, 11:20:42 » |
|
http://www.4shared.com/file/qo5u24pe/kerneltar.htmlAi está o source do kernel que eu alterei, incluindo o fb e o mouse... Vou implementar o fb em vesa usando o grub pra ficar mais universal, pois o driver pra fb que eu implementei foi apenas do mais simples que é o vbe do bochs...
|
|
|
|
|
Registrado
|
|
|
|
|