Page 1 of 2
Showing Hardware Specification by Assembly
Posted: Wed Apr 02, 2008 8:53 am
by steward
Hi,
I want to write an os that show hardware specification.in a table.
ofcourse before this i have a bootloader.
if it is possible please guide me to write this os.
thx
Posted: Wed Apr 02, 2008 8:58 am
by AJ
This is a really unspecific question.
Do you already have an idea how to write a general OS? If not - you need to read the intel manuals, see the wiki and see osdever.net and do lots of research first. Can you even program?
What hardware do you want to display information for?
What information do you want to display for each device?
How do you want information displayed - do you want some kind of TUI/GUI?
Are you wanting a simple PCI listing, or do you want specific info for each device - in which case you will also need drivers for each device?
Cheers,
Adam
Thx for reply
Posted: Wed Apr 02, 2008 9:01 am
by steward
Now you can see the sample that i have prepared
Posted: Wed Apr 02, 2008 11:04 am
by Pitchu
Aj is correct.
Further, this is file info not hardware.
Posted: Wed Apr 02, 2008 12:15 pm
by lukem95
Easiest method to do this? realmode with a TUI i guess.
you should write a list of all the devices you want, and then look into how to detect these. Although something like SMBIOS might be an easier method... there is a wiki page on SMBIOS
Posted: Wed Apr 02, 2008 1:17 pm
by steward
I mean Like this pic
(reattaching the same file is a waste of space - Combuster)
Posted: Wed Apr 02, 2008 4:39 pm
by Combuster
You've just posted the same question again.
Linked from the rules:
Required Knowledge
If you think you can skip this, it's probably just for you.
Writing an OS is not a beginner's task. In fact, writing an OS is considered the most difficult programming task by many people. You will need to have developed your programming skills to an above average level before considering the task. Failure to comply will make you look silly. Some things you will need to know are:
* Basic Computer Science: You'll need to know hexadecimal, binary and boolean logic (at least!) inside out. It doesn't matter if you are self-taught. Rest assured, you will need it.
* Assembly: You should have knowledge about the low-level language Assembly. Read a book. Take a course at school. At least read some tutorials, and write some code. You WILL need it, even if you plan to write most of your operating system in another language.
* C / C++: Most of the operating systems featured on this site are written in C (or C++), and a good understanding of this is required. Even if you choose to use another language like FreeBASIC or Pascal, code on the Internet is almost always in C (which can be considered the lingua franca of programming).
* Programming experience: Learning a language with OS development is considered a bad idea. You should know the language in which you will be developing inside out, which means you should have written quite a few programs in that language successfully.
* Linux / UNIX experience: You will soon notice that many of the tools used in OS development are developed for Linux, and later ported over to Windows. The Linux kernel is often used as an example, and many of the hobby operating systems have some resemblance to Linux. Having installed Linux and played around with the command line is barely a minimum.
* Your Toolchain: You must know the behavioural details of your compiler, assembler, linker, and make utility. Read the documentation of the tools you use. Rest assured that the people on the forum have possibly answered any possible beginner's question about GCC, GNU as, NASM, GNU ld, and GRUB twice over. Asking them again would be an invitation for trouble.
* Exectuable Formats: Kernel space programming has many additional requirements unknown to application development. Make yourself familiar with Executable File Types and their internal structure. Learn about linker scripting and about how your linker generates "flat binary" files.
* The platform: You should have studied the manuals for the processor you will be programming for. They contain the information you need to design your kernel in the first place. Asking for information that is contained in these documents will only give cause to the hostile "Read The (...) Manual", or simply RTFM.
and
The first thing to understand is that hackers actually like hard problems and good, thought-provoking questions about them. If we didn't, we wouldn't be here. If you give us an interesting question to chew on we'll be grateful to you; good questions are a stimulus and a gift. Good questions help us develop our understanding, and often reveal problems we might not have noticed or thought about otherwise. Among hackers, “Good question!â€
Help
Posted: Thu Apr 03, 2008 8:22 pm
by steward
hi,
Really i should make a boot disk that at first sector be a bootloader then at second sector be an os that show the hardware specification in which you can see after POST in a table.can you help me?
thx
Posted: Fri Apr 04, 2008 1:46 am
by AJ
AJ wrote:Do you already have an idea how to write a general OS? If not - you need to read the intel manuals, see the wiki and see osdever.net and do lots of research first. Can you even program?
What hardware do you want to display information for?
What information do you want to display for each device?
How do you want information displayed - do you want some kind of TUI/GUI?
Are you wanting a simple PCI listing, or do you want specific info for each device - in which case you will also need drivers for each device?
Cheers,
AJ
Posted: Fri Apr 04, 2008 2:33 am
by steward
For example after POST and before the booting of windows and before its logo comes you can see some of your hardware.dont u see?
Posted: Fri Apr 04, 2008 2:41 am
by AJ
Yes, I see.
The problem is your question is extremely general. You seem to want a PCI device listing. Have a look on the wiki for information on the PCI bus. You will also need to read the PCI specification. That can be found
> here <.
This will allow you to obtain
basic information about the PCI device. You will also need a list which converts PCI device ID's and vendor ID's to ASCII strings. There are several headers available for download, which you can find by googling.
If, however, you have no concept of basic OS development, you need to read up on that first, hence my first question above.
Basically, try writing your OS. When you hit a specific problem, search for how to solve it on the wiki and the web. If you cannot find the answer to that
specific question, ask it here.
Cheers,
Adam
Posted: Fri Apr 04, 2008 3:53 am
by jal
AJ wrote:The problem is your question is extremely general. You seem to want a PCI device listing.
Given that he wants to display the model of his RAM chips, I guess he wants even more than that. I don't think it's even possible to detect that without very chipset specific driver code?
JAL
Posted: Fri Apr 04, 2008 3:57 am
by zaleschiemilgabriel
I have a question regarding this, if anyone cares to answer: Is PCI (and all of it's versions, like PCI Express) the ultimate way of detecting devices? I mean, now that ISA is not implemented in personal computers anymore, can PCI be used to detect absolutely every device that can be controlled by an OS? Is it supposed to be the ultimate standard for identifying devices? I know that there are other ways to identify devices, like ACPI, but is PCI enough, and does it detect everything that ACPI detects? If not, then to provide complete device enumeration, do you have to use both ACPI and PCI, or would ACPI be enough? Does ACPI depend on PCI?
Well, I said I had A question, but there turned out to be than one...
If you have any links to info about how ACPI relates to PCI, other than the main ACPI spec...
Thanks,
Gabriel
Posted: Fri Apr 04, 2008 4:05 am
by Combuster
It isn't. Modern computers still come with legacy components. think, PIT, PIC, KBC, RTC. I haven't seen IOAPICs in the PCI listing either.
Then there's everything connected down an USB bus. You can see the controller on PCI, but not the devices connected.
Posted: Fri Apr 04, 2008 4:05 am
by ucosty