[{"data":1,"prerenderedAt":1070},["ShallowReactive",2],{"docs-nav-docs_en":3,"docs-page-\u002Fen\u002Fdevice-sdk\u002Ftroubleshooting":367,"docs-surround-\u002Fen\u002Fdevice-sdk\u002Ftroubleshooting":1067},[4],{"title":5,"path":6,"stem":7,"children":8},"En","\u002Fen","en",[9,13,41,58,76,103,157,171,190,211,238,283,303],{"title":10,"path":6,"stem":11,"navTitle":12},"QInsight Documentation","en\u002Findex","Overview",{"title":14,"navTitle":15,"path":16,"stem":17,"children":18,"page":40},"Getting Started",null,"\u002Fen\u002Fgetting-started","en\u002F01.getting-started",[19,23,27,31,36],{"title":20,"path":21,"stem":22,"navTitle":20},"What is QENEX Suite","\u002Fen\u002Fgetting-started\u002Fwhat-is-qenex-suite","en\u002F01.getting-started\u002F1.what-is-qenex-suite",{"title":24,"path":25,"stem":26,"navTitle":24},"What is QInsight","\u002Fen\u002Fgetting-started\u002Fwhat-is-qinsight","en\u002F01.getting-started\u002F2.what-is-qinsight",{"title":28,"path":29,"stem":30,"navTitle":28},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F01.getting-started\u002F3.installation",{"title":32,"path":33,"stem":34,"navTitle":35},"The QInsight user interface","\u002Fen\u002Fgetting-started\u002Fthe-qinsight-interface","en\u002F01.getting-started\u002F4.the-qinsight-interface","User interface",{"title":37,"path":38,"stem":39,"navTitle":37},"Licensing","\u002Fen\u002Fgetting-started\u002Flicensing","en\u002F01.getting-started\u002F5.licensing",false,{"title":42,"navTitle":15,"path":43,"stem":44,"children":45,"page":40},"First Project","\u002Fen\u002Ffirst-project","en\u002F02.first-project",[46,50,54],{"title":47,"path":48,"stem":49,"navTitle":47},"Create a project","\u002Fen\u002Ffirst-project\u002Fcreate-a-project","en\u002F02.first-project\u002F1.create-a-project",{"title":51,"path":52,"stem":53,"navTitle":51},"Project structure","\u002Fen\u002Ffirst-project\u002Fproject-structure","en\u002F02.first-project\u002F2.project-structure",{"title":55,"path":56,"stem":57,"navTitle":55},"Project password","\u002Fen\u002Ffirst-project\u002Fproject-password","en\u002F02.first-project\u002F3.project-password",{"title":59,"navTitle":15,"path":60,"stem":61,"children":62,"page":40},"Connecting a Device","\u002Fen\u002Fconnecting-a-device","en\u002F03.connecting-a-device",[63,67,71],{"title":64,"path":65,"stem":66,"navTitle":64},"Add a driver","\u002Fen\u002Fconnecting-a-device\u002Fadd-a-driver","en\u002F03.connecting-a-device\u002F1.add-a-driver",{"title":68,"path":69,"stem":70,"navTitle":68},"Add a protocol","\u002Fen\u002Fconnecting-a-device\u002Fadd-a-protocol","en\u002F03.connecting-a-device\u002F2.add-a-protocol",{"title":72,"path":73,"stem":74,"navTitle":75},"Link a driver and a protocol","\u002Fen\u002Fconnecting-a-device\u002Flink-driver-and-protocol","en\u002F03.connecting-a-device\u002F3.link-driver-and-protocol","Linking",{"title":77,"navTitle":15,"path":78,"stem":79,"children":80,"page":40},"Variables","\u002Fen\u002Fvariables","en\u002F04.variables",[81,85,90,94,99],{"title":82,"path":83,"stem":84,"navTitle":82},"What is a variable","\u002Fen\u002Fvariables\u002Fwhat-is-a-variable","en\u002F04.variables\u002F1.what-is-a-variable",{"title":86,"path":87,"stem":88,"navTitle":89},"Conversion and presentation","\u002Fen\u002Fvariables\u002Fconversion-and-presentation","en\u002F04.variables\u002F2.conversion-and-presentation","Conversion & presentation",{"title":91,"path":92,"stem":93,"navTitle":91},"Add a variable","\u002Fen\u002Fvariables\u002Fadd-a-variable","en\u002F04.variables\u002F3.add-a-variable",{"title":95,"path":96,"stem":97,"navTitle":98},"Matrix variable (array, curve, map)","\u002Fen\u002Fvariables\u002Fmatrix-variable","en\u002F04.variables\u002F4.matrix-variable","Matrix variable",{"title":100,"path":101,"stem":102,"navTitle":100},"Events","\u002Fen\u002Fvariables\u002Fevents","en\u002F04.variables\u002F5.events",{"title":104,"navTitle":15,"path":105,"stem":106,"children":107,"page":40},"Visualization","\u002Fen\u002Fvisualization","en\u002F05.visualization",[108,113,118,122,127,132,137,142,147,152],{"title":109,"path":110,"stem":111,"navTitle":112},"Create a workspace","\u002Fen\u002Fvisualization\u002Fcreate-a-workspace","en\u002F05.visualization\u002F1.create-a-workspace","Workspace",{"title":114,"path":115,"stem":116,"navTitle":117},"Writing values to the device","\u002Fen\u002Fvisualization\u002Fwrite-to-device","en\u002F05.visualization\u002F10.write-to-device","Writing to the device",{"title":119,"path":120,"stem":121,"navTitle":119},"Add a control","\u002Fen\u002Fvisualization\u002Fadd-a-control","en\u002F05.visualization\u002F2.add-a-control",{"title":123,"path":124,"stem":125,"navTitle":126},"Bind a control to a variable","\u002Fen\u002Fvisualization\u002Fbind-a-control","en\u002F05.visualization\u002F3.bind-a-control","Bind a control",{"title":128,"path":129,"stem":130,"navTitle":131},"Graph — signal time course","\u002Fen\u002Fvisualization\u002Fgraph-control","en\u002F05.visualization\u002F4.graph-control","Graph",{"title":133,"path":134,"stem":135,"navTitle":136},"XY Graph — signal versus signal","\u002Fen\u002Fvisualization\u002Fxy-graph-control","en\u002F05.visualization\u002F5.xy-graph-control","XY Graph",{"title":138,"path":139,"stem":140,"navTitle":141},"Gauge — instantaneous value indicator","\u002Fen\u002Fvisualization\u002Fgauge-control","en\u002F05.visualization\u002F6.gauge-control","Gauge",{"title":143,"path":144,"stem":145,"navTitle":146},"Single-Signal — a value with a caption","\u002Fen\u002Fvisualization\u002Fsignal-control","en\u002F05.visualization\u002F7.signal-control","Single-Signal",{"title":148,"path":149,"stem":150,"navTitle":151},"Watch Table — a table of variables","\u002Fen\u002Fvisualization\u002Fwatch-table-control","en\u002F05.visualization\u002F8.watch-table-control","Watch Table",{"title":153,"path":154,"stem":155,"navTitle":156},"Matrix control — maps and calibration","\u002Fen\u002Fvisualization\u002Fmatrix-control","en\u002F05.visualization\u002F9.matrix-control","Matrix control",{"title":158,"navTitle":15,"path":159,"stem":160,"children":161,"page":40},"Running and Monitoring","\u002Fen\u002Frunning","en\u002F06.running",[162,166],{"title":163,"path":164,"stem":165,"navTitle":163},"Start and stop","\u002Fen\u002Frunning\u002Fstart-and-stop","en\u002F06.running\u002F1.start-and-stop",{"title":167,"path":168,"stem":169,"navTitle":170},"Watching live data","\u002Fen\u002Frunning\u002Fwatching-live-data","en\u002F06.running\u002F2.watching-live-data","Live data",{"title":172,"navTitle":15,"path":173,"stem":174,"children":175,"page":40},"Logging and Replay","\u002Fen\u002Flogging-and-replay","en\u002F07.logging-and-replay",[176,180,185],{"title":177,"path":178,"stem":179,"navTitle":177},"Logging data","\u002Fen\u002Flogging-and-replay\u002Flogging-data","en\u002F07.logging-and-replay\u002F1.logging-data",{"title":181,"path":182,"stem":183,"navTitle":184},"Replaying a log","\u002Fen\u002Flogging-and-replay\u002Freplaying-a-log","en\u002F07.logging-and-replay\u002F2.replaying-a-log","Replay",{"title":186,"path":187,"stem":188,"navTitle":189},"Exporting data","\u002Fen\u002Flogging-and-replay\u002Fexporting-data","en\u002F07.logging-and-replay\u002F3.exporting-data","Export",{"title":191,"navTitle":15,"path":192,"stem":193,"children":194,"page":40},"Python Scripts","\u002Fen\u002Fpython-scripts","en\u002F08.python-scripts",[195,199,203,207],{"title":196,"path":197,"stem":198,"navTitle":12},"Scripts overview","\u002Fen\u002Fpython-scripts\u002Fscripts-overview","en\u002F08.python-scripts\u002F1.scripts-overview",{"title":200,"path":201,"stem":202,"navTitle":200},"Accessing variables","\u002Fen\u002Fpython-scripts\u002Faccessing-variables","en\u002F08.python-scripts\u002F2.accessing-variables",{"title":204,"path":205,"stem":206,"navTitle":204},"Example script","\u002Fen\u002Fpython-scripts\u002Fexample-script","en\u002F08.python-scripts\u002F3.example-script",{"title":208,"path":209,"stem":210,"navTitle":208},"CSV post-processing","\u002Fen\u002Fpython-scripts\u002Fcsv-post-processing","en\u002F08.python-scripts\u002F4.csv-post-processing",{"title":212,"navTitle":15,"path":213,"stem":214,"children":215,"page":40},"Custom extensions","\u002Fen\u002Fcustom-extensions","en\u002F09.custom-extensions",[216,220,224,228,233],{"title":217,"path":218,"stem":219,"navTitle":217},"Custom driver","\u002Fen\u002Fcustom-extensions\u002Fcustom-driver","en\u002F09.custom-extensions\u002F1.custom-driver",{"title":221,"path":222,"stem":223,"navTitle":221},"Custom protocol","\u002Fen\u002Fcustom-extensions\u002Fcustom-protocol","en\u002F09.custom-extensions\u002F2.custom-protocol",{"title":225,"path":226,"stem":227,"navTitle":225},"Custom Control","\u002Fen\u002Fcustom-extensions\u002Fcustom-control","en\u002F09.custom-extensions\u002F3.custom-control",{"title":229,"path":230,"stem":231,"navTitle":232},"Complete example — ISS position","\u002Fen\u002Fcustom-extensions\u002Fiss-example","en\u002F09.custom-extensions\u002F4.iss-example","Example ISS",{"title":234,"path":235,"stem":236,"navTitle":237},"Complete example — temperature sensor","\u002Fen\u002Fcustom-extensions\u002Ftemp-sensor-example","en\u002F09.custom-extensions\u002F5.temp-sensor-example","Example temp sensor",{"title":239,"navTitle":15,"path":240,"stem":241,"children":242,"page":40},"QFW SDK","\u002Fen\u002Fdevice-sdk","en\u002F10.device-sdk",[243,248,253,258,263,268,273,278],{"title":244,"path":245,"stem":246,"navTitle":247},"QFW SDK — introduction","\u002Fen\u002Fdevice-sdk\u002Fintroduction","en\u002F10.device-sdk\u002F1.introduction","Introduction",{"title":249,"path":250,"stem":251,"navTitle":252},"XCP in the QFW SDK","\u002Fen\u002Fdevice-sdk\u002Fxcp","en\u002F10.device-sdk\u002F2.xcp","XCP",{"title":254,"path":255,"stem":256,"navTitle":257},"Integration step by step: XCP on TCP with FreeRTOS + lwIP","\u002Fen\u002Fdevice-sdk\u002Fintegration-tcp","en\u002F10.device-sdk\u002F3.integration-tcp","Integration: XCP on TCP",{"title":259,"path":260,"stem":261,"navTitle":262},"XCP on classic CAN — what changes","\u002Fen\u002Fdevice-sdk\u002Fcan","en\u002F10.device-sdk\u002F4.can","XCP on classic CAN",{"title":264,"path":265,"stem":266,"navTitle":267},"Integration without an RTOS: XCP on TCP from the main loop","\u002Fen\u002Fdevice-sdk\u002Fbaremetal","en\u002F10.device-sdk\u002F5.baremetal","Integration without an RTOS",{"title":269,"path":270,"stem":271,"navTitle":272},"The engine contract","\u002Fen\u002Fdevice-sdk\u002Fengine-contract","en\u002F10.device-sdk\u002F6.engine-contract","Engine contract",{"title":274,"path":275,"stem":276,"navTitle":277},"Variable addresses for QInsight","\u002Fen\u002Fdevice-sdk\u002Fvariable-addresses","en\u002F10.device-sdk\u002F7.variable-addresses","Variable addresses",{"title":279,"path":280,"stem":281,"navTitle":282},"Troubleshooting the SDK integration","\u002Fen\u002Fdevice-sdk\u002Ftroubleshooting","en\u002F10.device-sdk\u002F8.troubleshooting","Troubleshooting",{"title":284,"navTitle":15,"path":285,"stem":286,"children":287,"page":40},"Reference","\u002Fen\u002Freference","en\u002F11.reference",[288,292,296,300],{"title":289,"path":290,"stem":291,"navTitle":289},"Drivers","\u002Fen\u002Freference\u002Fdrivers","en\u002F11.reference\u002F1.drivers",{"title":293,"path":294,"stem":295,"navTitle":293},"Protocols","\u002Fen\u002Freference\u002Fprotocols","en\u002F11.reference\u002F2.protocols",{"title":297,"path":298,"stem":299,"navTitle":297},"Controls","\u002Fen\u002Freference\u002Fcontrols","en\u002F11.reference\u002F3.controls",{"title":282,"path":301,"stem":302,"navTitle":282},"\u002Fen\u002Freference\u002Ftroubleshooting","en\u002F11.reference\u002F4.troubleshooting",{"title":304,"navTitle":15,"path":305,"stem":306,"children":307,"page":40},"Examples","\u002Fen\u002Fexamples","en\u002F12.examples",[308,312,317,322,327,331,335,339,343,347,352,357,362],{"title":309,"path":310,"stem":311,"navTitle":309},"Simulation: all signals","\u002Fen\u002Fexamples\u002Fsimulation-all-signals","en\u002F12.examples\u002F01.simulation-all-signals",{"title":313,"path":314,"stem":315,"navTitle":316},"Modbus RTU master over a serial line","\u002Fen\u002Fexamples\u002Fserial-modbus-master","en\u002F12.examples\u002F02.serial-modbus-master","Modbus RTU master",{"title":318,"path":319,"stem":320,"navTitle":321},"Modbus RTU slave with simulated sensors","\u002Fen\u002Fexamples\u002Fserial-modbus-slave","en\u002F12.examples\u002F03.serial-modbus-slave","Modbus RTU slave",{"title":323,"path":324,"stem":325,"navTitle":326},"Modbus TCP master over a TCP client","\u002Fen\u002Fexamples\u002Ftcp-client-modbus-master","en\u002F12.examples\u002F04.tcp-client-modbus-master","Modbus TCP master",{"title":328,"path":329,"stem":330,"navTitle":328},"Modbus TCP slave on the TCP Server","\u002Fen\u002Fexamples\u002Ftcp-server-modbus-slave","en\u002F12.examples\u002F05.tcp-server-modbus-slave",{"title":332,"path":333,"stem":334,"navTitle":332},"Bit field and a script","\u002Fen\u002Fexamples\u002Fbit-field-script","en\u002F12.examples\u002F08.bit-field-script",{"title":336,"path":337,"stem":338,"navTitle":336},"Two ECUs at once","\u002Fen\u002Fexamples\u002Ftwo-ecus","en\u002F12.examples\u002F09.two-ecus",{"title":340,"path":341,"stem":342,"navTitle":340},"ISS position live","\u002Fen\u002Fexamples\u002Fiss-live-tracking","en\u002F12.examples\u002F10.iss-live-tracking",{"title":344,"path":345,"stem":346,"navTitle":344},"Simulated thermometer","\u002Fen\u002Fexamples\u002Fsimul-temp-measure","en\u002F12.examples\u002F11.simul-temp-measure",{"title":348,"path":349,"stem":350,"navTitle":351},"JSON signals from a Python generator","\u002Fen\u002Fexamples\u002Fjson-signal-python","en\u002F12.examples\u002F12.json-signal-python","JSON signals from Python",{"title":353,"path":354,"stem":355,"navTitle":356},"Raw CAN frames from a Raspberry Pi","\u002Fen\u002Fexamples\u002Fraw-can-python","en\u002F12.examples\u002F13.raw-can-python","Raw CAN from a Raspberry Pi",{"title":358,"path":359,"stem":360,"navTitle":361},"XCP on TCP on a NUCLEO-H723ZG: measurement, stimulation and calibration maps","\u002Fen\u002Fexamples\u002Ftcp-client-xcp-nucleo-maps","en\u002F12.examples\u002F14.tcp-client-xcp-nucleo-maps","XCP on TCP on NUCLEO-H723ZG",{"title":363,"path":364,"stem":365,"navTitle":366},"XCP on CAN on a NUCLEO-H723ZG: measurement, stimulation and calibration maps","\u002Fen\u002Fexamples\u002Fcan-xcp-nucleo-maps","en\u002F12.examples\u002F15.can-xcp-nucleo-maps","XCP on CAN on NUCLEO-H723ZG",{"id":368,"title":279,"body":369,"description":1061,"extension":1062,"meta":1063,"navTitle":282,"navigation":1064,"path":280,"seo":1065,"stem":281,"__hash__":1066},"docs_en\u002Fen\u002F10.device-sdk\u002F8.troubleshooting.md",{"type":370,"value":371,"toc":1054},"minimark",[372,376,381,403,542,546,1038],[373,374,279],"h1",{"id":375},"troubleshooting-the-sdk-integration",[377,378,380],"h2",{"id":379},"regenerating-a-cubemx-project","Regenerating a CubeMX project",[382,383,384,385,389,390,394,395,398,399,402],"p",{},"The example is a CubeMX project; ",[386,387,388],"em",{},"Generate Code"," overwrites everything\noutside ",[391,392,393],"code",{},"USER CODE BEGIN\u002FEND",". Before you regenerate, read\n",[391,396,397],{},"examples\u002Fnucleo_h723zg\u002FREGEN-NOTES.md"," (for the bare-metal project\n",[391,400,401],{},"examples\u002Fnucleo_h723zg_baremetal\u002FREGEN-NOTES.md",") — the short version:",[404,405,406,419,434,465,480,507,517,528],"ul",{},[407,408,409,410,414,415,418],"li",{},"Put your calls ",[411,412,413],"strong",{},"only"," in ",[391,416,417],{},"USER CODE"," sections with names CubeMX knows.\nAn invented section name is silently dropped by the next generation.",[407,420,421,422,425,426,429,430,433],{},"Task names, priorities and stacks live in the ",[391,423,424],{},".ioc"," (",[386,427,428],{},"Tasks and\nQueues",") — change them there, not in ",[391,431,432],{},"freertos.c",".",[407,435,436,439,440,442,443,445,446,449,450,453,454,457,458,414,461,464],{},[391,437,438],{},"lwipopts.h"," values that CubeMX knows are carried by the ",[391,441,424],{},"; the\n",[391,444,417],{}," block in it (",[391,447,448],{},"LWIP_TCP_KEEPALIVE",", ",[391,451,452],{},"LWIP_SO_LINGER",", …)\nsurvives; ",[391,455,456],{},"FreeRTOSConfig.h"," likewise\n(",[391,459,460],{},"configNUM_THREAD_LOCAL_STORAGE_POINTERS",[386,462,463],{},"USER Defines",").",[407,466,467,468,471,472,475,476,479],{},"STM32H7 memory: the Ethernet DMA cannot reach DTCM RAM, so the example's\nlinker script places ",[391,469,470],{},".data\u002F.bss\u002Fheap\u002Fstack"," in AXI SRAM (",[391,473,474],{},"RAM_D1",") and\nthe DMA descriptors plus the RX buffer pool in ",[391,477,478],{},"RAM_D2"," (32 KB on the\nH723). The linker script is fully overwritten by regeneration — restore\nit from your version control.",[407,481,482,485,486,489,490,493,494,496,497,500,501,504,505,433],{},[391,483,484],{},"LWIP\u002FTarget\u002Fethernetif.c",": ",[391,487,488],{},"INTERFACE_THREAD_STACK_SIZE"," (ST default\n350 B = stack overflow with CMSIS v2, use 2048) and ",[391,491,492],{},"ETH_RX_BUFFER_CNT","\n(16 in the example; the RX pool must fit ",[391,495,478],{},", an ",[391,498,499],{},"ASSERT"," in the\nlinker script fails the build otherwise) are ",[411,502,503],{},"reverted by every\nregeneration"," — they are not carried by the ",[391,506,424],{},[407,508,509,510,513,514,516],{},"The lwIP heap in the example is placed by ",[391,511,512],{},"LWIP_RAM_HEAP_POINTER"," at a\nraw address at the top of AXI SRAM; ",[391,515,474],{}," is shortened in the linker\nscript so that linker-placed data can never reach it.",[407,518,519,520,523,524,527],{},"550 MHz on the H723 needs the ",[391,521,522],{},"CPU_FREQ_BOOST"," option byte; HAL code\ndoes not program option bytes:\n",[391,525,526],{},"STM32_Programmer_CLI -c port=SWD -ob CPU_FREQ_BOOST=1"," once per board.",[407,529,530,531,534,535,537,538,464],{},"After every regeneration: ",[391,532,533],{},"git diff"," is the checklist, then build (the\nlinker ",[391,536,499],{},"s guard the RAM layout), then re-run the address scanner\n(",[539,540,274],"a",{"href":541},"\u002Fdevice-sdk\u002Fvariable-addresses",[377,543,545],{"id":544},"symptoms-causes-fixes","Symptoms, causes, fixes",[547,548,549,565],"table",{},[550,551,552],"thead",{},[553,554,555,559,562],"tr",{},[556,557,558],"th",{},"Symptom",[556,560,561],{},"Likely cause",[556,563,564],{},"What to do",[566,567,568,610,648,687,722,736,782,804,822,847,877,905,919,957,982,997,1016],"tbody",{},[553,569,570,578,600],{},[571,572,573,574,577],"td",{},"Red LED after reset (",[391,575,576],{},"QfwXcpServer_Init"," false)",[571,579,580,583,584,449,587,590,591,594,595,599],{},[391,581,582],{},"get_clock_us == NULL","; recursive mutex or task not created (",[391,585,586],{},"configSUPPORT_STATIC_ALLOCATION",[391,588,589],{},"configUSE_RECURSIVE_MUTEXES","); ",[391,592,593],{},"qfw_xcp_init"," refused the config (",[539,596,598],{"href":597},"\u002Fdevice-sdk\u002Fengine-contract#init-failure-reasons","init failure reasons","); on CAN: unsupported bitrate or HAL FDCAN init failed",[571,601,602,603,606,607],{},"set ",[391,604,605],{},"log_level"," 3, read the virtual COM port; check the FreeRTOS config; compare with the example's ",[391,608,609],{},"xcp_server.c",[553,611,612,623,635],{},[571,613,614,615,618,619,622],{},"Bare metal: ",[391,616,617],{},"QfwXcpTcpRawGlue_Init"," returns false (",[391,620,621],{},"Error_Handler",")",[571,624,625,626,629,630,449,632,634],{},"called before ",[391,627,628],{},"MX_LWIP_Init()"," (the listening pcb cannot be created), ",[391,631,582],{},[391,633,593],{}," refused the config",[571,636,637,638,641,642,590,645,647],{},"call order in ",[391,639,640],{},"main.c"," as in the example (",[539,643,267],{"href":644},"\u002Fdevice-sdk\u002Fbaremetal#mainc-init-once-poll-forever",[391,646,605],{}," 3",[553,649,650,660,674],{},[571,651,652,653,656,657],{},"Bare metal: the glue fails to compile with ",[391,654,655],{},"#error"," or ",[391,658,659],{},"_Static_assert",[571,661,662,665,666,669,670,673],{},[391,663,664],{},"NO_SYS"," is not 1, ",[391,667,668],{},"LWIP_TCP_KEEPALIVE 1"," is missing, or ",[391,671,672],{},"TCP_SND_BUF"," is smaller than an engine segment (1480 B)",[571,675,676,677,680,681,425,683,622],{},"add the options to the ",[391,678,679],{},"USER CODE BEGIN 1"," block of ",[391,682,438],{},[539,684,686],{"href":685},"\u002Fdevice-sdk\u002Fbaremetal#cubemx-lwip-without-an-rtos","lwIP without an RTOS",[553,688,689,696,710],{},[571,690,691,692,695],{},"Nothing listens on port 5555 (no ",[391,693,694],{},"listening"," line on the COM port)",[571,697,698,699,702,703,705,706,709],{},"glue task not running (stack, priority, static allocation), lwIP not up when ",[391,700,701],{},"QfwXcpGlue_Init"," ran (call it after ",[391,704,628],{},"), wrong IP or subnet; bare metal: ",[391,707,708],{},"MX_LWIP_Process()"," is not called in the loop",[571,711,712,715,716,719,720,622],{},[391,713,714],{},"ping"," the board first; check task creation; call order in ",[391,717,718],{},"StartDefaultTask"," (bare metal: the loop body in ",[391,721,640],{},[553,723,724,730,733],{},[571,725,726,727,729],{},"QInsight: connect timeout although ",[391,728,714],{}," works",[571,731,732],{},"firewall on the PC, wrong port, board already holds a connection of a previous master that vanished (see next row)",[571,734,735],{},"check the port; wait for the keepalive to expire (~5 s) or reset the board",[553,737,738,745,757],{},[571,739,740,741,744],{},"Master vanished, board stays ",[391,742,743],{},"connected"," and refuses the next master for longer than ~5 s",[571,746,747,749,750,753,754,756],{},[391,748,448],{}," not 1 (the glue's ",[391,751,752],{},"TCP_KEEPIDLE\u002FINTVL\u002FCNT"," then have no effect), or ",[391,755,452],{}," not 1 (close lingers; FreeRTOS glue only)",[571,758,759,760,425,762,766,767,770,771,774,775,449,779,622],{},"set both in ",[391,761,438],{},[539,763,765],{"href":764},"\u002Fdevice-sdk\u002Fintegration-tcp#cubemx-the-project-the-sdk-expects","CubeMX settings","); the glue then resets to ",[391,768,769],{},"accept"," within ~5 s — or at once when the board's own link goes down and the link callback in ",[391,772,773],{},"lwip.c"," is wired (",[539,776,778],{"href":777},"\u002Fdevice-sdk\u002Fintegration-tcp#three-calls-in-freertosc","FreeRTOS",[539,780,781],{"href":644},"bare metal",[553,783,784,794,797],{},[571,785,786,787,789,790,793],{},"QInsight: ",[391,788,743],{}," and right away ",[391,791,792],{},"forcibly closed by the remote host",", repeating every second",[571,795,796],{},"the board has another master connected (a second QInsight instance, another client on port 5555) and refuses the new connection; or this PC's previous session has not timed out yet after an outage (keepalive ~11 s)",[571,798,799,800,622],{},"end the first session or wait for the keepalive; the driver connects by itself (",[539,801,803],{"href":802},"\u002Fdevice-sdk\u002Fbaremetal#connections-what-the-glue-does-and-what-you-will-see","connections without an RTOS",[553,805,806,809,812],{},[571,807,808],{},"Bare metal: responses and DAQ data arrive late or in batches",[571,810,811],{},"a long main-loop pass (log output at level 3 ≈ 4 ms per line, blocking work in the loop), or Nagle and the master's delayed ACK on slow streams",[571,813,814,815,817,818],{},"shorten the work per pass, ",[391,816,605],{}," 2; see the ",[539,819,821],{"href":820},"\u002Fdevice-sdk\u002Fbaremetal#context-model-critical-section-and-interrupts","context model",[553,823,824,827,837],{},[571,825,826],{},"Timestamps jump, go backwards or run at the wrong rate",[571,828,829,832,833,836],{},[391,830,831],{},"Clock64_Update"," not called, called from more than one task, or ",[391,834,835],{},"CLOCK_TICKS_PER_S"," ≠ real CPU clock",[571,838,839,840,843,844,846],{},"one caller (",[391,841,842],{},"QfwXcpServer_Tick"," from the default task, period \u003C 7.8 s); set ",[391,845,835],{}," from the clock tree",[553,848,849,852,867],{},[571,850,851],{},"DAQ data stops, QInsight reports counter gaps \u002F overrun",[571,853,854,855,858,859,863,864,866],{},"transmit queue overflow or transport backpressure (",[391,856,857],{},"qfw_xcp_is_backpressured()","); on CAN the bus limit (",[539,860,862],{"href":861},"\u002Fdevice-sdk\u002Fcan#sizing-and-throughput","sizing and throughput","); bare metal: ",[391,865,672],{}," too small for a sustained stream",[571,868,869,870,873,874,876],{},"reduce the measurement set or rate; on TCP enlarge ",[391,871,872],{},"GLUE_QUEUE_SEGMENTS"," (bare metal: ",[391,875,672],{}," too); check Ethernet load",[553,878,879,882,885],{},[571,880,881],{},"A matrix loads but contains garbage or lacks its axes",[571,883,884],{},"address from another build; the object is not one contiguous block X axis, Y axis, data (other order, padding between members); the axes have a different number of points than the data",[571,886,887,888,425,892,449,895,898,899,898,902,622],{},"re-run the scanner; follow the convention of ",[539,889,891],{"href":890},"\u002Fdevice-sdk\u002Fvariable-addresses#arrays-curves-and-maps-matrix-variables","Arrays, curves and maps",[391,893,894],{},"pack(1)",[391,896,897],{},"\u003Cname>_x"," \u002F ",[391,900,901],{},"\u003Cname>_y",[391,903,904],{},"\u003Cname>",[553,906,907,910,913],{},[571,908,909],{},"STIM value never applied",[571,911,912],{},"the STIM list's event is not triggered after your update, or your code overwrites the variable after the trigger",[571,914,915,916],{},"trigger once per cycle after the update; see the raw\u002Fvalue\u002Fbypass split in ",[391,917,918],{},"demo_signals.cpp",[553,920,921,924,946],{},[571,922,923],{},"Random corruption \u002F hard fault under load",[571,925,926,927,930,931,934,935,898,938,941,942,622],{},"critical section not reentrant, ",[391,928,929],{},"rx"," and ",[391,932,933],{},"poll"," from two contexts, trigger from an ISR with a mutex-based section; bare metal: ",[391,936,937],{},"qfw_xcp_rx",[391,939,940],{},"qfw_xcp_poll"," or lwIP called from an interrupt (",[539,943,945],{"href":944},"\u002Fdevice-sdk\u002Fengine-contract","engine contract",[571,947,948,949,952,953,956],{},"keep the shipped glue structure; bare metal: from an interrupt only ",[391,950,951],{},"qfw_xcp_trigger_event"," (covered by the glue's ",[391,954,955],{},"PRIMASK"," section), nothing else",[553,958,959,965,972],{},[571,960,961,962],{},"CAN: no response to ",[391,963,964],{},"CONNECT",[571,966,967,968,971],{},"transceiver wiring or termination, bitrate or ids do not match QInsight, frames on the master id do not reach ",[391,969,970],{},"qfw_xcp_rx_can_frame"," (filter)",[571,973,974,975,978,979,622],{},"check ",[391,976,977],{},"[XCP I] SDK server on CAN: …"," on the COM port, then the bus with a CAN monitor (",[539,980,262],{"href":981},"\u002Fdevice-sdk\u002Fcan",[553,983,984,991,994],{},[571,985,986,987,990],{},"CAN: ",[391,988,989],{},"[XCP W] CAN bus-off, recovering"," repeating",[571,992,993],{},"no other node acknowledging (transceiver, termination, bitrate mismatch)",[571,995,996],{},"fix the bus; the glue recovers automatically and resets the session",[553,998,999,1006,1009],{},[571,1000,1001,1002,1005],{},"QInsight: variable shows ",[391,1003,1004],{},"Source: not found",", no blue badge, cannot be bound to a control",[571,1007,1008],{},"the variable is defined but not assigned to a protocol",[571,1010,1011,1012,622],{},"assign it to the XCP protocol and fill the Comm params (",[539,1013,1015],{"href":1014},"\u002Fdevice-sdk\u002Fvariable-addresses#three-steps-in-qinsight","three steps in QInsight",[553,1017,1018,1021,1032],{},[571,1019,1020],{},"QInsight reads garbage or writes hit the wrong memory",[571,1022,1023,1024,1027,1028,1031],{},"addresses from an older build, ",[391,1025,1026],{},"Release"," image without ",[391,1029,1030],{},"volatile",", or a rebuilt image with moved objects",[571,1033,1034,1035,1037],{},"re-run the scanner, re-import or fix Comm params; make the variables ",[391,1036,1030],{}," globals",[382,1039,1040,1041,1045,1046,1049,1050,433],{},"Support: ",[539,1042,1044],{"href":1043},"mailto:info@qenex.net","info@qenex.net"," — include\n",[391,1047,1048],{},"qfw_xcp_version()",", the glue log around the problem and your glue config\nvalues. The QInsight side of XCP problems is covered in\n",[539,1051,1053],{"href":1052},"\u002Freference\u002Ftroubleshooting#xcp-and-daq","Troubleshooting — XCP and DAQ",{"title":1055,"searchDepth":1056,"depth":1056,"links":1057},"",3,[1058,1060],{"id":379,"depth":1059,"text":380},2,{"id":544,"depth":1059,"text":545},"What STM32CubeMX regeneration overwrites in the example project and how to keep the corrections, plus a symptom → likely cause → what to do table for the XCP on TCP (with FreeRTOS and bare metal) and XCP on classic CAN integration.","md",{},true,{"title":279,"description":1061},"HuWF-4D95woCZ0K46WJIjkhk4gCtTTIdekjkhJZyZN8",[1068,1069],{"title":274,"path":275,"stem":276,"navTitle":277,"children":-1},{"title":289,"path":290,"stem":291,"navTitle":289,"children":-1},1791554568268]