From GNUtoo at no-log.org Fri Mar 9 16:01:23 2018 From: GNUtoo at no-log.org (Denis 'GNUtoo' Carikli) Date: Fri, 9 Mar 2018 17:01:23 +0100 Subject: Compiling and running simtrace firmware with a recent toolchain Message-ID: <20180309170123.64631b9e@second-laptop.localdomain> Hi, The simtrace firmware is in the OpenPCD git repository at: > git://git.osmocom.org/openpcd.git I used the last revision at the time of writing: > dc2983d firmware: Makefiles: enable changing toolchain With a fairly recent gcc version: > $ arm-none-eabi-gcc --version > arm-none-eabi-gcc (Arch Repository) 7.3.0 > Copyright (C) 2017 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There > is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A > PARTICULAR PURPOSE. Compiling the firmware the usual way works, with many warnings: > $ make BOARD=SIMTRACE DEBUG=1 TARGET=main_simtrace \ > CROSS_COMPILE=arm-none-eabi- [...] Installing that firmware went fine: > $ sudo dfu-util -d 16c0:0762 -a0 -D ./main_simtrace.bin -R > dfu-util 0.9 > > Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. > Copyright 2010-2016 Tormod Volden and Stefan Schmidt > This program is Free Software and has ABSOLUTELY NO WARRANTY > Please report bugs to http://sourceforge.net/p/dfu-util/tickets/ > > dfu-util: Invalid DFU suffix signature > dfu-util: A valid DFU suffix will be required in a future dfu-util > release!!! Opening DFU capable USB device... > ID 16c0:0762 > Run-time device DFU version 0100 > Claiming USB DFU Interface... > Setting Alternate Setting #0 ... > Determining device status: state = dfuIDLE, status = 0 > dfuIDLE, continuing > DFU mode device DFU version 0100 > Device returned transfer size 256 > Copying data from PC to DFU device > Download [=========================] 100% 23084 bytes > Download done. > state(7) = dfuMANIFEST, status(0) = No error condition is present > state(2) = dfuIDLE, status(0) = No error condition is present > Done! > dfu-util: can't detach > Resetting USB to switch back to runtime mode Unfortunately with the new compiler the device gets re-enumerated continuously: > usb 4-1: new full-speed USB device number 3 using uhci_hcd > usb 4-1: new full-speed USB device number 4 using uhci_hcd > usb 4-1: new full-speed USB device number 5 using uhci_hcd [...] Here's what I have on the serial port: > [000000] > [000001] (C) 2006-2011 by Harald Welte > This software is FREE SOFTWARE licensed under GNU GPL > [000002] Version 0.5.30-dc29 compiled 20180309-165435 by gnutoo at second-laptop > > [000003] > DEBUG Interface: > 0) Set Pull-up 1) Clear Pull-up 2) Toggle LED1 3) Toggle LED2 > 9) Reset > [000004] RSTC_SR=0x00010000 > [000005] LARGE req_ctx[00] initialized at 002055AC, Data: 00200A68 => 00200E28 > [000006] LARGE req_ctx[01] initialized at 002055C0, Data: 00200E28 => 002011E8 > [000007] LARGE req_ctx[02] initialized at 002055D4, Data: 002011E8 => 002015A8 > [000008] LARGE req_ctx[03] initialized at 002055E8, Data: 002015A8 => 00201968 > [000009] LARGE req_ctx[04] initialized at 002055FC, Data: 00201968 => 00201D28 > [00000A] LARGE req_ctx[05] initialized at 00205610, Data: 00201D28 => 002020E8 > [00000B] LARGE req_ctx[06] initialized at 00205624, Data: 002020E8 => 002024A8 > [00000C] LARGE req_ctx[07] initialized at 00205638, Data: 002024A8 => 00202868 > [00000D] LARGE req_ctx[08] initialized at 0020564C, Data: 00202868 => 00202C28 > [00000E] LARGE req_ctx[09] initialized at 00205660, Data: 00202C28 => 00202FE8 > [00000F] LARGE req_ctx[10] initialized at 00205674, Data: 00202FE8 => 002033A8 > [000010] LARGE req_ctx[11] initialized at 00205688, Data: 002033A8 => 00203768 > [000011] LARGE req_ctx[12] initialized at 0020569C, Data: 00203768 => 00203B28 > [000012] LARGE req_ctx[13] initialized at 002056B0, Data: 00203B28 => 00203EE8 > [000013] LARGE req_ctx[14] initialized at 002056C4, Data: 00203EE8 => 002042A8 > [000014] LARGE req_ctx[15] initialized at 002056D8, Data: 002042A8 => 00204668 > [000015] LARGE req_ctx[16] initialized at 002056EC, Data: 00204668 => 00204A28 > [000016] LARGE req_ctx[17] initialized at 00205700, Data: 00204A28 => 00204DE8 > [000017] LARGE req_ctx[18] initialized at 00205714, Data: 00204DE8 => 002051A8 > [000018] LARGE req_ctx[19] initialized at 00205728, Data: 002051A8 => 00205568 > [000019] Inititalizing usbcmd_gen_init > [00001A] udp_open(440): entering > [00001B] USART Initializing > [00001C] pio_irq_register(109): registering handler 001079bc for PIOA 7 > [00001D] RST > [00001E] computed Fi(1) Di(1) ratio: 372 > [000000] > [000001] (C) 2006-2011 by Harald Welte > This software is FREE SOFTWARE licensed under GNU GPL > [000002] Version 0.5.30-dc29 compiled 20180309-165435 by gnutoo at second-laptop > > [000003] > DEBUG Interface: > 0) Set Pull-up 1) Clear Pull-up 2) Toggle LED1 3) Toggle LED2 > 9) Reset > [000004] RSTC_SR=0x00010200 > [000005] LARGE req_ctx[00] initialized at 002055AC, Data: 00200A68 => 00200E28 > [000006] LARGE req_ctx[01] initialized at 002055C0, Data: 00200E28 => 002011E8 > [000007] LARGE req_ctx[02] initialized at 002055D4, Data: 002011E8 => 002015A8 > [000008] LARGE req_ctx[03] initialized at 002055E8, Data: 002015A8 => 00201968 > [000009] LARGE req_ctx[04] initialized at 002055FC, Data: 00201968 => 00201D28 > [00000A] LARGE req_ctx[05] initialized at 00205610, Data: 00201D28 => 002020E8 > [00000B] LARGE req_ctx[06] initialized at 00205624, Data: 002020E8 => 002024A8 > [00000C] LARGE req_ctx[07] initialized at 00205638, Data: 002024A8 => 00202868 > [00000D] LARGE req_ctx[08] initialized at 0020564C, Data: 00202868 => 00202C28 > [00000E] LARGE req_ctx[09] initialized at 00205660, Data: 00202C28 => 00202FE8 > [00000F] LARGE req_ctx[10] initialized at 00205674, Data: 00202FE8 => 002033A8 > [000010] LARGE req_ctx[11] initialized at 00205688, Data: 002033A8 => 00203768 > [000011] LARGE req_ctx[12] initialized at 0020569C, Data: 00203768 => 00203B28 > [000012] LARGE req_ctx[13] initialized at 002056B0, Data: 00203B28 => 00203EE8 > [000013] LARGE req_ctx[14] initialized at 002056C4, Data: 00203EE8 => 002042A8 > [000014] LARGE req_ctx[15] initialized at 002056D8, Data: 002042A8 => 00204668 > [000015] LARGE req_ctx[16] initialized at 002056EC, Data: 00204668 => 00204A28 > [000016] LARGE req_ctx[17] initialized at 00205700, Data: 00204A28 => 00204DE8 > [000017] LARGE req_ctx[18] initialized at 00205714, Data: 00204DE8 => 002051A8 > [000018] LARGE req_ctx[19] initialized at 00205728, Data: 002051A8 => 00205568 > [000019] Inititalizing usbcmd_gen_init > [00001A] udp_open(440): entering > [00001B] USART Initializing > [00001C] pio_irq_register(109): registering handler 001079bc for PIOA 7 > [00001D] RST > [00001E] computed Fi(1) Di(1) ratio: 372 > [000000] So it gets reset in a loop. I can get it to work with the following diff: --- a/firmware/src/simtrace/tc_etu.c +++ b/firmware/src/simtrace/tc_etu.c @@ -96,8 +96,8 @@ void tc_etu_init(void) ((unsigned int) 1 << AT91C_ID_TC0)); /* Connect TCLK0 to XC0 */ - tcb->TCB_BMR &= ~(AT91C_TCB_TC0XC0S); - tcb->TCB_BMR |= AT91C_TCB_TC0XC0S_TCLK0; +// tcb->TCB_BMR &= ~(AT91C_TCB_TC0XC0S); +// tcb->TCB_BMR |= AT91C_TCB_TC0XC0S_TCLK0; /* Register Interrupt handler */ AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_TC0, @@ -124,5 +124,5 @@ void tc_etu_init(void) tcetu->TC_CCR = AT91C_TC_CLKEN; /* Reset to start timers */ - tcb->TCB_BCR = 1; +// tcb->TCB_BCR = 1; } With the diff I have the following on serial: > [000000] > [000001] (C) 2006-2011 by Harald Welte > This software is FREE SOFTWARE licensed under GNU GPL > [000002] Version 0.5.30-dc29-dirty compiled 20180309-165717 by gnutoo at second-laptop > > [000003] > DEBUG Interface: > 0) Set Pull-up 1) Clear Pull-up 2) Toggle LED1 3) Toggle LED2 > 9) Reset > [000004] RSTC_SR=0x00010000 > [000005] LARGE req_ctx[00] initialized at 00205630, Data: 00200AEC => 00200EAC > [000006] LARGE req_ctx[01] initialized at 00205644, Data: 00200EAC => 0020126C > [000007] LARGE req_ctx[02] initialized at 00205658, Data: 0020126C => 0020162C > [000008] LARGE req_ctx[03] initialized at 0020566C, Data: 0020162C => 002019EC > [000009] LARGE req_ctx[04] initialized at 00205680, Data: 002019EC => 00201DAC > [00000A] LARGE req_ctx[05] initialized at 00205694, Data: 00201DAC => 0020216C > [00000B] LARGE req_ctx[06] initialized at 002056A8, Data: 0020216C => 0020252C > [00000C] LARGE req_ctx[07] initialized at 002056BC, Data: 0020252C => 002028EC > [00000D] LARGE req_ctx[08] initialized at 002056D0, Data: 002028EC => 00202CAC > [00000E] LARGE req_ctx[09] initialized at 002056E4, Data: 00202CAC => 0020306C > [00000F] LARGE req_ctx[10] initialized at 002056F8, Data: 0020306C => 0020342C > [000010] LARGE req_ctx[11] initialized at 0020570C, Data: 0020342C => 002037EC > [000011] LARGE req_ctx[12] initialized at 00205720, Data: 002037EC => 00203BAC > [000012] LARGE req_ctx[13] initialized at 00205734, Data: 00203BAC => 00203F6C > [000013] LARGE req_ctx[14] initialized at 00205748, Data: 00203F6C => 0020432C > [000014] LARGE req_ctx[15] initialized at 0020575C, Data: 0020432C => 002046EC > [000015] LARGE req_ctx[16] initialized at 00205770, Data: 002046EC => 00204AAC > [000016] LARGE req_ctx[17] initialized at 00205784, Data: 00204AAC => 00204E6C > [000017] LARGE req_ctx[18] initialized at 00205798, Data: 00204E6C => 0020522C > [000018] LARGE req_ctx[19] initialized at 002057AC, Data: 0020522C => 002055EC > [000019] Inititalizing usbcmd_gen_init > [00001A] udp_open(440): entering > [00001B] USART Initializing > [00001C] pio_irq_register(109): registering handler 001079bc for PIOA 7 > [00001D] RST > [00001E] computed Fi(1) Di(1) ratio: 372 > [00001F] ISO_SW Initializing > [000020] pio_irq_register(109): registering handler 00107fb0 for PIOA 8 > [000021] pio_irq_register(109): registering handler 00107fdc for PIOA 25 > [000022] VCC_PHONE off > [000023] USART Entering Rx Mode > [000024] RST > [000025] computed Fi(1) Di(1) ratio: 372 > [000026] MODE: SNIFFER > > [000027] RST > [000028] computed Fi(1) Di(1) ratio: 372 > [000029] main(76): entering main (idle) loop > [00002A] Heart beat 00000000 > [00002B] Heart beat 00000001 > [00002C] Heart beat 00000002 > [00002D] Heart beat 00000003 > [00002E] Heart beat 00000004 > [00002F] Heart beat 00000005 And I could even get some packet trace from my Galaxy SIII (i9300): > GSM SIM 80 3 9f : 00d2 > GSM SIM 67 ISO/IEC 7816-4 SELECT File MF > GSM SIM 67 ISO/IEC 7816-4 SELECT /EF.ELP > GSM SIM 90 ISO/IEC 7816-4 GET RESPONSE > GSM SIM 75 ISO/IEC 7816-4 READ BINARY Offset=0 > GSM SIM 67 ISO/IEC 7816-4 SELECT File EF.ICCID > GSM SIM 90 ISO/IEC 7816-4 GET RESPONSE > GSM SIM 75 ISO/IEC 7816-4 READ BINARY Offset=0 > GSM SIM 85 ETSI TS 102.221 TERMINAL PROFILE > GSM SIM 67 ISO/IEC 7816-4 SELECT File EF.DIR > GSM SIM 93 ISO/IEC 7816-4 GET RESPONSE > GSM SIM 103 ISO/IEC 7816-4 READ RECORD RecordNr=1 > GSM SIM 81 ISO/IEC 7816-4 SELECT Application a0000000871002ff33ff018900000100 > GSM SIM 108 ISO/IEC 7816-4 GET RESPONSE > GSM SIM 67 ISO/IEC 7816-4 SELECT File MF Denis. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 833 bytes Desc: OpenPGP digital signature URL: