找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2033|回復: 1
打印 上一主題 下一主題
收起左側

哈哈問題解決

[復制鏈接]
跳轉到指定樓層
樓主
ID:82781 發(fā)表于 2015-6-13 01:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
昨天搞了一下午的程序,一頭霧水,沒點思路,今天在軟件孫大神的幫助下終于解決這個問題,
是這樣的嵌入式設備要和手機做鏈接,但是為了方便所以把固定IP改成DHCP方式,然后流程是這樣的,第一步嵌入式設備上點想DHCP服務器獲取IP地址,然后得到IP地址后啟動UDP廣播,向這個號段內的指定端口廣播一幀數(shù)據(jù),手機也在這個網(wǎng)段內,所以收到回復,我獨立開辟一個UDP接受線程接受來自手機端的數(shù)據(jù),一旦受到數(shù)據(jù)立馬開始向這個IP的指定端口做TCP鏈接,完事之后線程掛起開始運行TCP客戶端線程,如果在此時手機主動關閉TCP鏈接,那么嵌入式設備要可以重新發(fā)起這個過程,昨天的現(xiàn)象是,A,第一次可以聯(lián)機成功,一旦TCP釋放之后無法聯(lián)接,UDP所有的廣播都是正常的,然后用網(wǎng)絡調試助手流程都通,沒有一點問題,手機軟件方面也是所有問題都通,一旦和嵌入式設備鏈接就不行,原來是這樣的:

只說主要的,其他線程不予考慮。。
系統(tǒng)初始化的時候創(chuàng)建了2個主線程,一個用來初始化網(wǎng)口和上層棧,一個用來接收UDP數(shù)據(jù),即A線程B線程,A線程優(yōu)先級最搞,B線程次之, 然后A線程初始化完畢之后啟動DHCP,得到IP地址就開始向此號段盡享廣播,就是在這個廣播中出錯了,在廣播完畢之后我進行了線程睡眠,正事這個線程睡眠使得系統(tǒng)掛起這個線程,但是此時這個UDP端口沒有注銷,然后轉而執(zhí)行B線程,創(chuàng)建好了UDP另一個端口,就在此時A線程睡眠完畢,毫不猶豫的搶了B線程的CPU時間片,導致B線程還沒有完全的執(zhí)行完畢,就被搶走了,如果此時來一個UDP包從手機發(fā)來就會導致UDP線程收不到,因為此時CPU正在A線程處執(zhí)行關閉端口程序呢,UDP收不到就導致TCP無法啟動,那么為什么用網(wǎng)絡調試助手可以呢?因為網(wǎng)絡調試助手是手動的,非常慢,等你發(fā)的時候A線程早已經(jīng)結束了關閉端口命令,而且B線程也得到了足夠的時間執(zhí)行也堵塞在一個郵箱上,所以再來UDP數(shù)據(jù)是可以收到的,反之,手機回復速度小于線程睡眠時間,導致A線程搶占B線程,以至于有此事,去掉這個縣城睡眠,等待A線程老老實實執(zhí)行完畢,就好了!哈哈!

sendto(sock, send_data, strlen(send_data), 0,
(struct sockaddr *)&server_addr, sizeof(struct
sockaddr));
thread_delay(50);
close(sock);

此乃罪魁禍首!  實在是忽略了呀!實時系統(tǒng)!一點想不到就不行!坑爹!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:82781 發(fā)表于 2015-6-13 01:52 | 只看該作者
    今天是最后一個工作日了。對ADC進行調整,采樣率始終達不到300KHZ,所有的流程都對,輸入時鐘是22MHZ2分頻也就是11MHZ,那么采樣率就是11M/27=400KHZ/秒足夠了,但是通過示波器觀察到的IO翻轉沒達到預定的要求,芯片不咋地,手冊含糊其辭,莫明奇妙的。有待研究。。
突然有些感懷, 職業(yè)生涯很短暫只有短短的一年多時間的嵌入式開發(fā),整理了從工作到目前的所有的程序代碼,寫了每段程序的簡介,歸檔整理交接給同事,一年半前我還是一名電工,電工過度到嵌入式程序開發(fā)我花了整整4年業(yè)余時間去準備,終于如愿以償?shù)淖呱狭碎_發(fā)崗位,在這一年半中幾乎比我這4年學習的東西的總和還要多,我第一次的真正意義上搞明白了多處理機的機制和實現(xiàn),真正意義的把軟件和硬件聯(lián)系起來,更加熟悉了TCP/IP協(xié)議,搞懂了神馬叫做軟核和硬核,使用了至少3款操作系統(tǒng)編程,后來才發(fā)現(xiàn)原來以前覺得那么難,其實也不過如此,天下大同,搞了一年的433通訊距離的問題原來不是我程序寫的問題而是硬件的天線不匹配造成了,所有的指責都是沒有道理的,我沒錯,程序是正確的,更加深刻的明白了算法和數(shù)據(jù)結構是多么多么的重要,至于驅動程序什么的還是停留在一年前的水平,也就是這些年加深了自己的軟件層面的東西,真真意義的做了幾片PCB,知道了流程和原理,雖然做的不好,但是總是有東西出來了,不虛此行,硬件遠遠比想象的要廣博。好多好多.....
過些日子就要離開了,離開了一起合作的同事,一起傻逼的日子,有點小傷感,也許真的愛好不能當成職業(yè),也許。。。。
不過認識了一大堆的朋友,還是很慶幸的,一個終結就是另一個的開始,就是這樣,好還是壞誰也不知道。
其實我早已做好準備,收入銳減,地位不保,環(huán)境不優(yōu)越,規(guī)范嚴苛,可是老王你難道忘記你曾經(jīng)談過的棉花了嗎?
未來的日子,嵌入式軟件學習還不能放,即使不干也要繼續(xù)走下去,那是我的夢,還有好多未搞明白的知識。。。加油吧!
下午和小弟們開玩笑說:以前我總是號令你們,明天終于我成了別人的小弟哈哈!
加油吧!沒什么可說的,
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表