如果有一天你們公司很重要的一臺Linux服務(wù)器突然啟動不了了,重裝系統(tǒng)又浪費(fèi)時間,如果是啟動過程有問題,那么你知道啟動過程可以快速定位系統(tǒng)問題,很快就可以解決。
由上圖中可以知道進(jìn)程地址空間中最頂部的段是棧,代碼中調(diào)用函數(shù)、定義局部變量(但不包含static修飾的變量)或聲明的類的實(shí)例等等都要使用??臻g,當(dāng)函數(shù)執(zhí)行完(也就是程序執(zhí)行超過了這個函數(shù)的作用范圍的時候),操作系統(tǒng)會把該函數(shù)在棧中存放的數(shù)據(jù)出棧,也就是函數(shù)執(zhí)行完需要return的時候系統(tǒng)會自己釋放內(nèi)存。但是如果不斷的向棧中壓入數(shù)據(jù),達(dá)到最大的棧空間大小的話就會棧溢出(stack overflow),這時候程序運(yùn)行就會出現(xiàn)段錯誤(Segmentation Fault)。
最近一個項目又用到鋰電池了,從業(yè)5年來這已經(jīng)是第三個項目需要電池供電了。以前做遙控鑰匙的時候沒什么概念,都是按照原來的項目評估,指定紐扣電池,2年以上的使用時間。后來第二個項目,我主要負(fù)責(zé)射頻單板,對于供電部分也就沒這么關(guān)心,直到最近開始了我的新設(shè)計,把新了解到的內(nèi)容做個總結(jié),方便以后查閱!
今天同事找到我,告訴我加上這個二極管有點(diǎn)意思,然后問了我還知道關(guān)于信號采集加二極管的其他案例嗎?我表示疑惑,這個問題挺突然的,但是隱約能猜到里面有文章,估計對他來說也是一段難忘的經(jīng)歷,哈哈。接著他給我講了一下事情的前因后果,不由得感嘆硬件設(shè)計果然到處是坑?。?/p>
ESD靜電放電分為接觸放電和空氣放電,空氣放電的等級相對較高。下圖是ISO 10605-2008標(biāo)準(zhǔn)靜電放電測試設(shè)置圖。針對電子產(chǎn)品ESD問題,個人總結(jié)了以下幾種防護(hù)方法,以便設(shè)計時參考。
近幾年由于芯片廠商元器件物料緊缺,幾乎涉及到晶圓的芯片價格都翻了好幾倍。像去年買車的朋友,好多車型加價買都不一定買的到,產(chǎn)能幾乎都被各大主機(jī)廠放到高價位車型,暢銷車?yán)麧櫛》炊鴽]有多少產(chǎn)能。去年3月份,過完年剛來一個月左右,有一款BCM客戶下了400套訂單,老板立馬下任務(wù)了,但是我統(tǒng)計BOM的時候發(fā)現(xiàn),英飛凌的高驅(qū)芯片價格貴到離譜!要1000一片,單板就需要4片,價格直接起飛!我要是之前囤個10000片,賣完直接回家蓋小樓躺平了,哈哈!客戶的訂單在這邊,小公司又不能漲價,量小還沒有話語權(quán),更換其他芯片又要來一遍DVP,時間肯定來不及,只能虧本處理了。這件事之后,老板說這次虧大了,趕緊把這個芯片換掉,沒有替代的就用分立器件搭一個,功能滿足就行。其實(shí)完全替換高邊驅(qū)動還是挺難的,我就先找了個低邊驅(qū)動芯片嘗試了一下。以BTS3124D為例,看看能不能滿足需求?
昨天有個概念搞錯了,低邊驅(qū)動并不是單片機(jī)輸出低電平驅(qū)動,而是驅(qū)動負(fù)載時,通過閉合地線來實(shí)現(xiàn)使能。這個和單片機(jī)輸出電平無關(guān),不過不影響文章整體的閱讀體驗。
由于以前用過線性充電芯片BQ24040,初次使用對鋰電池充電芯片的特性不是很了解,這種LDO架構(gòu)式的充電對散熱要求高,輸入輸出電流相等,壓差大,功耗就大。
根據(jù)靜電放電電流波形可知,其電流具有較寬的頻率范圍。如此高頻率電流通過參考地平面時,理想情況下參考地平面阻抗處處相等,地電平抬升或者降落對系統(tǒng)信號以及電源無明顯影響。但是由于參考地電位受靜電電流沖擊產(chǎn)生的現(xiàn)象,即所謂的〝?shù)貜棬暚F(xiàn)象。
2 層 PCB 的制造成本將低于 4 層 PCB,但是PCB 厚度不應(yīng)超過 0.8mm - 1.00mm,而傳輸線沒有足夠的參考距離,寬度會變得相當(dāng)大。像好多羅杰斯的射頻PCB板都非常薄,一般分腔體設(shè)計,不適合大尺寸。4 層PCB通常厚度為1.6mm,如果不在表面走RF Signal,可在中間層走射頻線,特性阻抗為50Ω。
ADF4350具有一個集成電壓控制振蕩器(VCO),其基波輸出頻率范圍為2200-4400MHz。此外,利用1/2/4/8/16分頻電路,用戶可以產(chǎn)生低至137.5 MHz的RF輸出頻率。對于要求隔離的應(yīng)用,RF輸出級可以實(shí)現(xiàn)靜音。靜音功能既可以通過引腳控制,也可以通過軟件控制。同時提供輔助RF輸出,且不用時可以關(guān)斷。
其實(shí)在 c++語言里面const修飾的才算是一個真正的常量,在 c 語言中 const 可以說是個“冒牌貨”。為什么會這樣?其實(shí)是 c++ 編譯器對 const 進(jìn)行了加強(qiáng),當(dāng) c++ 編譯器遇到常量聲明時,不會像 c 語言一樣給這樣const對象單獨(dú)分配內(nèi)存,c 語言一般是放在只讀數(shù)據(jù)區(qū),而 c ++ 編譯器是把const對象放在一個符號表里面(我個人覺得放在符號表里面的其中一個原因可能是想減少一些存儲操作次數(shù)),至于符號表是屬于內(nèi)存布局(文章:你該知道你寫的程序的內(nèi)存布局)中的哪一塊,我也不知道,寫 c++ 編譯器的人才知道。
TCP 是基于連接的數(shù)據(jù)流的協(xié)議,先建立連接再進(jìn)行通信,而且在通信過程中會檢查數(shù)據(jù)是否發(fā)送成功。優(yōu)點(diǎn)就是保證數(shù)據(jù)的完整性和準(zhǔn)確性,缺點(diǎn)就是效率較低。
定義一個變量,就是在內(nèi)存中為你定義的這個變量開辟一段內(nèi)存空間,如果這個變量沒有初始化,那么系統(tǒng)會隨機(jī)給這個變量賦一個值,這個值我一般稱它為"垃圾數(shù)"。沒有初始化的變量我認(rèn)為它是沒有意義的,是在浪費(fèi)內(nèi)存,就比如人剛出生的時候上帝需要給他賦予點(diǎn)東西,比如條件反射,比如哭,比如吮吸........這樣人的意義得以體現(xiàn)。對于類的成員來說,我們最好的做法就是在構(gòu)造函數(shù)中對每一個類成員進(jìn)行初始化。
返回函數(shù)的引用去初始化一個新的引用這個和前面一樣,都是不會產(chǎn)生副本,但是現(xiàn)在是用返回值去初始化一個引用聲明c,也就是說這時候變成了變量temp的別名,在c的生命周期內(nèi)temp是一直有效的,這樣做完全可以。