mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-28 21:09:00 +09:00
![Kyle Moffett](/assets/img/avatar_default.png)
As a part of the manufacturing process for some of our custom hardware, we are programming the EEPROMs attached to our Intel 82571EB controllers from software using U-Boot and Linux. This code provides several conditionally-compiled features to assist in our manufacturing process: CONFIG_CMD_E1000: This is a basic "e1000" command which allows querying the controller and (if other config options are set) performing EEPROM programming. In particular, with CONFIG_E1000_SPI this allows you to display a hex-dump of the EEPROM, copy to/from main memory, and verify/update the software checksum. CONFIG_E1000_SPI_GENERIC: Build a generic SPI driver providing the standard U-Boot SPI driver interface. This allows commands such as "sspi" to access the bus attached to the E1000 controller. Additionally, some E1000 chipsets can support user data in a reserved space in the E1000 EEPROM which could be used for U-Boot environment storage. CONFIG_E1000_SPI: The core SPI access code used by the above interfaces. For example, the following commands allow you to program the EEPROM from a USB device (assumes CONFIG_E1000_SPI and CONFIG_CMD_E1000 are enabled): usb start fatload usb 0 $loadaddr 82571EB_No_Mgmt_Discrete-LOM.bin e1000 0 spi program $loadaddr 0 1024 e1000 0 spi checksum update Please keep in mind that the Intel-provided .eep files are organized as 16-bit words. When converting them to binary form for programming you must byteswap each 16-bit word so that it is in little-endian form. This means that when reading and writing words to the SPI EEPROM, the bit ordering for each word looks like this on the wire: Time >>> ------------------------------------------------------------------ ... [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8], ... ------------------------------------------------------------------ (MSB is 15, LSB is 0). Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com> Cc: Ben Warren <biggerbadderben@gmail.com>
98 lines
3.4 KiB
Makefile
98 lines
3.4 KiB
Makefile
#
|
|
# (C) Copyright 2006
|
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
#
|
|
# See file CREDITS for list of people who contributed to this
|
|
# project.
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License as
|
|
# published by the Free Software Foundation; either version 2 of
|
|
# the License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
# MA 02111-1307 USA
|
|
#
|
|
|
|
include $(TOPDIR)/config.mk
|
|
|
|
LIB := $(obj)libnet.o
|
|
|
|
COBJS-$(CONFIG_PPC4xx_EMAC) += 4xx_enet.o
|
|
COBJS-$(CONFIG_ALTERA_TSE) += altera_tse.o
|
|
COBJS-$(CONFIG_ARMADA100_FEC) += armada100_fec.o
|
|
COBJS-$(CONFIG_DRIVER_AT91EMAC) += at91_emac.o
|
|
COBJS-$(CONFIG_DRIVER_AX88180) += ax88180.o
|
|
COBJS-$(CONFIG_BFIN_MAC) += bfin_mac.o
|
|
COBJS-$(CONFIG_CS8900) += cs8900.o
|
|
COBJS-$(CONFIG_TULIP) += dc2114x.o
|
|
COBJS-$(CONFIG_DESIGNWARE_ETH) += designware.o
|
|
COBJS-$(CONFIG_DRIVER_DM9000) += dm9000x.o
|
|
COBJS-$(CONFIG_DNET) += dnet.o
|
|
COBJS-$(CONFIG_E1000) += e1000.o
|
|
COBJS-$(CONFIG_E1000_SPI) += e1000_spi.o
|
|
COBJS-$(CONFIG_EEPRO100) += eepro100.o
|
|
COBJS-$(CONFIG_ENC28J60) += enc28j60.o
|
|
COBJS-$(CONFIG_EP93XX) += ep93xx_eth.o
|
|
COBJS-$(CONFIG_ETHOC) += ethoc.o
|
|
COBJS-$(CONFIG_FEC_MXC) += fec_mxc.o
|
|
COBJS-$(CONFIG_FSLDMAFEC) += fsl_mcdmafec.o mcfmii.o
|
|
COBJS-$(CONFIG_FTGMAC100) += ftgmac100.o
|
|
COBJS-$(CONFIG_FTMAC100) += ftmac100.o
|
|
COBJS-$(CONFIG_GRETH) += greth.o
|
|
COBJS-$(CONFIG_INCA_IP_SWITCH) += inca-ip_sw.o
|
|
COBJS-$(CONFIG_DRIVER_KS8695ETH) += ks8695eth.o
|
|
COBJS-$(CONFIG_LAN91C96) += lan91c96.o
|
|
COBJS-$(CONFIG_MACB) += macb.o
|
|
COBJS-$(CONFIG_MCFFEC) += mcffec.o mcfmii.o
|
|
COBJS-$(CONFIG_MPC5xxx_FEC) += mpc5xxx_fec.o
|
|
COBJS-$(CONFIG_MPC512x_FEC) += mpc512x_fec.o
|
|
COBJS-$(CONFIG_MVGBE) += mvgbe.o
|
|
COBJS-$(CONFIG_NATSEMI) += natsemi.o
|
|
COBJS-$(CONFIG_DRIVER_NE2000) += ne2000.o ne2000_base.o
|
|
COBJS-$(CONFIG_DRIVER_AX88796L) += ax88796.o ne2000_base.o
|
|
COBJS-$(CONFIG_DRIVER_NETARMETH) += netarm_eth.o
|
|
COBJS-$(CONFIG_NETCONSOLE) += netconsole.o
|
|
COBJS-$(CONFIG_NS8382X) += ns8382x.o
|
|
COBJS-$(CONFIG_PCNET) += pcnet.o
|
|
COBJS-$(CONFIG_PLB2800_ETHER) += plb2800_eth.o
|
|
COBJS-$(CONFIG_DRIVER_RTL8019) += rtl8019.o
|
|
COBJS-$(CONFIG_RTL8139) += rtl8139.o
|
|
COBJS-$(CONFIG_RTL8169) += rtl8169.o
|
|
COBJS-$(CONFIG_SH_ETHER) += sh_eth.o
|
|
COBJS-$(CONFIG_SMC91111) += smc91111.o
|
|
COBJS-$(CONFIG_SMC911X) += smc911x.o
|
|
COBJS-$(CONFIG_DRIVER_TI_EMAC) += davinci_emac.o
|
|
COBJS-$(CONFIG_TSEC_ENET) += tsec.o fsl_mdio.o
|
|
COBJS-$(CONFIG_FMAN_ENET) += fsl_mdio.o
|
|
COBJS-$(CONFIG_TSI108_ETH) += tsi108_eth.o
|
|
COBJS-$(CONFIG_ULI526X) += uli526x.o
|
|
COBJS-$(CONFIG_VSC7385_ENET) += vsc7385.o
|
|
COBJS-$(CONFIG_XILINX_AXIEMAC) += xilinx_axi_emac.o
|
|
COBJS-$(CONFIG_XILINX_EMACLITE) += xilinx_emaclite.o
|
|
|
|
COBJS := $(sort $(COBJS-y))
|
|
SRCS := $(COBJS:.o=.c)
|
|
OBJS := $(addprefix $(obj),$(COBJS))
|
|
|
|
all: $(LIB)
|
|
|
|
$(LIB): $(obj).depend $(OBJS)
|
|
$(call cmd_link_o_target, $(OBJS))
|
|
|
|
#########################################################################
|
|
|
|
# defines $(obj).depend target
|
|
include $(SRCTREE)/rules.mk
|
|
|
|
sinclude $(obj).depend
|
|
|
|
#########################################################################
|