41 Commits

Author SHA1 Message Date
Harald Welte
050b9dde68 HACK: Solve weird problem with lost OUT transfer on ping-pong endpoint
This adds an unconditional endpoint reset procedure to every SET_FEATURE(UnHalt).

It doesn't really make sense that this is required, *particularly* as
we *MUST NOT* set bEndpoint->bank to 0 here.

Without this patch, I'm observing the following problem:

Every first OUT transfer after a SET_INTERFACE + UNHALT on a bulk endpoint
is lost. "lost" means that it completes successfully on the host, can
be seen completing successfully with an ACK on a USB bus analyzer,
but still doesn't show up in the firmware.  No Endpoint Interrupt
is generated.

This can be reproduced by calling libusb_set_interface_alt_setting()
from the host and then submitting a single OUT transfer.

Change-Id: I18ed530e617baddf76e8f9829512443ce2a76e0d
2022-03-03 19:06:12 +01:00
Harald Welte
f1a0ed905b WIP: ignore STALL
Change-Id: I53741f265f71797c0594a818f5a1d37534fa3774
2022-03-03 19:06:12 +01:00
Harald Welte
874a1a2d64 HACK: dump enabled interrupts and priorities during startup
Change-Id: I6a19aaa8674fa510e4e346cd14a3545f7bfcc838
2022-03-03 19:06:12 +01:00
Harald Welte
b07131f2a5 HACK: cardem: Don't reset on watchdog, but panic.
This should help debug watchdog triggers.  Also reduce the timer to 1s
to hopefully increase the chance of triggering it.

Change-Id: Ie3f47e5612cdf501abff8cb6954600b785b3a3fa
2022-03-03 19:06:12 +01:00
Harald Welte
7783cd7a28 fw/qmod: enable modem RESET by default at boot
When the uC firmware starts, assert the (high-active) _RESET GPIOs,
which will cause the transistors to drive the mPCIe slot !PERST
low.

There is of course a short instance of time between the uC reset
until it executes wwan_perst_init(). To avoid this, a hardware
pull-up would have to be re-worked onto the _RESET[1..4] signals
on the PCBA

Change-Id: I8742fefa4bf02e728e34d5d8cbc0fda771e78ffb
2022-03-03 19:06:12 +01:00
Harald Welte
09c279874e simtrace: Enable VCC detection via ADC (voltage dependent)
SIMtrace should reject any card activation at 1.8V as it is a 3[.3]V device
without level shifters.  For this, we must include the ADC in
determining the VCC voltage.

Change-Id: Ic76f06037590ff1c0dae818d5eb2c2019dd75f2d
FIXME: reporting uses raw ADC voltage, not the voltage before divider
2022-03-03 19:06:12 +01:00
Harald Welte
755387ee31 Reduce bInterval of interrupt endpoints to avoid interrupt misses
Particularly the VCC/RST/CLK changes can happen quite frequent, and
we were seeing quite a number of overflows of the usb_buf queue for EP06
(interrupt endpoint) in cardem.

I first tried increasing the maximum queue size to up to 10, but that
still didn't resolve those EP06 overflow error log messages.

Reducing the bInterval from 16 to 1 made them go away in all my
tests.

Change-Id: I5c272c31983de7201cfbd445c4484f6832d878ab
2022-03-03 19:06:09 +01:00
Harald Welte
c3f366b55e contrib/simtrace.lua: Add Flag bits + Data to COL_INFO
this provides an esy way to understand more without looking at the
detailed decode for each packet.

Change-Id: I0aa3d68172022907fbe8371aaca6538df0649dfe
2022-03-03 18:04:45 +00:00
Harald Welte
b01dc91c0b simtrace2-cardem-pcsc: continue in case of LIBUSB_TRANSFER_ERROR
Sometimes I get LIBUSB_TRANSFER_ERROR particularly when the USB bus
is very busy.  We shouldn't terminate the program, but simply resubmit
it.  That's what we have multiple transfers for...

Change-Id: I77d7bc636c21171fcff7e70e87c0109cbaee9b51
2022-03-03 17:48:14 +01:00
Harald Welte
5cc3add0b0 simtrace2-cardem-pcsc: Fix copy+paste error in log message
Change-Id: I98e4356900a22f69d0ff262cb112194b1e11d4af
2022-03-03 17:48:14 +01:00
Harald Welte
ca62121c19 host: Don't pass -1 (converted to 255) as address
We initialize a local variable to -1, and if the user specifies
no address from the command line, we use this in the interface match
struct, which uses a uint8_t.  This means 255 ends up in there, and
as a result no usb interface ever matches unless the user explicitly
specifies the -A command line argument.

With this patch any absent -A argument will result in ifm.addr == 0,
which means "don't match on address", and which is what we want here.

Change-Id: Iffb5fa406ddef00c7c15570ffca2c109b98d7a2d
2022-03-03 17:48:14 +01:00
Harald Welte
8b52b44f1b simtrace2-cardem-pcsc: Detect card power-up without RESET
In some readers (at least CardMan 3121), the simtrace2-cardem firmware
claims there are power-up sequences where RESET is released before VCC
becomes active.  Let's detect such spec-incompliant power-up sequences
and use them to trigger a cold reset of the card.

Change-Id: I682ac3d0c2b98749a6ed44f9a73e4b39354a4284
Closes: OS#5421
2022-03-03 15:27:35 +01:00
Harald Welte
71ac54d7bf simtrace2-cardem-pcsc: Move all logging into libosmocore
* drop log statements that are already in libosmo-simtrace2
* don't printf directly, but go via LOGCI
* make LOGCI use libosmocore logging
* configure libosmocore logging in a 'convenient' way

Change-Id: I6fa0da966e6d8e723c187404c17e90cfb3f3dd9f
2022-03-03 15:27:34 +01:00
Harald Welte
ab5b2ffe1d simtrace2-cardem-pcsc: rename 'flags' to 'status_flags'
there are other flags in the simtrace/cardem protocol...

Change-Id: I6362936c642e7abf4c501b4526a1654a25afedfe
2022-03-03 15:27:15 +01:00
Harald Welte
ee9ddb8da1 host: Always initialize libosmocore logging before using it
This avoids related ASSERTs or error messages in case any of the
libosmocore / libosmousb API functions internally tries to log
something.

Change-Id: I611c435516856c5c8928d7810fd9a9b831adc199
2022-03-03 15:27:13 +01:00
Harald Welte
039680a8d4 cardem: set more reasonable interrupt priorities
the ISO7816 UARTs have highest priority, while console has lowest.

remaining sources (USB, ADC, GPIO) are in between.

Change-Id: Ie6c97d61d8da3990b6e44144f36cb6d37d194307
2022-02-21 23:24:20 +01:00
Harald Welte
8680677256 card_emu_uart_interrupt: ASSERT if we get called with wrong uart_chan
This is what we do in all other functions, not sure why this one
wants to silently ignore any such programming errors.

Change-Id: I022eee86a5a3b5077abe59897161578ed960f1b1
2022-02-14 10:18:45 +00:00
Harald Welte
20bc014b82 cardem: Report the VCC voltage (if supported)
The SIMtrace2 protocol alwasy contained a field for the VCC voltage,
the cardem firmware just never populated that field, even on those
boards that use the ADC to determine its voltage.

Change-Id: Idcecad553fb36380e916378e1420488acbbfa8e3
2022-02-14 10:18:39 +00:00
Eric Wild
3a6f1adc2e lua dissector: adjust usage instructions
...as originally described in the first commit that added the file.

Change-Id: I67918f0f62b1619786324ae84276a46d7c64eee5
2022-02-02 11:48:05 +01:00
Harald Welte
70e60aa1de contrib/simtrace.lua: Register for "decode as..."
This allows to manually decode traces that don't contain the vid/pid information

Change-Id: Idd605f63f01f005f07a4c329847d08331bfdc9e8
2022-01-26 16:10:27 +01:00
Harald Welte
4775a94959 contrib/simtrace.lua: Dissect some more cardem related message types
Change-Id: I1892c1e154130d8048e99fd1d8f8809f00366e80
2022-01-26 16:10:27 +01:00
Harald Welte
d3b9d95b34 contrib/simtrace.lua: Don't print SIMTRACE_MSGT_ in every COL_INFO
this is redundant.  We care about *which* message type, and not about
wasting horizontal screen real-estate.

Change-Id: I98f90561b39401f1c2339f79a3cb40574bb03b2d
2022-01-26 16:10:27 +01:00
Harald Welte
408889d8b2 contrib/simtrace.lua: print length + slot-number in decimal only
Change-Id: Ia9a969b88170c49f8bb1cb0cda6918d6a894d3ba
2022-01-26 15:06:06 +00:00
Harald Welte
7b160b5ed7 contrib/simtrace.lua: Add header with author/description/usage
Change-Id: I56574741cd77436f9f452420677c00d8049a50cc
2022-01-26 15:06:02 +00:00
Harald Welte
15a3ef25a2 cosmetic: contrib/simtrace.lua: more consistent formatting
Change-Id: If842dd95c7244ebe33579ed104247c66682ed4d4
2022-01-26 15:05:17 +00:00
Harald Welte
5820eacf57 contrib/simtrace.lua: Add VID/PID of all currentl simtrace2 devices
Change-Id: Ie425f8dbd3a02c6bdcdaeaafaf0d5b4fb351ec4d
2022-01-26 15:04:52 +00:00
Harald Welte
94cc319b8e host: properly zero-initialize interface match structures
This can lead to some fields not properly zero-initialized, fooling
our matching code into the application having requested certain
fields to match ('0' is usually assumed to be unspecified).

