mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-18 22:38:32 +03:00
Compare commits
2 Commits
laforge/20
...
0.8.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b5785af7a | ||
|
|
ecafd5abab |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -20,9 +20,6 @@ tags
|
|||||||
host/simtrace2-list
|
host/simtrace2-list
|
||||||
host/simtrace2-cardem-pcsc
|
host/simtrace2-cardem-pcsc
|
||||||
host/contrib/simtrace2.spec
|
host/contrib/simtrace2.spec
|
||||||
host/src/simtrace2-tool
|
|
||||||
host/tests
|
|
||||||
usb_strings_generated.h
|
usb_strings_generated.h
|
||||||
firmware/usbstring/usbstring
|
firmware/usbstring/usbstring
|
||||||
firmware/apps/*/usb_strings.txt.patched
|
firmware/apps/*/usb_strings.txt.patched
|
||||||
firmware/misc/crctool
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/sh -e
|
||||||
# Create copies of binaries with -latest, -$GIT_VERSION (OS#4413, OS#3452)
|
# Create copies of binaries with -latest, -$GIT_VERSION (OS#4413, OS#3452)
|
||||||
cd "$(dirname "$0")/.."
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
@@ -9,10 +9,8 @@ echo "Copying binaries with "-latest" and "-$GIT_VERSION" appended..."
|
|||||||
cd firmware/bin
|
cd firmware/bin
|
||||||
for ext in bin elf; do
|
for ext in bin elf; do
|
||||||
for file in *."$ext"; do
|
for file in *."$ext"; do
|
||||||
if ! [[ "$file" =~ ^(.*padded.*|.*nocrcstub.*)$ ]];then
|
without_ext="${file%.*}"
|
||||||
without_ext="${file%.*}"
|
cp -v "$file" "$without_ext-latest.$ext"
|
||||||
cp -v "$file" "$without_ext-latest.$ext"
|
cp -v "$file" "$without_ext-$GIT_VERSION.$ext"
|
||||||
cp -v "$file" "$without_ext-$GIT_VERSION.$ext"
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -1,12 +1,3 @@
|
|||||||
-- 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")
|
usb_simtrace_protocol = Proto("USB_simtrace", "USB simtrace protocol")
|
||||||
|
|
||||||
|
|
||||||
@@ -16,95 +7,49 @@ local control_commands = {
|
|||||||
[0x0001] = "SIMTRACE_CMD_BD_BOARD_INFO",
|
[0x0001] = "SIMTRACE_CMD_BD_BOARD_INFO",
|
||||||
|
|
||||||
-- /* SIMTRACE_MSGC_CARDEM */
|
-- /* SIMTRACE_MSGC_CARDEM */
|
||||||
[0x0101] = "DT_CEMU_TX_DATA",
|
[0x0101] = "SIMTRACE_MSGT_DT_CEMU_TX_DATA",
|
||||||
[0x0102] = "DT_CEMU_SET_ATR",
|
[0x0102] = "SIMTRACE_MSGT_DT_CEMU_SET_ATR",
|
||||||
[0x0103] = "BD_CEMU_STATS",
|
[0x0103] = "SIMTRACE_MSGT_BD_CEMU_STATS",
|
||||||
[0x0104] = "BD_CEMU_STATUS",
|
[0x0104] = "SIMTRACE_MSGT_BD_CEMU_STATUS",
|
||||||
[0x0105] = "DT_CEMU_CARDINSERT",
|
[0x0105] = "SIMTRACE_MSGT_DT_CEMU_CARDINSERT",
|
||||||
[0x0106] = "DO_CEMU_RX_DATA",
|
[0x0106] = "SIMTRACE_MSGT_DO_CEMU_RX_DATA",
|
||||||
[0x0107] = "DO_CEMU_PTS",
|
[0x0107] = "SIMTRACE_MSGT_DO_CEMU_PTS",
|
||||||
[0x0108] = "BD_CEMU_CONFIG",
|
[0x0108] = "SIMTRACE_MSGT_BD_CEMU_CONFIG",
|
||||||
|
|
||||||
-- /* SIMTRACE_MSGC_MODEM */
|
-- /* SIMTRACE_MSGC_MODEM */
|
||||||
[0x0201] = "DT_MODEM_RESET",
|
[0x0201] = "SIMTRACE_MSGT_DT_MODEM_RESET",
|
||||||
[0x0202] = "DT_MODEM_SIM_SELECT",
|
[0x0202] = "SIMTRACE_MSGT_DT_MODEM_SIM_SELECT",
|
||||||
[0x0203] = "BD_MODEM_STATUS",
|
[0x0203] = "SIMTRACE_MSGT_BD_MODEM_STATUS",
|
||||||
|
|
||||||
-- /* SIMTRACE_MSGC_SNIFF */
|
-- /* SIMTRACE_MSGC_SNIFF */
|
||||||
[0x0300] = "SNIFF_CHANGE",
|
[0x0300] = "SIMTRACE_MSGT_SNIFF_CHANGE",
|
||||||
[0x0301] = "SNIFF_FIDI",
|
[0x0301] = "SIMTRACE_MSGT_SNIFF_FIDI",
|
||||||
[0x0302] = "SNIFF_ATR",
|
[0x0302] = "SIMTRACE_MSGT_SNIFF_ATR",
|
||||||
[0x0304] = "SNIFF_TPDU",
|
[0x0304] = "SIMTRACE_MSGT_SNIFF_TPDU",
|
||||||
[0x0303] = "SNIFF_PPS"
|
[0x0303] = "SIMTRACE_MSGT_SNIFF_PPS"
|
||||||
}
|
}
|
||||||
|
|
||||||
local msgtype = ProtoField.uint16("usb_simtrace.msgtype", "Message Type", base.HEX_DEC, control_commands)
|
local msgtype = ProtoField.uint16("usb_simtrace.msgtype", "Message Type", base.HEX_DEC, control_commands)
|
||||||
local seqnr = ProtoField.uint8("usb_simtrace.seqnr", "Sequence Number", base.DEC)
|
local seqnr = ProtoField.uint8("usb_simtrace.seqnr", "Sequence Number", base.HEX_DEC)
|
||||||
local slotnr = ProtoField.uint8("usb_simtrace.slotnr", "Slot Number", base.DEC)
|
local slotnr = ProtoField.uint8("usb_simtrace.slotnr", "Slot Number", base.HEX_DEC)
|
||||||
local reserved = ProtoField.uint16("usb_simtrace.reserved", "reserved", base.HEX_DEC)
|
local reserved = ProtoField.uint16("usb_simtrace.reserved", "reserved", base.HEX_DEC)
|
||||||
local payloadlen = ProtoField.uint16("usb_simtrace.length", "length", base.DEC)
|
local payloadlen = ProtoField.uint16("usb_simtrace.length", "length", base.HEX_DEC)
|
||||||
local payload = ProtoField.bytes("usb_simtrace.payload", "Data")
|
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_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 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 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 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.DEC)
|
local rxtxdatalen = ProtoField.uint16("usb_simtrace.rxtxdatalen", "rx/tx data length", base.HEX_DEC)
|
||||||
local rxtxdata = ProtoField.bytes("usb_simtrace.rxtxdata", "rx/tx (data)")
|
local rxtxdata = ProtoField.bytes("usb_simtrace.rxtxdata", "rx/tx (data)")
|
||||||
|
|
||||||
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 = {
|
usb_simtrace_protocol.fields = {
|
||||||
msgtype, seqnr, slotnr, reserved, payloadlen, payload,
|
msgtype, seqnr, slotnr, reserved, payloadlen, payload, pb_and_rx, pb_and_tx, final, tpdu_hdr, rxtxdatalen, rxtxdata
|
||||||
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)
|
function dissect_rxtx(payload_data,pinfo,tree)
|
||||||
|
|
||||||
local headerSubtree = tree:add(usb_simtrace_protocol, payload_data, "rx/tx data")
|
local headerSubtree = tree:add(usb_simtrace_protocol, payload_data, "rx/tx data")
|
||||||
local len = payload_data(4,2):le_uint();
|
local len = payload_data(8+4,2):le_uint();
|
||||||
local cmd32 = payload_data(0,4):le_uint();
|
local cmd32 = payload_data(8+0,4):le_uint();
|
||||||
|
|
||||||
headerSubtree:add(pb_and_rx, cmd32)
|
headerSubtree:add(pb_and_rx, cmd32)
|
||||||
headerSubtree:add(pb_and_tx, cmd32)
|
headerSubtree:add(pb_and_tx, cmd32)
|
||||||
@@ -112,129 +57,9 @@ function dissect_rxtx(payload_data,pinfo,tree)
|
|||||||
headerSubtree:add(tpdu_hdr, cmd32)
|
headerSubtree:add(tpdu_hdr, cmd32)
|
||||||
|
|
||||||
headerSubtree:add(rxtxdatalen, len)
|
headerSubtree:add(rxtxdatalen, len)
|
||||||
headerSubtree:add_le(rxtxdata, payload_data(6,len))
|
headerSubtree:add_le(rxtxdata, payload_data(8+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
|
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)
|
function usb_simtrace_protocol.dissector(buffer, pinfo, tree)
|
||||||
length = buffer:len()
|
length = buffer:len()
|
||||||
if length == 0 then return end
|
if length == 0 then return end
|
||||||
@@ -251,21 +76,7 @@ function usb_simtrace_protocol.dissector(buffer, pinfo, tree)
|
|||||||
pinfo.cols.info = string.format("Cmd 0x%04X : %s", command, control_commands[command])
|
pinfo.cols.info = string.format("Cmd 0x%04X : %s", command, control_commands[command])
|
||||||
local payload_data = buffer(8,length-8)
|
local payload_data = buffer(8,length-8)
|
||||||
if(command == 0x0101 or command == 0x0106) then
|
if(command == 0x0101 or command == 0x0106) then
|
||||||
return dissect_rxtx(payload_data(),pinfo,subtree)
|
return dissect_rxtx(buffer(),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
|
else
|
||||||
subtree:add(payload, payload_data)
|
subtree:add(payload, payload_data)
|
||||||
end
|
end
|
||||||
@@ -274,13 +85,8 @@ end
|
|||||||
|
|
||||||
|
|
||||||
function usb_simtrace_protocol.init()
|
function usb_simtrace_protocol.init()
|
||||||
local usb_product_dissectors = DissectorTable.get("usb.product")
|
local usb_product_dissectors = DissectorTable.get("usb.product")
|
||||||
usb_product_dissectors:add(0x1d50616d, usb_simtrace_protocol) -- OCTSIMTEST
|
usb_product_dissectors:add(0x1d50616d, usb_simtrace_protocol)
|
||||||
usb_product_dissectors:add(0x1d50616e, usb_simtrace_protocol) -- NGFF_CARDEM
|
usb_product_dissectors:add(0x1d50616e, usb_simtrace_protocol)
|
||||||
usb_product_dissectors:add(0x1d5060e3, usb_simtrace_protocol) -- SIMTRACE2
|
DissectorTable.get("usb.bulk"):add(0xffff, usb_simtrace_protocol)
|
||||||
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
|
end
|
||||||
|
|||||||
6
debian/changelog
vendored
6
debian/changelog
vendored
@@ -1,3 +1,9 @@
|
|||||||
|
simtrace2 (0.8.2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* firmware/Makefile: don't use distribution's CFLAGS
|
||||||
|
|
||||||
|
-- Oliver Smith <osmith@sysmocom.de> Fri, 15 Sep 2023 11:17:37 +0200
|
||||||
|
|
||||||
simtrace2 (0.8.1) unstable; urgency=medium
|
simtrace2 (0.8.1) unstable; urgency=medium
|
||||||
|
|
||||||
* host/contrib/simtrace2.spec.in: fix soname
|
* host/contrib/simtrace2.spec.in: fix soname
|
||||||
|
|||||||
@@ -29,6 +29,13 @@
|
|||||||
# Makefile for compiling the Getting Started with SAM3S Microcontrollers project
|
# Makefile for compiling the Getting Started with SAM3S Microcontrollers project
|
||||||
|
|
||||||
GIT_VERSION=$(shell $(TOP)/git-version-gen $(TOP)/.tarball-version)
|
GIT_VERSION=$(shell $(TOP)/git-version-gen $(TOP)/.tarball-version)
|
||||||
|
|
||||||
|
CFLAGS = \
|
||||||
|
-Werror=format-security \
|
||||||
|
-Wformat \
|
||||||
|
-g \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
# User-modifiable options
|
# User-modifiable options
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
@@ -117,7 +124,7 @@ C_LIBUSB = USBDescriptors.c USBRequests.c USBD.c USBDCallbacks.c USBDDriver.
|
|||||||
C_LIBUSB_RT = dfu.c dfu_runtime.c
|
C_LIBUSB_RT = dfu.c dfu_runtime.c
|
||||||
C_LIBUSB_DFU = dfu.c dfu_desc.c dfu_driver.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 \
|
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 crcstub.c
|
main_common.c stack_check.c
|
||||||
|
|
||||||
C_BOARD = $(notdir $(wildcard libboard/common/source/*.c))
|
C_BOARD = $(notdir $(wildcard libboard/common/source/*.c))
|
||||||
C_BOARD += $(notdir $(wildcard libboard/$(BOARD)/source/*.c))
|
C_BOARD += $(notdir $(wildcard libboard/$(BOARD)/source/*.c))
|
||||||
@@ -229,15 +236,12 @@ $(BIN)/$(BOARD)-dfu-flash-padded.bin: $(BIN)/$(BOARD)-dfu-flash.bin
|
|||||||
$(OUTPUT)-combined.bin: $(BIN)/$(BOARD)-dfu-flash-padded.bin $(OUTPUT)-dfu.bin
|
$(OUTPUT)-combined.bin: $(BIN)/$(BOARD)-dfu-flash-padded.bin $(OUTPUT)-dfu.bin
|
||||||
cat $^ > $@
|
cat $^ > $@
|
||||||
|
|
||||||
$(BIN) $(OBJ): apps/$(APP)/usb_strings_generated.h misc/crctool
|
$(BIN) $(OBJ): apps/$(APP)/usb_strings_generated.h
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
|
||||||
usbstring/usbstring: usbstring/usbstring.c
|
usbstring/usbstring: usbstring/usbstring.c
|
||||||
gcc $^ -o $@
|
gcc $^ -o $@
|
||||||
|
|
||||||
misc/crctool: misc/crctool.c
|
|
||||||
gcc $^ -o $@
|
|
||||||
|
|
||||||
.PHONY: apps/$(APP)/usb_strings.txt.patched
|
.PHONY: apps/$(APP)/usb_strings.txt.patched
|
||||||
apps/$(APP)/usb_strings.txt.patched: apps/$(APP)/usb_strings.txt
|
apps/$(APP)/usb_strings.txt.patched: apps/$(APP)/usb_strings.txt
|
||||||
sed "s/PRODUCT_STRING/$(shell cat libboard/$(BOARD)/product_string.txt)/" $< > $@
|
sed "s/PRODUCT_STRING/$(shell cat libboard/$(BOARD)/product_string.txt)/" $< > $@
|
||||||
@@ -254,6 +258,7 @@ 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)$(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)$(NM) $(OUTPUT)-$(1).elf >$(OUTPUT)-$(1).elf.txt
|
||||||
$(SILENT)$(OBJCOPY) -O binary $(OUTPUT)-$(1).elf $(OUTPUT)-$(1).bin
|
$(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)
|
$$(C_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.c Makefile $(OBJ) $(BIN)
|
||||||
@echo [COMPILING $$<]
|
@echo [COMPILING $$<]
|
||||||
@@ -263,17 +268,26 @@ $$(ASM_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.S Makefile $(OBJ) $(BIN)
|
|||||||
@echo [ASSEMBLING $$@]
|
@echo [ASSEMBLING $$@]
|
||||||
$(SILENT)$(CC) $(ASFLAGS) -DENVIRONMENT_$(1) -DENVIRONMENT=\"$(1)\" -c -o $$@ $$<
|
$(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
|
endef
|
||||||
|
|
||||||
ALL_MEMORIES = flash ram
|
ALL_MEMORIES = dfu flash ram
|
||||||
$(foreach MEMORY, $(ALL_MEMORIES), $(eval $(call RULES,$(MEMORY))))
|
$(foreach MEMORY, $(ALL_MEMORIES), $(eval $(call RULES,$(MEMORY))))
|
||||||
|
|
||||||
# files with those names do exist..
|
# files with those names do exist..
|
||||||
.PHONY: dfu
|
|
||||||
dfu: $(OUTPUT)-dfu.bin
|
|
||||||
.PHONY: ram
|
.PHONY: ram
|
||||||
ram: build_ram
|
.PHONY: dfu
|
||||||
.PHONY: flash
|
.PHONY: flash
|
||||||
|
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
|
||||||
flash: build_flash
|
flash: build_flash
|
||||||
#alternate way of embedding: obj file
|
#alternate way of embedding: obj file
|
||||||
#ifeq ($(APP), dfu)
|
#ifeq ($(APP), dfu)
|
||||||
@@ -281,37 +295,8 @@ flash: build_flash
|
|||||||
# $(SILENT)$(OBJCOPY) --rename-section .data=.fwupdate -I binary -O elf32-littlearm bin/$(BOARD)-dfu-flash.bin $(OBJ)/flash_fwupdate.o
|
# $(SILENT)$(OBJCOPY) --rename-section .data=.fwupdate -I binary -O elf32-littlearm bin/$(BOARD)-dfu-flash.bin $(OBJ)/flash_fwupdate.o
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
C_OBJECTS_dfu = $(addprefix $(OBJ)/dfu_, $(C_OBJECTS))
|
program:
|
||||||
ASM_OBJECTS_dfu = $(addprefix $(OBJ)/dfu_, $(ASM_OBJECTS))
|
openocd -f openocd/openocd.cfg -c "init" -c "halt" -c "flash write_bank 0 ./bin/project-flash.bin 0" -c "reset" -c "shutdown"
|
||||||
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
|
SERIAL ?= /dev/ttyUSB0
|
||||||
log:
|
log:
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "core_cm3.h"
|
#include "core_cm3.h"
|
||||||
@@ -89,14 +93,8 @@ __attribute__((section(".ramfunc"), noinline, noreturn)) static void erase_first
|
|||||||
flash_cmd(EFC_FCMD_EA, 0);
|
flash_cmd(EFC_FCMD_EA, 0);
|
||||||
#endif
|
#endif
|
||||||
flash_wait_ready();
|
flash_wait_ready();
|
||||||
for (;;) {
|
for (;;)
|
||||||
/* no functon call, since NVIC_SystemReset() might not be inlined! */
|
NVIC_SystemReset();
|
||||||
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
|
#define MAX_USB_ITER BOARD_MCK / 72 // This should be around a second
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
* Headers
|
||||||
@@ -137,12 +141,6 @@ static void check_exec_dbg_cmd(void)
|
|||||||
board_exec_dbg_cmd(ch);
|
board_exec_dbg_cmd(ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <osmocom/core/panic.h>
|
|
||||||
void WDT_IrqHandler(void)
|
|
||||||
{
|
|
||||||
osmo_panic("WDT");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------
|
/*------------------------------------------------------------------------------
|
||||||
* Main
|
* Main
|
||||||
*------------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------------*/
|
||||||
@@ -158,11 +156,10 @@ extern int main(void)
|
|||||||
led_blink(LED_GREEN, BLINK_ALWAYS_ON);
|
led_blink(LED_GREEN, BLINK_ALWAYS_ON);
|
||||||
|
|
||||||
/* Enable watchdog for 2000ms, with no window */
|
/* Enable watchdog for 2000ms, with no window */
|
||||||
WDT_Enable(WDT, WDT_MR_WDFIEN | WDT_MR_WDDBGHLT | WDT_MR_WDIDLEHLT |
|
WDT_Enable(WDT, WDT_MR_WDRSTEN | WDT_MR_WDDBGHLT | WDT_MR_WDIDLEHLT |
|
||||||
(WDT_GetPeriod(1000) << 16) | WDT_GetPeriod(1000));
|
(WDT_GetPeriod(2000) << 16) | WDT_GetPeriod(2000));
|
||||||
NVIC_EnableIRQ(WDT_IRQn);
|
|
||||||
|
|
||||||
PIO_InitializeInterrupts(10);
|
PIO_InitializeInterrupts(0);
|
||||||
|
|
||||||
print_banner();
|
print_banner();
|
||||||
board_main_top();
|
board_main_top();
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
* Headers
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
* Headers
|
||||||
|
|||||||
@@ -1672,10 +1672,6 @@ uint8_t USBD_HAL_Halt(uint8_t bEndpoint, uint8_t ctl)
|
|||||||
UDP->UDP_RST_EP |= 1 << bEndpoint;
|
UDP->UDP_RST_EP |= 1 << bEndpoint;
|
||||||
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 */
|
/* Return Halt status */
|
||||||
|
|||||||
@@ -14,6 +14,10 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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>
|
#include <unistd.h>
|
||||||
|
|||||||
@@ -15,6 +15,10 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 <board.h>
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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_
|
#ifndef _BOARD_
|
||||||
#define _BOARD_
|
#define _BOARD_
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#ifndef _MANIFEST_H
|
||||||
#define _MANIFEST_H
|
#define _MANIFEST_H
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -39,8 +39,7 @@ SEARCH_DIR(.)
|
|||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
/* reserve the first 16k (= 0x4000) for the DFU bootloader */
|
/* reserve the first 16k (= 0x4000) for the DFU bootloader */
|
||||||
crcstub (rx) : ORIGIN = 0x00400000 + 16K, LENGTH = 512 /* crcstub part */
|
rom (rx) : ORIGIN = 0x00400000 + 16K, LENGTH = 256K - 16K /* flash, 256K */
|
||||||
rom (rx) : ORIGIN = 0x00400000 + 16K + 512, LENGTH = 256K - 16K - 512 /* flash, 256K */
|
|
||||||
/* note: dfudata will be at the start */
|
/* note: dfudata will be at the start */
|
||||||
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 48K /* SRAM, 48K */
|
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 48K /* SRAM, 48K */
|
||||||
}
|
}
|
||||||
@@ -48,17 +47,9 @@ MEMORY
|
|||||||
/* Section Definitions */
|
/* Section Definitions */
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.crcstub :
|
.text :
|
||||||
{
|
{
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
KEEP(*(.crcstub_table))
|
|
||||||
KEEP(*(.crcstub_code))
|
|
||||||
} > crcstub = 0xff
|
|
||||||
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
|
|
||||||
. = ALIGN(512);
|
|
||||||
_sfixed = .;
|
_sfixed = .;
|
||||||
KEEP(*(.vectors .vectors.*))
|
KEEP(*(.vectors .vectors.*))
|
||||||
*(.text .text.* .gnu.linkonce.t.*)
|
*(.text .text.* .gnu.linkonce.t.*)
|
||||||
@@ -103,7 +94,7 @@ SECTIONS
|
|||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
_efixed = .; /* End of text section */
|
_efixed = .; /* End of text section */
|
||||||
} > rom = 0xff
|
} > rom
|
||||||
|
|
||||||
/DISCARD/ :
|
/DISCARD/ :
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -97,8 +97,6 @@ SECTIONS
|
|||||||
/DISCARD/ :
|
/DISCARD/ :
|
||||||
{
|
{
|
||||||
*(.ARM.exidx)
|
*(.ARM.exidx)
|
||||||
*(.crcstub_table)
|
|
||||||
*(.crcstub_code)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ extern WEAK void LowLevelInit( void )
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef BOARD_MAINOSC_BYPASS
|
#ifndef qmod
|
||||||
/* Initialize main oscillator */
|
/* Initialize main oscillator */
|
||||||
if ( !(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) )
|
if ( !(PMC->CKGR_MOR & CKGR_MOR_MOSCSEL) )
|
||||||
{
|
{
|
||||||
@@ -165,11 +165,11 @@ extern WEAK void LowLevelInit( void )
|
|||||||
timeout = 0;
|
timeout = 0;
|
||||||
while (!(PMC->PMC_SR & PMC_SR_MOSCSELS) && (timeout++ < CLOCK_TIMEOUT));
|
while (!(PMC->PMC_SR & PMC_SR_MOSCSELS) && (timeout++ < CLOCK_TIMEOUT));
|
||||||
#else
|
#else
|
||||||
/* Board has external clock, not a crystal oscillator */
|
/* QMOD has external 12MHz clock source */
|
||||||
PIOB->PIO_PDR = (1 << 9);
|
PIOB->PIO_PDR = (1 << 9);
|
||||||
PIOB->PIO_PUDR = (1 << 9);
|
PIOB->PIO_PUDR = (1 << 9);
|
||||||
PIOB->PIO_PPDDR = (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
|
#endif
|
||||||
|
|
||||||
/* disable the red LED after main clock initialization */
|
/* disable the red LED after main clock initialization */
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "boardver_adc.h"
|
#include "boardver_adc.h"
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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"
|
#include "manifest.h"
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,6 @@ extern void UART_Configure( uint32_t baudrate, uint32_t masterClock)
|
|||||||
|
|
||||||
/* Enable TX interrupts */
|
/* Enable TX interrupts */
|
||||||
pUart->UART_IER = UART_IER_TXRDY;
|
pUart->UART_IER = UART_IER_TXRDY;
|
||||||
NVIC_SetPriority(CONSOLE_IRQ, 15); /* lowest priority */
|
|
||||||
NVIC_EnableIRQ(CONSOLE_IRQ);
|
NVIC_EnableIRQ(CONSOLE_IRQ);
|
||||||
|
|
||||||
/* Enable receiver and transmitter */
|
/* Enable receiver and transmitter */
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
#include "board_common.h"
|
#include "board_common.h"
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "simtrace.h"
|
#include "simtrace.h"
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 <osmocom/core/timer.h>
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
/* 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
|
* for the controller to read the status of the WWAN LED output lines of
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
/* 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
|
* for the controller to set the status of the PERST input line of
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
#include "board_common.h"
|
#include "board_common.h"
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 <stdbool.h>
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
#include "board_common.h"
|
#include "board_common.h"
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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"
|
#include "chip.h"
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
#include "board_common.h"
|
#include "board_common.h"
|
||||||
@@ -25,8 +29,6 @@
|
|||||||
#define BOARD_MAINOSC 12000000
|
#define BOARD_MAINOSC 12000000
|
||||||
/** desired main clock frequency (in Hz, based on BOARD_MAINOSC) */
|
/** desired main clock frequency (in Hz, based on BOARD_MAINOSC) */
|
||||||
#define BOARD_MCK 58000000 // 18.432 * 29 / 6
|
#define BOARD_MCK 58000000 // 18.432 * 29 / 6
|
||||||
/** board has external clock, not crystal */
|
|
||||||
#define BOARD_MAINOSC_BYPASS
|
|
||||||
|
|
||||||
/** MCU pin connected to red LED */
|
/** MCU pin connected to red LED */
|
||||||
#define PIO_LED_RED PIO_PA17
|
#define PIO_LED_RED PIO_PA17
|
||||||
@@ -37,7 +39,7 @@
|
|||||||
/** green LED pin definition */
|
/** green LED pin definition */
|
||||||
#define PIN_LED_GREEN {PIO_LED_GREEN, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
|
#define PIN_LED_GREEN {PIO_LED_GREEN, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT}
|
||||||
/** LEDs pin definition */
|
/** LEDs pin definition */
|
||||||
#define PINS_LEDS PIN_LED_RED, PIN_LED_GREEN
|
#define PINS_LEDS PIN_LED_RED, PIN_LED_GREEN
|
||||||
/** index for red LED in LEDs pin definition array */
|
/** index for red LED in LEDs pin definition array */
|
||||||
#define LED_NUM_RED 0
|
#define LED_NUM_RED 0
|
||||||
/** index for green LED in LEDs pin definition array */
|
/** index for green LED in LEDs pin definition array */
|
||||||
@@ -89,8 +91,8 @@
|
|||||||
#define PINS_WWAN_IN { PIN_WWAN1, PIN_WWAN2 }
|
#define PINS_WWAN_IN { PIN_WWAN1, PIN_WWAN2 }
|
||||||
|
|
||||||
/* outputs controlling RESET input of modems */
|
/* outputs controlling RESET input of modems */
|
||||||
#define PIN_PERST1 {PIO_PA25, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_PULLUP}
|
#define PIN_PERST1 {PIO_PA25, PIOA, ID_PIOA, PIO_OUTPUT_0, PIO_PULLUP}
|
||||||
#define PIN_PERST2 {PIO_PA26, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_PULLUP}
|
#define PIN_PERST2 {PIO_PA26, PIOA, ID_PIOA, PIO_OUTPUT_0, PIO_PULLUP}
|
||||||
#define PINS_PERST { PIN_PERST1, PIN_PERST2 }
|
#define PINS_PERST { PIN_PERST1, PIN_PERST2 }
|
||||||
|
|
||||||
#define PIN_VERSION_DET {PIO_PA19, PIOA, ID_PIOA, PIO_PERIPH_D, PIO_DEFAULT}
|
#define PIN_VERSION_DET {PIO_PA19, PIOA, ID_PIOA, PIO_PERIPH_D, PIO_DEFAULT}
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "simtrace.h"
|
#include "simtrace.h"
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 <osmocom/core/timer.h>
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
/* 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
|
* for the controller to read the status of the WWAN LED output lines of
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
/* 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
|
* for the controller to set the status of the PERST input line of
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
#include "board_common.h"
|
#include "board_common.h"
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "simtrace.h"
|
#include "simtrace.h"
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
#include "board_common.h"
|
#include "board_common.h"
|
||||||
@@ -155,7 +159,3 @@
|
|||||||
#endif
|
#endif
|
||||||
/* SIMtrace board supports man-in-the-middle mode */
|
/* SIMtrace board supports man-in-the-middle mode */
|
||||||
//#define HAVE_MITM
|
//#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 */
|
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "simtrace.h"
|
#include "simtrace.h"
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
@@ -69,8 +73,6 @@ 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_wait_tx_idle(uint8_t uart_chan);
|
||||||
void card_emu_uart_interrupt(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;
|
struct cardemu_usb_msg_config;
|
||||||
int card_emu_set_config(struct card_handle *ch, const struct cardemu_usb_msg_config *scfg,
|
int card_emu_set_config(struct card_handle *ch, const struct cardemu_usb_msg_config *scfg,
|
||||||
unsigned int scfg_len);
|
unsigned int scfg_len);
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#ifndef SIMTRACE_RINGBUF_H
|
||||||
#define SIMTRACE_RINGBUF_H
|
#define SIMTRACE_RINGBUF_H
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#ifndef SIMTRACE_H
|
||||||
#define SIMTRACE_H
|
#define SIMTRACE_H
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 */
|
/* SIMtrace USB IDs */
|
||||||
#define USB_VENDOR_OPENMOKO 0x1d50
|
#define USB_VENDOR_OPENMOKO 0x1d50
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 <stdio.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -1058,10 +1062,7 @@ void card_emu_report_status(struct card_handle *ch, bool report_on_irq)
|
|||||||
sts->flags |= CEMU_STATUS_F_CLK_ACTIVE;
|
sts->flags |= CEMU_STATUS_F_CLK_ACTIVE;
|
||||||
if (ch->in_reset)
|
if (ch->in_reset)
|
||||||
sts->flags |= CEMU_STATUS_F_RESET_ACTIVE;
|
sts->flags |= CEMU_STATUS_F_RESET_ACTIVE;
|
||||||
#ifdef DETECT_VCC_BY_ADC
|
/* FIXME: voltage + card insert */
|
||||||
sts->voltage_mv = card_emu_get_vcc(ch->num);
|
|
||||||
#endif
|
|
||||||
/* FIXME: card insert */
|
|
||||||
sts->F_index = ch->F_index;
|
sts->F_index = ch->F_index;
|
||||||
sts->D_index = ch->D_index;
|
sts->D_index = ch->D_index;
|
||||||
sts->wi = ch->wi;
|
sts->wi = ch->wi;
|
||||||
@@ -1105,12 +1106,7 @@ void card_emu_io_statechg(struct card_handle *ch, enum card_io io, int active)
|
|||||||
card_set_state(ch, ISO_S_WAIT_POWER);
|
card_set_state(ch, ISO_S_WAIT_POWER);
|
||||||
chg_mask |= CEMU_STATUS_F_VCC_PRESENT;
|
chg_mask |= CEMU_STATUS_F_VCC_PRESENT;
|
||||||
} else if (active == 1 && ch->vcc_active == 0) {
|
} 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);
|
TRACE_INFO("%u: VCC activated\r\n", ch->num);
|
||||||
#endif
|
|
||||||
card_set_state(ch, ISO_S_WAIT_CLK);
|
card_set_state(ch, ISO_S_WAIT_CLK);
|
||||||
chg_mask |= CEMU_STATUS_F_VCC_PRESENT;
|
chg_mask |= CEMU_STATUS_F_VCC_PRESENT;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,86 +0,0 @@
|
|||||||
/* 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)
|
|
||||||
;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 <stdio.h>
|
||||||
#include "uart_console.h"
|
#include "uart_console.h"
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "llist_irqsafe.h"
|
#include "llist_irqsafe.h"
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 <stdint.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "boardver_adc.h"
|
#include "boardver_adc.h"
|
||||||
@@ -168,16 +172,6 @@ static void card_emu_uart_set_direction(uint8_t uart_chan, bool tx)
|
|||||||
#endif
|
#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 */
|
/* 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)
|
void card_emu_uart_enable(uint8_t uart_chan, uint8_t rxtx)
|
||||||
{
|
{
|
||||||
@@ -410,9 +404,10 @@ void card_emu_uart_reset_wt(uint8_t uart_chan)
|
|||||||
/* call-back from card_emu.c to force a USART interrupt */
|
/* call-back from card_emu.c to force a USART interrupt */
|
||||||
void card_emu_uart_interrupt(uint8_t uart_chan)
|
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);
|
Usart *usart = get_usart_by_chan(uart_chan);
|
||||||
|
if (!usart) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (USART0 == usart) {
|
if (USART0 == usart) {
|
||||||
NVIC_SetPendingIRQ(USART0_IRQn);
|
NVIC_SetPendingIRQ(USART0_IRQn);
|
||||||
} else if (USART1 == usart) {
|
} else if (USART1 == usart) {
|
||||||
@@ -470,7 +465,6 @@ static int card_vcc_adc_init(void)
|
|||||||
ADC->ADC_CHER |= ADC_CHER_CH6;
|
ADC->ADC_CHER |= ADC_CHER_CH6;
|
||||||
ADC->ADC_IER |= ADC_IER_EOC6;
|
ADC->ADC_IER |= ADC_IER_EOC6;
|
||||||
#endif
|
#endif
|
||||||
NVIC_SetPriority(ADC_IRQn, 13);
|
|
||||||
NVIC_EnableIRQ(ADC_IRQn);
|
NVIC_EnableIRQ(ADC_IRQn);
|
||||||
ADC->ADC_CR |= ADC_CR_START;
|
ADC->ADC_CR |= ADC_CR_START;
|
||||||
|
|
||||||
@@ -567,35 +561,6 @@ void mode_cardemu_configure(void)
|
|||||||
TRACE_ENTRY();
|
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 */
|
/* called if config is activated */
|
||||||
void mode_cardemu_init(void)
|
void mode_cardemu_init(void)
|
||||||
{
|
{
|
||||||
@@ -603,8 +568,6 @@ void mode_cardemu_init(void)
|
|||||||
|
|
||||||
TRACE_ENTRY();
|
TRACE_ENTRY();
|
||||||
|
|
||||||
NVIC_SetPriority(UDP_IRQn, 14);
|
|
||||||
|
|
||||||
#ifdef PINS_CARDSIM
|
#ifdef PINS_CARDSIM
|
||||||
PIO_Configure(pins_cardsim, PIO_LISTSIZE(pins_cardsim));
|
PIO_Configure(pins_cardsim, PIO_LISTSIZE(pins_cardsim));
|
||||||
#endif
|
#endif
|
||||||
@@ -618,7 +581,6 @@ void mode_cardemu_init(void)
|
|||||||
|
|
||||||
/* configure USART as ISO-7816 slave (e.g. card) */
|
/* configure USART as ISO-7816 slave (e.g. card) */
|
||||||
ISO7816_Init(&cardem_inst[0].usart_info, CLK_SLAVE);
|
ISO7816_Init(&cardem_inst[0].usart_info, CLK_SLAVE);
|
||||||
NVIC_SetPriority(FIRST_USART_IRQ, 0);
|
|
||||||
NVIC_EnableIRQ(FIRST_USART_IRQ);
|
NVIC_EnableIRQ(FIRST_USART_IRQ);
|
||||||
PIO_ConfigureIt(&pin_usim1_rst, usim1_rst_irqhandler);
|
PIO_ConfigureIt(&pin_usim1_rst, usim1_rst_irqhandler);
|
||||||
PIO_EnableIt(&pin_usim1_rst);
|
PIO_EnableIt(&pin_usim1_rst);
|
||||||
@@ -646,7 +608,6 @@ void mode_cardemu_init(void)
|
|||||||
PIO_Configure(pins_usim2, PIO_LISTSIZE(pins_usim2));
|
PIO_Configure(pins_usim2, PIO_LISTSIZE(pins_usim2));
|
||||||
ISO7816_Init(&cardem_inst[1].usart_info, CLK_SLAVE);
|
ISO7816_Init(&cardem_inst[1].usart_info, CLK_SLAVE);
|
||||||
/* TODO enable timeout */
|
/* TODO enable timeout */
|
||||||
NVIC_SetPriority(USART0_IRQn, 0);
|
|
||||||
NVIC_EnableIRQ(USART0_IRQn);
|
NVIC_EnableIRQ(USART0_IRQn);
|
||||||
PIO_ConfigureIt(&pin_usim2_rst, usim2_rst_irqhandler);
|
PIO_ConfigureIt(&pin_usim2_rst, usim2_rst_irqhandler);
|
||||||
PIO_EnableIt(&pin_usim2_rst);
|
PIO_EnableIt(&pin_usim2_rst);
|
||||||
@@ -665,9 +626,6 @@ void mode_cardemu_init(void)
|
|||||||
sim_switch_use_physical(1, 1);
|
sim_switch_use_physical(1, 1);
|
||||||
/* TODO check RST and VCC */
|
/* TODO check RST and VCC */
|
||||||
#endif /* CARDEMU_SECOND_UART */
|
#endif /* CARDEMU_SECOND_UART */
|
||||||
|
|
||||||
dump_irq_prios();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* called if config is deactivated */
|
/* called if config is deactivated */
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "ringbuffer.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
/* 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
|
* SIM card (or any ISO 7816 smart card) and a phone (or any ISO 7816 card
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 <stdint.h>
|
||||||
|
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ static const SIMTraceDriverConfigurationDescriptorSniffer
|
|||||||
SIMTRACE_USB_EP_CARD_INT),
|
SIMTRACE_USB_EP_CARD_INT),
|
||||||
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
|
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
|
||||||
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
|
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
|
||||||
.bInterval = 1,
|
.bInterval = 0x10,
|
||||||
},
|
},
|
||||||
DFURT_IF_DESCRIPTOR(1, 0),
|
DFURT_IF_DESCRIPTOR(1, 0),
|
||||||
};
|
};
|
||||||
@@ -382,7 +382,7 @@ static const SIMTraceDriverConfigurationDescriptorPhone
|
|||||||
SIMTRACE_CARDEM_USB_EP_USIM1_INT),
|
SIMTRACE_CARDEM_USB_EP_USIM1_INT),
|
||||||
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
|
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
|
||||||
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
|
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
|
||||||
.bInterval = 1
|
.bInterval = 0x10
|
||||||
},
|
},
|
||||||
#ifdef CARDEMU_SECOND_UART
|
#ifdef CARDEMU_SECOND_UART
|
||||||
/* Communication class interface standard descriptor */
|
/* Communication class interface standard descriptor */
|
||||||
@@ -429,7 +429,7 @@ static const SIMTraceDriverConfigurationDescriptorPhone
|
|||||||
SIMTRACE_CARDEM_USB_EP_USIM2_INT),
|
SIMTRACE_CARDEM_USB_EP_USIM2_INT),
|
||||||
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
|
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
|
||||||
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
|
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
|
||||||
.bInterval = 1,
|
.bInterval = 0x10,
|
||||||
},
|
},
|
||||||
DFURT_IF_DESCRIPTOR(2, 0),
|
DFURT_IF_DESCRIPTOR(2, 0),
|
||||||
#else
|
#else
|
||||||
@@ -547,7 +547,7 @@ static const SIMTraceDriverConfigurationDescriptorMITM
|
|||||||
CCID_EPT_NOTIFICATION),
|
CCID_EPT_NOTIFICATION),
|
||||||
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
|
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
|
||||||
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
|
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
|
||||||
.bInterval = 1,
|
.bInterval = 0x10,
|
||||||
},
|
},
|
||||||
|
|
||||||
/* Communication class interface standard descriptor */
|
/* Communication class interface standard descriptor */
|
||||||
@@ -593,7 +593,7 @@ static const SIMTraceDriverConfigurationDescriptorMITM
|
|||||||
SIMTRACE_USB_EP_PHONE_INT),
|
SIMTRACE_USB_EP_PHONE_INT),
|
||||||
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
|
.bmAttributes = USBEndpointDescriptor_INTERRUPT,
|
||||||
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
|
.wMaxPacketSize = USBEndpointDescriptor_MAXINTERRUPTSIZE_FS,
|
||||||
.bInterval = 1
|
.bInterval = 0x10
|
||||||
},
|
},
|
||||||
DFURT_IF_DESCRIPTOR(2, 0),
|
DFURT_IF_DESCRIPTOR(2, 0),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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 "board.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|||||||
@@ -14,6 +14,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|||||||
@@ -14,6 +14,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|||||||
@@ -14,6 +14,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
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.
|
MA 02110-1301, USA.
|
||||||
|
|
||||||
linux/include/linux/rbtree.h
|
linux/include/linux/rbtree.h
|
||||||
|
|||||||
@@ -13,6 +13,10 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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>
|
#include <stdint.h>
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
/*! \defgroup timer Osmocom timers
|
||||||
|
|||||||
@@ -14,6 +14,10 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
/*! \file backtrace.c
|
||||||
|
|||||||
@@ -14,6 +14,10 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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>
|
#include <stdint.h>
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
/*! \addtogroup msgb
|
||||||
|
|||||||
@@ -14,6 +14,10 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
/*! \addtogroup utils
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
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
|
MA 02110-1301, USA
|
||||||
|
|
||||||
linux/lib/rbtree.c
|
linux/lib/rbtree.c
|
||||||
|
|||||||
@@ -17,6 +17,10 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,10 @@
|
|||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,91 +0,0 @@
|
|||||||
/* SIMtrace 2 firmware crc tool
|
|
||||||
*
|
|
||||||
* (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 <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
uint32_t crc_reg = 0xffffffff;
|
|
||||||
long fsize;
|
|
||||||
uint8_t *buffer;
|
|
||||||
uint32_t crc_start_offset;
|
|
||||||
|
|
||||||
if (argc < 3) {
|
|
||||||
perror("usage: crctool startoffset blupdate.bin");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
crc_start_offset = strtoull(argv[1], 0, 10);
|
|
||||||
|
|
||||||
FILE *blfile = fopen(argv[2], "rb+");
|
|
||||||
if (blfile == NULL) {
|
|
||||||
perror("error opening file!");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fseek(blfile, 0, SEEK_END);
|
|
||||||
fsize = ftell(blfile);
|
|
||||||
|
|
||||||
if (fsize <= crc_start_offset) {
|
|
||||||
perror("file size?!");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fseek(blfile, 0, SEEK_SET);
|
|
||||||
|
|
||||||
buffer = malloc(fsize);
|
|
||||||
fread(buffer, 1, fsize, blfile);
|
|
||||||
|
|
||||||
if (*(uint32_t *)buffer != 0xdeadc0de) {
|
|
||||||
perror("weird magic, not a valid blupdate file?");
|
|
||||||
free(buffer);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t *startaddr = buffer + crc_start_offset;
|
|
||||||
uint8_t *endaddr = buffer + fsize;
|
|
||||||
for (uint8_t *i = startaddr; i < endaddr; i++) {
|
|
||||||
do_crc32(*i, &crc_reg);
|
|
||||||
}
|
|
||||||
crc_reg = ~crc_reg;
|
|
||||||
|
|
||||||
fprintf(stderr, "len: %ld crc: %.8x\n", fsize - crc_start_offset, crc_reg);
|
|
||||||
|
|
||||||
((uint32_t *)buffer)[0] = 0x2000baa0; /* fix magic to valid stack address, checked by BL */
|
|
||||||
((uint32_t *)buffer)[2] = crc_reg;
|
|
||||||
((uint32_t *)buffer)[3] = 0x00400000 + 0x4000 + crc_start_offset;
|
|
||||||
((uint32_t *)buffer)[4] = fsize - crc_start_offset;
|
|
||||||
|
|
||||||
fseek(blfile, 0, SEEK_SET);
|
|
||||||
fwrite(buffer, 4, 5, blfile);
|
|
||||||
|
|
||||||
fclose(blfile);
|
|
||||||
free(buffer);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -10,6 +10,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Based on existing utf8_to_utf16le() function,
|
/* Based on existing utf8_to_utf16le() function,
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package simtrace2
|
# spec file for package simtrace2
|
||||||
#
|
#
|
||||||
# Copyright (c) 2021 SUSE LLC
|
# Copyright (c) 2018, Martin Hauke <mardnh@gmx.de>
|
||||||
# Copyright (c) 2018-2021, Martin Hauke <mardnh@gmx.de>
|
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@@ -13,7 +12,6 @@
|
|||||||
# license that conforms to the Open Source Definition (Version 1.9)
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
# published by the Open Source Initiative.
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
%define sover 1
|
|
||||||
Name: simtrace2
|
Name: simtrace2
|
||||||
Version: @VERSION@
|
Version: @VERSION@
|
||||||
Release: 0
|
Release: 0
|
||||||
@@ -26,11 +24,12 @@ BuildRequires: autoconf
|
|||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
BuildRequires: libtool
|
BuildRequires: libtool
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: pkgconfig(libosmocore) >= 1.4.0
|
BuildRequires: pkgconfig(libosmocore)
|
||||||
BuildRequires: pkgconfig(libosmosim) >= 1.4.0
|
BuildRequires: pkgconfig(libosmosim)
|
||||||
BuildRequires: pkgconfig(libosmousb) >= 1.4.0
|
|
||||||
BuildRequires: pkgconfig(libpcsclite)
|
BuildRequires: pkgconfig(libpcsclite)
|
||||||
BuildRequires: pkgconfig(libusb-1.0)
|
BuildRequires: pkgconfig(libusb-1.0)
|
||||||
|
BuildRequires: pkgconfig(libosmousb) >= 0.0.0
|
||||||
|
BuildRequires: pkgconfig(udev)
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Osmocom SIMtrace 2 is a software and hardware system for passively
|
Osmocom SIMtrace 2 is a software and hardware system for passively
|
||||||
@@ -39,11 +38,11 @@ and remote SIM operation.
|
|||||||
|
|
||||||
This package contains SIMtrace 2 host utility.
|
This package contains SIMtrace 2 host utility.
|
||||||
|
|
||||||
%package -n libosmo-simtrace2-%{sover}
|
%package -n libosmo-simtrace2-1
|
||||||
Summary: Driver functions for Osmocom SIMtrace2 and compatible firmware
|
Summary: Shared Library part of libosmo-simtrace2
|
||||||
Group: System/Libraries
|
Group: System/Libraries
|
||||||
|
|
||||||
%description -n libosmo-simtrace2-%{sover}
|
%description -n libosmo-simtrace2-1
|
||||||
This library contains core "driver" functionality to interface with the
|
This library contains core "driver" functionality to interface with the
|
||||||
Osmocom SIMtrace2 (and compatible) USB device firmware. It enables
|
Osmocom SIMtrace2 (and compatible) USB device firmware. It enables
|
||||||
applications to implement SIM card / smart card tracing as well as
|
applications to implement SIM card / smart card tracing as well as
|
||||||
@@ -52,7 +51,7 @@ SIM / smart card emulation functions.
|
|||||||
%package -n libosmo-simtrace2-devel
|
%package -n libosmo-simtrace2-devel
|
||||||
Summary: Development files for the Osmocom SIMtrace2 library
|
Summary: Development files for the Osmocom SIMtrace2 library
|
||||||
Group: Development/Libraries/C and C++
|
Group: Development/Libraries/C and C++
|
||||||
Requires: libosmo-simtrace2-%{sover} = %{version}
|
Requires: libosmo-simtrace2-1 = %{version}
|
||||||
|
|
||||||
%description -n libosmo-simtrace2-devel
|
%description -n libosmo-simtrace2-devel
|
||||||
Osmocom SIMtrace2 (and compatible) USB device firmware. It enables
|
Osmocom SIMtrace2 (and compatible) USB device firmware. It enables
|
||||||
@@ -70,18 +69,17 @@ cd host
|
|||||||
echo "%{version}" >.tarball-version
|
echo "%{version}" >.tarball-version
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
%configure --disable-static
|
%configure --disable-static
|
||||||
%make_build
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
%install
|
%install
|
||||||
%make_install -C host
|
%make_install -C host
|
||||||
install -Dm0644 host/contrib/99-simtrace2.rules %{buildroot}/%{_udevrulesdir}/99-simtrace2.rules
|
install -Dm0644 host/contrib/99-simtrace2.rules %{buildroot}/%{_udevrulesdir}/99-simtrace2.rules
|
||||||
find %{buildroot} -type f -name "*.la" -delete -print
|
find %{buildroot} -type f -name "*.la" -delete -print
|
||||||
|
|
||||||
%post -n libosmo-simtrace2-%{sover} -p /sbin/ldconfig
|
%post -n libosmo-simtrace2-1 -p /sbin/ldconfig
|
||||||
%postun -n libosmo-simtrace2-%{sover} -p /sbin/ldconfig
|
%postun -n libosmo-simtrace2-1 -p /sbin/ldconfig
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%license host/COPYING
|
|
||||||
%doc README.md
|
%doc README.md
|
||||||
%{_bindir}/simtrace2-cardem-pcsc
|
%{_bindir}/simtrace2-cardem-pcsc
|
||||||
%{_bindir}/simtrace2-list
|
%{_bindir}/simtrace2-list
|
||||||
@@ -89,8 +87,8 @@ find %{buildroot} -type f -name "*.la" -delete -print
|
|||||||
%{_bindir}/simtrace2-tool
|
%{_bindir}/simtrace2-tool
|
||||||
%{_udevrulesdir}/99-simtrace2.rules
|
%{_udevrulesdir}/99-simtrace2.rules
|
||||||
|
|
||||||
%files -n libosmo-simtrace2-%{sover}
|
%files -n libosmo-simtrace2-1
|
||||||
%{_libdir}/libosmo-simtrace2.so.%{sover}*
|
%{_libdir}/libosmo-simtrace2.so.1*
|
||||||
|
|
||||||
%files -n libosmo-simtrace2-devel
|
%files -n libosmo-simtrace2-devel
|
||||||
%dir %{_includedir}/osmocom/
|
%dir %{_includedir}/osmocom/
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* 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
|
#pragma once
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user