|  |  | 
|  | This file contains basic information on the port of U-Boot to TQM8260. | 
|  | All the changes fit in the common U-Boot infrastructure, providing a | 
|  | new TQM8260-specific entry in makefiles. To build U-Boot for TQM8260, | 
|  | type "make TQM8260_config", edit the "include/config_TQM8260.h" file | 
|  | if necessary, then type "make". | 
|  |  | 
|  |  | 
|  | Common file modifications: | 
|  | -------------------------- | 
|  |  | 
|  | The following common files have been modified by this project: | 
|  | (starting from the ppcboot-0.9.3/ directory) | 
|  |  | 
|  | MAKEALL			- TQM8260 entry added | 
|  | Makefile		- TQM8260_config entry added | 
|  | arch/powerpc/cpu/mpc8260/Makefile	- soft_i2c.o module added | 
|  | arch/powerpc/cpu/mpc8260/ether_scc.c	- TQM8260-specific definitions added, an obvious | 
|  | bug fixed (fcr -> scr) | 
|  | arch/powerpc/cpu/mpc8260/ether_fcc.c	- TQM8260-specific definitions added | 
|  | include/flash.h		- added definitions for the AM29LV640D Flash chip | 
|  |  | 
|  |  | 
|  | New files: | 
|  | ---------- | 
|  |  | 
|  | The following new files have been added by this project: | 
|  | (starting from the ppcboot-0.9.3/ directory) | 
|  |  | 
|  | board/tqm8260/		  - board-specific directory | 
|  | board/tqm8260/Makefile	  - board-specific makefile | 
|  | board/tqm8260/config.mk	  - config file | 
|  | board/tqm8260/flash.c	  - flash driver (for AM29LV640D) | 
|  | board/tqm8260/ppcboot.lds - linker script | 
|  | board/tqm8260/tqm8260.c	  - ioport and memory initialization | 
|  | arch/powerpc/cpu/mpc8260/soft_i2c.c	  - software i2c EEPROM driver | 
|  | include/config_TQM8260.h  - main configuration file | 
|  |  | 
|  |  | 
|  | New configuration options: | 
|  | -------------------------- | 
|  |  | 
|  | CONFIG_TQM8260 | 
|  |  | 
|  | Main board-specific option (should be defined for TQM8260). | 
|  |  | 
|  | CONFIG_82xx_CONS_SMC1 | 
|  |  | 
|  | If defined, SMC1 will be used as the console | 
|  |  | 
|  | CONFIG_82xx_CONS_SMC2 | 
|  |  | 
|  | If defined, SMC2 will be used as the console | 
|  |  | 
|  | CONFIG_SYS_INIT_LOCAL_SDRAM | 
|  |  | 
|  | If defined, the SDRAM on the local bus will be initialized and | 
|  | mapped at BR2. | 
|  |  | 
|  |  | 
|  | Acceptance criteria tests: | 
|  | -------------------------- | 
|  |  | 
|  | The following tests have been conducted to validate the port of U-Boot | 
|  | to TQM8260: | 
|  |  | 
|  | 1. Operation on serial console: | 
|  |  | 
|  | With the CONFIG_82xx_CONS_SMC1 option defined in the main configuration file, | 
|  | the U-Boot output appeared on the serial terminal connected to COM1 as | 
|  | follows: | 
|  |  | 
|  | ------------------------------------------------------------------------------ | 
|  | => help | 
|  | go      - start application at address 'addr' | 
|  | run     - run commands in an environment variable | 
|  | bootm   - boot application image from memory | 
|  | bootp   - boot image via network using BootP/TFTP protocol | 
|  | tftpboot- boot image via network using TFTP protocol | 
|  | and env variables ipaddr and serverip | 
|  | rarpboot- boot image via network using RARP/TFTP protocol | 
|  | bootd   - boot default, i.e., run 'bootcmd' | 
|  | loads   - load S-Record file over serial line | 
|  | loadb   - load binary file over serial line (kermit mode) | 
|  | md      - memory display | 
|  | mm      - memory modify (auto-incrementing) | 
|  | nm      - memory modify (constant address) | 
|  | mw      - memory write (fill) | 
|  | cp      - memory copy | 
|  | cmp     - memory compare | 
|  | crc32   - checksum calculation | 
|  | base    - print or set address offset | 
|  | printenv- print environment variables | 
|  | setenv  - set environment variables | 
|  | saveenv - save environment variables to persistent storage | 
|  | protect - enable or disable FLASH write protection | 
|  | erase   - erase FLASH memory | 
|  | flinfo  - print FLASH memory information | 
|  | bdinfo  - print Board Info structure | 
|  | iminfo  - print header information for application image | 
|  | coninfo - print console devices and informations | 
|  | eeprom  - EEPROM sub-system | 
|  | loop    - infinite loop on address range | 
|  | mtest   - simple RAM test | 
|  | icache  - enable or disable instruction cache | 
|  | dcache  - enable or disable data cache | 
|  | reset   - Perform RESET of the CPU | 
|  | echo    - echo args to console | 
|  | version - print monitor version | 
|  | help    - print online help | 
|  | ?       - alias for 'help' | 
|  | => | 
|  | ------------------------------------------------------------------------------ | 
|  |  | 
|  |  | 
|  | 2. Flash driver operation | 
|  |  | 
|  | The following sequence was performed to test the "flinfo" command: | 
|  |  | 
|  | ------------------------------------------------------------------------------ | 
|  | => flinfo | 
|  |  | 
|  | Bank # 1: AMD 29LV640D (64 M, uniform sector) | 
|  | Size: 32 MB in 128 Sectors | 
|  | Sector Start Addresses: | 
|  | 40000000      40040000 (RO) 40080000      400C0000      40100000 | 
|  | 40140000      40180000      401C0000      40200000      40240000 | 
|  | 40280000      402C0000      40300000      40340000      40380000 | 
|  | 403C0000      40400000      40440000      40480000      404C0000 | 
|  | 40500000      40540000      40580000      405C0000      40600000 | 
|  | 40640000      40680000      406C0000      40700000      40740000 | 
|  | 40780000      407C0000      40800000      40840000      40880000 | 
|  | 408C0000      40900000      40940000      40980000      409C0000 | 
|  | 40A00000      40A40000      40A80000      40AC0000      40B00000 | 
|  | 40B40000      40B80000      40BC0000      40C00000      40C40000 | 
|  | 40C80000      40CC0000      40D00000      40D40000      40D80000 | 
|  | 40DC0000      40E00000      40E40000      40E80000      40EC0000 | 
|  | 40F00000      40F40000      40F80000      40FC0000      41000000 | 
|  | 41040000      41080000      410C0000      41100000      41140000 | 
|  | 41180000      411C0000      41200000      41240000      41280000 | 
|  | 412C0000      41300000      41340000      41380000      413C0000 | 
|  | 41400000      41440000      41480000      414C0000      41500000 | 
|  | 41540000      41580000      415C0000      41600000      41640000 | 
|  | 41680000      416C0000      41700000      41740000      41780000 | 
|  | 417C0000      41800000      41840000      41880000      418C0000 | 
|  | 41900000      41940000      41980000      419C0000      41A00000 | 
|  | 41A40000      41A80000      41AC0000      41B00000      41B40000 | 
|  | 41B80000      41BC0000      41C00000      41C40000      41C80000 | 
|  | 41CC0000      41D00000      41D40000      41D80000      41DC0000 | 
|  | 41E00000      41E40000      41E80000      41EC0000      41F00000 | 
|  | 41F40000      41F80000      41FC0000 | 
|  | => | 
|  | ------------------------------------------------------------------------------ | 
|  |  | 
|  |  | 
|  | The following sequence was performed to test the erase command: | 
|  |  | 
|  | ------------------------------------------------------------------------------ | 
|  | => cp 0 40080000 10 | 
|  | Copy to Flash... done | 
|  | => erase 40080000 400bffff | 
|  | Erase Flash from 0x40080000 to 0x400bffff | 
|  | .. done | 
|  | Erased 1 sectors | 
|  | => md 40080000 | 
|  | 40080000: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080010: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080020: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080030: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080040: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080050: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080060: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080070: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080080: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080090: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800a0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800b0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800c0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800d0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800e0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800f0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | => cp 0 40080000 10 | 
|  | Copy to Flash... done | 
|  | => erase 1:2 | 
|  | Erase Flash Sectors 2-2 in Bank # 1 | 
|  | .. done | 
|  | => md 40080000 | 
|  | 40080000: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080010: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080020: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080030: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080040: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080050: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080060: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080070: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080080: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080090: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800a0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800b0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800c0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800d0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800e0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800f0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | => cp 0 40080000 10 | 
|  | Copy to Flash... done | 
|  | => cp 0 400c0000 10 | 
|  | Copy to Flash... done | 
|  | => erase 1:2-3 | 
|  | Erase Flash Sectors 2-3 in Bank # 1 | 
|  | ... done | 
|  | => md 40080000 | 
|  | 40080000: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080010: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080020: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080030: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080040: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080050: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080060: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080070: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080080: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080090: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800a0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800b0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800c0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800d0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800e0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800f0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | => md 400c0000 | 
|  | 400c0000: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c0010: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c0020: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c0030: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c0040: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c0050: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c0060: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c0070: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c0080: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c0090: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c00a0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c00b0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c00c0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c00d0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c00e0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400c00f0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | => | 
|  | ------------------------------------------------------------------------------ | 
|  |  | 
|  |  | 
|  | The following sequence was performed to test the Flash programming commands: | 
|  |  | 
|  | ------------------------------------------------------------------------------ | 
|  | => erase 40080000 400bffff | 
|  | Erase Flash from 0x40080000 to 0x400bffff | 
|  | .. done | 
|  | Erased 1 sectors | 
|  | => cp 0 40080000 10 | 
|  | Copy to Flash... done | 
|  | => md 0 | 
|  | 00000000: 00000000 00000104 61100200 01000000    ........a....... | 
|  | 00000010: 00000000 00000000 81140000 82000100    ................ | 
|  | 00000020: 01080000 00004000 22800000 00000600    ......@."....... | 
|  | 00000030: 00200800 00000000 10000100 00008000    . .............. | 
|  | 00000040: 00812000 00000200 00020000 80000000    .. ............. | 
|  | 00000050: 00028001 00001000 00040400 00000200    ................ | 
|  | 00000060: 20480000 00000000 20090000 00142000     H...... ..... . | 
|  | 00000070: 00000000 00004000 24210000 10000000    ......@.$!...... | 
|  | 00000080: 02440002 10000000 00200008 00000000    .D....... ...... | 
|  | 00000090: 02440900 00000000 30a40000 00004400    .D......0.....D. | 
|  | 000000a0: 04420800 00000000 00000040 00020000    .B.........@.... | 
|  | 000000b0: 05020000 00100000 00060000 00000000    ................ | 
|  | 000000c0: 00400000 00000000 00080000 00040000    .@.............. | 
|  | 000000d0: 10400000 00800004 00000000 00000200    .@.............. | 
|  | 000000e0: 80890000 00010004 00080000 00000020    ............... | 
|  | 000000f0: 08000000 10000000 00010000 00000000    ................ | 
|  | => md 40080000 | 
|  | 40080000: 00000000 00000104 61100200 01000000    ........a....... | 
|  | 40080010: 00000000 00000000 81140000 82000100    ................ | 
|  | 40080020: 01080000 00004000 22800000 00000600    ......@."....... | 
|  | 40080030: 00200800 00000000 10000100 00008000    . .............. | 
|  | 40080040: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080050: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080060: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080070: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080080: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 40080090: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800a0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800b0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800c0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800d0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800e0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | 400800f0: ffffffff ffffffff ffffffff ffffffff    ................ | 
|  | => | 
|  | ------------------------------------------------------------------------------ | 
|  |  | 
|  |  | 
|  | The following sequence was performed to test storage of the environment | 
|  | variables in Flash: | 
|  |  | 
|  | ------------------------------------------------------------------------------ | 
|  | => setenv foo bar | 
|  | => saveenv | 
|  | Un-Protected 1 sectors | 
|  | Erasing Flash... | 
|  | .. done | 
|  | Erased 1 sectors | 
|  | Saving Environment to Flash... | 
|  | Protected 1 sectors | 
|  | => reset | 
|  | ... | 
|  | => printenv | 
|  | bootdelay=CONFIG_BOOTDELAY | 
|  | baudrate=9600 | 
|  | ipaddr=192.168.4.7 | 
|  | serverip=192.168.4.1 | 
|  | ethaddr=66:55:44:33:22:11 | 
|  | foo=bar | 
|  | stdin=serial | 
|  | stdout=serial | 
|  | stderr=serial | 
|  |  | 
|  | Environment size: 170/262140 bytes | 
|  | => | 
|  | ------------------------------------------------------------------------------ | 
|  |  | 
|  |  | 
|  | The following sequence was performed to test image download and run over | 
|  | Ethernet interface (both interfaces were tested): | 
|  |  | 
|  | ------------------------------------------------------------------------------ | 
|  | => tftpboot 40000 hello_world.bin | 
|  | ARP broadcast 1 | 
|  | TFTP from server 192.168.2.2; our IP address is 192.168.2.7 | 
|  | Filename 'hello_world.bin'. | 
|  | Load address: 0x40000 | 
|  | Loading: ############# | 
|  | done | 
|  | Bytes transferred = 65912 (10178 hex) | 
|  | => go 40004 | 
|  | ## Starting application at 0x00040004 ... | 
|  | Hello World | 
|  | argc = 1 | 
|  | argv[0] = "40004" | 
|  | argv[1] = "<NULL>" | 
|  | Hit any key to exit ... | 
|  |  | 
|  | ## Application terminated, rc = 0x0 | 
|  | => | 
|  | ------------------------------------------------------------------------------ | 
|  |  | 
|  |  | 
|  | The following sequence was performed to test eeprom read/write commands: | 
|  |  | 
|  | ------------------------------------------------------------------------------ | 
|  | => md 40000 | 
|  | 00040000: 00018148 9421ffe0 7c0802a6 bf61000c    ...H.!..|....a.. | 
|  | 00040010: 90010024 48000005 7fc802a6 801effe8    ...$H........... | 
|  | 00040020: 7fc0f214 7c7f1b78 813f004c 7c9c2378    ....|..x.?.L|.#x | 
|  | 00040030: 807e8000 7cbd2b78 80090010 3b600000    .~..|.+x....;`.. | 
|  | 00040040: 7c0803a6 4e800021 813f004c 7f84e378    |...N..!.?.L...x | 
|  | 00040050: 807e8004 80090010 7c0803a6 4e800021    .~......|...N..! | 
|  | 00040060: 7c1be000 4181003c 80bd0000 813f004c    |...A..<.....?.L | 
|  | 00040070: 3bbd0004 2c050000 40820008 80be8008    ;...,...@....... | 
|  | 00040080: 80090010 7f64db78 807e800c 3b7b0001    .....d.x.~..;{.. | 
|  | 00040090: 7c0803a6 4e800021 7c1be000 4081ffcc    |...N..!|...@... | 
|  | 000400a0: 813f004c 807e8010 80090010 7c0803a6    .?.L.~......|... | 
|  | 000400b0: 4e800021 813f004c 80090004 7c0803a6    N..!.?.L....|... | 
|  | 000400c0: 4e800021 2c030000 4182ffec 813f004c    N..!,...A....?.L | 
|  | 000400d0: 80090000 7c0803a6 4e800021 813f004c    ....|...N..!.?.L | 
|  | 000400e0: 807e8014 80090010 7c0803a6 4e800021    .~......|...N..! | 
|  | 000400f0: 38600000 80010024 7c0803a6 bb61000c    8`.....$|....a.. | 
|  | => eeprom write 40000 0 40 | 
|  |  | 
|  | EEPROM write: addr 00040000  off 0000  count 64 ... done | 
|  | => mw 50000 0 1000 | 
|  | => eeprom read 50000 0 40 | 
|  |  | 
|  | EEPROM read: addr 00050000  off 0000  count 64 ... done | 
|  | => md 50000 | 
|  | 00050000: 00018148 9421ffe0 7c0802a6 bf61000c    ...H.!..|....a.. | 
|  | 00050010: 90010024 48000005 7fc802a6 801effe8    ...$H........... | 
|  | 00050020: 7fc0f214 7c7f1b78 813f004c 7c9c2378    ....|..x.?.L|.#x | 
|  | 00050030: 807e8000 7cbd2b78 80090010 3b600000    .~..|.+x....;`.. | 
|  | 00050040: 00000000 00000000 00000000 00000000    ................ | 
|  | 00050050: 00000000 00000000 00000000 00000000    ................ | 
|  | 00050060: 00000000 00000000 00000000 00000000    ................ | 
|  | 00050070: 00000000 00000000 00000000 00000000    ................ | 
|  | 00050080: 00000000 00000000 00000000 00000000    ................ | 
|  | 00050090: 00000000 00000000 00000000 00000000    ................ | 
|  | 000500a0: 00000000 00000000 00000000 00000000    ................ | 
|  | 000500b0: 00000000 00000000 00000000 00000000    ................ | 
|  | 000500c0: 00000000 00000000 00000000 00000000    ................ | 
|  | 000500d0: 00000000 00000000 00000000 00000000    ................ | 
|  | 000500e0: 00000000 00000000 00000000 00000000    ................ | 
|  | 000500f0: 00000000 00000000 00000000 00000000    ................ | 
|  | => | 
|  | ------------------------------------------------------------------------------ | 
|  |  | 
|  |  | 
|  | Patch per Mon, 06 Aug 2001 17:57:27: | 
|  |  | 
|  | - upgraded Flash support (added support for the following chips: | 
|  | AM29LV800T/B, AM29LV160T/B, AM29DL322T/B, AM29DL323T/B) | 
|  | - BCR tweakage for the 8260 bus mode | 
|  | - SIUMCR tweakage enabling the MI interrupt (IRQ7) | 
|  |  | 
|  | To simplify switching between the bus modes, a new configuration | 
|  | option (CONFIG_BUSMODE_60x) has been added to the "config_TQM8260.h" | 
|  | file. If it is defined, BCR will be configured for the 60x mode, | 
|  | otherwise - for the 8260 mode. | 
|  |  | 
|  | Concerning the SIUMCR modification: it's hard to predict whether it | 
|  | will induce any problems on the other (60x mode) board. However, the | 
|  | problems (if they appear) should be easy to notice - if the board | 
|  | does not boot, it's most likely caused by the DPPC configuration in | 
|  | SIUMCR. |