| 1 | Here you will find needed documentation to define your own command files to use | 
|---|
| 2 | with tt-loader. | 
|---|
| 3 |  | 
|---|
| 4 | === General syntax === | 
|---|
| 5 |  | 
|---|
| 6 | 1. One command is generally completly defined by one line finished by a single | 
|---|
| 7 | line feed. | 
|---|
| 8 |  | 
|---|
| 9 | 2. The command function is defined by only the first char. | 
|---|
| 10 |  | 
|---|
| 11 | 3. Commands with one parameter must only be one char, than a space or line feed, | 
|---|
| 12 | and then the parameter. | 
|---|
| 13 |  | 
|---|
| 14 | 4. Command can only have one parameter. | 
|---|
| 15 |  | 
|---|
| 16 | 5. One char commands can be separated by just ';' char without spaces. This is | 
|---|
| 17 | used for example to dump large memory blocks with 'M' command. | 
|---|
| 18 |  | 
|---|
| 19 | === Comments === | 
|---|
| 20 |  | 
|---|
| 21 | 6. Comments are defined with chars '/' or '#': | 
|---|
| 22 | * lines beginning with '/' are completly ignored | 
|---|
| 23 | * lines beginning with '#' are printed out but ignored | 
|---|
| 24 |  | 
|---|
| 25 | === One char commands === | 
|---|
| 26 |  | 
|---|
| 27 | 7. 'M' is used to dump the content from currently known address. The known | 
|---|
| 28 | address is always initialized with 'a' command. As memory is dump, the known | 
|---|
| 29 | address is updated to point to the next memory block. Dumps are done by block | 
|---|
| 30 | of 8 kilo-bytes. | 
|---|
| 31 |  | 
|---|
| 32 | 8. 'P' is used to peek the word pointed by the currently known address. Address | 
|---|
| 33 | is then updated to the next word. | 
|---|
| 34 |  | 
|---|
| 35 | 9. 'S' is used to set the stack address to the currently known address. This can | 
|---|
| 36 | be useful when testing boot loaders in case the current stack may be reset to | 
|---|
| 37 | zeros. | 
|---|
| 38 |  | 
|---|
| 39 | 10. 'c' is used to call a program from the currently known address. The program | 
|---|
| 40 | should return and the returned value is logged. | 
|---|
| 41 |  | 
|---|
| 42 | 11. 'b' is used to boot to the last known address. Program should not return. | 
|---|
| 43 |  | 
|---|
| 44 | 12. 'e' is used to specify the end of the commands. No other command will be | 
|---|
| 45 | read after this command. | 
|---|
| 46 |  | 
|---|
| 47 | 13. 'D' is used to ask a download from the OMAP device to a file. The filename | 
|---|
| 48 | must have been spécified earlier as if it is still exists, the download will | 
|---|
| 49 | only occur if the CRC32 of the local file is different from the remote CRC32 | 
|---|
| 50 | of the checked memory. | 
|---|
| 51 |  | 
|---|
| 52 | === One parameter commands === | 
|---|
| 53 |  | 
|---|
| 54 | 13. 'a' must be used to update the currently known address in the OMAP device. | 
|---|
| 55 | The address should be specified as hexadecimal with 8 digits as in the | 
|---|
| 56 | following format: | 
|---|
| 57 | a 0x12345678 | 
|---|
| 58 |  | 
|---|
| 59 | 14. 'f' is used to load a file into the device memory. The start address must | 
|---|
| 60 | has been set with 'a' command just before. The parameter must be the path to | 
|---|
| 61 | the file to load. | 
|---|
| 62 |  | 
|---|
| 63 | 15. 'd' is used to save to a file the content of the memory downloaded with 'm' | 
|---|
| 64 | command. The parameter id the path to path to write. | 
|---|
| 65 | If the file exists, it is just overwritten. | 
|---|
| 66 | The file size will be the size of the downloaded memory. | 
|---|
| 67 |  | 
|---|
| 68 | 16. 'F' is used to prepare a next download. The parameter must be the path to | 
|---|
| 69 | the file to be created or updated. This command is necessary if you must to | 
|---|
| 70 | update an existing file only if CRC32 of local file is different from remote | 
|---|
| 71 | memory CRC32 check. This is accomplish by using the 'C' command with '0' as | 
|---|
| 72 | parameter. Later, the 'D' command must be used to update the file. As in the | 
|---|
| 73 | following example: | 
|---|
| 74 |  | 
|---|
| 75 | F /tmp/memory-dump.raw | 
|---|
| 76 | C 0 | 
|---|
| 77 | // Dump 1 Mb from address 0x10000000 | 
|---|
| 78 | a 0x10000000 | 
|---|
| 79 | m 1024 | 
|---|
| 80 | # Updating file is CRC32 has changed | 
|---|
| 81 | D | 
|---|
| 82 |  | 
|---|
| 83 | 17. 'C' is used to set a CRC32 is to be checked on the next memory download. The | 
|---|
| 84 | parameter is an unsigned integer. It should be specified as an 8-digit | 
|---|
| 85 | hexadecimal number or just set to 0. If it is set to 0 and a file has been | 
|---|
| 86 | specified with the 'F' command, then the sent CRC32 will be computed from | 
|---|
| 87 | the file content. On the next download with 'm' command, this CRC32 will be | 
|---|
| 88 | compared to the one found for the targeted memory part. | 
|---|
| 89 |  | 
|---|
| 90 | 18. 'm' is used to just download a memory part to a computer buffer. The | 
|---|
| 91 | parameter is an unsigned integer specifying the size of the memory part to | 
|---|
| 92 | download. The start address of that part must has been set just before with | 
|---|
| 93 | the 'a' command. If a CRC32 has been sent with the 'C' command, you will | 
|---|
| 94 | receive an empty part if the CRC32 match the targeted memory part CRC32. | 
|---|
| 95 |  | 
|---|
| 96 | 19. 'k' is used while you want to start a linux kernel. The parameter must be an | 
|---|
| 97 | integer specifying the device id. For example, for OMAP P2 device id should | 
|---|
| 98 | be set to 491. This id must match one from "linux/arch/arm/tools/mach-types" | 
|---|
| 99 | linux kernel source file. The address to boot the kernel must has been | 
|---|
| 100 | specified with 'a' command. | 
|---|
| 101 | By default, some other ATAG are still set: | 
|---|
| 102 | ATAG_MEM memory start is set to 0x10000000 and size to 64 Mbytes. | 
|---|
| 103 | ATAG_CORE has defaults (check 2nd.bin sources if you are interested) | 
|---|
| 104 | ATAG_INITRD is not set as defaumt initrd size is zero. | 
|---|
| 105 | ATAG_CMDLINE is set to: | 
|---|
| 106 | "mem=64M console=ttyS0,115200 noinitrd root=/dev/mtdblock_bbs5" | 
|---|
| 107 |  | 
|---|
| 108 | If you need other defaults, you should edit 2nd/config.h or/and the | 
|---|
| 109 | set_kernel_args() function in 2nd/main.c and cross-compile 2nd.bin before | 
|---|
| 110 | using tt-loader. | 
|---|
| 111 |  | 
|---|
| 112 | TODO: | 
|---|
| 113 | * Authorize to override some ATAG default values to boot linux kernel | 
|---|
| 114 | * Add a command to validate the CRC32 of the uploaded file to be definitively | 
|---|
| 115 | paranoid in some critical case. If the content should be flash to a NAND | 
|---|
| 116 | critical part for example. | 
|---|