This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

omapl138 mcbsp_test.c 驱动问题



程序路径:ti-dvsdk_omapl138-evm_4_01_00_09\psp\linux-driver-examples-psp03.20.00.13\mcbsp\mcbsp_test.c

把源代码中62行代码如下:

static int word_len = 32;
static int frame_len = 2;
static int freq = 48000;
static bool dlb = 0;

改成:
static int word_len = 8;
static int frame_len = 32;
static int freq = 48000;
static bool dlb = 1;

后会出现如下错如

Starting McBSP test
Request for McBSP1 sucessful
Setting DLB mode
Transmitting Packet 1
Starting McBSP TX
Starting McBSP RX
McBSP started
Receving data...
Transmitting data...
...TX complete
...RX complete
TX stopped
RX stopped
Testing data integrity for Packet 1:
bufdest[0]: 0   1       1       2       2       3       3       4       4       5
bufdest[10]: 5  6       6       7       7       8       8       9       9       10
bufdest[20]: 10 11      11      12      12      13      13      14      14      15
bufdest[30]: 15 16      16      17      17      18      18      19      19      20
bufdest[40]: 20 21      21      22      22      23      23      24      24      25
bufdest[50]: 25 26      26      27      27      28      28      29      29      30
bufdest[60]: 30 31      31      32      32      33      33      34      34      35
bufdest[70]: 35 36      36      37      37      38      38      39      39      40
bufdest[80]: 40 41      41      42      42      43      43      44      44      45
bufdest[90]: 45 46      46      47      47      48      48      49      49      50
bufdest[100]: 50        51      51      52      52      53      53      54      54      55
bufdest[110]: 55        56      56      57      57      58      58      59      59      60
bufdest[120]: 60        61      61      62      62      63      63      64      64      65
bufdest[130]: 65        66      66      67      67      68      68      69      69      70
bufdest[140]: 70        71      71      72      72      73      73      74      74      75
bufdest[150]: 75        76      76      77      77      78      78      79      79      80
bufdest[160]: 80        81      81      82      82      83      83      84      84      85
bufdest[170]: 85        86      86      87      87      88      88      89      89      90
bufdest[180]: 90        91      91      92      92      93      93      94      94      95
bufdest[190]: 95        96      96      97      97      98      98      99      99      100
bufdest[200]: 100       101     101     102     102     103     103     104     104     105
bufdest[210]: 105       106     106     107     107     108     108     109     109     110
bufdest[220]: 110       111     111     112     112     113     113     114     114     115
bufdest[230]: 115       116     116     117     117     118     118     119     119     120
bufdest[240]: 120       121     121     122     122     123     123     124     124     125
bufdest[250]: 125       126     126     127     127     128     128     129     129     130
bufdest[260]: 130       131     131     132     132     133     133     134     134     135
bufdest[270]: 135       136     136     137     137     138     138     139     139     140
bufdest[280]: 140       141     141     142     142     143     143     144     144     145
bufdest[290]: 145       146     146     147     147     148     148     149     149     150
bufdest[300]: 150       151     151     152     152     153     153     154     154     155
bufdest[310]: 155       156     156     157     157     158     158     159     159     160
bufdest[320]: 160       161     161     162     162     163     163     164     164     165
bufdest[330]: 165       166     166     167     167     168     168     169     169     170
bufdest[340]: 170       171     171     172     172     173     173     174     174     175
bufdest[350]: 175       176     176     177     177     178     178     179     179     180
bufdest[360]: 180       181     181     182     182     183     183     184     184     185
bufdest[370]: 185       186     186     187     187     188     188     189     189     190
bufdest[380]: 190       191     191     192     192     193     193     194     194     195
bufdest[390]: 195       196     196     197     197     198     198     199     199     200
bufdest[400]: 200       201     201     202     202     203     203     204     204     205
bufdest[410]: 205       206     206     207     207     208     208     209     209     210
bufdest[420]: 210       211     211     212     212     213     213     214     214     215
bufdest[430]: 215       216     216     217     217     218     218     219     219     220
bufdest[440]: 220       221     221     222     222     223     223     224     224     225
bufdest[450]: 225       226     226     227     227     228     228     229     229     230
bufdest[460]: 230       231     231     232     232     233     233     234     234     235
bufdest[470]: 235       236     236     237     237     238     238     239     239     240
bufdest[480]: 240       241     241     242     242     243     243     244     244     245
bufdest[490]: 245       246     246     247     247     248     248     249     249     250
bufdest[500]: 250       251     251     252     252     253     253     254     254     255
bufdest[510]: 255       0       0       1       1       2       2       3       3       4
bufdest[520]: 4 5       5       6       6       7       7       8       8       9
bufdest[530]: 9 10      10      11      11      12      12      13      13      14
bufdest[540]: 14        15      15      16      16      17      17      18      18      19
bufdest[550]: 19        20      20      21      21      22      22      23      23      24
bufdest[560]: 24        25      25      26      26      27      27      28      28      29
bufdest[570]: 29        30      30      31      31      32      32      33      33      34
bufdest[580]: 34        35      35      36      36      37      37      38      38      39
bufdest[590]: 39        40      40      41      41      42      42      43      43      44
bufdest[600]: 44        45      45      46      46      47      47      48      48      49
bufdest[610]: 49        50      50      51      51      52      52      53      53      54
bufdest[620]: 54        55      55      56      56      57      57      58      58      59
bufdest[630]: 59        60      60      61      61      62      62      63      63      64
bufdest[640]: 64        65      65      66      66      67      67      68      68      69
bufdest[650]: 69        70      70      71      71      72      72      73      73      74
bufdest[660]: 74        75      75      76      76      77      77      78      78      79
bufdest[670]: 79        80      80      81      81      82      82      83      83      84
bufdest[680]: 84        85      85      86      86      87      87      88      88      89
bufdest[690]: 89        90      90      91      91      92      92      93      93      94
bufdest[700]: 94        95      95      96      96      97      97      98      98      99
bufdest[710]: 99        100     100     101     101     102     102     103     103     104
bufdest[720]: 104       105     105     106     106     107     107     108     108     109
bufdest[730]: 109       110     110     111     111     112     112     113     113     114
bufdest[740]: 114       115     115     116     116     117     117     118     118     119
bufdest[750]: 119       120     120     121     121     122     122     123     123     124
bufdest[760]: 124       125     125     126     126     127     127     128     128     129
bufdest[770]: 129       130     130     131     131     132     132     133     133     134
bufdest[780]: 134       135     135     136     136     137     137     138     138     139
bufdest[790]: 139       140     140     141     141     142     142     143     143     144
bufdest[800]: 144       145     145     146     146     147     147     148     148     149
bufdest[810]: 149       150     150     151     151     152     152     153     153     154
bufdest[820]: 154       155     155     156     156     157     157     158     158     159
bufdest[830]: 159       160     160     161     161     162     162     163     163     164
bufdest[840]: 164       165     165     166     166     167     167     168     168     169
bufdest[850]: 169       170     170     171     171     172     172     173     173     174
bufdest[860]: 174       175     175     176     176     177     177     178     178     179
bufdest[870]: 179       180     180     181     181     182     182     183     183     184
bufdest[880]: 184       185     185     186     186     187     187     188     188     189
bufdest[890]: 189       190     190     191     191     192     192     193     193     194
bufdest[900]: 194       195     195     196     196     197     197     198     198     199
bufdest[910]: 199       200     200     201     201     202     202     203     203     204
bufdest[920]: 204       205     205     206     206     207     207     208     208     209
bufdest[930]: 209       210     210     211     211     212     212     213     213     214
bufdest[940]: 214       215     215     216     216     217     217     218     218     219
bufdest[950]: 219       220     220     221     221     222     222     223     223     224
bufdest[960]: 224       225     225     226     226     227     227     228     228     229
bufdest[970]: 229       230     230     231     231     232     232     233     233     234
bufdest[980]: 234       235     235     236     236     237     237     238     238     239
bufdest[990]: 239       240     240     241     241     242     242     243     243     244
bufdest[1000]: 244      245     245     246     246     247     247     248     248     249
bufdest[1010]: 249      250     250     251     251     252     252     253     253     254
bufdest[1020]: 254      255     255     0
Error found at Byte 3 location
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

而如果将源代码改成:

static int word_len = 8;
static int frame_len = 16;
static int freq = 48000;
static bool dlb = 1;

 会出现正确的结果,如下:

Starting McBSP test
Request for McBSP1 sucessful
Setting DLB mode
Transmitting Packet 1
Starting McBSP TX
Starting McBSP RX
McBSP started
Receving data...
Transmitting data...
...TX complete
...RX complete
TX stopped
RX stopped
Testing data integrity for Packet 1: Passed
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

问题

请问是什么原因导致 将 frame_len 设大时会出现如上错误,如果我需要将 frame_len 设为更大的值如64、128而得到正确的结果,又该如何处置?

是此代码本身有bug?或是mcbsp.c 做了限制处理?或是其它什么原因?请提供解决方法或思路,mcbsp_test.c源代码见附件。谢谢!