Project

General

Profile

Flashing » History » Version 1

tsaitgaist, 07/10/2018 03:36 PM
put content from main page and update it

1 1 tsaitgaist
h1. Flashing
2
3
There are several ways to flash firmware images, depending on the image you can to flash.
4
5
h2. DFU
6
7
SIMtrace 2 comes with a USB DFU bootloader pre-installed which allows to flash the application firmware over USB using the @dfu-util@ utility.
8
9
To get @dfu-util@:
10
<pre>
11
sudo apt-get install dfu-util
12
</pre>
13
14
To flash the firmware:
15
<pre>
16
sudo dfu-util --device 1d50:PID --cfg 1 --alt 1 --reset --download BOARD-APP-dfu.bin
17
</pre>
18
19
*PID* is the USB product ID for the corresponding [[Wiki#Hardware|hardware platform]]:
20
* @60e3@ for the [[Wiki#SIMtrace 2|SIMtrace 2 board]]
21
* @4004@ for the [[Wiki#sysmoQMOD|sysmoQMOD board]]
22
23
*BOARD* is the name of the target board for which the firmware image has been built:
24
* @simtrace@ for the [[Wiki#SIMtrace 2|SIMtrace 2 board]]
25
* @qmod@ for the [[Wiki#sysmoQMOD|sysmoQMOD board]]
26
27
*APP* is the firmware application name as listed in the [[Wiki#Firmware|firmware section]].
28
29
You can find pre-built images on the [[Wiki#Firmware|firmware section]].
30
31
To prevent having to use @sudo@ in order to use @dfu-util@ on SIMtrace 2, grant access permission to the USB device to the current user:
32
<pre>
33
# create osmocom group
34
sudo groupadd osmocom
35
# add current user to osmocom group (user needs to re-login for this change to take effect)
36
sudo adduser $USERNAME osmocom
37
# grant access permission to SIMtrace 2 for osmocom group
38
sudo tee -a /etc/udev/rules.d/10-osmocom.rules << EOF
39
# SIMtrace 2
40
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d50", ATTR{idProduct}=="60e3",  MODE="0660", GROUP="osmocom" 
41
# sysmoQMOD
42
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d50", ATTR{idProduct}=="4004",  MODE="0660", GROUP="osmocom" 
43
EOF
44
# reload udev rules
45
sudo udevadm control --reload-rules
46
sudo udevadm trigger
47
</pre>
48
49
@dfu-util@ should reset the board and use the DFU bootloader.
50
Try the command a second time if it did not work at first.
51
If this still does not work, power up the board while pressing the *BOOTLOADER* button.
52
53
If the USB DFU bootloader is missing, defective, or needs to be updated, use the JTAG or SAM-BA methods to flash the bootloader firmware.
54
55
h4. SAMBA
56
57
The SAM3S micro-controller comes with an embedded bootloader called SAMBA, allowing to flash firmwares over USB.
58
The SAMBA bootloader can be used to flash the DFU bootloader.
59
To activate the SAMBA bootloader:
60
# short the *ERASE* pin on the top of the board with the nearby 3V3 pin using a jumper
61
# connect SIMtrace 2 over USB to power it up (no LED will light up)
62
# using @lsusb@ you should find the following entry:
63
<pre>
64
ID 03eb:6124 Atmel Corp. at91sam SAMBA bootloader
65
</pre>
66
# using @journalctl -f@ ensure SIMtrace 2 has been recognized as USB ACM device:
67
<pre>
68
kernel: usb 2-2: new full-speed USB device number 4 using xhci_hcd
69
kernel: usb 2-2: New USB device found, idVendor=03eb, idProduct=6124
70
kernel: usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
71
kernel: cdc_acm 2-2:1.0: ttyACM0: USB ACM device
72
kernel: usbcore: registered new interface driver cdc_acm
73
kernel: cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
74
</pre>
75
# remove the jumper shorting *ERASE* to 3V3
76
# install the @bossac@ utility to flash using the SAMBA protocol
77
<pre>
78
sudo apt install bossac
79
</pre>
80
# flash the USB DFU firmware using @bossac@ (note: @erase@ ensures no main application remains so to force booting the USB DFU bootloader; @boot=1@ ensures the micro-controller will boot from the internal flash instead of the embedded bootloader next time it is powered up)
81
<pre>
82
sudo bossac --port /dev/ttyACM0 --erase --write ./bin/simtrace-dfu-flash.bin --verify --boot=1
83
</pre>
84
# to prevent using @sudo@, grant to current user the permission to access USB serial devices (e.g. @/dev/ttyACM0@). Note: this change only takes effect after re-logging-in
85
<pre>
86
sudo adduser $USERNAME dialout
87
</pre>
88
89
Once the USB DFU bootloader is flashed, when re-pluging SIMtrace 2 over USB, you can flash the main application firmware using the DFU method.
90
91
h4. JTAG
92
93
It is also possible to flash or debug SIMtrace 2 over JTAG using the ARM 20-pin JTAG header on the top of the board.
94
95
To flash the USB DFU firmware using JTAG:
96
# install the JTAG utility @openOCD@
97
<pre>
98
sudo apt install openocd
99
</pre>
100
# flash the USB DFU bootloader firmware
101
<pre>
102
openocd --file interface/jlink.cfg --file target/at91sam3sXX.cfg --command "init" --command "halt" --command "flash write_bank 0 ./bin/simtrace-dfu-flash.bin 0" --command "at91sam3 gpnvm set 1" --command "reset" --command "shutdown"
103
</pre>
104
#* replace @interface/jlink.cfg@ with the configuration file for your JTAG debugging adapter
105
#* @at91sam3 gpnvm set 1@ ensures the micro-controller will boot from the internal flash (i.e. not from the embedded SAMBA bootloader)
106
107
The SAM3S also offers the low pin-count SWD alternative to JTAG, allowing to use an inexpensive ST-Link V2 (clone) to flash (and debug):
108
<pre>
109
openocd --file interface/stlink-v2.cfg --command "set CPUTAPID 0x2ba01477" --file target/at91sam3sXX.cfg --command "init" --command "halt" --command "flash write_bank 0 ./bin/simtrace-dfu-flash.bin 0" --command "at91sam3 gpnvm set 1" --command "reset" --command "shutdown"
110
</pre>
111
112
SWD pinout:
113
!simtrace_swd.jpg!
114
115
Once the USB DFU bootloader is flashed, when re-pluging SIMtrace 2 over USB, you can flash the main application firmware using the DFU method.
Add picture from clipboard (Maximum size: 48.8 MB)