Intel Sandybridge Build Tutorial
The wiki is being retired!
Documentation is now handled by the same processes we use for code: Add something to the Documentation/ directory in the coreboot repo, and it will be rendered to https://doc.coreboot.org/. Contributions welcome!
Step by Step Tutorial How to flash coreboot onto Lenovo T520. Flashing coreboot on supported Intel SandyBridge / Ivybridge system is very similar to this one. Steps that need to be changed are marked as those.
Chapters:
- Check the board status
- Setup toolchain
- Get binary blobs
- Configure coreboot
- Build coreboot
- Flash coreboot
- Recovery and Debugging
For more information have a look at Build_HOWTO
Get binary blobs
Coreboot needs some binary blobs. Here's a list of blobs required: Binary_situation
I'm going to use:
- Intel Management Engine (ME)
- Intel Flash descriptor (IFD)
- Intel Gigabit Engine (GBE)
You may want to extract the VGA Option Rom, too: VGA_support
The T520 flash IC can be programmed in circuit.
I used the TIAO USB board to access the flash. You need a flashrom version supporting the "tumpa" programmer. Of course you can read the flash using the Raspberry or BeagleBone, too. To read the flash chip using tumpa programmer:
flashrom -p ft2232_spi:type=tumpa,port=A,divisor=4 -r T520.bin
To read the flash chip using raspberry pi:
flashrom -p linux_spi:dev=/dev/spidev0.0 -r T520.bin
Extract the binary blobs from the raw flash image:
cd ./util/ifdtool make ./ifdtool -x T520.bin
The following files will show up:
- flashregion_0_flashdescriptor.bin
- flashregion_1_bios.bin
- flashregion_2_intel_me.bin
- flashregion_3_gbe.bin
Configure Coreboot
Run:
make menuconfig
In menu Mainboard:
Set "Mainboard Vendor" to "Lenovo" Set "Mainboard model" to "T520"
For other boards choose your settings here !
In menu Chipset:
Set "Add Intel descriptor.bin file" to "flashregion_0_flashdescriptor.bin" Set "Add Intel ME firmware" to "flashregion_2_intel_me.bin" Set "Add Gigabite Ethernet firmware" to "flashregion_3_gbe.bin"
In menu Devices:
Set "Use native graphics initialization"
In case you want to run VGA Option Rom add it using:
Set "Add a VGA BIOS image" to the VGA Option ROM file
In menu Payloads:
Set "Include generated option rom that implements legacy VGA BIOS"
Save the new config
Run:
make
Flashing coreboot
Recommended
1. Extract the flash layout using ifdtool
./util/ifdtool/ifdtool -f T520.layout T520.bin
It creates a file looking like that:
00000000:00000fff fd 00500000:007fffff bios 00003000:004fffff me 00001000:00002fff gbe 00fff000:00000fff pd 00fff000:00ffffff res1 00fff000:00ffffff res2 00fff000:00ffffff res3 00000000:00ffffff ec
2. Remove "disabled" regions: Remove all regions that are disabled or invalid as flashrom can't ignore them, here:
pd, res1, res2, res3, ec
The new file will look like this:
00000000:00000fff fd 00500000:007fffff bios 00003000:004fffff me 00001000:00002fff gbe
3. Connect an external programmer to your flash IC and run the flashrom command to override only the BIOS flash region, leaving IFD, ME, and GBE where it is.
flashrom -p ft2232_spi:type=tumpa,port=A,divisor=4 -l ./T520.layout -i bios -w ./build/coreboot.rom
Overwriting the whole flash
In case you bricked something or you want to replace the ME blob you have to write the whole flash IC. In this case there's no need for a layout file. The command to write the coreboot image is:
flashrom -p ft2232_spi:type=tumpa,port=A,divisor=4 -w ./build/coreboot.rom
Recovery and Debugging
TODO