== Writing SD Cards: Mac OS X == Apple provides a copy of dd with recent releases of OS X (at least since 10.7, probably earlier). '''Finding the SD card descriptor:'''[[BR]] 1. Insert the SD card 1. In a terminal run {{{diskutil list}}}. Look for the SD card in the list of disks. On a MacBook with a singe hard drive, the output is: {{{ #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *500.1 GB disk0 1: EFI 209.7 MB disk0s1 2: Apple_HFS Macintosh HD 499.2 GB disk0s2 3: Apple_Boot Recovery HD 650.0 MB disk0s3 /dev/disk1 #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *2.0 GB disk1 1: DOS_FAT_32 WARP SD 32.0 MB disk1s1 }}} 2. In this example, the SD card device descriptor is {{{/dev/disk1}}}. The actual descriptor will differ on other machines with different disk configurations, but should take the form {{{/dev/diskX}}}. '''Copying the .bin file:'''[[BR]] 1. Unmount ('''not''' eject) the drive using this command (replacing {{{X}}} with your actual SD descriptor): {{{ diskutil unmountDisk /dev/diskX }}} 1. Run this command, replacing the last three arguments with the correct values: {{{ dd bs=512 seek= if= of= }}} 1. '''': depends on the target slot number; use (131072 + slotNum*32768). More details [wiki:..#Copying.binFilesSDCards here]. 1. '''': the binary FPGA configuration file 1. '''': device descriptor for the SD card 1. If successful, dd should report the following (the time/throughput values will differ): {{{ 18032+1 records in 18032+1 records out 9232444 bytes transferred in 8.503631 secs (1085706 bytes/sec) }}} 1. Repeat for additional .bin config files in additional slots if needed. 1. Eject the SD card in the Finder (if it's mounted). '''Using a shell script to copy a .bin file to the SD card:'''[[BR]] The following script automatically looks for the file descriptor of the SD card and copies the .bin file to the chosen slot. To execute the script: 1. copy the script to a text file 1. save it under the name copytosd.sh 1. make it executable (chmod +x copytosd.sh) 1. run it as root: sudo ./copytosd.sh. {{{ #!/bin/sh # Author: Matthias Schulz # The author is not responsible for the consequences of use of this script # Check if at least two arguments are passed if [ $# -lt 2 ] then echo "Usage : ./copytosd.sh filename slot [description]" exit fi if [ $# -eq 3 ] then find "/Volumes/WARP SD" -name "`printf \"Slot %s - *\" \"$2\"`" -delete FILE="/Volumes/WARP SD/`printf \"Slot %s - %s\" \"$2\" \"$3\"`" echo "" > $FILE fi DISK=/dev/`diskutil list | grep "WARP SD" | cut -c 69-73` diskutil unmountDisk $DISK case "$2" in 0) dd bs=512 seek=131072 if=$1 of=$DISK ;; 1) dd bs=512 seek=163840 if=$1 of=$DISK ;; 2) dd bs=512 seek=196608 if=$1 of=$DISK ;; 3) dd bs=512 seek=229376 if=$1 of=$DISK ;; 4) dd bs=512 seek=262144 if=$1 of=$DISK ;; 5) dd bs=512 seek=294912 if=$1 of=$DISK ;; 6) dd bs=512 seek=327680 if=$1 of=$DISK ;; 7) dd bs=512 seek=360448 if=$1 of=$DISK ;; *) echo "Error: use a slot number between 0 and 7" exit ;; esac diskutil unmountDisk $DISK }}}