Change-Id: I304d55b584e37d9dccb75b24057bb682f799beb2
2022-01-25 16:40:27 +01:00
Harald Welte
7a450041bf cosmetic: Fix indent of printf() statement
Change-Id: I9f5c9f7720b3bc3c8d5df9750b031d8bcf2dd435
2022-01-25 16:39:46 +01:00
Harald Welte
3f0d92f282 host: Print strerror(errno) in case of problems opening the USB device
Change-Id: If446bf08655739281f616df952714751fe9a3b18
2022-01-25 16:09:55 +01:00
James Tavares
ea9a91f5ce gitignore: add missing entries binaries
Add missing entries for simtrace2-tool, crctool, and host/tests

Change-Id: I23f4b387f220146bccf7d723cc773a72d8e17a65
2022-01-11 17:09:38 +00:00
James Tavares
91a93bc5de firmware: add definition for main osc bypass when using external osc
Add new board.h definition BOARD_MAINOSC_BYPASS to configure the clock module to use an external oscillator rather than a crystal. The qmod board is one such board.
Change-Id: If62f55cd4c8b0cf758534f09d25a9bcb028814a7
2022-01-11 13:10:34 +00:00
James Tavares
aeaf12853e simtrace2-tool: add "modem sim-card (insert|remove)" command
Add a new command to request that the simtrace2 firmware manipulate the
card detect signal, causing the downstream cellular modem to believe
that the SIM card has been inserted or removed, respectfully.

Change-Id: I8c79eb29379a789d9d0d21495e30d66ddbdfb022
2022-01-10 18:06:45 -05:00
Eric Wild
7fde63b7c6 wireshark lua dissector: dissect more
Change-Id: If81812b6330205a65c1c9b7d4240094b71f3c757
2021-12-15 14:10:19 +00:00
Eric Wild
cb655f9774 firmware: add crc stub to all dfu apps to ensure reliable loading
DFU flashing of apps sometimes aborts, and although rare this leads to
broken devices if no boot button or serial/jtag access exists, because
the bootloader will keep trying to start a half-flashed app that then
crashes at some point.

The easiest fix that works with existing bootloaders is to prepend a
small 512 byte stub that calculcates the crc and compares it with the
crc calculated at build time, and then either starts the actual app, or
sets the dfu flag and resets. This ensures we either have a working,
running app, or end up in the bootloader, ready to flash again.

For obvious reasons this only applies to dfu apps, and not to flash
targets like the actual bootloader itself.

Change-Id: Id6df0486c8b779889d21800dc2441b3aa9af8a5f
2021-12-15 14:04:20 +00:00
Oliver Smith
f721e69bc1 treewide: remove FSF address
Remove the paragraph about writing to the Free Software Foundation's
mailing address. The FSF has changed addresses in the past, and may do
so again. In 2021 this is not useful, let's rather have a bit less
boilerplate at the start of source files.

Change-Id: Ie0a3b2273383adbb3303faffd6ff96be7f4cae99
2021-12-14 11:47:21 +01:00
Oliver Smith
8dada9b454 host/contrib/simtrace2.spec.in: update
Apply various improvements from Martin Hauke, thanks!

* Put sover into a variable
* Sync BuildRequires with configure.ac
* Update libosmo-simtrace2 summary
* Use %make_build instead of make %{?_smp_mflags}

Change-Id: I35ce3865702f72365b38b0eaa8b28f332dabcd1f
2021-12-10 14:50:18 +01:00
Oliver Smith
afd23660b3 Bump version: 0.8.0.1-8281 → 0.8.1
Change-Id: I6bcc798db9f4ab2b91711daebeba98abebd55e92
2021-12-10 10:04:28 +01:00
Oliver Smith
24a9ee8ae6 host/contrib/simtrace2.spec.in: fix soname
Adjust the soname in the rpm recipe too, to fix:
  error: File not found: /home/abuild/rpmbuild/BUILDROOT/simtrace2-0.8.0.202112100026-1.1.x86_64/usr/lib64/libosmo-simtrace2.so.0*

Change-Id: I748f44409ac736abbd5c18e31ae02d025dee2c77
2021-12-10 10:04:13 +01:00
Harald Welte
45a8f2beee Bump version: 0.7.0.166-61b4-dirty → 0.8.0
Change-Id: I1650f7181cf514ba00e6f70e8133ee88780ebf41
2021-12-09 08:12:56 +01:00
Harald Welte
155c237504 host: Upgrade libosmocore dependency to 1.4.0
1.4.0 contains the most recent changes to libosmousb, so let's use
that as a minimum basis.

Change-Id: Ia44377cd6a8d7998c6995a3f89adb22cdc675601
2021-12-09 08:05:58 +01:00
Eric Wild
61b4aad46f firmware: remove dfu-dfu default target
It's useless, since blupdate does the same thing, just much faster and
easier.

Change-Id: I86dddfacea2e35f4d5a7f23ee4b3d12e3f1d35f1
2021-11-24 17:22:01 +00:00
114 changed files with 924 additions and 524 deletions

3
.gitignore vendored
View File

