自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

軟件工程師的硬件抓狂指南

開發(fā) 新聞
本文就從一個(gè)軟件工程師的視角,看看接觸硬件時(shí)的那些抓狂案例。以及一些解決的辦法。

近期嘗試給服務(wù)器做外接硬盤的數(shù)據(jù)傳輸,期間各個(gè)方案依次撞墻,讓我想起了幾年來與硬件打交道的種種挫折。

多硬盤接入

此次的需求是給一臺(tái)服務(wù)器外接若干硬盤,把數(shù)據(jù)從外接SSD硬盤送入服務(wù)器后拔掉硬盤,換下一個(gè)。每天需要接入的硬盤數(shù)量和數(shù)據(jù)量都比較大。所以很容易就撞上各種瓶頸。早期的實(shí)現(xiàn)方案是用USB-SATA轉(zhuǎn)換器,但隨著接的硬盤越來越多,很快供電就開始出問題,導(dǎo)致硬盤連接變得不穩(wěn)定。SSD雖然耗電量比機(jī)械硬盤要低,但也是有5-10W的功耗。于是緊急的處理方法就是買了一堆12V電源,給USB-SATA轉(zhuǎn)接器接上外部供電。這一點(diǎn)對(duì)很多軟件工程師來說還可以接受,但很多人不知道的是,5.5mm的電源接口有兩種規(guī)格,內(nèi)部的針直徑有2.1mm和2.5mm兩種。用2.5mm的插頭接入2.1mm的插座就會(huì)松夸,輕輕碰一下就會(huì)斷電。而用2.1mm的插頭則根本無法接入2.5mm的插座。

隨后我開始換用機(jī)架服務(wù)器的方案,需要設(shè)計(jì)如何把SSD硬盤接入機(jī)架服務(wù)器。這個(gè)機(jī)架服務(wù)器的前面板有12個(gè)3.5寸SATA硬盤的槽位。于是最直觀的想法就是使用其中的4個(gè)槽位來接入外部的SSD,反正SATA是支持熱插拔的,這樣傳輸帶寬還更快。但現(xiàn)實(shí)很快擋住了去路。把SSD硬盤熱插拔接入這些槽位時(shí),Linux里沒有出現(xiàn)新設(shè)備,dmesg里無新信息。最終只能基本判斷,是前面板這些硬盤槽位的RAID卡擋住了熱插拔的去路。所以,SATA有熱插拔的能力,但必須要進(jìn)行確認(rèn),中途是可能被RAID卡擋住的。對(duì)一些臺(tái)式機(jī)來說,也可能在BIOS里把SATA熱插拔禁用了。

在服務(wù)器機(jī)箱里找其他機(jī)會(huì)時(shí),發(fā)現(xiàn)了一個(gè)寬度只有10mm左右的插口,運(yùn)維確認(rèn)是SAS硬盤接口。又讓我燃起了希望。問題是,SAS接口接入SATA硬盤的方案??孔V的方法是買硬盤背板,多個(gè)SATA硬盤接入背板后,外面一根SAS接入到主板。正當(dāng)我從另一臺(tái)服務(wù)器上拆硬盤背板打算來做試驗(yàn)時(shí),發(fā)現(xiàn)了那個(gè)背板上需要一個(gè)巨大的電源插口,跟ATX電源接主板那種很寬的插頭很像。但服務(wù)器上并沒有提供第二個(gè)插口。這意味著我可以把SAS信號(hào)線接入到主板,但主板卻沒法給硬盤背板供電。而想要給這玩意供電,意味著還要搞一套很高的ATX電源,機(jī)柜里根本放不下。于是該方案因?yàn)樾枰饨覣TX電源而放棄,雖然不是完全不可用,但優(yōu)先級(jí)已經(jīng)很低了。

