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 cpu/mpc8260/Makefile - soft_i2c.o module added cpu/mpc8260/ether_scc.c - TQM8260-specific definitions added, an obvious bug fixed (fcr -> scr) 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 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.