|  |  | 
|  | Storage of the board specific values (ethaddr...) | 
|  | ------------------------------------------------- | 
|  |  | 
|  | The board specific environment variables that should be unique | 
|  | for each individual board, can be stored in the I2C EEPROM. This | 
|  | will be done from offset 0x80 with the length of 0x80 bytes. The | 
|  | following command can be used to store the values here: | 
|  |  | 
|  | => setdef de:20:6a:ed:e2:72 de:20:6a:ed:e2:73 AB0001 | 
|  |  | 
|  | ethaddr           eth1addr          serial# | 
|  |  | 
|  | Now those 3 values are stored into the I2C EEPROM. A CRC is added | 
|  | to make sure that the values get not corrupted. | 
|  |  | 
|  |  | 
|  | SW-Reset Pushbutton handling: | 
|  | ----------------------------- | 
|  |  | 
|  | The SW-reset push button is connected to a GPIO input too. This | 
|  | way U-Boot can "see" how long the SW-reset was pressed, and a | 
|  | specific action can be taken. Two different actions are supported: | 
|  |  | 
|  | a) Release after more than 5 seconds and less then 10 seconds: | 
|  | -> Run POST | 
|  |  | 
|  | Please note, that the POST test will take a while (approx. 1 min | 
|  | on the 128MByte board). This is mainly due to the system memory | 
|  | test. | 
|  |  | 
|  | b) Release after more than 10 seconds: | 
|  | -> Restore factory default settings | 
|  |  | 
|  | The factory default values are restored. The default environment | 
|  | variables are restored (ipaddr, serverip...) and the board | 
|  | specific values (ethaddr, eth1addr and serial#) are restored | 
|  | to the environment from the I2C EEPROM. Also a bootline parameter | 
|  | is added to the Linux bootline to signal the Linux kernel upon | 
|  | the next startup, that the factory defaults should be restored. | 
|  |  | 
|  | The command to check this sw-reset status and act accordingly is | 
|  |  | 
|  | => chkreset | 
|  |  | 
|  | This command is added to the default "bootcmd", so that it is called | 
|  | automatically upon startup. | 
|  |  | 
|  | Also, the 2 LED's are used to indicate the current status of this | 
|  | command (time passed since pushing the button). When the POST test | 
|  | will be run, the green LED will be switched off, and when the | 
|  | factory restore will be initiated, the reg LED will be switched off. | 
|  |  | 
|  |  | 
|  | Loggin of POST results: | 
|  | ----------------------- | 
|  |  | 
|  | The results of the POST tests are logged in a logbuffer located at the end | 
|  | of the onboard memory. It can be accessed with the U-Boot command "log": | 
|  |  | 
|  | => log show | 
|  | <4>POST memory PASSED | 
|  | <4>POST cache PASSED | 
|  | <4>POST cpu PASSED | 
|  | <4>POST uart PASSED | 
|  | <4>POST ethernet PASSED | 
|  |  | 
|  | The DENX Linux kernel tree has support for this log buffer included. Exactly | 
|  | this buffer is used for logging of all kernel messages too. By enabling the | 
|  | compile time option "CONFIG_LOGBUFFER" this support is enabled. This way you | 
|  | can access the U-Boot log messages from Linux too. | 
|  |  | 
|  | 2007-08-10, Stefan Roese <sr@denx.de> |