Project

General

Profile

Flashing » History » Version 3

tsaitgaist, 07/10/2018 06:48 PM
rename simtrace 2 board to simtrace

1 2 tsaitgaist
{{>toc}}
2 2 tsaitgaist
3 1 tsaitgaist
h1. Flashing
4 1 tsaitgaist
5 1 tsaitgaist
There are several ways to flash firmware images, depending on the image you can to flash.
6 1 tsaitgaist
7 1 tsaitgaist
h2. DFU
8 1 tsaitgaist
9 1 tsaitgaist
SIMtrace 2 comes with a USB DFU bootloader pre-installed which allows to flash the application firmware over USB using the @dfu-util@ utility.
10 1 tsaitgaist
11 1 tsaitgaist
To get @dfu-util@:
12 1 tsaitgaist
<pre>
13 1 tsaitgaist
sudo apt-get install dfu-util
14 1 tsaitgaist
</pre>
15 1 tsaitgaist
16 1 tsaitgaist
To flash the firmware:
17 1 tsaitgaist
<pre>
18 1 tsaitgaist
sudo dfu-util --device 1d50:PID --cfg 1 --alt 1 --reset --download BOARD-APP-dfu.bin
19 1 tsaitgaist
</pre>
20 1 tsaitgaist
21 1 tsaitgaist
*PID* is the USB product ID for the corresponding [[Wiki#Hardware|hardware platform]]:
22 3 tsaitgaist
* @60e3@ for the [[Wiki#SIMtrace v2|SIMtrace board]]
23 1 tsaitgaist
* @4004@ for the [[Wiki#sysmoQMOD|sysmoQMOD board]]
24 1 tsaitgaist
25 1 tsaitgaist
*BOARD* is the name of the target board for which the firmware image has been built:
26 3 tsaitgaist
* @simtrace@ for the [[Wiki#SIMtrace v2|SIMtrace board]]
27 1 tsaitgaist
* @qmod@ for the [[Wiki#sysmoQMOD|sysmoQMOD board]]
28 1 tsaitgaist
29 1 tsaitgaist
*APP* is the firmware application name as listed in the [[Wiki#Firmware|firmware section]].
30 1 tsaitgaist
31 1 tsaitgaist
You can find pre-built images on the [[Wiki#Firmware|firmware section]].
32 1 tsaitgaist
33 1 tsaitgaist
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:
34 1 tsaitgaist
<pre>
35 2 tsaitgaist
# add current user to plugdev group (user needs to re-login for this change to take effect)
36 2 tsaitgaist
sudo adduser $USERNAME plugdev
37 2 tsaitgaist
# grant access permission to SIMtrace 2 for plugdev group
38 2 tsaitgaist
sudo wget --output-file=/etc/udev/rules.d/99-simtrace2.rules https://git.osmocom.org/simtrace2/plain/host/99-simtrace2.rules 
39 1 tsaitgaist
# reload udev rules
40 1 tsaitgaist
sudo udevadm control --reload-rules
41 1 tsaitgaist
sudo udevadm trigger
42 1 tsaitgaist
</pre>
43 1 tsaitgaist
44 2 tsaitgaist
h3. Forcing DFU
45 2 tsaitgaist
46 2 tsaitgaist
@dfu-util@ should reset the board and start the DFU bootloader.
47 1 tsaitgaist
Try the command a second time if it did not work at first.
48 2 tsaitgaist
If this still does not work, you can force the board to boot the DFU bootloader:
49 3 tsaitgaist
* on [[Wiki#SIMtrace v2|SIMtrace boards]] keep the *BOOTLOADER* button pressed while shortly pressing on the *RESET* button
50 2 tsaitgaist
!{width:20%}simtrace-board-buttons.jpg!
51 2 tsaitgaist
* on [[Wiki#sysmoQMOD|sysmoQMOD boards]] short the TX and RX pins next to the micro-controller while powering the board.
52 2 tsaitgaist
!{width:20%}sysmoqmod-dfu.jpg!
53 1 tsaitgaist
54 2 tsaitgaist
If the USB DFU bootloader is missing, defective, or needs to be updated, use the JTAG or SAMBA methods to flash the bootloader firmware.
55 1 tsaitgaist
56 2 tsaitgaist
h2. SAMBA
57 1 tsaitgaist
58 1 tsaitgaist
The SAM3S micro-controller comes with an embedded bootloader called SAMBA, allowing to flash firmwares over USB.
59 1 tsaitgaist
The SAMBA bootloader can be used to flash the DFU bootloader.
60 2 tsaitgaist
61 3 tsaitgaist
To activate the SAMBA bootloader on [[Wiki#SIMtrace v2|SIMtrace boards]]:
62 1 tsaitgaist
# short the *ERASE* pin on the top of the board with the nearby 3V3 pin using a jumper
63 2 tsaitgaist
!{width:20%}simtrace-jumper-mini.jpg!
64 3 tsaitgaist
# connect SIMtrace over USB to power it up (no LED will light up) and wait 1 second
65 2 tsaitgaist
# remove the jumper shorting *ERASE* to 3V3
66 2 tsaitgaist
67 2 tsaitgaist
To activate the SAMBA bootloader on [[Wiki#sysmoQMOD|sysmoQMOD boards]]:
68 2 tsaitgaist
# connect using an USB to UART adapter to the serial port on the SAM3S micro-controller *opposite* of the one you want to reflash
69 2 tsaitgaist
!{width:20%}sysmoqmod-dfu.jpg!
70 2 tsaitgaist
# the serial configuration is 115200 8N1
71 2 tsaitgaist
# enter 'y'
72 2 tsaitgaist
# wait 1 second
73 2 tsaitgaist
# enter 'Y'
74 2 tsaitgaist
75 2 tsaitgaist
To verifry if the SAMBA bootloader has been started:
76 1 tsaitgaist
# using @lsusb@ you should find the following entry:
77 1 tsaitgaist
<pre>
78 1 tsaitgaist
ID 03eb:6124 Atmel Corp. at91sam SAMBA bootloader
79 1 tsaitgaist
</pre>
80 3 tsaitgaist
# using @journalctl -f@ ensure the board has been recognized as USB ACM device:
81 1 tsaitgaist
<pre>
82 1 tsaitgaist
kernel: usb 2-2: new full-speed USB device number 4 using xhci_hcd
83 1 tsaitgaist
kernel: usb 2-2: New USB device found, idVendor=03eb, idProduct=6124
84 1 tsaitgaist
kernel: usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
85 1 tsaitgaist
kernel: cdc_acm 2-2:1.0: ttyACM0: USB ACM device
86 1 tsaitgaist
kernel: usbcore: registered new interface driver cdc_acm
87 1 tsaitgaist
kernel: cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
88 1 tsaitgaist
</pre>
89 2 tsaitgaist
90 2 tsaitgaist
To flash using the SAMBA bootloader:
91 1 tsaitgaist
# install the @bossac@ utility to flash using the SAMBA protocol
92 1 tsaitgaist
<pre>
93 1 tsaitgaist
sudo apt install bossac
94 1 tsaitgaist
</pre>
95 2 tsaitgaist
# download the DFU bootloader firmware image corresponding to your board:
96 3 tsaitgaist
** attachment:simtrace-dfu-flash.bin for [[Wiki#SIMtrace v2|SIMtrace boards]]
97 2 tsaitgaist
** attachment:qmod-dfu-flash.bin for [[Wiki#sysmoQMOD|sysmoQMOD boards]]
98 1 tsaitgaist
# 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)
99 1 tsaitgaist
<pre>
100 2 tsaitgaist
sudo bossac --port /dev/ttyACM0 --erase --write BOARD-dfu-flash.bin --verify --boot=1
101 1 tsaitgaist
</pre>
102 2 tsaitgaist
## using the following firmware image:
103 2 tsaitgaist
104 1 tsaitgaist
# 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
105 1 tsaitgaist
<pre>
106 1 tsaitgaist
sudo adduser $USERNAME dialout
107 1 tsaitgaist
</pre>
108 1 tsaitgaist
109 2 tsaitgaist
Once the USB DFU bootloader is flashed, when re-pluging the SIMtrace 2 device over USB, you can flash the main application firmware using the [[Flashing#DFU|DFU]] method.
110 1 tsaitgaist
111 2 tsaitgaist
h2. JTAG
112 1 tsaitgaist
113 3 tsaitgaist
It is also possible to flash or debug [[Wiki#SIMtrace v2|SIMtrace boards]] over JTAG using the ARM 20-pin JTAG header on the top of the board.
114 1 tsaitgaist
115 1 tsaitgaist
To flash the USB DFU firmware using JTAG:
116 1 tsaitgaist
# install the JTAG utility @openOCD@
117 1 tsaitgaist
<pre>
118 1 tsaitgaist
sudo apt install openocd
119 1 tsaitgaist
</pre>
120 1 tsaitgaist
# flash the USB DFU bootloader firmware
121 1 tsaitgaist
<pre>
122 2 tsaitgaist
openocd --file interface/jlink.cfg --file target/at91sam3sXX.cfg --command "init" --command "halt" --command "flash write_bank 0 simtrace-dfu-flash.bin 0" --command "at91sam3 gpnvm set 1" --command "reset" --command "shutdown"
123 1 tsaitgaist
</pre>
124 1 tsaitgaist
#* replace @interface/jlink.cfg@ with the configuration file for your JTAG debugging adapter
125 1 tsaitgaist
#* @at91sam3 gpnvm set 1@ ensures the micro-controller will boot from the internal flash (i.e. not from the embedded SAMBA bootloader)
126 1 tsaitgaist
127 1 tsaitgaist
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):
128 1 tsaitgaist
<pre>
129 2 tsaitgaist
openocd --file interface/stlink-v2.cfg --command "set CPUTAPID 0x2ba01477" --file target/at91sam3sXX.cfg --command "init" --command "halt" --command "flash write_bank 0 simtrace-dfu-flash.bin 0" --command "at91sam3 gpnvm set 1" --command "reset" --command "shutdown"
130 1 tsaitgaist
</pre>
131 1 tsaitgaist
132 1 tsaitgaist
SWD pinout:
133 2 tsaitgaist
!{width:20%}simtrace_swd.jpg!
134 1 tsaitgaist
135 1 tsaitgaist
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)