Date: Wed, 23 Nov 2016 08:48:57 -0700 From: Ian Lepore <ian@freebsd.org> To: John.Kitz@xs4all.nl, "'freebsd-arm'" <freebsd-arm@freebsd.org> Subject: Re: How do U-boot and SPL compare to an IML and an IPL on a mainframe? Message-ID: <1479916137.1889.28.camel@freebsd.org> In-Reply-To: <000501d24576$ac4339b0$04c9ad10$@Kitz@xs4all.nl> References: <000501d24576$ac4339b0$04c9ad10$@Kitz@xs4all.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2016-11-23 at 11:45 +0100, John W. Kitz wrote: > Hi, > > While I'm waiting for the delivery of my first ARM based board, I was > wondering if someone would be kind enough to provide a brief > explanation (or > a link to one) of how U-boot and SPL (and related software) in de > UNIX > world, required in the process of starting up some systems, compare > to an > Initial Microcode Load (IML) and an Initial Program Load (IPL) in the > world > of mainframes. > > In others words am I correct in assuming that U-boot more or less > does what > an IML does and that SPL more or less does what an IPL does? > > Thanks and regards, Jk. Heh. IPL. That brings back memories. Old old memories. Typically a modern arm SOC has a little bit of ROM code, just enough to read a small initial bootcode from a few selected devices (sdcard, eeprom, spi flash, etc). Very often that small initial bootcode is loaded into some on-chip SRAM and that's what limits the size of the initial bootcode. In the u-boot world, that small bootcode is SPL. Another thing that's often true is that the arm core is running on some slow clock at this point, usually 32KHz, sometimes 24MHz. On many systems, the SPL code is responsible for configuring clocks and DRAM. The SPL code also has larger and more-complete device drivers so that it can load the next stage from a wider variety of devices. The next stage gets loaded into DRAM and typically runs with the cpu at or near full speed, caches enabled, etc. The next stage in some systems is the kernel. That's especially true on things like phones where the boot process has to be so fast you don't even notice it. On more general-purpose systems the next stage is u-boot, which does further system configuration and then continues by loading the next stage loader (which in freebsd is ubldr, a u-boot aware form of loader(8)). All in all, rather than IML (which has no analog on small arm chips) and IPL, a better analogy for the role of u-boot is that of a PC BIOS. It's responsible for basic system hardware bringup and getting the next stage of bootloader running. Like a pc bios, u-boot is still around while that next stage loader is running, and it can provide basic services for that loader such as a low-level device IO API. Unlike a pc bios, however, there comes a time when u-boot is just gone; it doesn't hang around providing services forever. -- Ian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1479916137.1889.28.camel>