接著我把目光轉(zhuǎn)向了PCIE接口。服務(wù)器里有2個(gè)PCIE3.0x8的插槽。基于這個(gè)插槽有兩種方案。一個(gè)是買PCIE-SATA轉(zhuǎn)接卡,可以用一個(gè)PCIE插槽擴(kuò)充出來最多24個(gè)SATA口。我之前就考慮過此方案,把轉(zhuǎn)接卡接入,發(fā)現(xiàn)轉(zhuǎn)接卡是半高的,正好可以放入主板。但坑人的是,轉(zhuǎn)接卡上部的16個(gè)SATA口卻被機(jī)箱頂部擋住了。使得轉(zhuǎn)接卡不被擋住的SATA口只剩下了4個(gè)。于是PCIE-SATA方案,卒。使用PCIE延長(zhǎng)線將PCIE-SATA轉(zhuǎn)接卡橫著放,或引入機(jī)箱外部也是個(gè)辦法。但同樣無法解決硬盤供電問題,搞個(gè)ATX電源同樣讓人抓狂。

另一個(gè)基于PCIE的方案是PCIE-USB3.0。如果能引出8個(gè)USB3.0接口也是不錯(cuò)的。正當(dāng)我選型時(shí),發(fā)現(xiàn)PCIE-USB轉(zhuǎn)接卡需要接入一個(gè)SATA電源來方便給外部USB供電。而服務(wù)器里根本沒有多余的電源接口,一個(gè)多余的SATA電源都都沒有。而且,外接硬盤的供電也是同樣的難題。

繼續(xù)尋找,主板上有兩個(gè)SATA口,看標(biāo)注是給DOM盤用的,但卻同樣受限于主板上根本就沒有提供額外的電源。直到我在SATA口的旁邊看到了給DOM盤供電的焊盤,注意是焊盤,不是接插件。我對(duì)于電烙鐵的使用是很熟悉的,但直接在主板上焊線頭還是有些夸張了。

所以最后呢,打算買5盤位的USB硬盤盒,用外接的小電源,只占用插座空間,不占用機(jī)柜空間。這個(gè)方案還要祭天才能開始測(cè)試,希望順利吧。

模擬視頻采集

這些抓狂的精力,與我?guī)啄昵伴_發(fā)DVR時(shí)的痛苦何其的相似,激起了痛苦的回憶。2013年時(shí),公司需要個(gè)DVR,硬盤錄像機(jī),負(fù)責(zé)把外部的多路模擬視頻信號(hào)錄制進(jìn)取,完整mp4的打包后上傳給服務(wù)器。希望一臺(tái)機(jī)器可以錄制4路視頻,分辨率壓縮到352x288,1fps,每路視頻也都要帶音頻。

我最直觀的想法是,買個(gè)樹莓派,以及USB視頻采集卡。通過USB-HUB來接4個(gè)采集卡,樹莓派里用ffmpeg來定制采集參數(shù)和視頻壓縮打包。最后上傳就更簡(jiǎn)單了。

坎坷從USB采集卡開始。市面上的采集卡我買了20多種。絕大部分采集卡是Windows專用,Linux下根本就沒有驅(qū)動(dòng)。于是,大部分買來的采集卡成了廢品,堆在一邊。這其中唯一一種有Linux驅(qū)動(dòng)的,我費(fèi)盡艱辛,編譯內(nèi)核把驅(qū)動(dòng)弄進(jìn)去了。又要研究v4l2驅(qū)動(dòng)來定制采集參數(shù),減低緩存幀數(shù)等等。等到我看到采集的第一幀畫面時(shí),已經(jīng)過去了兩個(gè)月。

下一步是采集4路?想多了。當(dāng)我試驗(yàn)把2路采集卡,不經(jīng)過USB-HUB接入樹莓派時(shí),樹莓派一聲不吭的就滅了。遭遇了供電問題。給系統(tǒng)升級(jí)了5V4A的電源。開機(jī)后繼續(xù)做采集測(cè)試,結(jié)果第二個(gè)采集卡死活沒法開啟。而且第一個(gè)采集卡的工作也很不穩(wěn)定。經(jīng)過朋友的幫助,才知道,樹莓派第一代上的多個(gè)USB口底層是有USB-HUB的,而這個(gè)HUB芯片有問題,導(dǎo)致了USB bulk通信的不穩(wěn)定。樹莓派上位機(jī)方案,卒。