@@ -20,6 +20,9 @@ tags
host/simtrace2-list
host/simtrace2-cardem-pcsc
host/contrib/simtrace2.spec
host/src/simtrace2-tool
host/tests
usb_strings_generated.h
firmware/usbstring/usbstring
firmware/apps/*/usb_strings.txt.patched
firmware/misc/crctool

View File

@@ -1,4 +1,4 @@
#!/bin/sh -e
#!/bin/bash -e
# Create copies of binaries with -latest, -$GIT_VERSION (OS#4413, OS#3452)
cd "$(dirname "$0")/.."
@@ -9,8 +9,10 @@ echo "Copying binaries with "-latest" and "-$GIT_VERSION" appended..."
cd firmware/bin
for ext in bin elf; do
for file in *."$ext"; do
without_ext="${file%.*}"
cp -v "$file" "$without_ext-latest.$ext"
cp -v "$file" "$without_ext-$GIT_VERSION.$ext"
if ! [[ "$file" =~ ^(.*padded.*|.*nocrcstub.*)$ ]];then
without_ext="${file%.*}"
cp -v "$file" "$without_ext-latest.$ext"
cp -v "$file" "$without_ext-$GIT_VERSION.$ext"
fi
done
done

View File

@@ -1,3 +1,12 @@
-- wireshark LUA dissector for the SIMtrace USB protocol
-- (C) 2021 by sysmocom - s.f.m.c. GmbH, Author: Eric Wild
-- SPDX-License-Identifier: GPL-2.0+
--
-- Usage: Move this file to your "personal lua plugins" folder that
-- can be found in the Wireshark Help->About Wireshark->Folders tab
-- Windows: %APPDATA%\Wireshark\plugins.
-- Unix-like systems: ~/.local/lib/wireshark/plugins.
usb_simtrace_protocol = Proto("USB_simtrace", "USB simtrace protocol")
@@ -7,49 +16,95 @@ local control_commands = {
[0x0001] = "SIMTRACE_CMD_BD_BOARD_INFO",
-- /* SIMTRACE_MSGC_CARDEM */
[0x0101] = "SIMTRACE_MSGT_DT_CEMU_TX_DATA",
[0x0102] = "SIMTRACE_MSGT_DT_CEMU_SET_ATR",
[0x0103] = "SIMTRACE_MSGT_BD_CEMU_STATS",
[0x0104] = "SIMTRACE_MSGT_BD_CEMU_STATUS",
[0x0105] = "SIMTRACE_MSGT_DT_CEMU_CARDINSERT",
[0x0106] = "SIMTRACE_MSGT_DO_CEMU_RX_DATA",
[0x0107] = "SIMTRACE_MSGT_DO_CEMU_PTS",
[0x0108] = "SIMTRACE_MSGT_BD_CEMU_CONFIG",
[0x0101] = "DT_CEMU_TX_DATA",
[0x0102] = "DT_CEMU_SET_ATR",
[0x0103] = "BD_CEMU_STATS",
[0x0104] = "BD_CEMU_STATUS",
[0x0105] = "DT_CEMU_CARDINSERT",
[0x0106] = "DO_CEMU_RX_DATA",
[0x0107] = "DO_CEMU_PTS",
[0x0108] = "BD_CEMU_CONFIG",
-- /* SIMTRACE_MSGC_MODEM */
[0x0201] = "SIMTRACE_MSGT_DT_MODEM_RESET",
[0x0202] = "SIMTRACE_MSGT_DT_MODEM_SIM_SELECT",
[0x0203] = "SIMTRACE_MSGT_BD_MODEM_STATUS",
[0x0201] = "DT_MODEM_RESET",
[0x0202] = "DT_MODEM_SIM_SELECT",
[0x0203] = "BD_MODEM_STATUS",
-- /* SIMTRACE_MSGC_SNIFF */
[0x0300] = "SIMTRACE_MSGT_SNIFF_CHANGE",
[0x0301] = "SIMTRACE_MSGT_SNIFF_FIDI",
[0x0302] = "SIMTRACE_MSGT_SNIFF_ATR",
[0x0304] = "SIMTRACE_MSGT_SNIFF_TPDU",
[0x0303] = "SIMTRACE_MSGT_SNIFF_PPS"
[0x0300] = "SNIFF_CHANGE",
[0x0301] = "SNIFF_FIDI",
[0x0302] = "SNIFF_ATR",
[0x0304] = "SNIFF_TPDU",
[0x0303] = "SNIFF_PPS"
}
local msgtype = ProtoField.uint16("usb_simtrace.msgtype", "Message Type", base.HEX_DEC, control_commands)
local seqnr = ProtoField.uint8("usb_simtrace.seqnr", "Sequence Number", base.HEX_DEC)
local slotnr = ProtoField.uint8("usb_simtrace.slotnr", "Slot Number", base.HEX_DEC)
local seqnr = ProtoField.uint8("usb_simtrace.seqnr", "Sequence Number", base.DEC)
local slotnr = ProtoField.uint8("usb_simtrace.slotnr", "Slot Number", base.DEC)
local reserved = ProtoField.uint16("usb_simtrace.reserved", "reserved", base.HEX_DEC)
local payloadlen = ProtoField.uint16("usb_simtrace.length", "length", base.HEX_DEC)
local payloadlen = ProtoField.uint16("usb_simtrace.length", "length", base.DEC)
local payload = ProtoField.bytes("usb_simtrace.payload", "Data")
local pb_and_rx = ProtoField.uint32("usb_simtrace.pb_and_rx", "pb_and_rx", base.HEX_DEC, NULL, 0x8)
local pb_and_tx = ProtoField.uint32("usb_simtrace.pb_and_tx", "pb_and_tx", base.HEX_DEC, NULL, 0x4)
local final = ProtoField.uint32("usb_simtrace.final", "final", base.HEX_DEC, NULL, 0x2)
local tpdu_hdr = ProtoField.uint32("usb_simtrace.tpdu_hdr", "tpdu_hdr", base.HEX_DEC, NULL, 0x1)
local rxtxdatalen = ProtoField.uint16("usb_simtrace.rxtxdatalen", "rx/tx data length", base.HEX_DEC)
local rxtxdatalen = ProtoField.uint16("usb_simtrace.rxtxdatalen", "rx/tx data length", base.DEC)
local rxtxdata = ProtoField.bytes("usb_simtrace.rxtxdata", "rx/tx (data)")
usb_simtrace_protocol.fields = {
msgtype, seqnr, slotnr, reserved, payloadlen, payload, pb_and_rx, pb_and_tx, final, tpdu_hdr, rxtxdatalen, rxtxdata
local hf_pts_len = ProtoField.uint8("usb_simtrace.pts_len", "PTS length", base.DEC)
local hf_pts_req = ProtoField.bytes("usb_simtrace.pts_req", "PTS request")
local hf_pts_resp = ProtoField.bytes("usb_simtrace.pts_resp", "PTS response")
local hf_cemu_cfg_features = ProtoField.uint32("usb_simtrace.cemu_cfg.features.status_irq", "CardEm Features", base.HEX)
local hf_cemu_cfg_slot_mux_nr = ProtoField.uint32("usb_simtrace.cemu_cfg.features.slot_mux_nr", "CardEm Slot Mux Nr", base.DEC)
local card_insert_types = {
[0x00] = "not inserted",
[0x01] = "inserted",
}
local hf_cemu_cardinsert = ProtoField.uint8("usb_simtrace.cardinsert", "Card Insert", base.DEC, card_insert_types, 0xff)
local CEMU_STATUS_F_VCC_PRESENT = ProtoField.uint32("usb_simtrace.CEMU_STATUS.F_VCC_PRESENT", "VCC_PRESENT", base.HEX_DEC, NULL, 0x00000001)
local CEMU_STATUS_F_CLK_ACTIVE = ProtoField.uint32("usb_simtrace.CEMU_STATUS.F_CLK_ACTIVE", "CLK_ACTIVE", base.HEX_DEC, NULL, 0x00000002)
local CEMU_STATUS_F_RCEMU_ACTIVE = ProtoField.uint32("usb_simtrace.CEMU_STATUS.F_RCEMU_ACTIVE", "CEMU_ACTIVE", base.HEX_DEC, NULL, 0x00000004)
local CEMU_STATUS_F_CARD_INSERT = ProtoField.uint32("usb_simtrace.CEMU_STATUS.F_CARD_INSERT", "CARD_INSERT", base.HEX_DEC, NULL, 0x00000008)
local CEMU_STATUS_F_RESET_ACTIVE = ProtoField.uint32("usb_simtrace.CEMU_STATUS.F_RESET_ACTIVE", "RESET_ACTIVE", base.HEX_DEC, NULL, 0x00000010)
local modem_reset_types = {
[0x00] = "de-assert",
[0x01] = "assert",
[0x02] = "pulse"
}
local modem_reset_status = ProtoField.uint8("usb_simtrace.modem.reset_type", "modem reset type", base.HEX, modem_reset_types, 0xf)
local modem_reset_len = ProtoField.uint8("usb_simtrace.modem.reset_len", "modem reset length (ms)", base.DEC)
local modem_sim_select_types = {
[0x00] = "local",
[0x01] = "remote",
}
local hf_modem_sim_select = ProtoField.uint8("usb_simtrace.modem.sim_select", "SIM card selection", base.DEC, modem_sim_select_types, 0xff)
usb_simtrace_protocol.fields = {
msgtype, seqnr, slotnr, reserved, payloadlen, payload,
pb_and_rx, pb_and_tx, final, tpdu_hdr, rxtxdatalen, rxtxdata,
CEMU_STATUS_F_VCC_PRESENT, CEMU_STATUS_F_CLK_ACTIVE, CEMU_STATUS_F_RCEMU_ACTIVE, CEMU_STATUS_F_CARD_INSERT, CEMU_STATUS_F_RESET_ACTIVE,
modem_reset_status, modem_reset_len,
hf_pts_len, hf_pts_req, hf_pts_resp,
hf_cemu_cfg_features, hf_cemu_cfg_slot_mux_nr,
hf_cemu_cardinsert, hf_modem_sim_select,
}
local is_hdr = Field.new("usb_simtrace.tpdu_hdr")
local is_pbrx = Field.new("usb_simtrace.pb_and_rx")
local is_pbtx = Field.new("usb_simtrace.pb_and_tx")
local is_final= Field.new("usb_simtrace.final")
function dissect_rxtx(payload_data,pinfo,tree)
local headerSubtree = tree:add(usb_simtrace_protocol, payload_data, "rx/tx data")
local len = payload_data(8+4,2):le_uint();
local cmd32 = payload_data(8+0,4):le_uint();
local len = payload_data(4,2):le_uint();
local cmd32 = payload_data(0,4):le_uint();
headerSubtree:add(pb_and_rx, cmd32)
headerSubtree:add(pb_and_tx, cmd32)
@@ -57,9 +112,129 @@ function dissect_rxtx(payload_data,pinfo,tree)
headerSubtree:add(tpdu_hdr, cmd32)
headerSubtree:add(rxtxdatalen, len)
headerSubtree:add_le(rxtxdata, payload_data(8+6,len))
headerSubtree:add_le(rxtxdata, payload_data(6,len))
local flagstr = " "
if is_pbrx().value == 1 then
flagstr = flagstr .. "R"
else
flagstr = flagstr .. "."
end
if is_pbtx().value == 1 then
flagstr = flagstr .. "T"
else
flagstr = flagstr .. "."
end
if is_final().value == 1 then
flagstr = flagstr .. "F"
else
flagstr = flagstr .. "."
end
if is_hdr().value == 1 then
flagstr = flagstr .. "H"
else
flagstr = flagstr .. "."
end
flagstr = flagstr .. " "
pinfo.cols.info:append(flagstr .. payload_data(6,len))
-- ghetto dissection does not work due to mixed in procedure bytes
--if pinfo.visited == false then
-- Dissector.get("iso7816"):call(payload_data(6):tvb(), pinfo, tree)
-- local offs = 0
-- if (is_pbrx().value == 1 or is_pbtx().value == 1) and is_final().value == 0 then
-- offs = 1
-- else
-- offs = 0
-- end
--
-- if is_hdr().value == 1 then
-- Dissector.get("gsm_sim"):call(concatss:tvb(), pinfo, tree)
-- concatss = payload_data(6):bytes()
-- else
-- concatss = concatss .. payload_data(6+offs):bytes()
-- end
--end
end
function dissect_status(payload_data,pinfo,tree)
local headerSubtree = tree:add(usb_simtrace_protocol, payload_data, "status message")
local cmd32 = payload_data(0,4):le_uint();
headerSubtree:add(CEMU_STATUS_F_VCC_PRESENT, cmd32)
headerSubtree:add(CEMU_STATUS_F_CLK_ACTIVE, cmd32)
headerSubtree:add(CEMU_STATUS_F_RCEMU_ACTIVE, cmd32)
headerSubtree:add(CEMU_STATUS_F_CARD_INSERT, cmd32)
headerSubtree:add(CEMU_STATUS_F_RESET_ACTIVE, cmd32)
pinfo.cols.info:append(" VCC:" .. payload_data(0,1):bitfield(7, 1) .. " CLK:" .. payload_data(0,1):bitfield(6, 1) .. " RESET:" .. payload_data(0,1):bitfield(3, 1))
end
function dissect_atr(payload_data,pinfo,tree)
local len = payload_data(0,1):le_uint()
Dissector.get("iso7816.atr"):call(payload_data(1):tvb(), pinfo, tree)
end
function dissect_modem_reset(payload_data,pinfo,tree)
local headerSubtree = tree:add(usb_simtrace_protocol, payload_data, "modem reset")
local cmd8 = payload_data(0,1):le_uint();
headerSubtree:add(modem_reset_status, cmd8)
pinfo.cols.info:append(" reset type:" .. modem_reset_types[cmd8]);
if(cmd8 == 2) then
local duration = payload_data(1,2):le_uint()
headerSubtree:add(modem_reset_len, duration)
pinfo.cols.info:append(" duration:" .. duration .. "ms")
end
end
function dissect_pts(payload_data, pinfo, tree)
local subtree = tree:add(usb_simtrace_protocol, payload_data, "PTS")
local pts_len = payload_data(0,1):le_uint()
local pts_req = payload_data(1, pts_len);
local pts_resp = payload_data(7, pts_len);
subtree:add(hf_pts_len, pts_len);
subtree:add(hf_pts_req, pts_req);
subtree:add(hf_pts_resp, pts_resp);
pinfo.cols.info:append(" Req: " .. pts_req .. ", Resp: " .. pts_resp);
end
function dissect_cemu_config(payload_data, pinfo, tree)
local subtree = tree:add(usb_simtrace_protocol, payload_data, "Card Emu Config")
subtree:add(hf_cemu_cfg_features, payload_data(0,4));
subtree:add(hf_cemu_cfg_slot_mux_nr, payload_data(4,1));
end
function dissect_modem_sim_sel(payload_data, pinfo, tree)
local subtree = tree:add(usb_simtrace_protocol, payload_data, "Modem SIM Select")
local sim_select = payload_data(0,1):le_uint();
subtree:add(hf_modem_sim_select, sim_select);
pinfo.cols.info:append(" " .. modem_sim_select_types[sim_select]);
end
function dissect_cemu_cardinsert(payload_data, pinfo, tree)
local subtree = tree:add(usb_simtrace_protocol, payload_data, "Card Insert")
local cins_type = payload_data(0,1):le_uint()
subtree:add(hf_cemu_cardinsert, cins_type);
pinfo.cols.info:append(" " .. card_insert_types[cins_type]);
end
function usb_simtrace_protocol.dissector(buffer, pinfo, tree)
length = buffer:len()
if length == 0 then return end
@@ -76,7 +251,21 @@ function usb_simtrace_protocol.dissector(buffer, pinfo, tree)
pinfo.cols.info = string.format("Cmd 0x%04X : %s", command, control_commands[command])
local payload_data = buffer(8,length-8)
if(command == 0x0101 or command == 0x0106) then
return dissect_rxtx(buffer(),pinfo,subtree)
return dissect_rxtx(payload_data(),pinfo,subtree)
elseif(command == 0x0104) then
return dissect_status(payload_data(),pinfo,subtree)
elseif(command == 0x0102) then
return dissect_atr(payload_data(),pinfo,subtree)
elseif(command == 0x0105) then
return dissect_cemu_cardinsert(payload_data(),pinfo,subtree)
elseif(command == 0x0107) then
return dissect_pts(payload_data(),pinfo,subtree)
elseif(command == 0x0108) then
return dissect_cemu_config(payload_data(),pinfo,subtree)
elseif(command == 0x0201) then
return dissect_modem_reset(payload_data(),pinfo,subtree)
elseif(command == 0x0202) then
return dissect_modem_sim_sel(payload_data(),pinfo,subtree)
else
subtree:add(payload, payload_data)
end
@@ -85,8 +274,13 @@ end
function usb_simtrace_protocol.init()
local usb_product_dissectors = DissectorTable.get("usb.product")
usb_product_dissectors:add(0x1d50616d, usb_simtrace_protocol)
usb_product_dissectors:add(0x1d50616e, usb_simtrace_protocol)
DissectorTable.get("usb.bulk"):add(0xffff, usb_simtrace_protocol)
local usb_product_dissectors = DissectorTable.get("usb.product")
usb_product_dissectors:add(0x1d50616d, usb_simtrace_protocol) -- OCTSIMTEST
usb_product_dissectors:add(0x1d50616e, usb_simtrace_protocol) -- NGFF_CARDEM
usb_product_dissectors:add(0x1d5060e3, usb_simtrace_protocol) -- SIMTRACE2
usb_product_dissectors:add(0x1d504004, usb_simtrace_protocol) -- QMOD
usb_product_dissectors:add(0x1d504001, usb_simtrace_protocol) -- OWHW
DissectorTable.get("usb.device"):add_for_decode_as(usb_simtrace_protocol)
DissectorTable.get("usb.bulk"):add(0xffff, usb_simtrace_protocol)
DissectorTable.get("usb.interrupt"):add(0xffff, usb_simtrace_protocol)
end

207
debian/changelog vendored
View File

@@ -1,8 +1,211 @@
simtrace2 (0.5.2) UNRELEASED; urgency=medium
simtrace2 (0.8.1) unstable; urgency=medium
* host/contrib/simtrace2.spec.in: fix soname
-- Oliver Smith <osmith@sysmocom.de> Fri, 10 Dec 2021 10:04:28 +0100
simtrace2 (0.8.0) unstable; urgency=medium
[ Harald Welte ]
* adapt to host tools in autotools
* simtrace2_api: Remove dead code
* fix baudrate of 'make log'
* qmod DFU: Don't overwrite memory beyond end of usb_strings[]
* usb_strings.txt: s/SIMtrace Phone/SIMtrace Card Emulation/
* Patch actual board name into the USB iProduct string descriptor
* Build only 'reasonable' combinations of APP/MEMORY
* stdio: Add support for %p format string (pointer address)
* Fix format string related warnings (int vs. long)
* Add missing CR to achieve CRLF at end of log lines
* more comments in host_communication.c.
* usb_buf: count number of elements in queue
* usb_buf: Limit the maximum queue length to 3 elements
* qmod: Don't print EEPROM operations in help when not supported
* cosmetic: board_qmod: Annotate #endif with comments
* qmod: Document '!' and '@' commands on UART
* implement minimalistic talloc_report(); add 't' command on UART
* update copyright statement
* cardem: Fix memory leak on unsupported SIMTRACE_MSGT_DT_CEMU_CARDINSERT
* usb_buf: Actually limit queue to 3 elements, not 4
* USBD_HAL: Don't disable UDP peripheral clock on suspend
* usb_buf: Properly initialize buffered_endpoint->ep number
* pseudo_talloc: Increment number of buffers from 10 to 20
* card_emu: Factor out card_handle_reset() from card_emu_init()
* cardem: Move card_emu_io_statechg() calls out of interrupt context
* cardem: RST resets all state (including release of buffers)
* host_communication: Send zero-length-packet on wMaxPacketSize
* card_emu: Initialize PTSS state every time we start PTS
* card_emu: Avoid recursive calls to card_set_state()
* card_emu: Always print state names in string representation
* card_emu: Remove extraneous code
* card_emu: Remove extraneous initialization of ch->pts.state
* cardem: Make card_emu_report_status() optionally use IRQ endpoint
* cardem: Add SIMTRACE_MSGT_BD_CEMU_CONFIG
* cardem: Implement support for CEMU_FEAT_F_STATUS_IRQ
* simtrace2-sniff: Reformat value_string to pass our validation scripts
* firmware: Reformat value_string to pass our validation scripts
* jenkins.sh: Add verify_value_string_arrays_are_terminated.py
* [lib] apdu_dispatch: Use DLGLOBAL and don't printf() directly
* [lib] apdu_dispatch: Don't print APDU state to stdout
* OSMO_ASSERT() on double-free or invalid pointer
* Update .gitignore file for host
* migrate to libosmousb
* library: Add osmo_st2_compatible_dev_idsp[]
* firmware: move printing of welcome banner to common function print_banner()
* firmware: apps/cardem/main.c: Synchronize with apps/trace/main.c
* host: Add COPYING file for host software (GPLv2)
* host/lib/gsmtap.c: Add GPLv2 disclaimer
* increase ringbuffer size from 512 to 1024 bytes
* simtrace2_api: Add osmo_st2_cardem_request_config()
* Disable interrupts during EEFC_ReadUniqueID()
* cardem: Fix infinite loop + watchdog reset on long OUT message
* extend osmo_st2_cardem_inst with fields required by osmo-remsim
* cosmetic: Add missing CR to LF in dispatch_received_usb_msg()
* USBD.c: Don't reset EP0 on SetConfiguration(0)
* pio_it.c: Permit repeated calls to PIO_ConfigureIt()
* simtrace2_siff: getopt_long() returns int, not char
* Introduce support for asynchronous USB transmission
* firmware: fix builds with gcc stack smashing protection enabled
* dfu: Shrink code by 144 bytes (by not calling PIO_InitializeInterrupts)
* dfu: Save another 60 bytes by changing the way we print horizontal lines
* migrate from BSC_FD_* to OSMO_FD_*
* remove usb2udp
* rename simtrace2-remsim to simtrace2-cardem-pcsc
* Update README
* remove old pre-autoconf makefile
* simtrace2-cardem-pcsc: Make it work again
* Revert "add ISO 7816-3 library to remsim project"
* Revert "add library providing ISO 7816-3 utilities"
* card_emu: waiting_time is stored in etu, not clocks.
* card_emu: Rename fi to Fi and di to Di
* card_emu: Clarify and differentiate F/Fi/F_index/Fi_index
* iso7816_fidi: Add iso7816_3_ prefix to symbols; fix terminology
* card_emu: improve reset detection conditions
* card_emu: explicitly initialize PTS and TPDU states
* card_emu: Use USART timeout for waiting time
* card_emu: Fix USART timer, particularly in re-start situations
* card_emu: Fix computation of waiting time
* contrib/jenkins.sh: Switch from rita -> ftp.osmocom.org
* st2-cardem-pcsc: Fix goto-in-while mess
* st2-cardem-pcsc: Use ATR of real card by default
* simtrace board.h: Enable HAVE_CARDEM if we build the cardem firmware
* jenkins.sh: build 'cardem' firmware also for simtrace board
* Revert "cardem: disable upload for simtrace2"
* simtrace2-cardem-pcsc: Decode STATUS flags to strings
* simtrace2-cardem-pcsc: Reset the real card if reader resets cardem
* assert: Use printf_sync() to ensure printing of assert / panic
* Add usb product ID of sysmoOCTSIMTEST
* octsimtest: remove lots of unused #defines
* octsimtest: most code for support of this new board
* octsimtest: Switch direction of I/O level shifter depending on uart tx / rx
* cardem-pcsc: initialize libosmocore logging
* octsimtest: Adjust VCC voltage thresholds (resistive VCC divider)
* contrib/jenkins.sh: Build 'cardem' app for 'octsimtest' board
* firmware: octsimtest: Fix IO_DIR pin definition
* firmware: octsimtest: Make slot mux configurable via USB
* firmware: octsimtest: mcp23017 initializaiton
* firmware: cardem: re-factor CARDINSERT command processing
* firmware: octsimtest: Support SIMTRACE_MSGT_DT_CEMU_CARDINSERT
* firmware: octsimtest: use TRACE_* macros instead of direct printf
* firmware: octsimtest: Fix disabling the card_insert signal
* firmware: octsimtest: Add i/I command for setting card-insert via I2C GPIO
* firmware: octsimtest: ensure all card_insert GPIO are 0 after reset
* don't printf() directly from library code, go via libosmocore logging
* simtrace2-list: Use osmo_st2_compatible_dev_ids[]
* board_gpio.gnumeric: Add ngff-cardem pin-out
* 99-simtrace2.rules: Add OCTSIMTEST
* contrib/flash.py: Add OCTSIMTEST support
* Introduce simtrace2-tool
* introduce support for new ngff_cardem board
* simtrace2.spec: Add simtrace2-tool binary to package
* contrib/jenkins.sh: Build APP=cardem for BOARD=ngff_cardem
* jenkins.sh: Build 'trace' firmware for ngff_cardem
* Use osmo_libusb_{init,exit}() instead of libusb_{init,exit}()
* simtrace2-cardem-pcsc: Remove double libusb initialization
* simtrace2-tool: Initialize logging to avoid error on first log output
* cardem-pcsc: Fix return of uninitialized variable
* host: Upgrade libosmocore dependency to 1.4.0
-- Harald Welte <lafore@gnumonks.org> Thu, 28 Nov 2019 00:44:57 +0100
[ Kévin Redon ]
* minor: fix spacing
* minor: updated copyright years
* dfu: minor: make debug output only verbose in info level
* minor: move USB debug output from info to debug level
* minor: improve debug output
* minor : fix typo in comment
* better detect VCC and nRST changes on simtrace2 board
* minor: ignore usbstring binary
* simtrace2-remsim: Use simplest ATR
* cardem: use simplest ATR as default ATR
* minor: fix typo
* DFU: increase USB reset duration to 50 ms
* DFU: restart bootloader when USB conf failed
* Makefile: add linker option showing memory usage
* improve shared bootloader/application memory
* minor: improve trace output
* DFU: add DFU application
* add script to flash latest firmware
* minor: use same LED pattern for cardem as other applications
* cardem: currently simtrace does not support cardem
* add library providing ISO 7816-3 utilities
* add ISO 7816-3 library to remsim project
* rename PIN_PHONE_{CLK,IO} to PIN_USIM1_{CLK,IO}
* minor add comments
* make sim switch board specific
[ Eric Wild ]
* remsim: allow selecting pcsc reader number
* cardem: disable upload for simtrace2
* firmware: do not allow undefined symbols
* firmware: allow verbose builds
* cardem: choose a more reasonable default ATR
* contrib: add a basic simtrace lua dissector for wireshark
* cardem: free the buf
* cardemu: support 1v8 for the tester
* firmware: data sections
* firmware: proper makefile deps
* firmware: make the ngff beakout blink
* simtrace2-cardem: use local sim on exit
* contrib: more cardem dissection
* firmware: trace for ngff
* cardem: fix spurious NULL bytes during transfers
* contrib/jenkins.sh: build ngff_Cardem dfu bootloader
* contrib: allow manually forcing bulk simtrace dissection
* contrib/jenkins.sh: lower trace to make bl fit
* Revert "firmware: data sections"
* add the ngff cardem to default build targets
* drop unused exidx sections when linking
* clang build support
* fix bootloader led config crash
* firmware: add bootloader update "app"
* firmware: remove usb pullup that dates back to simtrace1
* firmware: increase reset delay before usb reattach
* firmware: drop cref printing
* add our default clang-format file
* firmware: add missing usb strings to blupdate that prevented building it
* jenkins: build bootloader updater
* firmware: remove dfu-dfu default target
[ Oliver Smith ]
* contrib: import RPM spec
* contrib: integrate RPM spec
* d/source/format: new file
* firmware/Makefile: fix UNKNOWN in OBS packages
* host: use git-version-gen/tarball-v. from topdir
* gitignore: add firmware/apps/*/usb_strings.txt.patched
* firmware: create duplicate files for upload only
* contrib/prepare_upload.sh: fix cd problems
* firmware: qmod-dfu: disable stack protector
* firmware: disable stack protector by default
* gitreview: new file
[ Leonard Hübner ]
* remsim: adding cli argument to set the atr
[ Eric ]
* dfu: let the device reset itself
-- Harald Welte <laforge@osmocom.org> Thu, 09 Dec 2021 08:12:56 +0100
simtrace2 (0.5.1) unstable; urgency=medium

22
debian/control vendored
View File

@@ -10,22 +10,34 @@ Build-Depends: debhelper (>= 9),
pkg-config,
git,
dh-autoreconf,
libosmocore-dev,
libosmocore-dev (>= 1.4.0),
libpcsclite-dev,
libusb-1.0-0-dev
libnewlib-arm-none-eabi,
libusb-1.0-0-dev,
gcc-arm-none-eabi
Standards-Version: 3.9.8
Vcs-Git: git://git.osmocom.org/simtrace2.git
Vcs-Browser: http://git.osmocom.org/simtrace2/
Homepage: http://osmocom.org/projects/simtrace2/wiki
Package: simtrace2-firmware
Section: devel
Architecture: all
Recommends: dfu-util
Description: Firmware for SAM3 based SIMtrace2 USB Devices.
Open Source firmware for the Cortex-M3 microcontroller in the
"Osmocom SIMtrace2" USB-attached peripheral device. Will only work in
SAM3S-based SIMtrace2, not in its SAM7S-based predecessor SIMtrace!
Package: simtrace2-utils
Section: devel
Architecture: any
Multi-Arch: same
Depends: ${shlibs:Depends}, ${misc:Depends}, libosmo-simtrace2-0
Depends: ${shlibs:Depends}, ${misc:Depends}, libosmo-simtrace2-1
Recommends: simtrace2-firmware
Description: Host utilities to communicate with SIMtrace2 USB Devices.
Package: libosmo-simtrace2-0
Package: libosmo-simtrace2-1
Section: libs
Architecture: any
Multi-Arch: same
@@ -40,7 +52,7 @@ Package: libosmo-simtrace2-dev
Section: libdevel
Architecture: any
Multi-Arch: same
Depends: libosmo-simtrace2-0, ${misc:Depends}
Depends: libosmo-simtrace2-1, ${misc:Depends}
Description: Development headers for Osmocom SIMtrace2 library
This library contains core "driver" functionality to interface with the
Osmocom SIMtrace2 (and compatible) USB device firmware. It enables

6
debian/rules vendored
View File

@@ -17,9 +17,3 @@ export DEB_LDFLAGS_MAINT_STRIP = -Wl,-Bsymbolic-functions
override_dh_autoreconf:
cd host && dh_autoreconf
override_dh_auto_build:
dh_auto_build -- utils
override_dh_auto_install:
dh_auto_build -- -C host

1
debian/simtrace2-firmware.install vendored Normal file
View File

@@ -0,0 +1 @@
usr/share/simtrace2/*.bin

View File

@@ -49,7 +49,7 @@ APP ?= dfu
# Defines which are the available memory targets for the SAM3S-EK board.
ifeq ($(APP), dfu)
MEMORIES ?= flash dfu
MEMORIES ?= flash
TRACE_LEVEL ?= 0
else
MEMORIES ?= dfu
@@ -117,7 +117,7 @@ C_LIBUSB = USBDescriptors.c USBRequests.c USBD.c USBDCallbacks.c USBDDriver.
C_LIBUSB_RT = dfu.c dfu_runtime.c
C_LIBUSB_DFU = dfu.c dfu_desc.c dfu_driver.c
C_LIBCOMMON = string.c stdio.c fputs.c usb_buf.c ringbuffer.c pseudo_talloc.c host_communication.c \
main_common.c stack_check.c
main_common.c stack_check.c crcstub.c
C_BOARD = $(notdir $(wildcard libboard/common/source/*.c))
C_BOARD += $(notdir $(wildcard libboard/$(BOARD)/source/*.c))
@@ -229,12 +229,15 @@ $(BIN)/$(BOARD)-dfu-flash-padded.bin: $(BIN)/$(BOARD)-dfu-flash.bin
$(OUTPUT)-combined.bin: $(BIN)/$(BOARD)-dfu-flash-padded.bin $(OUTPUT)-dfu.bin
cat $^ > $@
$(BIN) $(OBJ): apps/$(APP)/usb_strings_generated.h
$(BIN) $(OBJ): apps/$(APP)/usb_strings_generated.h misc/crctool
mkdir -p $@
usbstring/usbstring: usbstring/usbstring.c
gcc $^ -o $@
misc/crctool: misc/crctool.c
gcc $^ -o $@
.PHONY: apps/$(APP)/usb_strings.txt.patched
apps/$(APP)/usb_strings.txt.patched: apps/$(APP)/usb_strings.txt
sed "s/PRODUCT_STRING/$(shell cat libboard/$(BOARD)/product_string.txt)/" $< > $@
@@ -251,7 +254,6 @@ build_$(1): $$(ASM_OBJECTS_$(1)) $$(C_OBJECTS_$(1)) $$(EXTRA_OBJECTS_$(1))
$(SILENT)$(CC) $(CFLAGS) $(LDFLAGS) $(LD_OPTIONAL) -T"libboard/common/resources/$(CHIP)/$(1).ld" -Wl,-Map,$(OUTPUT)-$(1).map -o $(OUTPUT)-$(1).elf $$^ $(LIBS)
$(SILENT)$(NM) $(OUTPUT)-$(1).elf >$(OUTPUT)-$(1).elf.txt
$(SILENT)$(OBJCOPY) -O binary $(OUTPUT)-$(1).elf $(OUTPUT)-$(1).bin
$(SILENT)$(SIZE) $$^ $(OUTPUT)-$(1).elf
$$(C_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.c Makefile $(OBJ) $(BIN)
@echo [COMPILING $$<]
@@ -261,26 +263,17 @@ $$(ASM_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.S Makefile $(OBJ) $(BIN)
@echo [ASSEMBLING $$@]
$(SILENT)$(CC) $(ASFLAGS) -DENVIRONMENT_$(1) -DENVIRONMENT=\"$(1)\" -c -o $$@ $$<
debug_$(1): $(1)
$(GDB) -x "$(BOARD_LIB)/resources/gcc/$(BOARD)_$(1).gdb" -ex "reset" -readnow -se $(OUTPUT)-$(1).elf
endef
ALL_MEMORIES = dfu flash ram
ALL_MEMORIES = flash ram
$(foreach MEMORY, $(ALL_MEMORIES), $(eval $(call RULES,$(MEMORY))))
# files with those names do exist..
.PHONY: ram
.PHONY: dfu
.PHONY: flash
dfu: $(OUTPUT)-dfu.bin
.PHONY: ram
ram: build_ram
dfu: build_dfu
ifeq ($(APP), blupdate)
$(info updating updater section with padded bootloader file..)
$(SILENT)dd if=/dev/zero bs=16384 count=1 of=$(BIN)/$(BOARD)-dfu-flash-padded.bin
$(SILENT)dd if=$(BIN)/$(BOARD)-dfu-flash.bin conv=notrunc of=$(BIN)/$(BOARD)-dfu-flash-padded.bin
$(SILENT)$(OBJCOPY) --update-section .blupdate=bin/$(BOARD)-dfu-flash-padded.bin bin/$(BOARD)-blupdate-dfu.elf
$(SILENT)$(OBJCOPY) -O binary bin/$(BOARD)-blupdate-dfu.elf bin/$(BOARD)-blupdate-dfu.bin
endif
.PHONY: flash
flash: build_flash
#alternate way of embedding: obj file
#ifeq ($(APP), dfu)
@@ -288,8 +281,37 @@ flash: build_flash
# $(SILENT)$(OBJCOPY) --rename-section .data=.fwupdate -I binary -O elf32-littlearm bin/$(BOARD)-dfu-flash.bin $(OBJ)/flash_fwupdate.o
#endif
program:
openocd -f openocd/openocd.cfg -c "init" -c "halt" -c "flash write_bank 0 ./bin/project-flash.bin 0" -c "reset" -c "shutdown"
C_OBJECTS_dfu = $(addprefix $(OBJ)/dfu_, $(C_OBJECTS))
ASM_OBJECTS_dfu = $(addprefix $(OBJ)/dfu_, $(ASM_OBJECTS))
EXTRA_OBJECTS_dfu = $(addprefix $(OBJ)/dfu_, $(EXTRA_OBJECTS))
$(OUTPUT)-dfu.bin: $(OUTPUT)-dfu_nocrcstub.bin
$(info updating app with crc..)
$(SILENT)cp $< $@.temp
$(SILENT)misc/crctool 512 $@.temp
$(SILENT)mv $@.temp $@
$(OUTPUT)-dfu_nocrcstub.bin: $(OUTPUT)-dfu_nocrcstub.elf
ifeq ($(APP), blupdate)
$(info updating updater section with padded bootloader file..)
$(SILENT)dd status=none if=/dev/zero bs=16384 count=1 of=$(BIN)/$(BOARD)-dfu-flash-padded.bin
$(SILENT)dd status=none if=$(BIN)/$(BOARD)-dfu-flash.bin conv=notrunc of=$(BIN)/$(BOARD)-dfu-flash-padded.bin
$(SILENT)$(OBJCOPY) --update-section .blupdate=bin/$(BOARD)-dfu-flash-padded.bin $<
endif
$(SILENT)$(OBJCOPY) -O binary $< $@
$(OUTPUT)-dfu_nocrcstub.elf: $(ASM_OBJECTS_dfu) $(C_OBJECTS_dfu) $(EXTRA_OBJECTS_dfu)
$(SILENT)$(CC) $(CFLAGS) $(LDFLAGS) $(LD_OPTIONAL) -T"libboard/common/resources/$(CHIP)/dfu.ld" -Wl,-Map,$(OUTPUT)-dfu_nocrcstub.map -o $@ $^ $(LIBS)
$(SILENT)$(NM) $@ >$@.txt
$(C_OBJECTS_dfu): $(OBJ)/dfu_%.o: %.c Makefile $(OBJ) $(BIN)
@echo [COMPILING $<]
$(SILENT)$(CC) $(CFLAGS) -DENVIRONMENT_dfu -DENVIRONMENT=\"dfu\" -c -o $@ $<
$(ASM_OBJECTS_dfu): $(OBJ)/dfu_%.o: %.S Makefile $(OBJ) $(BIN)
@echo [ASSEMBLING $@]
$(SILENT)$(CC) $(ASFLAGS) -DENVIRONMENT_dfu -DENVIRONMENT=\"dfu\" -c -o$@ $<
SERIAL ?= /dev/ttyUSB0
log:

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "board.h"
#include "core_cm3.h"
@@ -93,8 +89,14 @@ __attribute__((section(".ramfunc"), noinline, noreturn)) static void erase_first
flash_cmd(EFC_FCMD_EA, 0);
#endif
flash_wait_ready();
for (;;)
NVIC_SystemReset();
for (;;) {
/* no functon call, since NVIC_SystemReset() might not be inlined! */
SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
SCB_AIRCR_SYSRESETREQ_Msk);
__DSB();
while (1)
;
}
}
#define MAX_USB_ITER BOARD_MCK / 72 // This should be around a second

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*------------------------------------------------------------------------------
* Headers
@@ -141,6 +137,12 @@ static void check_exec_dbg_cmd(void)
board_exec_dbg_cmd(ch);
}
#include <osmocom/core/panic.h>
void WDT_IrqHandler(void)
{
osmo_panic("WDT");
}
/*------------------------------------------------------------------------------
* Main
*------------------------------------------------------------------------------*/
@@ -156,10 +158,11 @@ extern int main(void)
led_blink(LED_GREEN, BLINK_ALWAYS_ON);
/* Enable watchdog for 2000ms, with no window */
WDT_Enable(WDT, WDT_MR_WDRSTEN | WDT_MR_WDDBGHLT | WDT_MR_WDIDLEHLT |
(WDT_GetPeriod(2000) << 16) | WDT_GetPeriod(2000));
WDT_Enable(WDT, WDT_MR_WDFIEN | WDT_MR_WDDBGHLT | WDT_MR_WDIDLEHLT |
(WDT_GetPeriod(1000) << 16) | WDT_GetPeriod(1000));
NVIC_EnableIRQ(WDT_IRQn);
PIO_InitializeInterrupts(0);
PIO_InitializeInterrupts(10);
print_banner();
board_main_top();

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "board.h"
#include "utils.h"

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/*------------------------------------------------------------------------------
* Headers

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*------------------------------------------------------------------------------
* Headers

View File

@@ -1672,6 +1672,10 @@ uint8_t USBD_HAL_Halt(uint8_t bEndpoint, uint8_t ctl)
UDP->UDP_RST_EP |= 1 << bEndpoint;
UDP->UDP_RST_EP &= ~(1 << bEndpoint);
}
/* This fixes a weird bug with regard to ping-pong OUT endpoints */
UDP->UDP_RST_EP |= 1 << bEndpoint;
UDP->UDP_RST_EP &= ~(1 << bEndpoint);
}
/* Return Halt status */

