困擾我一周的問題應該是有解了

2021-05-04 14:46:33 字數 1178 閱讀 1184

先講講問題所在

呼叫eth_send函式,具體send是下面這段**

for (i = 0; i < tmplen; i++)

dm9000_outw(((u16 *) data_ptr)[i], dm9000_data);

每次我send 08 06 00 01的時候,抓包工具就會抓到08 08 06 06 00 00 01 01這樣的資料

也就是每個位元組重複了一次

從沒想過這條簡單地給u16* 賦值的語句會有問題,倒是在其他方面找了幾天,沒有結果

好在今天想到要不看看彙編**有啥區別,google一下通過給gcc加-s 選項可以得到彙編結果

說幹就幹 終於發現 ok的語句 和不行的語句差別是,乙個用了strh ,乙個用兩條strb指令 來給dm9000_data這個位址賦值

而我們這是給dm9000_data這個位址一次傳送16bit的資料,編譯成strb顯然是曲解了我們的意思,難怪收包會重複一次,原來是分解

成兩條指令了

那怎麼糾正過來呢,又是一陣google,終於發現是要加-march=armv4來搞定,終於舒了一口氣。

附,兩個語言對比

[ok的]

mov    r3, #536870916

.loc 1 395 0

cmp    r4, r5

.loc 1 396 0

strh    r2, [r3, #0]    @ movhi

b    .l110

[錯誤的]

mov    r3, #536870916

ldr    r2, [fp, #-36]

mov    r1, r2

mov    r2, r1, asl #1

ldr    r1, [fp, #-28]

add    r2, r2, r1

mov    r1, r2

ldrb    r2, [r1, #0]    @ zero_extendqisi2

ldrb    r1, [r1, #1]    @ zero_extendqisi2

orr    r2, r2, r1, asl #8

mov    r1, r2    @ movhi

strb    r1, [r3, #0]

mov    r2, r1, asr #8

strb    r2, [r3, #1]

解決了困擾一周的問題

用了webupload,生成的是base64格式的 然後專案是.net mvc獲取這個並且存入資料庫或者存入資料夾。1.sql資料庫欄位varchar 8000 都不夠,字段改成二進位制的 2.上傳有時候進不了後台,因為我的上傳是ajax傳的 data型別是 text 原因是 public acti...

C 我記得應該是當初筆試面試常考的

c 我記得應該是當初筆試面試常考的。當然指標也是的 布科思直接問我stl 東莞的無人機公司筆試題裡面考了些c 的,我不會 武漢的環宇智行筆試題也是一些c 的似乎是物件導向建構函式那些東西,這種我似乎見過多次,應該不止環宇考了c 的那種考法,那種題應該我之前或者之後還見過的。我去看看智慧型佳也沒有考過...

最後一任女朋友應該是這樣的

1 不需要太漂亮,領得出去領得回來就好!2 可以喝酒,但是不可以跟我耍酒瘋!3 過去的事我不會問,但是遇到我以後就好好的喜歡我就行了!4 願意上班就隨便找個工作,不願意上班就當個專職的賢妻良母,我敢娶你就有養活你的實力!5 我可能不會太有錢,但是別人能給你的我肯定也能給你 6 我可能不會天天陪在你身...