趕緊尋找其他嵌入式Linux方案,目光轉(zhuǎn)向了Cubieboard 1。又是一路刷系統(tǒng),編譯驅(qū)動(dòng),見第一幀畫面。等到接入第二個(gè)采集卡時(shí),依舊持續(xù)報(bào)錯(cuò)不讓開啟。最后確認(rèn)了,是USB帶寬問題。USB2.0帶寬480Mbps,而一路采集卡就需要占用超過一半帶寬,所以USB控制器就不允許同時(shí)開啟兩個(gè)視頻采集設(shè)備。多路采集卡方案,卒。

下一步如何呢,想到我的電子設(shè)計(jì)水平可以達(dá)到入門級(jí),于是去找模擬開關(guān)。打算用Cubieboard 1的GPIO,控制CD4052/74HC4052,使得4路輸入視頻可以用時(shí)分復(fù)用的方式進(jìn)入1個(gè)采集卡,反正每一路視頻我只需要1fps。就按切換時(shí)間最不靠譜的情況,2幀里拿到1幀靠譜的畫面也行。等到設(shè)計(jì)完視頻切換電路,板子焊接好接入試驗(yàn)。現(xiàn)實(shí)再次是一堵墻。視頻采集卡的輸入視頻在切換輸入信號(hào)時(shí),并不會(huì)重新同步行、場(chǎng)、幀。導(dǎo)致新的畫面一片亂。想要看到新的畫面,只能關(guān)閉視頻采集開再重新打開,這樣就會(huì)觸發(fā)重新的視頻采集同步動(dòng)作。然后我發(fā)現(xiàn)了,基于v4l2的一次關(guān)閉和打開需要0.6-0.7秒。這樣下來1秒無論如何也無法采集到第2路的畫面。

接下來,我甚至考慮過買高速ADC,自己軟件解碼模擬視頻。或者用FPGA來完成采集到信號(hào)識(shí)別行、場(chǎng)、幀,并把緩存完的幀送入上位機(jī)?;赟TM32的DCMI來抓取視頻,并用USB-HS送入上位機(jī)等。但這些都沒有繼續(xù)下來,我就辭職了……

也許的解決辦法

跟硬件打交道,總是會(huì)出現(xiàn)一大堆的不可預(yù)料障礙,很多障礙甚至是無法逾越,只能廢掉方案。

所以靠譜的思路是,一開始就不能對(duì)任何方案有過高的期望。而應(yīng)該一開始就盡可能的多列出一些方案。試驗(yàn)的時(shí)候,各個(gè)方案在經(jīng)費(fèi)允許的情況下,并行的采購(gòu)零配件。三五個(gè)方案因?yàn)槟承┫拗票粡U掉都是正常的,萬不可對(duì)一個(gè)方案過于死心眼堅(jiān)持。很多障礙在做試驗(yàn)之前根本無法預(yù)料,比如上面的SATA口被機(jī)箱擋住,樹莓派自帶的USB-HUB芯片有問題等等。

最后祝大家的項(xiàng)目順利吧。

責(zé)任編輯:張燕妮 來源: 知乎
相關(guān)推薦

2022-09-16 08:00:00

軟件工程師求職薪酬

2021-04-22 09:00:00

軟件工程師代碼

2015-02-28 09:46:35

智能硬件

2013-09-03 09:30:44

軟件工程師軟件工程師頭銜

2009-02-11 13:15:54

軟件工程師女工程師google

2022-01-16 07:12:30

軟件工程師吵架開發(fā)

2023-06-05 10:07:13

軟件工程平臺(tái)工程師

2017-11-09 14:12:44

大數(shù)據(jù)軟件工程師算法工程師

2015-06-02 11:29:55

軟件工程師程序員

2010-08-10 13:22:41

2009-02-12 11:52:23

軟件工程師職業(yè)規(guī)劃價(jià)值

2015-06-02 04:08:42

軟件工程師私活

2018-01-09 17:21:18

軟件工程師創(chuàng)業(yè)代碼

2022-04-18 10:13:32

軟件開發(fā)寫作

2009-02-12 14:45:17

軟件工程師

2014-08-20 10:24:11

軟件工程師

2010-08-10 13:29:58

軟件工程師

2011-05-16 10:05:33

軟件工程師Java工程師

2009-02-26 10:49:29

軟件工程師職業(yè)生涯職業(yè)規(guī)劃

2011-03-04 17:45:30

Quora工程師
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)