View File

@@ -14,10 +14,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#include <unistd.h>

View File

@@ -15,10 +15,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#include <board.h>

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#ifndef _BOARD_
#define _BOARD_

View File

@@ -7,10 +7,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -7,10 +7,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -7,10 +7,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#ifndef _MANIFEST_H
#define _MANIFEST_H

View File

@@ -7,10 +7,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -39,7 +39,8 @@ SEARCH_DIR(.)
MEMORY
{
/* reserve the first 16k (= 0x4000) for the DFU bootloader */
rom (rx) : ORIGIN = 0x00400000 + 16K, LENGTH = 256K - 16K /* flash, 256K */
crcstub (rx) : ORIGIN = 0x00400000 + 16K, LENGTH = 512 /* crcstub part */
rom (rx) : ORIGIN = 0x00400000 + 16K + 512, LENGTH = 256K - 16K - 512 /* flash, 256K */
/* note: dfudata will be at the start */
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 48K /* SRAM, 48K */
}
@@ -47,9 +48,17 @@ MEMORY
/* Section Definitions */
SECTIONS
{
.text :
.crcstub :
{
. = ALIGN(4);
KEEP(*(.crcstub_table))
KEEP(*(.crcstub_code))
} > crcstub = 0xff
.text :
{
. = ALIGN(512);
_sfixed = .;
KEEP(*(.vectors .vectors.*))
*(.text .text.* .gnu.linkonce.t.*)
@@ -94,7 +103,7 @@ SECTIONS
. = ALIGN(4);
_efixed = .; /* End of text section */
} > rom
} > rom = 0xff
/DISCARD/ :
{

View File

@@ -97,6 +97,8 @@ SECTIONS
/DISCARD/ :
{
*(.ARM.exidx)
*(.crcstub_table)
*(.crcstub_code)
}
. = ALIGN(4);

View File

@@ -147,7 +147,7 @@ extern WEAK void LowLevelInit( void )
}
*/
#ifndef qmod
#ifndef BOARD_MAINOSC_BYPASS
/* Initialize main oscillator */
if ( !(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) )
{
@@ -165,11 +165,11 @@ extern WEAK void LowLevelInit( void )
timeout = 0;
while (!(PMC->PMC_SR & PMC_SR_MOSCSELS) && (timeout++ < CLOCK_TIMEOUT));
#else
/* QMOD has external 12MHz clock source */
/* Board has external clock, not a crystal oscillator */
PIOB->PIO_PDR = (1 << 9);
PIOB->PIO_PUDR = (1 << 9);
PIOB->PIO_PPDDR = (1 << 9);
PMC->CKGR_MOR = CKGR_MOR_KEY(0x37) | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTBY| CKGR_MOR_MOSCSEL;
PMC->CKGR_MOR = CKGR_MOR_KEY(0x37) | CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCXTBY | CKGR_MOR_MOSCSEL;
#endif
/* disable the red LED after main clock initialization */

View File

@@ -7,10 +7,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "boardver_adc.h"

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include <stdint.h>
#include <string.h>

View File

@@ -7,10 +7,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "manifest.h"

View File

@@ -100,6 +100,7 @@ extern void UART_Configure( uint32_t baudrate, uint32_t masterClock)
/* Enable TX interrupts */
pUart->UART_IER = UART_IER_TXRDY;
NVIC_SetPriority(CONSOLE_IRQ, 15); /* lowest priority */
NVIC_EnableIRQ(CONSOLE_IRQ);
/* Enable receiver and transmitter */

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once
#include "board_common.h"

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "simtrace.h"

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include <osmocom/core/timer.h>
#include "board.h"

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "trace.h"

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
/* Depending on the board this is running on, it might be possible
* for the controller to read the status of the WWAN LED output lines of

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
/* Depending on the board this is running on, it might be possible
* for the controller to set the status of the PERST input line of

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once
#include "board_common.h"

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include <stdbool.h>
#include "board.h"

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include <stdbool.h>

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "trace.h"

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once
#include "board_common.h"

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "chip.h"

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "trace.h"

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once
#include "board_common.h"
@@ -29,6 +25,8 @@
#define BOARD_MAINOSC 12000000
/** desired main clock frequency (in Hz, based on BOARD_MAINOSC) */
#define BOARD_MCK 58000000 // 18.432 * 29 / 6
/** board has external clock, not crystal */
#define BOARD_MAINOSC_BYPASS
/** MCU pin connected to red LED */
#define PIO_LED_RED PIO_PA17
@@ -91,8 +89,8 @@
#define PINS_WWAN_IN { PIN_WWAN1, PIN_WWAN2 }
/* outputs controlling RESET input of modems */
#define PIN_PERST1 {PIO_PA25, PIOA, ID_PIOA, PIO_OUTPUT_0, PIO_PULLUP}
#define PIN_PERST2 {PIO_PA26, PIOA, ID_PIOA, PIO_OUTPUT_0, PIO_PULLUP}
#define PIN_PERST1 {PIO_PA25, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_PULLUP}
#define PIN_PERST2 {PIO_PA26, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_PULLUP}
#define PINS_PERST { PIN_PERST1, PIN_PERST2 }
#define PIN_VERSION_DET {PIO_PA19, PIOA, ID_PIOA, PIO_PERIPH_D, PIO_DEFAULT}

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "simtrace.h"

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include <osmocom/core/timer.h>
#include "board.h"

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include <stdbool.h>

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "trace.h"

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
/* Depending on the board this is running on, it might be possible
* for the controller to read the status of the WWAN LED output lines of

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
/* Depending on the board this is running on, it might be possible
* for the controller to set the status of the PERST input line of

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once
#include "board_common.h"

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "simtrace.h"

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once
#include "board_common.h"
@@ -159,3 +155,7 @@
#endif
/* SIMtrace board supports man-in-the-middle mode */
//#define HAVE_MITM
#define DETECT_VCC_BY_ADC
#define VCC_UV_THRESH_1V8 (1500000/2) /* 10k/10k resistive divider halves voltage */
#define VCC_UV_THRESH_3V (2500000/2) /* 10k/10k resistive divider halves voltage */

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "simtrace.h"

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "trace.h"

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once
@@ -73,6 +69,8 @@ void card_emu_uart_enable(uint8_t uart_chan, uint8_t rxtx);
void card_emu_uart_wait_tx_idle(uint8_t uart_chan);
void card_emu_uart_interrupt(uint8_t uart_chan);
int card_emu_get_vcc(uint8_t uart_chan);
struct cardemu_usb_msg_config;
int card_emu_set_config(struct card_handle *ch, const struct cardemu_usb_msg_config *scfg,
unsigned int scfg_len);

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#ifndef SIMTRACE_RINGBUF_H
#define SIMTRACE_RINGBUF_H

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#ifndef SIMTRACE_H
#define SIMTRACE_H

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
/* SIMtrace USB IDs */
#define USB_VENDOR_OPENMOKO 0x1d50

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#pragma once

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include <stdio.h>
#include <assert.h>
@@ -1062,7 +1058,10 @@ void card_emu_report_status(struct card_handle *ch, bool report_on_irq)
sts->flags |= CEMU_STATUS_F_CLK_ACTIVE;
if (ch->in_reset)
sts->flags |= CEMU_STATUS_F_RESET_ACTIVE;
/* FIXME: voltage + card insert */
#ifdef DETECT_VCC_BY_ADC
sts->voltage_mv = card_emu_get_vcc(ch->num);
#endif
/* FIXME: card insert */
sts->F_index = ch->F_index;
sts->D_index = ch->D_index;
sts->wi = ch->wi;
@@ -1106,7 +1105,12 @@ void card_emu_io_statechg(struct card_handle *ch, enum card_io io, int active)
card_set_state(ch, ISO_S_WAIT_POWER);
chg_mask |= CEMU_STATUS_F_VCC_PRESENT;
} else if (active == 1 && ch->vcc_active == 0) {
#ifdef DETECT_VCC_BY_ADC
TRACE_INFO("%u: VCC activated (%d mV)\r\n", ch->num,
card_emu_get_vcc(ch->num));
#else
TRACE_INFO("%u: VCC activated\r\n", ch->num);
#endif
card_set_state(ch, ISO_S_WAIT_CLK);
chg_mask |= CEMU_STATUS_F_VCC_PRESENT;
}

