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