Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: cdc-acm + STM32
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
Quasar
Столкнулся с проблемой, которую не удается победить.

Есть железка на STM32F103 на которой я запустил USB с CDC классом. Железка должна прикидываться COM портом и гонять данные, со скорость порядка 140 кбит/с. Судя по работе с Виндоус, она с этим справляется нормально. А вот с линуксом на ATSAM9G45 работает как-то не очень, обмен периодически зависает :-(

Ядро используется 3.18.48. Проанализировав работу cdc-acm.c в момент зависания, обнаружил, что заканчиваются urb на передачу, и функция int acm_tty_write вываливается с ошибкой, так как ей acm_wb_alloc возвращает -1. То есть, в один прекрасный момент, перестает вызываться USB стеком функция acm_write_bulk, освобождлающая эти urb.

Собственно, может кто подскажет, куда дальше нужно рыть?

Привожу лог USBmon'а:

Код
c3a23500 261404154 C Bi:1:002:1 0 38 = 59aae335 5050c80f 132609b1 480480ac e19fc1ad 43401095 24ca361d 07f04700
c3a23500 261404192 S Bi:1:002:1 -115 128 <
c3a23400 261459717 S Bo:1:002:1 -115 64 = 84a96143 c4006cff 34fea4fb 4cff6401 a4f854fe ac0224fa 24fc2c02 24fc64fb
c3a23380 261459776 S Bo:1:002:1 -115 64 = 4800e4fa f4fc3401 340164f9 bcfe9c05 0cff64fc 7000dc03 d4fcecfe 54fea4fa
c3a23300 261459800 S Bo:1:002:1 -115 64 = 240164f9 58008cfe e4fa1c04 54fec4f5 5c04b400 c4f574fe 6c0344f8 8cfe6c03
c3a23280 261459821 S Bo:1:002:1 -115 64 = e4f99cfe 5cff24fc 1000ecfe 4c034c02 24fa4c03 a8ffa4fb 24fc64fc 4401b4fc
c3a23200 261459843 S Bo:1:002:1 -115 64 = dc05d4fd e4f91c04 1c06a4f8 14fd0c03 e4fb44f8 44f74c03 94fce4fa ecfed4fc
c3a23180 261459862 S Bo:1:002:1 -115 64 = 54fee4fa 74fdac01 8c021c04 4c020401 9c052c02 d4fcd4fd a400acfe d4fdac01
c3a23100 261459882 S Bo:1:002:1 -115 64 = c4f244f8 04e904e1 44f244f8 e4f9acfe 1c07bc08 bc073c0f 3c0c3c0f 3c0d5c07
c3a23080 261459901 S Bo:1:002:1 -115 64 = 44f7c4f6 c4f6c4f3 44f444f5 04eb04ec c4f404e5 04e544f1 c4f124fb 3c08bc0e
c3a23000 261459921 S Bo:1:002:1 -115 64 = 04ee04ec 04eb04ed 04eb04ef 64fca4fb 94fc1c05 5c066c02 bc0adc03 f8ffbc08
c39bff80 261459941 S Bo:1:002:1 -115 64 = 3c0dbc0d 3c0b1c07 3c0d3c0f 3c0abc0e bc0a3c09 3c0bdc04 1c063c09 1c06ec01
c39bff00 261459961 S Bo:1:002:1 -115 64 = 34013c0c fc103c0b bc083c08 bc093c0a fc143c0c 5000d8ff a4f92cff cc0114fe
c39bfe80 261459982 S Bo:1:002:1 -115 64 = 34fe64fc 3800bc08 bc07fc11 bc0b6c03 3c0a5c07 1c0464fc e4fa88ff 6cffc4f6
c39bfe00 261460003 S Bo:1:002:1 -115 64 = 14fd94fd 24f9b4fd 24fcc4f6 e4fb24f9 a4fa24fb 24fbf4fc f8ffb400 24fc64fb
c39bfd80 261460023 S Bo:1:002:1 -115 64 = 5c063c0c bc0c5c05 ac0174fe a0ff3401 44011cff 14fe44f8 c4f5bcfe dc041c06
c39bfd00 261460043 S Bo:1:002:1 -115 64 = 64fc64fc d4fcd4fc e4fae4fb 94fc24fb a4fbe4fa e4fa24fb 64fae4f9 24fa24fa
c39bfc80 261460064 S Bo:1:002:1 -115 64 = acfeccfe bcfe2cff 0cffdcfe 0cffacfe 34fe34fe f4fdb4fd d4fdb4fd 94fdd4fd
c39bfc00 261460084 S Bo:1:002:1 -115 64 = ccfefcfe 1cffccfe fcfefcfe dcfedcfe 1cffbcfe acfe5cff 54febcfe 7cff14fe
c39bfb80 261460104 S Bo:1:002:1 -115 64 = dcfe34fe dcfebcfe 54febcfe 9cfe74fe 9cfe9cfe 8cfeacfe acfeacfe 9cfebcfe
c39bfb00 261460124 S Bo:1:002:1 -115 64 = bcfebcfe 9cfebcfe bcfe9cfe bcfebcfe 9cfebcfe ccfe9cfe ccfebcfe 8cfebcfe
c3a23400 261460157 C Bo:1:002:1 0 64 >
c3a23380 261460179 C Bo:1:002:1 0 64 >
c3a23300 261460186 C Bo:1:002:1 0 64 >
c3a23280 261460192 C Bo:1:002:1 0 64 >
c3a23400 261460220 S Bo:1:002:1 -115 64 = 8cfe54fe 7cff74fe 74fe2cff 8cfe54fe ecfeacfe 34fefcfe bcfe74fe 1cffacfe
c3a23380 261460244 S Bo:1:002:1 -115 4 = 8cfe9cfe
c3a23200 261461173 C Bo:1:002:1 0 64 >
c3a23180 261461188 C Bo:1:002:1 0 64 >
c3a23100 261461195 C Bo:1:002:1 0 64 >
c3a23080 261461201 C Bo:1:002:1 0 64 >
c3a23000 261461208 C Bo:1:002:1 0 64 >
c39bff80 261461214 C Bo:1:002:1 0 64 >
c39bff00 261461221 C Bo:1:002:1 0 64 >
c39bfe80 261461228 C Bo:1:002:1 0 64 >
c39bfe00 261461235 C Bo:1:002:1 0 64 >
c39bfd80 261461242 C Bo:1:002:1 0 64 >
c39bfd00 261461249 C Bo:1:002:1 0 64 >
c39bfc80 261461256 C Bo:1:002:1 0 64 >
c39bfc00 261461263 C Bo:1:002:1 0 64 >
c39bfb80 261462147 C Bo:1:002:1 0 64 >
c39bfb00 261462155 C Bo:1:002:1 0 64 >
c3a23400 261462161 C Bo:1:002:1 0 64 >
c3a23380 261462168 C Bo:1:002:1 0 4 >
c3a23480 261483153 C Bi:1:002:1 0 38 = 27d58b80 a6346866 47a19e42 94224988 31a76883 c399324e 8d4d50af d262ba06
c3a23480 261483192 S Bi:1:002:1 -115 128 <
c3a23400 261535926 S Bo:1:002:1 -115 64 = 84a96143 9cfe74fe 8cfe8cfe 8cfe8cfe 9cfe9cfe acfeacfe 8cfeacfe acfe8cfe
c3a23380 261535984 S Bo:1:002:1 -115 64 = 74fe74fe 8cfe9cfe acfe74fe ccfeacfe 34fe1cff 54fef4fd 6cfff4fd 14fea0ff
c3a23300 261536008 S Bo:1:002:1 -115 64 = ccfefcfe 54fe8cfe 74fe54fe 54fe8cfe acfe74fe dcfeccfe 9cfefcfe 74fe8cfe
c3a23280 261536029 S Bo:1:002:1 -115 64 = 74febcfe bcfe74fe 54fefcfe ccfe74fe acfe8cfe ecfe74fe 8cfeecfe 74fe9cfe
c3a23200 261536049 S Bo:1:002:1 -115 64 = 34fd14fe e8ff74fd bcfe0cff 9cfe0cff 5cff1cff 34fea0ff 74fe14fe 1cff14fe
c3a23180 261536068 S Bo:1:002:1 -115 64 = 8cfe14fe f4fd54fe 54fe54fe dcfe2cff 8cfe2cff 1cff94fd 54febcfe 94fdacfe
c3a23100 261536088 S Bo:1:002:1 -115 64 = 9cfe2800 fcfeacfe ecfeb4fd 54fe54fd 54fd74fe b4fdf4fd b4fcd4fc 3cff4cff
c3a23080 261536107 S Bo:1:002:1 -115 64 = 0cffdcfe b4fc54fe 74fdacfe 74fef4fd 74fe34fe 04017cff 6cff2cff acfec0ff
c3a23000 261536128 S Bo:1:002:1 -115 64 = b0ff94fd 5cff64fc c4f754fd bcfe24fb 94006401 f4fd2c02 7cff24fb 34fd24fa
c3a23400 261536163 C Bo:1:002:1 0 64 >
c3a23380 261536183 C Bo:1:002:1 0 64 >
c3a23400 261536213 S Bo:1:002:1 -115 64 = 64fc24fa 44f7c4f7 44f8c4f5 c4f764f9 c4f644f4 44f204ed 04e8c4f5 9c03bc0c
c3a23380 261536238 S Bo:1:002:1 -115 64 = 94fcacfe 8c025c05 bc089c05 64fbc4f2 04ec04e9 44f7bc0e fc1bfc1b fc129c06
c39bff80 261536258 S Bo:1:002:1 -115 64 = d4fd1000 a4fb44f8 34fda4fb 64fcf400 a4fba4f9 e4f9e4f8 a4fbb4fc 44f504ee
c39bff00 261536278 S Bo:1:002:1 -115 64 = bcfe9400 54fed4fd 64fb5cff bc083c0a 080004ef 04e604e4 04eb04ef 04e9c4f7
c39bfe80 261536298 S Bo:1:002:1 -115 64 = fc1afc15 fc1bfc11 4c02c4f4 c4f1c4f5 44f2c4f3 44f724f9 44f8a4f8 94fc5cff
c39bfe00 261536319 S Bo:1:002:1 -115 64 = a4fa64fc 00000c02 c0ff9c03 fc119c06 f4003c0a bc09dc06 ac028c02 ec02dc06
c39bfd80 261536339 S Bo:1:002:1 -115 64 = 04ec04ed 04ec04ee 24f9c400 dc03dc04 9c06fc0f fc103c0b 3c093c0b bc0a1c04
c39bfd00 261536360 S Bo:1:002:1 -115 64 = fc0fbc0c 3c0bbc0b bc091c07 fcfe74fe 04e904f0 2c0304e4 04ecd4fd a4fba4fb
c39bfc80 261536381 S Bo:1:002:1 -115 64 = 14fd94fc 2c02bc08 3c0a3c08 64fb04ef 44f8a4f9 04e484df 04ef04ef 04ea04ec
c39bfc00 261536400 S Bo:1:002:1 -115 64 = 04ef04ef 44f444f4 c4f2c4f5 14fdac01 7401ec02 bc083c0c 3c0abc07 3c083c09
c39bfb80 261536420 S Bo:1:002:1 -115 64 = 3c0d3c0d 1c068c02 3c0cbc08 b4fdd4fd 0c03ac02 a4fae4fa 30002c02 b40054fd
c39bfb00 261536440 S Bo:1:002:1 -115 4 = 5cff0000
c3a23300 261537171 C Bo:1:002:1 0 64 >
c3a23280 261537186 C Bo:1:002:1 0 64 >
c3a23200 261537194 C Bo:1:002:1 0 64 >
c3a23180 261537200 C Bo:1:002:1 0 64 >
c3a23100 261537207 C Bo:1:002:1 0 64 >
c3a23080 261537214 C Bo:1:002:1 0 64 >
c3a23000 261537221 C Bo:1:002:1 0 64 >
c3a23400 261537228 C Bo:1:002:1 0 64 >
c3a23380 261537235 C Bo:1:002:1 0 64 >
c39bff80 261537242 C Bo:1:002:1 0 64 >
c39bff00 261537249 C Bo:1:002:1 0 64 >
c39bfe80 261537256 C Bo:1:002:1 0 64 >
c39bfe00 261538150 C Bo:1:002:1 0 64 >
c39bfd80 261538159 C Bo:1:002:1 0 64 >
c39bfd00 261538165 C Bo:1:002:1 0 64 >
c39bfc80 261538172 C Bo:1:002:1 0 64 >
c39bfc00 261538178 C Bo:1:002:1 0 64 >
c39bfb80 261538185 C Bo:1:002:1 0 64 >
c39bfb00 261538192 C Bo:1:002:1 0 4 >
c3a23c00 261562166 C Bi:1:002:1 0 38 = 5a291b9b 2286e0e6 b4113070 d2320764 a17b1187 28261609 a54ea86e 56f14f26
c3a23c00 261562205 S Bi:1:002:1 -115 128 <
c3a23400 261635892 S Bo:1:002:1 -115 64 = 84a96143 1c05fc0f fc11bc0b bc0cfc11 bc0e1c06 cc018c01 8cfe44f8 c4f2c4f3
c3a23380 261635951 S Bo:1:002:1 -115 64 = 40003000 64fa24fa 04f0c4f1 f0ff04ed c4f09cfe e4fb64fb 74fddc05 1c061c05
c3a23300 261635976 S Bo:1:002:1 -115 64 = ec011c05 5c073c08 9c0344f4 c4f34c03 44f204e2 44f2c4f6 04ef04ed c4f3b4fd
c3a23280 261635998 S Bo:1:002:1 -115 64 = 24fac4f7 c4f4c4f6 64fa64fb e4fa94fc 44014c03 cc014c02 5c045c04 4c021000
c3a23200 261636019 S Bo:1:002:1 -115 64 = 5cfff4fc 3cff5800 14fe7000 c40034fe e0ffe400 8cfeacfe f0ff74fe ecfea8ff
c3a23180 261636040 S Bo:1:002:1 -115 64 = 34fe74fd 34fe34fe d4fd54fd 94fd74fd 54fd94fd 54fd94fd f4fd74fe 74fe9cfe
c3a23100 261636059 S Bo:1:002:1 -115 64 = 8cfefcfe 34fd14fe 2cffb4fc 14fea0ff f4fc54fe d0ff14fd 34fe98ff d4fcf4fd
c3a23080 261636079 S Bo:1:002:1 -115 64 = 54fedcfe 3cff74fe 0cff3cff 74fe9cfe ccfe34fe 54fe8cfe 54fe74fe 9cfe74fe
c3a23000 261636100 S Bo:1:002:1 -115 64 = dcfe74fe 8cfeacfe 54fe8cfe acfe54fe 54fe8cfe 74fe8cfe acfe74fe acfeecfe
c39bff80 261636119 S Bo:1:002:1 -115 64 = 4cffdcfe 34fd3cff 0cff34fe 14fe54fe 44f7a4fa 5c0594fc 54fe9c04 b0fffcfe
c3a23400 261636156 C Bo:1:002:1 0 64 >
c3a23380 261636176 C Bo:1:002:1 0 64 >
c3a23400 261636203 S Bo:1:002:1 -115 64 = f4fd14fe 44f854fd 300024fa d4000c03 f8ff6800 50008cfe ec018cfe a4fb2800
c3a23380 261636230 S Bo:1:002:1 -115 64 = f400ccfe b4fd4800 d4fd34fd c400d4fc 94fc0401 b4fde4fb 9400dcfe 64fc3800
c39bff00 261636251 S Bo:1:002:1 -115 64 = 64fca4fb 24fce4fa e4fa64fb 64fa24fa 24faa4f9 e4f8a4f8 44f8c4f7 44f744f8
c39bfe80 261636273 S Bo:1:002:1 -115 64 = bc073c09 bc08bc08 dc06bc07 1c071c06 dc058c02 b8ff14fd 44f6c4f2 c4f2c4f5
c39bfe00 261636294 S Bo:1:002:1 -115 64 = a4faec01 3c08bc07 5c059c04 9c03f400 f4fd24fb a4f9a4f8 c4f7c4f7 44f744f7
c39bfd80 261636315 S Bo:1:002:1 -115 64 = fc11fc18 fc19fc13 bc0b3c0d 3c0d1c05 6cff0cff 0c02ccfe a4fb4401 cc02f400
c39bfd00 261636335 S Bo:1:002:1 -115 64 = 7cffec02 3c0a3c08 0c026c03 dc066c03 64fce4fb 8cfe24fb c4f5c4f7 a4f944f7
c39bfc80 261636355 S Bo:1:002:1 -115 64 = 0cff4800 c0ffe0ff 44f544f4 bc07c4f5 04eeac01 ac02a4f9 c4f6dc06 bc0724fa
c39bfc00 261636375 S Bo:1:002:1 -115 64 = 4c028c02 64fa04f0 ccfee4fb 04e904ee 44f844f7 04ed04ef 8cfee4fb c4f7f4fc
c39bfb80 261636395 S Bo:1:002:1 -115 64 = c4f7c4f7 e4fba4fb 64fa74fe 74fe0000 8c01d4fd f0ff8400 d4fd3000 e400e8ff
c39bfb00 261636414 S Bo:1:002:1 -115 4 = dc03cc01
c3a23300 261637170 C Bo:1:002:1 0 64 >
c3a23280 261637205 C Bo:1:002:1 0 64 >
c3a23200 261637213 C Bo:1:002:1 0 64 >
c3a23180 261637220 C Bo:1:002:1 0 64 >
c3a23100 261637227 C Bo:1:002:1 0 64 >
c3a23080 261637233 C Bo:1:002:1 0 64 >
c3a23000 261637240 C Bo:1:002:1 0 64 >
c39bff80 261637247 C Bo:1:002:1 0 64 >
c3a23400 261637254 C Bo:1:002:1 0 64 >
c3a23380 261637261 C Bo:1:002:1 0 64 >
c39bff00 261637267 C Bo:1:002:1 0 64 >
c39bfe80 261637274 C Bo:1:002:1 0 64 >
c39bfe00 261638160 C Bo:1:002:1 0 64 >
c39bfd80 261638193 C Bo:1:002:1 0 64 >
c39bfd00 261638201 C Bo:1:002:1 0 64 >
c39bfc80 261638209 C Bo:1:002:1 0 64 >
c39bfc00 261638216 C Bo:1:002:1 0 64 >
c39bfb80 261638223 C Bo:1:002:1 0 64 >
c39bfb00 261638230 C Bo:1:002:1 0 4 >
c3a23b80 261641157 C Bi:1:002:1 0 38 = 8c74084b 260be7aa 7d6fa5ab 2d02451b cc123f8d b4093690 fa2fe07b 3b7e6136
c3a23b80 261641181 S Bi:1:002:1 -115 128 <
c3a23400 261719827 S Bo:1:002:1 -115 64 = 84a96143 94fc04ec 04eaa4fa cc0244f7 44f5e4f9 a4fabcfe d4fdfcfe ecfeac02
c3a23380 261719895 S Bo:1:002:1 -115 64 = 24fce4fa 24fae4f9 a4f9a4f9 64faa4fa e4fa64fb 64fba4fb 64fce4fb 64fc34fd
c3a23300 261719920 S Bo:1:002:1 -115 64 = 54fe1800 e4fb54fe 1cff64fc 14fe7cff d4fc14fe 0800d4fc ccfee8ff f4fc7cff
c3a23280 261719942 S Bo:1:002:1 -115 64 = 54feecfe 9cfe54fe bcfe74fe 74fe74fe 74fe54fe 54fe8cfe 54fe9cfe ccfe74fe
c3a23200 261719963 S Bo:1:002:1 -115 64 = 9cfe74fe 74fe74fe 34feacfe 74fe34fe dcfe9cfe 74fe74fe 1cff54fe d4fd4000
c3a23180 261719982 S Bo:1:002:1 -115 64 = 3cffe8ff 94fc2800 fcfef4fc 6800f4fd d4fda8ff f4fd74fe dcfe9cfe 74febcfe
c3a23100 261720002 S Bo:1:002:1 -115 64 = 54fedcfe bcfe34fe 0cff9cfe 54fe0cff 74fe74fe dcfe74fe acfedcfe acfedcfe
c3a23080 261720022 S Bo:1:002:1 -115 64 = bcfe34fe acfe3cff 74fdccfe c0ff24fc e0ff88ff e4fb4401 74feb4fc 640194fd
c3a23000 261720041 S Bo:1:002:1 -115 64 = 90ff94fd fcfe0cff 34fe9cfe 0cff74fe 34fe3cff 34fe34fe 4cfff4fd 74fe3cff
c39bff80 261720061 S Bo:1:002:1 -115 64 = dcfeacfe 8cfebcfe acfebcfe bcfeacfe bcfeccfe acfe9cfe bcfeacfe acfe9cfe
c39bff00 261720081 S Bo:1:002:1 -115 64 = 9cfed4fc 9400f4fd 74fd9400 74fd14fe 080094fd 34feb0ff d4fdf4fd f8fff4fd
c39bfe80 261720101 S Bo:1:002:1 -115 64 = 1cfff4fd 9cfe2cff d4fdccfe 0cff14fe fcfeecfe 34fedcfe dcfe54fe ccfedcfe
c39bfe00 261720121 S Bo:1:002:1 -115 64 = 54fedcfe 74fe8cfe bcfe9cfe 74feecfe acfe34fe 4cff54fe 54fe88ff 14fe8cfe
c3a23b00 261720159 C Bi:1:002:1 0 38 = 824a8c0d 0212bcfb 64e0b4b4 d1367908 9dd2529f ab3f1689 0a841987 42d81f16
c3a23b00 261720184 S Bi:1:002:1 -115 128 <
c3a23400 261720200 C Bo:1:002:1 0 64 >
c3a23400 261720233 S Bo:1:002:1 -115 64 = 34fe34fe 0cff74fe 14fe2cff 9cfef4fd 6cff74fe 14fe7cff f4fd54fe 4cfff4fd
c39bfd80 261720258 S Bo:1:002:1 -115 64 = 54feccfe acfe34fe ecfe54fe 74febcfe 8cfe54fe bcfeccfe 14fefcfe 8cfe14fe
c39bfd00 261720279 S Bo:1:002:1 -115 64 = 74feccfe 74febcfe ecfe34fe 2cff9cfe 54fe4cff 54fe74fe 0cff54fe 54feecfe
c39bfc80 261720301 S Bo:1:002:1 -115 64 = 14fe0cff dcfef4fd 2cffacfe 14fe1cff 9cfe34fe 0cff74fe 14fe2cff 54fe34fe
c39bfc00 261720321 S Bo:1:002:1 -115 64 = 8cfeccfe 8cfe9cfe dcfe54fe acfeccfe 34fedcfe acfe34fe ecfe9cfe 54fedcfe
c39bfb80 261720341 S Bo:1:002:1 -115 64 = b8ff74fd 74fd74fd 14fdb4fd f4fc64fc 24fba4fa a4f904ee 04ecc4f6 44f8c4f6
c39bfb00 261720361 S Bo:1:002:1 -115 64 = a4003c0e 3c0f7c20 7c247c24 fc196c03 bc0b6cff 04ecc4f5 5c063c0b 9c058c01
c39bfa80 261720381 S Bo:1:002:1 -115 4 = f4fcc4f6
c39bfa00 261789706 S Bo:1:002:1 -115 64 = 84a96143 f4fcdc04 bc085c05 bc09bc0e 3c0cbc09 ac02cc01 dc034cff a4fa44f6
c39bf980 261789765 S Bo:1:002:1 -115 64 = 44f88c02 3c09bc0e bc0ebc0a bc08bc08 9c05ccfe 14fd2cff e4fb44f6 44f3c4f3
c39bf900 261789792 S Bo:1:002:1 -115 64 = b8ff7800 c4f7f8ff 1c04ac01 3c09ec02 a8ff5c06 3c09dc03 94fc5c04 dc066cff
c39bf880 261789814 S Bo:1:002:1 -115 64 = 24f9c4f5 b4fc5c07 3c0efc14 fc10bc0b fc11fc12 3c0994fc 24fbf4fc 44f604f0
c39bf800 261789835 S Bo:1:002:1 -115 64 = a4f9c4f5 44f3c4f4 c4f7a4f8 24f924fc 04ede4fa bc0e24fa e4f83c09 bc0edc04
c39bf780 261789856 S Bo:1:002:1 -115 64 = 3c0b4401 cc023c0a 3c0e3c0a 44f604e4 04e2c4f1 04e984d1 84dfc4f4 64f9c4f5
c39bf700 261789877 S Bo:1:002:1 -115 64 = a4f844f8 64fa8c02 bc0a3c0b bc083c0a bc0c3c0a 1c0434fe e4fb24fb 44f744f2
c39bf680 261789898 S Bo:1:002:1 -115 64 = 8c0224fb a4fa8400 5401dc05 240134fe 5c06bc07 2c03f8ff 1c05bc07 ec02cc01
c39bf600 261789918 S Bo:1:002:1 -115 64 = 44f544f5 44f80c03 bc0efc10 3c0f3c0e fc11fc12 bc084cff b4fc24fc 44f604ef
c39bf580 261789939 S Bo:1:002:1 -115 64 = 24f9c4f4 44f4c4f5 44f7c4f7 64f974fd ec016c02 1c045c05 1c06dc05 44f224fb
c39bf500 261789960 S Bo:1:002:1 -115 64 = ec015c04 9c037cff c8ffdc04 cc028c01 2401ac02 3c0a3c09 bc070401 04f004ea
c39bf480 261789981 S Bo:1:002:1 -115 64 = 98ff74fd 24fb44f5 c4f004ef 44f3c4f6 c4f5e4f8 60001c05 9c061c07 bc083c0b
c3a23a80 261800155 C Bi:1:002:1 0 38 = e0bc4133 f2d39312 50748d49 16ebae13 79b875b4 ab724a01 38f9b64c ca6c07a8
c3a23a80 261800194 S Bi:1:002:1 -115 128 <

[ВСЕ, ЗДЕСЬ ВСЕ ЗАКАНЧИВАЕТСЯ]

Genadi Zawidowski
Про работу стека в STM32F103 - если у Вас нет данных для передачи в хост, выполняете ли посылку нулевой длины? На некоторых версиях windows нарушение не проходит даром. Возможно и тут аналогично.
Объяснение "на мой глаз" такое - неответивший несколько раз ендпоинт переводится хостом в список "заблокированных" и его перестают спрашивать.
Quasar
Цитата(Genadi Zawidowski @ Feb 11 2017, 21:49) *
Про работу стека в STM32F103 - если у Вас нет данных для передачи в хост, выполняете ли посылку нулевой длины? На некоторых версиях windows нарушение не проходит даром. Возможно и тут аналогично.
Объяснение "на мой глаз" такое - неответивший несколько раз ендпоинт переводится хостом в список "заблокированных" и его перестают спрашивать.



Не понял про windows? С Windows на обычном PC, железка на STM32 нормально общается, без зависонов. Проблема в общении с хостом на ATSAM9G45. Посылок нулевой длины я не шлю, и вроде как никакого обмена на шине нет (если верить USBMon'у) в покое. Зависает строго под нагрузкой, то есть когда появляется активный двухсторонний обмен. И то не всегда, иногда все исправно работает в течение продолжительного времени.
Genadi Zawidowski
Я windows упомянул, потому что некоторые версии плюют на неотвечающий device, некоторые требуют соблюдения правил. плюет ли ваша версия Linux, вам виднее.
Эдди
Вы лучше вместо этой ереси показали бы, что в dmesg после подключения устройства, и что выдает udevadm monitor.
Наверняка endpoint криво сконфигурирован, но дырявые мастдайские дрова на это плюют, а в линухе требуется точное соответствие.
Quasar
Цитата(Эдди @ Feb 12 2017, 11:36) *
Вы лучше вместо этой ереси показали бы, что в dmesg после подключения устройства, и что выдает udevadm monitor.
Наверняка endpoint криво сконфигурирован, но дырявые мастдайские дрова на это плюют, а в линухе требуется точное соответствие.


Код
dmesg
....
b 1-2: new full-speed USB device number 3 using at91_ohci
cdc_acm 1-2:1.0: This device cannot do calls on its own. It is not a modem.
cdc_acm 1-2:1.0: ttyACM1: USB ACM device



Код
lsusb -v          

Bus 001 Device 003: ID 0483:5740 STMicroelectronics STM32F407
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0483 STMicroelectronics
  idProduct          0x5740 STM32F407
  bcdDevice            2.00
  iManufacturer           1
  iProduct                2
  iSerial                 3
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           67
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      2 Abstract (modem)
      bInterfaceProtocol      1 AT-commands (v.25ter)
      iInterface              0
      CDC Header:
        bcdCDC               1.10
      CDC Call Management:
        bmCapabilities       0x00
        bDataInterface          1
      CDC ACM:
        bmCapabilities       0x02
          line coding and serial state
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              16
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0

Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         0 Full speed (or root) hub
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0001 1.1 root hub
  bcdDevice            3.18
  iManufacturer           3
  iProduct                2
  iSerial                 1
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0002  1x 2 bytes
        bInterval             255
Эдди
А, понятно: у вас вместо линукса какая-нибудь бубунта. И идиотский systemd запускает modemd при обнаружении /dev/ttyACM1. В результате устройство блокируется, и работать с ним невозможно.
Ну что, поздравляю... Проблему можно решить черезжопно, оставив бубунту вместо линукса, либо по-человечески, установив дистрибутив, в котором нет systemd.
AHTOXA
Насколько я помню, systemd тут не при чём, такое было и в убунтах без systemd.
Выходов два:
  1. Снести пакет modemmanager;
  2. Прописать правило udev. Для этого надо создать файл /etc/udev/rules.d/99-ttyacms.rules следующего содержания:
    Код
    ATTRS{idVendor}=="0ca6" ATTRS{idProduct}=="a050", ENV{ID_MM_DEVICE_IGNORE}="1"

    (Вместо 0ca6 и a050 подставить свои VID и PID). После создания этого файла надо скомандовать
    sudo udevadm control --reload-rules

Quasar
Цитата(Эдди @ Feb 13 2017, 15:39) *
А, понятно: у вас вместо линукса какая-нибудь бубунта. И идиотский systemd запускает modemd при обнаружении /dev/ttyACM1. В результате устройство блокируется, и работать с ним невозможно.
Ну что, поздравляю... Проблему можно решить черезжопно, оставив бубунту вместо линукса, либо по-человечески, установив дистрибутив, в котором нет systemd.


У меня ядро скачано с kernel.org и собрано собственаручно, с правкой board файла. А rootfs собран buildroot'ом.

Я что-то не понял, а вы как определили что с устройством невозможно работать?
Quasar
В добавок могу сказать, что обмен зависает только в сторону от хоста. К хосту от STM32 данные доходят нормально.
firew0rker
На вашем устройстве возможно запустить usbmon и tcpdump?
Latch
Можно ли подправить дескрипторы, вместо того, чтобы править udev? Чтобы Ubuntu видела USB COM порт, но не слала AT команды.
Quasar
Цитата(firew0rker @ Feb 16 2017, 05:36) *
На вашем устройстве возможно запустить usbmon и tcpdump?


Проблема все-таки была в железке на STM32. Конечная точка почему-то сваливалась в состояние NAK (NAK: the endpoint is naked and all reception requests result in a NAK handshake.) Немного переработал свой код, работающий с USB стеком STM'а, и зависоны исчезли.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.