This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Hoernchen gerrit-no-reply at lists.osmocom.orgHoernchen has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/16243 )
Change subject: dbg
......................................................................
dbg
Change-Id: I4340cb53f0f903842eb1c4d60a36d44ac9e5cbde
---
M ccid_common/cuart.h
M ccid_common/iso7816_fsm.c
M sysmoOCTSIM/atmel_start.c
M sysmoOCTSIM/cuart_driver_asf4_usart_async.c
M sysmoOCTSIM/driver_init.c
M sysmoOCTSIM/gcc/Makefile
M sysmoOCTSIM/hpl/sercom/hpl_sercom.c
M sysmoOCTSIM/libosmo_emb.c
M sysmoOCTSIM/main.c
9 files changed, 124 insertions(+), 23 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ccid-firmware refs/changes/43/16243/1
diff --git a/ccid_common/cuart.h b/ccid_common/cuart.h
index 9c93b7e..efd70f0 100644
--- a/ccid_common/cuart.h
+++ b/ccid_common/cuart.h
@@ -23,6 +23,7 @@
enum card_uart_ctl {
CUART_CTL_RX, /* enable/disable receiver */
+ CUART_CTL_NO_RXTX, /* enable/disable receiver */
CUART_CTL_POWER, /* enable/disable ICC power */
CUART_CTL_CLOCK, /* enable/disable ICC clock */
CUART_CTL_CLOCK_FREQ, /* set ICC clock frequency (hz)*/
diff --git a/ccid_common/iso7816_fsm.c b/ccid_common/iso7816_fsm.c
index 3d09a84..585d25d 100644
--- a/ccid_common/iso7816_fsm.c
+++ b/ccid_common/iso7816_fsm.c
@@ -305,7 +305,7 @@
{
struct iso7816_3_priv *ip = get_iso7816_3_priv(fi);
OSMO_ASSERT(fi->fsm == &iso7816_3_fsm);
- card_uart_ctrl(ip->uart, CUART_CTL_RX, false);
+ card_uart_ctrl(ip->uart, CUART_CTL_NO_RXTX, true);
/* reset the TPDU state machine */
osmo_fsm_inst_dispatch(ip->tpdu_fi, ISO7816_E_TPDU_CLEAR_REQ, NULL);
}
@@ -1135,11 +1135,14 @@
}
}
+#include <hal_gpio.h>
static void tpdu_s_tx_hdr_action(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
OSMO_ASSERT(fi->fsm == &tpdu_fsm);
switch (event) {
case ISO7816_E_TX_COMPL:
+
+
/* Rx of single byte is already enabled by previous card_uart_tx() call */
osmo_fsm_inst_state_chg(fi, TPDU_S_PROCEDURE, 0, 0);
break;
@@ -1174,6 +1177,12 @@
} else if (byte == tpduh->ins) {
if (tfp->is_command) {
/* transmit all remaining bytes */
+#if 0
+// rx -> tx delay
+ gpio_set_pin_level(PIN_PB12, true);
+ delay_us(1);
+ gpio_set_pin_level(PIN_PB12, false);
+#endif
card_uart_tx(ip->uart, msgb_l2(tfp->tpdu), msgb_l2len(tfp->tpdu), true);
osmo_fsm_inst_state_chg(fi, TPDU_S_TX_REMAINING, 0, 0);
} else {
diff --git a/sysmoOCTSIM/atmel_start.c b/sysmoOCTSIM/atmel_start.c
index bee1ed2..6670364 100644
--- a/sysmoOCTSIM/atmel_start.c
+++ b/sysmoOCTSIM/atmel_start.c
@@ -14,6 +14,6 @@
system_init();
dma_memory_init();
dma_memory_register_callback(DMA_MEMORY_COMPLETE_CB, M2M_DMA_complete_cb);
- stdio_redirect_init();
+// stdio_redirect_init();
usb_init();
}
diff --git a/sysmoOCTSIM/cuart_driver_asf4_usart_async.c b/sysmoOCTSIM/cuart_driver_asf4_usart_async.c
index a8f8044..14fe491 100644
--- a/sysmoOCTSIM/cuart_driver_asf4_usart_async.c
+++ b/sysmoOCTSIM/cuart_driver_asf4_usart_async.c
@@ -348,14 +348,39 @@
Sercom *sercom = cuart->u.asf4.usa_pd->device.hw;
switch (ctl) {
+ case CUART_CTL_NO_RXTX:
+// if (arg){
+// uint32_t ctrlb = ((Sercom *)sercom)->USART.CTRLB.reg;
+// ctrlb &= ~(SERCOM_USART_CTRLB_TXEN | SERCOM_USART_CTRLB_RXEN);
+// ((Sercom *)sercom)->USART.CTRLB.reg = ctrlb;
+// hri_sercomusart_wait_for_sync(sercom, SERCOM_USART_SYNCBUSY_MASK);
+// } else {
+// uint32_t ctrlb = ((Sercom *)sercom)->USART.CTRLB.reg;
+// ctrlb |= (SERCOM_USART_CTRLB_TXEN | SERCOM_USART_CTRLB_RXEN);
+// ((Sercom *)sercom)->USART.CTRLB.reg = ctrlb;
+// hri_sercomusart_wait_for_sync(sercom, SERCOM_USART_SYNCBUSY_MASK);
+// }
+ break;
case CUART_CTL_RX:
if (arg){
- sercom->USART.CTRLB.bit.RXEN = 1;
- sercom->USART.CTRLB.bit.TXEN = 0;
+//// delay_us(cuart->u.asf4.extrawait_after_rx);
+// uint32_t ctrlb = ((Sercom *)sercom)->USART.CTRLB.reg;
+// ctrlb &= ~SERCOM_USART_CTRLB_TXEN;
+// ctrlb |= SERCOM_USART_CTRLB_RXEN;
+// ((Sercom *)sercom)->USART.CTRLB.reg = ctrlb;
+// hri_sercomusart_wait_for_sync(sercom, SERCOM_USART_SYNCBUSY_MASK);
+//
+//// sercom->USART.CTRLB.bit.TXEN = 0;
+//// sercom->USART.CTRLB.bit.RXEN = 1;
} else {
delay_us(cuart->u.asf4.extrawait_after_rx);
- sercom->USART.CTRLB.bit.RXEN = 0;
- sercom->USART.CTRLB.bit.TXEN = 1;
+//// sercom->USART.CTRLB.bit.RXEN = 0;
+//// sercom->USART.CTRLB.bit.TXEN = 1;
+// uint32_t ctrlb = ((Sercom *)sercom)->USART.CTRLB.reg;
+// ctrlb &= ~SERCOM_USART_CTRLB_RXEN;
+// ctrlb |= SERCOM_USART_CTRLB_TXEN;
+// ((Sercom *)sercom)->USART.CTRLB.reg = ctrlb;
+// hri_sercomusart_wait_for_sync(sercom, SERCOM_USART_SYNCBUSY_MASK);
}
break;
case CUART_CTL_RST:
diff --git a/sysmoOCTSIM/driver_init.c b/sysmoOCTSIM/driver_init.c
index c373dc2..7071ea5 100644
--- a/sysmoOCTSIM/driver_init.c
+++ b/sysmoOCTSIM/driver_init.c
@@ -33,7 +33,7 @@
#define SIM6_BUFFER_SIZE 512
/*! The buffer size for USART */
-#define UART_DEBUG_BUFFER_SIZE 256
+#define UART_DEBUG_BUFFER_SIZE 4096
struct usart_async_descriptor SIM0;
struct usart_async_descriptor SIM1;
diff --git a/sysmoOCTSIM/gcc/Makefile b/sysmoOCTSIM/gcc/Makefile
index 41f5d10..95a582f 100644
--- a/sysmoOCTSIM/gcc/Makefile
+++ b/sysmoOCTSIM/gcc/Makefile
@@ -8,7 +8,7 @@
CROSS_COMPILE= arm-none-eabi-
CFLAGS_CPU=-D__SAME54N19A__ -mcpu=cortex-m4 -mfloat-abi=softfp -mfpu=fpv4-sp-d16
-CFLAGS=-x c -mthumb -DDEBUG -O0 -ffunction-sections -fdata-sections -mlong-calls \
+CFLAGS=-x c -mthumb -DDEBUG -Os -ffunction-sections -fdata-sections -mlong-calls \
-g3 -Wall -c -std=gnu99 $(CFLAGS_CPU)
CC = $(CROSS_COMPILE)gcc
diff --git a/sysmoOCTSIM/hpl/sercom/hpl_sercom.c b/sysmoOCTSIM/hpl/sercom/hpl_sercom.c
index f235115..272fb07 100644
--- a/sysmoOCTSIM/hpl/sercom/hpl_sercom.c
+++ b/sysmoOCTSIM/hpl/sercom/hpl_sercom.c
@@ -577,7 +577,7 @@
hri_sercomusart_write_INTEN_ERROR_bit(device->hw, state);
}
}
-
+#include <hal_gpio.h>
/**
* \internal Sercom interrupt handler
*
@@ -591,6 +591,12 @@
hri_sercomusart_clear_INTEN_DRE_bit(hw);
device->usart_cb.tx_byte_sent(device);
} else if (hri_sercomusart_get_interrupt_TXC_bit(hw) && hri_sercomusart_get_INTEN_TXC_bit(hw)) {
+#if 0
+// tx byte last edge <-> txc irq delay
+ gpio_set_pin_level(PIN_PB12, true);
+ delay_us(1);
+ gpio_set_pin_level(PIN_PB12, false);
+#endif
hri_sercomusart_clear_INTEN_TXC_bit(hw);
device->usart_cb.tx_done_cb(device);
} else if (hri_sercomusart_get_interrupt_RXC_bit(hw)) {
@@ -600,8 +606,20 @@
hri_sercomusart_clear_STATUS_reg(hw, SERCOM_USART_STATUS_MASK);
return;
}
+#if 0
+// rx byte last edge <-> rxc irq delay
+ gpio_set_pin_level(PIN_PB12, true);
+ delay_us(1);
+ gpio_set_pin_level(PIN_PB12, false);
+#endif
device->usart_cb.rx_done_cb(device, hri_sercomusart_read_DATA_reg(hw));
+#if 0
+// rx byte last edge <-> rxc irq end delay
+ gpio_set_pin_level(PIN_PB12, true);
+ delay_us(1);
+ gpio_set_pin_level(PIN_PB12, false);
+#endif
} else if (hri_sercomusart_get_interrupt_ERROR_bit(hw)) {
uint32_t status;
diff --git a/sysmoOCTSIM/libosmo_emb.c b/sysmoOCTSIM/libosmo_emb.c
index 09555f3..e550b07 100644
--- a/sysmoOCTSIM/libosmo_emb.c
+++ b/sysmoOCTSIM/libosmo_emb.c
@@ -41,43 +41,43 @@
[DUSB] = {
.name = "USB",
.description = "USB Transport",
- .enabled = 1,
+ .enabled = 0,
.loglevel = LOGL_NOTICE,
},
[DCCID] = {
.name = "CCID",
.description = "USB-CCID Protocol",
- .enabled = 1,
+ .enabled = 0,
.loglevel = LOGL_DEBUG,
},
[DISO7816] = {
.name = "ISO7816",
.description = "ISO7816-3 State machines",
- .enabled = 1,
+ .enabled = 0,
.loglevel = LOGL_DEBUG,
},
[DATR] = {
.name = "ATR",
.description = "ATR (Answer To Reset) FSM",
- .enabled = 1,
+ .enabled = 0,
.loglevel = LOGL_DEBUG,
},
[DTPDU] = {
.name = "TPDU",
.description = "TPDU FSM",
- .enabled = 1,
+ .enabled = 0,
.loglevel = LOGL_DEBUG,
},
[DPPS] = {
.name = "PPS",
.description = "PPS (Protocol and Parameter Selection) FSM",
- .enabled = 1,
+ .enabled = 0,
.loglevel = LOGL_DEBUG,
},
[DCARD] = {
.name = "CARD",
.description = "Card FSM",
- .enabled = 1,
+ .enabled = 0,
.loglevel = LOGL_DEBUG,
},
};
@@ -150,13 +150,13 @@
struct log_target *stderr_target;
/* msgb */
- g_msgb_ctx = talloc_pool(g_tall_ctx, 20480);
+// g_msgb_ctx = talloc_pool(g_tall_ctx, 20480);
//talloc_set_memlimit(g_msgb_ctx, 20480);
- msgb_talloc_ctx_init(g_msgb_ctx, 0);
+// msgb_talloc_ctx_init(g_msgb_ctx, 0);
/* logging */
log_init(&log_info, g_tall_ctx);
- stderr_target = log_target_create_stderr_raw();
+// stderr_target = log_target_create_stderr_raw();
//log_add_target(stderr_target);
//log_set_all_filter(stderr_target, 1);
diff --git a/sysmoOCTSIM/main.c b/sysmoOCTSIM/main.c
index d81f189..189d764 100644
--- a/sysmoOCTSIM/main.c
+++ b/sysmoOCTSIM/main.c
@@ -151,7 +151,7 @@
/* bit-mask of card-insert status, as determined from NCN8025 IRQ output */
uint8_t card_insert_mask;
};
-static struct ccid_state g_ccid_s;
+static volatile struct ccid_state g_ccid_s;
static void ccid_out_read_compl(const uint8_t ep, enum usb_xfer_code code, uint32_t transferred);
static void ccid_in_write_compl(const uint8_t ep, enum usb_xfer_code code, uint32_t transferred);
@@ -1131,6 +1131,38 @@
char sernr_buf[16*2+1];
char rstcause_buf[RSTCAUSE_STR_SIZE];
+#if 0
+CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk ; //| /* tracing*/
+////CoreDebug_DEMCR_MON_EN_Msk; /* mon interupt catcher */
+
+
+DWT->COMP0 = 0x40003028; /* sercom 0 data */
+//DWT->COMP0 = 0x40003428; /* sercom 1 data */
+DWT->MASK0 = 0; /* 0 */
+DWT->FUNCTION0 = 0; /* has to be 0 for linked address */
+
+DWT->COMP1 = 0xa5; /* value */
+DWT->MASK1 = 0; /* match all bits */
+DWT->FUNCTION1 = (0b10 << DWT_FUNCTION_DATAVSIZE_Pos) | /* DATAVSIZE 10 - dword */
+#if 1
+(0 << DWT_FUNCTION_DATAVADDR0_Pos) | /* Data Match linked addr pointer in COMP0 */
+#else
+(1 << DWT_FUNCTION_DATAVADDR0_Pos) | /* Data Match on any addr -> own number */
+#endif
+(1 << DWT_FUNCTION_DATAVMATCH_Pos) | /* DATAVMATCH Enable data comparation */
+(0b0111 << DWT_FUNCTION_FUNCTION_Pos); /* generate a watchpoint event on rw */
+
+#endif
+
+#if 0
+ dwt_init();
+ //geht
+ // int a = request_dwt_watchpoint(0x40003428, 0, WDE_DATA_RW, 0, false);
+ int a = request_dwt_watchpoint(0x40003428, 0, WDE_DATA_RW, 0, false);
+// int b = request_dwt_watchpoint(0, 0, WDE_DATA_RW, a, true);
+ enable_dwt_comp(a);
+// enable_dwt_comp(b);
+#endif
atmel_start_init();
get_chip_unique_serial_str(sernr_buf, sizeof(sernr_buf));
get_rstcause_str(rstcause_buf);
@@ -1154,6 +1186,9 @@
// command_register(&cmd_get_time);
// command_register(&cmd_test_timer);
+
+
+
printf("\r\n\r\n"
"=============================================================================\n\r"
"sysmoOCTSIM firmware " GIT_VERSION "\n\r"
@@ -1166,12 +1201,14 @@
g_tall_ctx = talloc_named_const(NULL, 0, "global");
printf("g_tall_ctx=%p\r\n", g_tall_ctx);
+ //FIXME osmo_emb has a pool?
+ msgb_talloc_ctx_init(g_tall_ctx, 0);
+
libosmo_emb_init();
LOGP(DUSB, LOGL_ERROR, "foobar usb\n");
- //FIXME osmo_emb has a pool?
- //msgb_set_talloc_ctx(g_tall_ctx);
+
//prevent spurious interrupts before our driver structs are ready
CRITICAL_SECTION_ENTER()
@@ -1186,11 +1223,22 @@
}
submit_next_out();
CRITICAL_SECTION_LEAVE()
+#if 0
+ /* CAN_RX */
+ gpio_set_pin_function(PIN_PB12, GPIO_PIN_FUNCTION_OFF);
+ gpio_set_pin_direction(PIN_PB12, GPIO_DIRECTION_OUT);
+ gpio_set_pin_level(PIN_PB12, false);
+ /* CAN_TX */
+ gpio_set_pin_function(PIN_PB13, GPIO_PIN_FUNCTION_OFF);
+ gpio_set_pin_direction(PIN_PB13, GPIO_DIRECTION_OUT);
+ gpio_set_pin_level(PIN_PB13, false);
+#endif
+ poll_card_detect();
// command_print_prompt();
while (true) { // main loop
command_try_recv();
- poll_card_detect();
+// poll_card_detect();
submit_next_irq();
feed_ccid();
osmo_timers_update();
--
To view, visit https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/16243
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ccid-firmware
Gerrit-Branch: master
Gerrit-Change-Id: I4340cb53f0f903842eb1c4d60a36d44ac9e5cbde
Gerrit-Change-Number: 16243
Gerrit-PatchSet: 1
Gerrit-Owner: Hoernchen <ewild at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20191126/49054ec1/attachment.htm>