SIMtrace Firmware » History » Version 10
Anonymous, 02/19/2016 10:48 PM
1 | 1 | laforge | = SIMtrace Firmware = |
---|---|---|---|
2 | |||
3 | 4 | laforge | The Firmware for the AT91SAM7S device was written by reusing a lot of the code for the [http://www.openpcd.org/ OpenPCD] |
4 | RFID reader. |
||
5 | 1 | laforge | |
6 | 4 | laforge | There is a {{{simtrace}}} Makefile target in the git://git.gnumonks.org/openpcd.git repository containing the latest firmware code. |
7 | |||
8 | Eventually, the OS part of OpenPCD/OpenPICC/SIMtrace will be separated. At that point, the firmware source can become |
||
9 | part of simtrace.git |
||
10 | |||
11 | == Building the firmware == |
||
12 | |||
13 | Precondition: You need to set your PATH in a way that contains an arm-elf [wiki:toolchain], i.e. the same way that you build [wiki:GettingStarted OsmocomBB]. |
||
14 | |||
15 | {{{ |
||
16 | 7 | laforge | $ git clone git://git.gnumonks.org/openpcd.git |
17 | $ cd openpcd/firmware |
||
18 | $ make -f Makefile.dfu BOARD=SIMTRACE |
||
19 | $ make BOARD=SIMTRACE DEBUG=1 TARGET=main_simtrace |
||
20 | $ cat dfu.bin main_simtrace.bin > main_simtrace.samba |
||
21 | $ cd ../.. |
||
22 | 4 | laforge | }}} |
23 | |||
24 | === Firmware parts === |
||
25 | |||
26 | The firmware build process creates two images: |
||
27 | * dfu.bin -- the sam7dfu 2nd level bootloader. It implements the USB DFU (Device Firmware Upgrade) profile. |
||
28 | * main_simtrace.bin -- the actual simtrace program. To be loaded via DFU, using [http://dfu-util.gnumonks.org/ dfu-util]. |
||
29 | * main_simtrace.samba -- [http://www.openpcd.org/Sam7dfu sam7dfu] + simtrace image. to be loaded via SAM-BA, using sam7utils (see below). |
||
30 | |||
31 | |||
32 | 5 | laforge | === sam7utils === |
33 | 4 | laforge | |
34 | 9 | laforge | SAM-BA images contain a full NOR flash image. They can be used in case the sam7dfu bootloader was corrupted, |
35 | and can be installed either using the '''sam7''' program released by Atmel, or via JTAG based flashing. |
||
36 | |||
37 | Installing firmware using SAM-BA is a bit cumbersome and requires strict adherence to a sequence of USB cable |
||
38 | plugging/unplugging and jumper setting, waiting, jumper removal, etc. |
||
39 | |||
40 | |||
41 | 4 | laforge | sam7utils will be used to flash the '''main_simtrace.samba''' image over SAM-BA. |
42 | {{{ |
||
43 | 8 | laforge | $ sudo aptitude install libreadline-dev |
44 | $ wget http://www.openpcd.org/dl/sam7utils-0.2.1-bm.tar.bz2 |
||
45 | $ tar xf sam7utils-*.tar.bz2 |
||
46 | $ cd sam7utils |
||
47 | $ ./configure --prefix=/usr/local |
||
48 | $ make |
||
49 | 4 | laforge | }}} |
50 | |||
51 | to flash the samba image using serial : |
||
52 | {{{ |
||
53 | 7 | laforge | $ sudo ./sam7 -l /dev/ttyUSB0 --exec set_clock --exec unlock_regions --exec "flash ../openpcd/firmware/main_simtrace.samba" |
54 | 4 | laforge | }}} |
55 | to flash the samba image using libusb : |
||
56 | {{{ |
||
57 | 7 | laforge | $ sudo ./sam7 --exec set_clock --exec unlock_regions --exec "flash ../openpcd/firmware/main_simtrace.samba" |
58 | 4 | laforge | }}} |
59 | |||
60 | if you want to use sam7 multiple times, remove the loaded module after each run: |
||
61 | {{{ |
||
62 | 7 | laforge | $ sudo rmmod sam_ba |
63 | 4 | laforge | }}} |
64 | |||
65 | 5 | laforge | ==== sam7utils for x86 ==== |
66 | 4 | laforge | |
67 | On x86, sam7utils will be compiled to communicate with the board using POSIX. |
||
68 | |||
69 | The board should be attached to a node. On ubuntu 10.10, the usb device 03eb:6124 is mapped on /dev/ttyACM0 using the cdc_cam module. If not mapped, use usbserial : |
||
70 | {{{ |
||
71 | 7 | laforge | $ sudo rmmod usbserial |
72 | $ sudo modprobe usbserial vendor=0x03EB product=0x6124 |
||
73 | 4 | laforge | }}} |
74 | |||
75 | Now replug board. It should map to /dev/ttyUSBx (use dmesg to know which). |
||
76 | |||
77 | 5 | laforge | ==== sam7utils for amd64 ==== |
78 | 4 | laforge | |
79 | On amd64, sam7utils will be compiled to communicate with the board using libusb. |
||
80 | |||
81 | On ubuntu 10.10 & 11.04, the usb device 03eb:6124 is mapped on /dev/ttyACMx using the cdc_cam module. |
||
82 | 8 | laforge | Remove it while the board is plugged, so sam7utils is able to communicate with it (using libusb for 10.10 and serial for 11.04). |
83 | 4 | laforge | {{{ |
84 | $ sudo rmmod cdc_acm |
||
85 | 6 | laforge | }}} |
86 | |||
87 | 1 | laforge | === DFU === |
88 | 6 | laforge | |
89 | 9 | laforge | The Device Firmware Upgrade (DFU) can be used to replace the SIMtrace payload. |
90 | 6 | laforge | |
91 | To get dfu-util: |
||
92 | {{{ |
||
93 | 7 | laforge | $ sudo apt-get install dfu-util |
94 | 6 | laforge | }}} |
95 | 1 | laforge | |
96 | To flash the firmware: |
||
97 | {{{ |
||
98 | $ dfu-util -d 16c0:0762 -a0 -D ./main_simtrace.bin -R |
||
99 | }}} |
||
100 | 9 | laforge | |
101 | 2 | laforge | dfu-util should reset the board and use the DFU bootloader. Try the command a second time if it did not work at first. |
102 | If this still does not work, power up the board while pressing the '''BOOTLOADER''' button. |
||
103 | |||
104 | == Bugs == |
||
105 | 3 | laforge | |
106 | Currently there is a bug in the firmware that makes the device fail to enumerate on OSX. We provide an alternative hacked firmware until we have resolved the issue properly. |
||
107 | 9 | laforge | |
108 | == Version History == |
||
109 | 10 | laforge | * v0.2 Fixes ATR handling for older SIMcards. |