# # Specific targets and things for the s2600wf mainboard. # # This is responsible for extracting the DXE section from the ROM, # extracting each of the images from it, and setting the sizes for # the different firmware images. # # For space reasons the DXE is put in the recovery FV at 0x2C00000 # and the kernel/initrd are put in a separate volume at 0x3500000. # # To upload the entire ROM (including ME and PEI): # ( echo u0 4000000 ; pv build/s2600wf/linuxboot.vol ) > /dev/ttyACM0 # # To upload just kernel or DXE: # ( echo u3500000 400000 ; pv build/s2600wf/linux.vol ) > /dev/ttyACM0 # ( echo u2c00000 400000 ; pv build/s2600wf/dxe.vol ) > /dev/ttyACM0 # # 4 MB DXE ROM, compressed from 15 MB dxe-compress := 0xF00000 dxe-size := 0x400000 # 4 MB Linux ROM, uncompressed since bzImage is already compressed linux-size := 0x400000 dxe-path := $(BUILD)/rom/0x03500000/9e21fd93-9c72-4c15-8c4b-e77f1db2d792/0 dxe-files := $(shell awk \ '/^[0-9A-Fa-f]/ {print "$(dxe-path)/"$$1".ffs"}' \ boards/$(BOARD)/image-files.txt \ ) # The Intel firmware has lots of small pieces. # We replace the DXE recovery image and one of the other # images with the LinuxBoot one. Potentially we # can clean up more space. FVS = FVS += $(BUILD)/rom/0x00000000.ifd FVS += $(BUILD)/rom/0x00010000.bin # ME + PDR + DevExp + Gbe + PTT regions FVS += $(BUILD)/dxe.vol # Recovery DXE at 0x2C00000 FVS += $(BUILD)/rom/0x03000000.fv # Empty FV at 0x3000000 (1.5 MB) FVS += $(BUILD)/rom/0x03180000.fv # Empty FV (128 KB) FVS += $(BUILD)/rom/0x031a0000.fv # Logo FV (128 KB) FVS += $(BUILD)/rom/0x031c0000.fv # Empty FV (64 KB) FVS += $(BUILD)/rom/0x031d0000.bin # Empty padding (196 KB) FVS += $(BUILD)/rom/0x03200000.fv # Empty FV (3 MB) FVS += $(BUILD)/linux.vol # Non-recovery DXE, replaced with Linux (4 MB) FVS += $(BUILD)/rom/0x03900000.fv # NVRAM (1 MB) # FVS += $(BUILD)/rom/0x03a00000.fv # PEI (non-recovery?) (2 MB) FVS += $(BUILD)/2mb.fv # an empty FV to replace the unused PEI FVS += $(BUILD)/rom/0x03c00000.fv # PEI (2 MB) (recovery won't boot without it) FVS += $(BUILD)/rom/0x03e00000.fv # Microcode (196 KB) FVS += $(BUILD)/rom/0x03e30000.fv # Unknown (512 KB) FVS += $(BUILD)/rom/0x03e80000.fv # PeiCore (recovery) (512 KB) FVS += $(BUILD)/rom/0x03f00000.fv # Microcode in FIT (196 KB) FVS += $(BUILD)/rom/0x03f30000.fv # Unknown (512 KB) # FVS += $(BUILD)/rom/0x03f80000.fv # PeiCore (non-recovery?) (512 KB) FVS += $(BUILD)/512kb.fv # an empty FV to replace the unused PeiCore $(BUILD)/512kb.fv: dxe/hello.ffs ./bin/create-fv -s 0x80000 $< > $@ $(BUILD)/2mb.fv: dxe/hello.ffs ./bin/create-fv -s 0x200000 $< > $@ # Replace the DxeCore and SmmCore with our own $(BUILD)/dxe.vol: \ $(BUILD)/DxeCore.ffs \ $(BUILD)/PiSmmCore.ffs \ ./dxe/linuxboot.ffs \ $(dxe-files) \ dxe/fvloader.ffs dxe/hello.ffs: dxe.intermediate dxe.intermediate: $(MAKE) -C dxe # Linux and initrd go into their own FV $(BUILD)/linux.vol: \ $(BUILD)/Linux.ffs \ $(BUILD)/Initrd.ffs \