The device tree mechanism is particularly useful for managing platform devices. System on Chip (SoC) implementations, such as the Sitara, are rife with these platform devices-system clocks, interrupt controllers, GPIO, serial ports, to name a few. Platform devices, on the other hand, lack any mechanism to identify themselves. Having identified a device, it is a fairly simple matter to load the corresponding driver, which then interrogates the device to determine its precise configuration. That is, they can be “discovered” by the kernel. Then there are platform devices and discoverable devices.ĭiscoverable devices are those that live on external busses, such as PCI and USB, that can tell the system what they are and how they are configured. There are memory mapped devices, and those that connect through an external bus such as I2C or USB. There are, for example, character vs block devices. The peripheral devices in a system can be characterized along a number of dimensions. Would not it be nice to have a single language that could be used to unambiguously describe the hardware of a computer system? That is the premise, and promise, of device trees. And of course, each implementation describes its configuration differently. Most of the files in these directories provide configuration information for a specific implementation of the ARM architecture. In there you will find a large number of directories of the form mach-* and plat-*, presumably short for “machine” and “platform,” respectively. Take a look at the arch/arm/ subtree of the kernel. It could be argued that the entire arch/ subtree of the Linux kernel source tree is a gigantic board support package. The notion of a “board support package” or BSP attempts to gather all of the hardware-dependent code in a few files in one place. There have been a number of approaches to addressing this problem. The ultimate result is that these various pieces of software become unique to each platform, the number of configuration options grows, and every board requires a unique kernel image. That is because the hardware description is scattered over perhaps several dozen or so device drivers, the kernel, and the boot loader, just to name a few. One of the biggest problems with porting an operating system such as Linux to a new platform is describing the hardware. For example, the XScale IPX400 BSP code is primarily located in the linux-2.6.38.4/arch/arm/ mach-ixp4xx/.ĭoug Abbott, in Linux for Embedded and Real-Time Applications (Fourth Edition), 2018 Device Trees For non-IA-32 architecture, the source tree usually contains a directory entry for the SOC along with board-specific variants. The IA-32 processor-specific source is primarily found in linux-2.6.38.4/arch/IA-32. In general, the vast majority of IA-32-based platforms are supported by default (primarily due to the platform level consistency of all IA-32 platforms). In addition to specifying the processor architecture that the kernel supports, specific platforms or boards are also supported in the source tree. You should pick the latest stable, then un-compress and use tar to extract the kernel.Īrch Documentation init lib README sound block drivers ipc MAINTAINERS REPORTING-BUGS tools COPYING firmware Kbuild Makefile samples usr CREDITS fs Kconfig mm scripts virt Crypto include kernel net security Download the kernel source directly from.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |