Navigation Menu

Skip to content

Commit

Permalink
Add a flasher helper
Browse files Browse the repository at this point in the history
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
  • Loading branch information
alexandrebelloni committed Jul 21, 2015
1 parent 4d8358e commit 97996e9
Show file tree
Hide file tree
Showing 3 changed files with 619 additions and 0 deletions.
74 changes: 74 additions & 0 deletions flashing.txt
@@ -0,0 +1,74 @@
Flashing the NAND using SAM-BA
==============================

This document explains how to flash a system on various Atmel boards.
Additional details can also be found on the Linux4SAM website, in particular
here: http://www.at91.com/linux4sam/bin/view/Linux4SAM/GettingStarted

Connect the board:
o at91sam9g45m10ek: DBGU: J10, USB sam-ba: J14
o at91sam9rlek: DBGU: J19, USB sam-ba: J21
o at91sam9x5ek: DBGU: J11, USB sam-ba: J20
o sama5d3xek: DBGU: J14, USB sam-ba: J20
o sama5d3 Xplained: DBGU: J23, USB sam-ba: J6
o sama5d4ek: DBGU: J22 or J24, USB sam-ba: J1
o sama5d4 Xplained: DBGU: J1, USB sam-ba: J11

Start the board in RomBOOT:
o at91sam9g45m10ek:
1. open JP8, JP10 and JP12
2. start the board
3. close JP8, JP10 and JP12

o at91sam9rlek:
1. J11 on 1-2 (BMS=1), open J12 and J13
2. start the board
3. close J12 and J13

o at91sam9x5ek:
1. open JP9 and:
- Cogent: open *NCS jumper
- Embest: open SW1
- Ronetix: open J1 and J2
2. start the board
3. close JP9 and:
- Cogent: close *NCS jumper
- Embest: close SW1 (ON position)
- Ronetix: close J1 and J2

o sama5d3xek:
1. start the board
2. push BP4 and BP1
3. release BP1
4. release BP4

o sama5d3 Xplained:
1. open JP5 (NANDCS) and JP6 (SPICS)
2. start the board
3. close JP5 ans JP6

o sama5d4ek:
1. start the board
2. push BP3 and BP4
3. release BP4
4. release BP3

o sama5d4 Xplained:
1. close JP7 (BOOT_DIS)
2. start the board
3. open JP7

"RomBOOT" should appear on your console (this should be ttyUSBx or ttyACMx)

Now locate the USB sam-ba interface it should be ttyACMx, usually ttyACM0
dmesg on your machine should give:
usb 1-2.1.4: New USB device found, idVendor=03eb, idProduct=6124
usb 1-2.1.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
cdc_acm 1-2.1.4:1.0: ttyACM0: USB ACM device

Look for idVendor=03eb, idProduct=6124, this is the interface you want to use.

You can then flash the board using the provided flasher.sh script in board/atmel:

../source/meta-atmel/scripts/flasher.sh <image_name> <interface> <board> [lcd]

186 changes: 186 additions & 0 deletions scripts/flasher.sh
@@ -0,0 +1,186 @@
#!/bin/bash

IMAGE=$1
TTY=$2
BOARD=$3
LCD=${4:-none}

family_at91sam9g45m10ek="at91sam9m10g45ek"
mach_at91sam9g45m10ek="at91sam9m10-g45-ek"
dtb_at91sam9g45m10ek="at91sam9m10g45ek.dtb"

family_at91sam9rlek="at91sam9rlek"
mach_at91sam9rlek="at91sam9rl64-ek"
dtb_at91sam9rlek="at91sam9rlek.dtb"

family_at91sam9g15ek="at91sam9x5ek"
mach_at91sam9g15ek="at91sam9g15-ek"
dtb_at91sam9g15ek="at91sam9g15ek.dtb"

family_at91sam9g25ek="at91sam9x5ek"
mach_at91sam9g25ek="at91sam9g25-ek"
dtb_at91sam9g25ek="at91sam9g25ek.dtb"

family_at91sam9g35ek="at91sam9x5ek"
mach_at91sam9g35ek="at91sam9g35-ek"
dtb_at91sam9g35ek="at91sam9g35ek.dtb"

family_at91sam9x25ek="at91sam9x5ek"
mach_at91sam9x25ek="at91sam9x25-ek"
dtb_at91sam9x25ek="at91sam9x25ek.dtb"

family_at91sam9x35ek="at91sam9x5ek"
mach_at91sam9x35ek="at91sam9x35-ek"
dtb_at91sam9x35ek="at91sam9x35ek.dtb"

family_sama5d31ek="sama5d3xek"
mach_sama5d31ek="at91sama5d3x-ek"
dtb_sama5d31ek="sama5d31ek.dtb"
dtb_sama5d31ek_pda4="sama5d31ek_pda4.dtb"
dtb_sama5d31ek_pda7="sama5d31ek_pda7.dtb"

family_sama5d31ek_revc="sama5d3xek"
mach_sama5d31ek_revc="at91sama5d3x-ek"
dtb_sama5d31ek_revc="sama5d31ek_revc.dtb"
dtb_sama5d31ek_revc_pda4="sama5d31ek_revc_pda4.dtb"
dtb_sama5d31ek_revc_pda7="sama5d31ek_revc_pda7.dtb"

family_sama5d33ek="sama5d3xek"
mach_sama5d33ek="at91sama5d3x-ek"
dtb_sama5d33ek="sama5d33ek.dtb"
dtb_sama5d33ek_pda4="sama5d33ek_pda4.dtb"
dtb_sama5d33ek_pda7="sama5d33ek_pda7.dtb"

