Tools, References, and Links
Below you can find documentation and reference sheets on tools, miscellaneous devices, topics, etc., related to this course. More links and documents may be added as the semester progresses.
x86 Assembly
QEMU and class environment
gdb
Git
SVN
Make/gmake/Makefiles
GNU Global source code tagging
C Language
Linux Resources
- Linux Device Drivers, 3rd Edition (O'Reilly Publishing - Online version)
- Linux Identifier Search
- Understanding the Linux Virtual Memory Manager
Note:You must be enrolled in ECE391 to access this resource. Use your Active Directory username and password.
- Code Walkthrough of the Linux Virtual Memory Manager
Note:You must be enrolled in ECE391 to access this resource. Use your Active Directory username and password.
- Linux Scheduler Overview
This document covers both the 2.4 and 2.6 schedulers in detail. The accompanying source for sched.c contains many comments as you step through the code.
- Writing Linux Device Drivers in Assembly Language
- Linux Weekly News
Cofounded by Jon Corbet who is the one of the authors of the Linux Device Drivers book. The website provides weekly information about Linux and the free-software community.
- D. P. Bovet, M. Cesati, Understanding the Linux Kernel, 3rd edition, O'Reilly, 2005, ISBN 0-596-00565-2. This book is available at the following URL if you are inside the UIUC net: http://proquest.safaribooksonline.com/0596005652. If you are outside UIUC (e.g., you live in an apartment off campus) then you will need to go through the library proxy.
ISA Reference Manual for x86 (Pentium IV)
Patt & Patel (Textbook from ECE190)
8259A PIC (Programmable Interrupt Controller)
Motorola MC146818 / Dallas Semiconductor DS12887 Real Time Clock
Other
Book Recommendations
- Catsoulis, John, Designing Embedded Hardware
ISBN 0596003625
A book intended for programmers that serves as a practical guide to building embedded devices. It provides a straightforward introduction to microcontrollers. The book includes a chapter on the 68K MCU family from Motorola that is capable of running the Linux operating system. The author discusses issues ranging from soldering surface-mount components onto a PCB to designing a fully functional single board computer.
- Love, Robert, Linux Kernel Development
ISBN 0672325128
A great supplement to the "Understanding the Linux Kernel" book. Offers insight from a core kernel developer and includes specific details pertaining to the 2.6 kernel. The book is not as detailed as the course book but provides clear explanations of why things are implemented in the kernel the way they are. It includes practical chapters about portability and debugging in addition to appendices about linked-lists, algorithm complexity and the kernel random number generator.
- Jamsa, Kris and Klander, Lars, Jamsa's C/C++ Programmer's Bible
Copyright 1998
ISBN: 1-884133-25-8
Was $50 back in 1999
This book consists of 1500 "tips" which each tend to be independent pieces of knowledge about C/C++. Of those 1500, the first 802 are all on C, and then the book goes into C++ and the Windows API. Organized into sections, each tip is usually half a page or less and there are lots of code examples and useful diagrams. Some example tips dealing with strings are:
- "Learning how 'A' differs from "A" "
- "Visualizing a C string"
- "Determining whether 2 strings are the same" (including implementation of strcmp).
Personally, I think this book is a useful reference especially if trying to understand other people's code, or trying to get a better grasp of C. It's quite heavy though, so I recommend that it be left in the lab for people to browse through.