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. |