View File

@@ -0,0 +1,86 @@
/* SIMtrace 2 firmware crc stub
*
* (C) 2021 by sysmocom -s.f.m.c. GmbH, Author: Eric Wild <ewild@sysmocom.de>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <stdint.h>
#include "board.h"
#include "core_cm3.h"
#include "usb/device/dfu/dfu.h"
/*
* This file is a bit special, everything has to go to specific sections, and no globals are available.
* No external functions may be called, unless inlining is enforced!
*/
static void crc_check_stub();
__attribute__((section(".crcstub_table"))) volatile uint32_t crcstub_dummy_table[] = {
(uint32_t)0xdeadc0de, /* deliberately choose invalid value so unpatched image will not be started */
(uint32_t)crc_check_stub, /* must be valid flash addr */
(uint32_t)0xf1, /* crc value calculated by the host */
(uint32_t)0xf2, /* crc calc start address */
(uint32_t)0xf3 /* crc calc length (byte) */
};
__attribute__((section(".crcstub_code"))) static void do_crc32(int8_t c, uint32_t *crc_reg)
{
int32_t i, mask;
*crc_reg ^= c;
for (unsigned int j = 0; j < 8; j++)
if (*crc_reg & 1)
*crc_reg = (*crc_reg >> 1) ^ 0xEDB88320;
else
*crc_reg = *crc_reg >> 1;
}
__attribute__((section(".crcstub_code"), noinline)) static void crc_check_stub()
{
uint32_t crc_reg = 0xffffffff;
uint32_t expected_crc_val = crcstub_dummy_table[2];
uint8_t *crc_calc_startaddr = (uint8_t *)crcstub_dummy_table[3];
volatile uint32_t *actual_exc_tbl = (volatile uint32_t *)crc_calc_startaddr;
uint32_t crc_len = crcstub_dummy_table[4];
/* 4000ms wdt tickling */
WDT->WDT_MR = WDT_MR_WDRSTEN | WDT_MR_WDDBGHLT | WDT_MR_WDIDLEHLT | (((4000UL << 8) / 1000) << 16) |
((4000UL << 8) / 1000);
for (uint8_t *i = crc_calc_startaddr; i < crc_calc_startaddr + crc_len; i++)
do_crc32(*i, &crc_reg);
crc_reg = ~crc_reg;
if (crc_reg == expected_crc_val) {
/* this looks a bit awkward because we have to ensure the bx does not require a sp-relative load */
__asm__ volatile("\
mov r0, %0;\n\
mov r1, %1;\n\
MSR msp,r0;\n\
bx r1;"
:
: "r"(actual_exc_tbl[0]), "r"(actual_exc_tbl[1]));
} else {
/* no globals ! */
((struct dfudata *)0x20000000)->magic = USB_DFU_MAGIC;
__DSB();
for (;;) {
/* no functon call, since NVIC_SystemReset() might not be inlined! */
SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
SCB_AIRCR_SYSRESETREQ_Msk);
__DSB();
while (1)
;
}
}
}

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include <stdio.h>
#include "uart_console.h"

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "llist_irqsafe.h"

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include <stdint.h>
#include <errno.h>

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "board.h"

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "boardver_adc.h"
@@ -172,6 +168,16 @@ static void card_emu_uart_set_direction(uint8_t uart_chan, bool tx)
#endif
}
int card_emu_get_vcc(uint8_t uart_chan)
{
struct cardem_inst *ci = &cardem_inst[uart_chan];
#ifdef DETECT_VCC_BY_ADC
return ci->vcc_uv / 1000;
#else
return -1;
#endif
}
/* call-back from card_emu.c to enable/disable transmit and/or receive */
void card_emu_uart_enable(uint8_t uart_chan, uint8_t rxtx)
{
@@ -404,10 +410,9 @@ void card_emu_uart_reset_wt(uint8_t uart_chan)
/* call-back from card_emu.c to force a USART interrupt */
void card_emu_uart_interrupt(uint8_t uart_chan)
{
OSMO_ASSERT(uart_chan < ARRAY_SIZE(cardem_inst));
Usart *usart = get_usart_by_chan(uart_chan);
if (!usart) {
return;
}
if (USART0 == usart) {
NVIC_SetPendingIRQ(USART0_IRQn);
} else if (USART1 == usart) {
@@ -465,6 +470,7 @@ static int card_vcc_adc_init(void)
ADC->ADC_CHER |= ADC_CHER_CH6;
ADC->ADC_IER |= ADC_IER_EOC6;
#endif
NVIC_SetPriority(ADC_IRQn, 13);
NVIC_EnableIRQ(ADC_IRQn);
ADC->ADC_CR |= ADC_CR_START;
@@ -561,6 +567,35 @@ void mode_cardemu_configure(void)
TRACE_ENTRY();
}
struct relevant_irq {
uint32_t irq;
uint32_t prio;
const char *name;
};
static const struct relevant_irq relevant_irqs[] = {
{ UDP_IRQn, 14, "USB" },
{ CONSOLE_IRQ, 15, "CONSOLE" },
{ FIRST_USART_IRQ, 0, "7816_0" },
#ifdef CARDEMU_SECOND_UART
{ USART0_IRQn, 0, "7816_1" },
#endif
#ifdef DETECT_VCC_BY_ADC
{ ADC_IRQn, 13, "ADC" },
#endif
{ PIOA_IRQn, 10, "PIOA" },
{ PIOB_IRQn, 10, "PIOB" },
{ PIOC_IRQn, 10, "PIOC" },
};
void dump_irq_prios(void)
{
printf("Interrupt Enable Mask (ISER): %08x%08x\n\r", NVIC->ISER[1], NVIC->ISER[0]);
for (unsigned int i = 0; i < ARRAY_SIZE(relevant_irqs); i++) {
const struct relevant_irq *ri = &relevant_irqs[i];
printf("IRQ prio %02u (%s): current=%u, expected=%u\r\n", ri->irq, ri->name,
NVIC_GetPriority(ri->irq), ri->prio);
}
}
/* called if config is activated */
void mode_cardemu_init(void)
{
@@ -568,6 +603,8 @@ void mode_cardemu_init(void)
TRACE_ENTRY();
NVIC_SetPriority(UDP_IRQn, 14);
#ifdef PINS_CARDSIM
PIO_Configure(pins_cardsim, PIO_LISTSIZE(pins_cardsim));
#endif
@@ -581,6 +618,7 @@ void mode_cardemu_init(void)
/* configure USART as ISO-7816 slave (e.g. card) */
ISO7816_Init(&cardem_inst[0].usart_info, CLK_SLAVE);
NVIC_SetPriority(FIRST_USART_IRQ, 0);
NVIC_EnableIRQ(FIRST_USART_IRQ);
PIO_ConfigureIt(&pin_usim1_rst, usim1_rst_irqhandler);
PIO_EnableIt(&pin_usim1_rst);
@@ -608,6 +646,7 @@ void mode_cardemu_init(void)
PIO_Configure(pins_usim2, PIO_LISTSIZE(pins_usim2));
ISO7816_Init(&cardem_inst[1].usart_info, CLK_SLAVE);
/* TODO enable timeout */
NVIC_SetPriority(USART0_IRQn, 0);
NVIC_EnableIRQ(USART0_IRQn);
PIO_ConfigureIt(&pin_usim2_rst, usim2_rst_irqhandler);
PIO_EnableIt(&pin_usim2_rst);
@@ -626,6 +665,9 @@ void mode_cardemu_init(void)
sim_switch_use_physical(1, 1);
/* TODO check RST and VCC */
#endif /* CARDEMU_SECOND_UART */
dump_irq_prios();
}
/* called if config is deactivated */

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include <stdint.h>
#include <stdio.h>

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "ringbuffer.h"
#include "trace.h"

View File

@@ -12,10 +12,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
/* This code implement the Sniffer mode to sniff the communication between a
* SIM card (or any ISO 7816 smart card) and a phone (or any ISO 7816 card

View File

@@ -11,10 +11,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include <stdint.h>

View File

@@ -206,7 +206,7 @@ static const SIMTraceDriverConfigurationDescriptorSniffer
SIMTRACE_USB_EP_CARD_INT),
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
.bInterval = 0x10,
.bInterval = 1,
},
DFURT_IF_DESCRIPTOR(1, 0),
};
@@ -382,7 +382,7 @@ static const SIMTraceDriverConfigurationDescriptorPhone
SIMTRACE_CARDEM_USB_EP_USIM1_INT),
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
.bInterval = 0x10
.bInterval = 1
},
#ifdef CARDEMU_SECOND_UART
/* Communication class interface standard descriptor */
@@ -429,7 +429,7 @@ static const SIMTraceDriverConfigurationDescriptorPhone
SIMTRACE_CARDEM_USB_EP_USIM2_INT),
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
.bInterval = 0x10,
.bInterval = 1,
},
DFURT_IF_DESCRIPTOR(2, 0),
#else
@@ -547,7 +547,7 @@ static const SIMTraceDriverConfigurationDescriptorMITM
CCID_EPT_NOTIFICATION),
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
.bInterval = 0x10,
.bInterval = 1,
},
/* Communication class interface standard descriptor */
@@ -593,7 +593,7 @@ static const SIMTraceDriverConfigurationDescriptorMITM
SIMTRACE_USB_EP_PHONE_INT),
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
.bInterval = 0x10
.bInterval = 1
},
DFURT_IF_DESCRIPTOR(2, 0),
};

View File

@@ -9,10 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*/
#include "board.h"
#include "trace.h"

View File

@@ -14,10 +14,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#pragma once

View File

@@ -14,10 +14,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#pragma once

View File

@@ -14,10 +14,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#pragma once

View File

@@ -11,10 +11,6 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA.
linux/include/linux/rbtree.h

View File

@@ -13,10 +13,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#include <stdint.h>

View File

@@ -12,10 +12,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
/*! \defgroup timer Osmocom timers

View File

@@ -14,10 +14,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
/*! \file backtrace.c

View File

@@ -14,10 +14,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#include <stdint.h>

View File

@@ -12,10 +12,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
/*! \addtogroup msgb

View File

@@ -14,10 +14,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
/*! \addtogroup utils

View File

@@ -12,10 +12,6 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA
linux/lib/rbtree.c

View File

@@ -17,10 +17,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/

View File

@@ -17,10 +17,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/

Some files were not shown because too many files have changed in this diff Show More