cc-tool(1)

πŸ’… cc-tool(1) β€” USER COMMANDS, bestie edition

okay so you found the cc-tool manpage and you're like "what is this" β€” don't worry, I got you. This is the manual page for cc-tool, living in the USER COMMANDS section, and by the end of this you're gonna be flashing chips like it's nothing. ✨


🌸 NAME 🌸

cc-tool β€” control Texas Instruments CC Debugger


πŸŽ€ SYNOPSIS πŸŽ€

cc-tool [options]

πŸ’– DESCRIPTION πŸ’–

cc-tool provides support of Texas Instruments CC Debugger and several evaluation boards to program TI 8051-based System-On-Chip devices. That's the whole vibe. It talks to the debugger, the debugger talks to the chip, the chip gets your firmware. Iconic. 🫢


πŸ”Œ SUPPORTED DEVICES πŸ”Œ

Here's the hardware guest list β€” if your thing isn't on it, it's not coming to the party:

  • CC Debugger (VID: 0x0451 PID: 0x16a2)
  • SmartRF04 Evaluation Board (VID: 0x11a0 PID: 0xdb20)
  • SmartRF04 Evaluation Board (Chinese) (VID: 0x11a0 PID: 0xeb20)
  • SmartRF05 Evaluation Board (VID: 0x0451 PID: 0x16a0)

πŸ¦‹ SUPPORTED TARGETS πŸ¦‹

The chips it will happily talk to:

CC2540 CC2541 CC2543 CC2544 CC2545 CC2530 CC2531 CC2533 CC2430 CC2431 CC2510 CC2511 CC1110 CC1111


✨ OPTIONS ✨

  • -h, --help β€” print help message. the "hello what do I do" button πŸ₯Ί
  • -d, --device bus_number:device_number β€” set programmer device usb address. Only use this if you've got several CC Debugger devices plugged into the system at the same time β€” otherwise chill. (you can use the lsusb utility to enumerate devices connected to the system, iykyk) πŸ”
  • -f, --fast β€” set fast debug interface speed. (by default: slow) ⚑
  • -i, --read-info-page [file_name] β€” read target info page (if target supports any). If no file-name specified, data will be send to standard output. no filename? it just yells it at your terminal πŸ’¬
  • -r, --read file_name β€” read flash memory and save to the specified file πŸ“–
  • -a, --read-mac-address β€” read target's mac address(es) (if target supports any).
  • -b, --write-mac-address xx:xx:xx:xx:xx:xx[:xx:xx] β€” write target's secondary mac address (if target supports any). mac address should be specified in hex notation, MSB first. The length of the address must be 6 or 8 bytes depending on target. so like, don't freestyle the length bestie πŸ’…
  • -p, --preserve-mac-address β€” before erasing target (secondary) mac address is read out and will be written back after flash programming. saving it so it doesn't get ghosted πŸ‘»
  • -e, --erase β€” erase flash memory completely and reset lock bits. full wipe, no crumbs 🧹
  • -w, --write file_name[,offset] β€” write specified file into flash memory. Optional offset value (in decimal) is an absolute target flash address and supported only for binary files. Option --write may be specified several times to build composite flash image from several hex and/or binary files, apply binary patches etc. Files will be merged in the order they appear in the command line. order matters, fr fr 🧩
  • -v, --verify [method] β€” verify flash after writing. Method can be crc (default) or read. Method read means that after writing all modified flash content is read back and compared to input flash image. Method crc means that after writing is completed target is configured to calculate CRC-16 over own flash and send results back so it ca be compared to crc of the input flash image. Method crc is much faster against read out all flash data. (yes, "it ca be" is literally what the original says, I'm not touching it πŸ™ˆ) πŸš€
  • -t, --test β€” search for programmer and target and print various information of them. vibe check on your whole setup ✨
  • -l, --lock lock_data β€” specify lock data as hex string or list of lock qualifiers. Hex data must be exactly 1 byte (2 hex digits) or 16 bytes (32 hex digits), LSB first, depending on target. Lock qualifiers correspond to lock bit of target (see target datasheet). Not all targets support all qualifiers. Qualifiers are:
    • debug β€” debug lock bit
    • boot β€” boot lock bit (for targets CC111x, CC243x, CC251x)
    • pages[:n[,k[,x-y]]] β€” specify what pages to lock (starting with 0), if target support per-page lock. (for targets CC253x, CC254x)
    • flash[:a] β€” specify the size in KB of the upper flash area to lock if target support per-flash-area-size lock (for targets CC111x, CC243x, CC251x)

Qualifier list is delimited by semicolon (See example section). πŸ”’

  • --log [log_file] β€” create log file with all operations performed. Useful for debugging cc-tool itself. Warning: if write operations is performed log file will also contain the written image! 🚨
  • --reset β€” perform target reset. There's no need to use this option along with others because reset is performed anyway when needed. it does the thing on its own, so don't bother πŸ”„
  • -n, --name target_name β€” specify target name e.g. CC2530 etc. If specified target does not match detected one no further actions are performed. This option is not required. lowkey optional but highkey useful 🏷️
  • -s, --flash-size specify target flash size β€” specify target flash size in kilobytes. This option is required for any actions with MAC address when target is CC2430. ⚠️ required, not a suggestion, for CC2430 MAC stuff

🌈 SUPPORTED FILE FORMATS 🌈

Supported image file formats are Intel hex or binary. Format will be determined automatically by file extension (hex or bin) or my be specified explicitly by adding ,bin or ,hex after file name. See EXAMPLES section. (and yes, "my be" β€” I'm keeping it exactly as written, the typos are part of the lore πŸ’€)


πŸ“ EXAMPLES πŸ“

Read entire flash into binary file image.xxx

cc-tool -r image.xxx,bin

Erase flash, write intel hex file image.hex and verify flash using default method

cc-tool -v -e -w image.hex

Merge file image.hex and patch.bin (at offset 80), write resulting image, verify flash using read method

cc-tool -v read -w image.hex --write patch.bin,80

Set debug lock bit

cc-tool --lock debug

Set debug lock bit and lock pages 0,1,2,3,4

cc-tool --lock debug;pages:0-4

Set debug lock bit, boot lock bit, and set lock size 8K

cc-tool --lock debug;boot;flash:8

πŸ‘‘ EXIT STATUS πŸ‘‘

cc-tool returns a zero exist status if all action were performed successfully. Non zero is returned in case of failure. zero = slay, non-zero = something went wrong bestie 😭


πŸ’œ AUTHOR πŸ’œ

George Stark (george-u (at) yandex.com)


and that's the whole page!! this was cc-tool version 0.26+, dated March 01 2013, from the cc-tool(1) manual. go flash something iconic, bestie πŸŽ€βœ¨πŸ’