family_sama5d33ek_revc="sama5d3xek"
mach_sama5d33ek_revc="at91sama5d3x-ek"
dtb_sama5d33ek_revc="sama5d33ek_revc.dtb"
dtb_sama5d33ek_revc_pda4="sama5d33ek_revc_pda4.dtb"
dtb_sama5d33ek_revc_pda7="sama5d33ek_revc_pda7.dtb"

family_sama5d34ek="sama5d3xek"
mach_sama5d34ek="at91sama5d3x-ek"
dtb_sama5d34ek="sama5d34ek.dtb"
dtb_sama5d34ek_pda4="sama5d34ek_pda4.dtb"
dtb_sama5d34ek_pda7="sama5d34ek_pda7.dtb"

family_sama5d34ek_revc="sama5d3xek"
mach_sama5d34ek_revc="at91sama5d3x-ek"
dtb_sama5d34ek_revc="sama5d34ek_revc.dtb"
dtb_sama5d34ek_revc_pda4="sama5d34ek_revc_pda4.dtb"
dtb_sama5d34ek_revc_pda7="sama5d34ek_revc_pda7.dtb"

family_sama5d35ek="sama5d3xek"
mach_sama5d35ek="at91sama5d3x-ek"
dtb_sama5d35ek="sama5d35ek.dtb"

family_sama5d35ek_revc="sama5d3xek"
mach_sama5d35ek_revc="at91sama5d3x-ek"
dtb_sama5d35ek_revc="sama5d35ek_revc.dtb"

family_sama5d36ek="sama5d3xek"
mach_sama5d36ek="at91sama5d3x-ek"
dtb_sama5d36ek="sama5d36ek.dtb"
dtb_sama5d36ek_pda4="sama5d36ek_pda4.dtb"
dtb_sama5d36ek_pda7="sama5d36ek_pda7.dtb"

family_sama5d36ek_revc="sama5d3xek"
mach_sama5d36ek_revc="at91sama5d3x-ek"
dtb_sama5d36ek_revc="sama5d36ek_revc.dtb"
dtb_sama5d36ek_revc_pda4="sama5d36ek_revc_pda4.dtb"
dtb_sama5d36ek_revc_pda7="sama5d36ek_revc_pda7.dtb"

family_sama5d3_xplained="sama5d3_xplained"
mach_sama5d3_xplained="at91sama5d3x-xplained"
dtb_sama5d3_xplained="at91-sama5d3_xplained.dtb"
dtb_sama5d3_xplained_pda4="at91-sama5d3_xplained_pda4.dtb"
dtb_sama5d3_xplained_pda7="at91-sama5d3_xplained_pda7.dtb"

family_sama5d4ek="sama5d4ek"
mach_sama5d4ek="at91sama5d4x-ek"
dtb_sama5d4ek="at91-sama5d4ek.dtb"

family_sama5d4_xplained="sama5d4_xplained"
mach_sama5d4_xplained="at91sama5d4x-ek"
dtb_sama5d4_xplained="at91-sama5d4_xplained.dtb"
dtb_sama5d4_xplained_pda4="at91-sama5d4_xplained_pda4.dtb"

usage() {
cat << EOF
Usage:
$0 <image_name> <interface> <board> [lcd]
Available boards:
at91sam9g45m10ek
at91sam9rlek
at91sam9g15ek
at91sam9g25ek
at91sam9x25ek
at91sam9g35ek
at91sam9x35ek
sama5d31ek
sama5d33ek
sama5d34ek
sama5d35ek
sama5d36ek
sama5d31ek_revc (Until rev. C)
sama5d33ek_revc (Until rev. C)
sama5d34ek_revc (Until rev. C)
sama5d35ek_revc (Until rev. C)
sama5d36ek_revc (Until rev. C)
sama5d3_xplained
sama5d4ek
sama5d4_xplained
Example:
$0 atmel-qt5-demo-image /dev/ttyACM0 at91sam9g45m10ek
EOF
}

F="family_$BOARD"
M="mach_$BOARD"
D="dtb_$BOARD"

if [[ $# < 3 || -z ${!F} ]]; then
usage
exit 1
fi

case $LCD in
pda4)
video_mode="video=LVDS-1:480x272-16"
D="$D_$LCD"
;;
pda7)
video_mode="video=LVDS-1:800x480-16"
D="${D}_${LCD}"
;;
*)
video_mode="video=LVDS-1:800x480-16"
;;
esac

if [[ -z ${!D} ]]; then
echo "unknown board and LCD combination"
exit 1
fi

if [[ -z $(which bitbake) ]]; then
echo "bitbake not in path please setup the environment"
exit 1
fi

eval $(MACHINE=${!F/_/-} bitbake -e $IMAGE | grep -E "(^DEPLOY_DIR_IMAGE|^IMAGE_LINK_NAME|^STAGING_BINDIR_NATIVE)")

SAMBA=$(which sam-ba)
if [[ -z $SAMBA ]]; then
SAMBA=${STAGING_BINDIR_NATIVE}/sam-ba_cdc_linux/sam-ba
fi

if [[ ! -f $SAMBA ]]; then
echo "Couldn't find sam-ba. Add it to your path or bitbake sam-ba-native"
exit 1
fi

echo "Executing: O=${DEPLOY_DIR_IMAGE}/ $SAMBA $TTY ${!M} $(dirname $0)/nandflash.tcl -- ${!F} zImage-${!D} $rootfs $video_mode"
export O=${DEPLOY_DIR_IMAGE}/
$SAMBA $TTY ${!M} $(dirname $0)/nandflash.tcl -- ${!F} zImage-${!D} ${IMAGE_LINK_NAME}.ubi $video_mode

0 comments on commit 97996e9

Please sign in to comment.