ali hagigat wrote:
At least you could update Wiki pages to state this fact clearly to stop people waste money.
I doubt we can keep the world from making bad decisions and seeking the fault in others by just putting a few words in a wiki.
Many may make this mistake because nobody can study Intel documents in details to know that there is unexplained parts in the manual before even getting a board. Now I have made it clear, before i do not think even one person mentioned the issue.
I have personally talked about this on many occasions, in several presentations which were recorded and are now linked to from the wiki, on the mailing list and in the IRC channel in previous discussions, and finally whenever I discuss documentation aspects with anyone in person at what is by now numerous occasions where I've shown coreboot at open source exhibitions.
I believe "the issue" that you refer to is that working with code on the firmware level requires specific information about the hardware.
As was pointed out, this is not a fact which coreboot decides over, it's up to the vendors of CPUs and chipsets, ie. electronic components.
Anyone with a background in the electronics industry will know that 20-30 years ago (or even more recent) vendors were very proud to publish documentation about their products, as a way to demonstrate their capabilities and benefits over their competition.
Some companies still do. Looking at the market for individual simpler ICs you will find that most vendors publish great datasheets for their components. I spent some time evaluating different AD and DA converters from one such company yesterday.
The world of PC components was similar, but the trend is that more and more of the inner workings of PCs are becoming too complex for many to dare to publish information, without the NDAs.
I understand that this fact is completely unknown to someone who is new to the electronics field in general or the PC electronics field in particular.
However, coreboot does have a lot of documentation (maybe too much) and the participants are extraordinarily helpful to those who are interested and willing to learn about this wonderful world.
The wiki does have a page with links to datasheets. The page is called Datasheets. It's here: http://www.coreboot.org/Datasheets
In your reading of the wiki I am sure that you've come across this page. As you may have noticed, there are almost no links to Intel components at all on that page. The majority of documentation is about AMD components, with VIA coming in as number two. There are also links to datasheets for various smaller superio components.
I think this should have been a clue to you that all vendors do not have exactly the same policy, and further I think it should have made you realize that Intel hardware may not be the best candidate if your desire is to study and learn about every register write that is performed in the coreboot code.
Now, the i945 code in coreboot is still there and still readable, even if it does not come with a book about how it was written and how it is structured. I don't think these things are really needed either. The code is really nicely written, function names are descriptive, and I believe that by cross-referencing the i945 code with datasheets for components from other vendors at a similar level of performance there is still a lot that you will be able to learn!
I assume that you have some plan for how to use your 4 KISS systems, and this is still very much possible of course. Since you have hardware that you can not study in detail maybe you can at least make good use of it by focusing more on what happens after coreboot, instead of what happens within coreboot if that is not something you can do without documentation in hand.
My plan was to gather a thorough knowledge of one example of Coreboot. I dislike much to deal with a subject which in incomplete.
Believe me when I say that no one board will be a good way to learn about all of coreboot. Over two hundred mainboards are supported by coreboot, and as you may learn there are immense differences between e.g. an Intel i945 platform, and an AMD GeodeLX platform. Just like with programming languages; any time you spend on one thing will help you become more proficient with programming in general.
I do not want to port Coreboot first. My immediate purpose was to study and become proficient in the subject. How I can port Coreboot without even knowing it and researching on it first.
The norm has been that people learn about coreboot while working on it. In my experience it is more difficult but more importantly extremely inefficient to learn about something without actually doing it. I'm a firm believer in learning by doing. Otherwise something may have been learned, but it will not neccessarily be understood.
If you have more of an academic inclination, then like others have mentioned, I think it would have been wise to ask questions, and ask the important questions. It seems to me that when you started with this project you needed to become more familiar among other things with GNU make, and that is just one of many tools which the coreboot project builds upon.
The fact that something as "simple" as the build system was already requiring learning more about some tool would have indicated to me that I would be forced to do a lot of research to really understand the project more completely.
At least you could add some lines about NDA story and incomplete data sheets in Wiki
I think this is a really good idea. On which page do you think it it would fit best? Datasheets? Documentation?
or you could made the following fact clear :
"Anybody who wants to study and learn Coreboot must know that the documentation of hardware is incomplete and there are some hidden cases which will never become clear!!"
This is not a fact at all. This is your assumption, and I'm afraid it isn't correct. If you look at the code for components from other vendors then I think you will discover that some do actually provide good and complete documentation. AMD really deserves a mention here. We all certainly wish that all documentation would be made available even sooner, so that coreboot no longer has to play catch-up with the market, but I think the trend is going the right way at AMD.
Linux Kernel
..
Coreboot is about BIOS
coreboot is about firmware, not BIOS. I don't know how many times I've expressed the significate difference between these two concepts.
They are in two different categories in my opinion.
You will find that many people disagree with that. A large part of Linux is it's device drivers. Try removing all device drivers from Linux and see what you have left. It's really not useful at all.
Maybe you have been keeping up-to-date with the situation of drivers for wireless networkinge devices in open source operating systems. This is an issue which is really close to people's everyday lives, and it has been a rather big challenge for all open source OSes. It's only very recently that Linux has actually managed to attract the vendors to *help* the project with code and maybe even documentation, but in general the situation has been exactly the same for a long time. I have a distinct memory of a presentation 7 years ago about difficulties faced by FreeBSD developers to learn about how to program these devices.
You never mentioned what your background is, and if you are used to a system like Microsoft Windows then I'm not surprised that you find the open source world very foreign, it is all about "owning the problem" and really making sure to do enough research in order to take inforfmed decisions. This of course requires information. If no information is available, then sure, it can feel like a hopeless situation, but for coreboot I can absolutely not agree with you that this would be the case.
Finally, there's of course always the possibility to do reverse engineering. But that is something that really requires skill, and extraordinary patience.
I do hope that you can still make use of your computers, even though you may not be able to find someone who can train you about the meaning of every register in them.
Kind regards
//Peter