在硬體公司(晶元公司)做軟體的他們到底在做什麼?

我想知道硬體公司搞軟體的只是在做測試嗎?如果他們在搞底層驅動,那應用晶元的公司豈不就沒得做啦?c編輯器直接就能將c轉化為彙編語言,這些人根本不用寫彙編吧,那要是寫c的話軟體公司直接寫不就完了嗎?展訊要那麼多搞軟體的到底是做啥的?


分很多種情況 我嘗試來答下, 但首先你得有個概念,原廠的demo離實際的產品還是有些距離的,這個距離是實驗室樣品與產品之間的距離,產生的原因主要有三部分

#原廠SDK包離實際產品有一定距離的原因#

  1. 原廠希望自己的方案商或者客戶有一定的RD FAE能力,這對他們來說成本是降低非常多的,也有利於雙方長期發展。所以有些時候會刻意規劃這種差距,也算是豬隊友過濾的一個方式。

  2. 方案商或者部分客戶需要原廠的保護,比如我是有研發實力和沉澱的方案商,我希望我的沉澱和我們的長期合作能讓我在同行中脫穎而出,不只是供貨和價格(價格戰永遠無法成為生存的核心競爭力只能作為切入點),這種情況原廠也是非常支持的,所以這種的處理方式是 原廠的領導層介面會跟方案商說: 你們的部分問題或者解決的問題一定不要讓我們原廠的FAE知道,你們沒有義務告知,這不影響我們對你們的權利支持。

  3. 方案商或者客戶由於要對產品最終市場的很多利益直接負責,會引入大量的產品級的測試,這個部分的成本原廠是想盡量避免的。

#原廠的主要軟體工作#

這裡不討論晶元設計本身的硬體編程

  1. 驅動的開發,這裡的驅動主要是指boot,boot的部分有很多彙編,同時會要求對各個寄存器異常熟悉,架設各種引導下載等的框架代碼。
  2. 生產工具(工程化) 就是各種IDE 啊 各種下載工具啊 測試工具啊 配置工具啊之類的,這個部分由於要和1部分交涉比較緊密 也設計到晶元的具體框架 包括需要對外屏蔽不可見的部分 所以基本是不會交給方案商或者客戶自己去做的。
  3. SDK (ADK?)定製 也就是讓晶元應用公司(方案公司或者直接客戶公司)直接面對使用的部分。 對於原廠來說,其實他們已經完成的實際產品功能的百分之九十幾 性能的百分之六十幾。 但對於晶元應用方,基本認為這是理所當然的,所以感覺這貨要產品化? 剩下的不是百分之10的路要走 而是百分之百。。。

3.1 SDK又分很多種方向:

1 通用型,比如你拿個STM32的晶元的,基本就是幾個原廠的lib庫就搞定了。 再嚴格點的,比如你拿一個broadcom的 HCI藍牙晶元,它有完整的文檔和部分產品代碼,你可以自己在它上面實現幾乎所有藍牙應用。 這種的話,基本晶元應用方就開發工作量比較大,而且各顯神通了。

2 半通用型,特別是部分SOC的晶元, 基本鎖定了你這個晶元的應用方向和大概場景 你的所有代碼框架都得跟著他設定的來,沒得多少變動空間。當然如果平台比較大,比如MTK等的平板方案 雖然鎖死了你是用來做平板的,但整體的發揮空間還是非常非常大的。

3 鎖死型 這類有些是留部分介面打補丁, 比如外掛個EEPROM 上電載入的RAM裡面 和SOC晶元已經有的大部分程序一起運行, 再比如只是留部分參數的介面,給你配置,基本都是配置參數。

當然集中的迷惑點一般都在半通用性和鎖死型。

先說鎖死型, 這裡舉例藍牙音頻耳機的例子,大部分耳機都是這類型,以配置方式為主,但這類配置也可以很複雜,不是簡單的設置某些參數為0 1 而是由簡單的代碼邏輯 ,更主要是要結合你產品的特性進行調試。簡單的說開發的核心部分都不在藍牙本身也不在操作這個SOC晶元本身,而是聲音處理 讓自己的硬體特性和當前的參數 通過調試相匹配。 這些東西很多原廠是不可能有能力和晶元應用方比實力的,因為是應用方才在一線打戰,有一線的調試反饋信息市場反饋信息,市場才是決定這一切的主體。

再說 半通用型, 這種各個原廠推廣方式風格會導致差異非常非常大,不好具體說,簡單說是和鎖死型類似,原廠和應用商各有優勢。

但 這個行業總體的發展勢頭是變化的, 特別是互聯網經濟出現以後(沒錯 又是它 是它讓CS米米比EE多 又是它讓EE大形勢變了),互聯網出現以後 對成本的擠壓非常嚴重,嚴重的最粗暴表達方式是壓縮中間過程, 比如方案商,不好意思 我想幹掉你,當我量比較大的時候我需要和原廠直接對接,要幹掉你。。。 我之前一直在方案商 還是比較大的那種,明顯感受到了這種擠壓。。。

現在轉戰原廠做SDK 去坑應用商了。。。但這意味著應用商的軟體量降低了嗎? 沒有 ,應用商往兩個方向變形:

一更專業的領域與市場, 比如你不能要求一個MTK 全智 等提供一套非常完善的飛行控制系統或者工控系統。

二: 更能四兩撥千斤了,對程序員要求也更高,由於大客戶直接對口原廠越來越大,導致大型應用方空間越來越小,但小型方案團隊卻非常適合生存,而原廠需要幾十號上百號,方案商基本幾個人要搞定整套系統的所有東西,每個人要求的全棧能力會更強。

~~~~~~~~~~~~~~~~~帶小孩了 先寫這麼多吧~~~~~~~~~~~~~~~~~~~


有些晶元裡面有firmware的,要做軟體的寫.

晶元廠商也要為自己的晶元出方案的,不是說你出了個晶元,給個datasheet,然後下游廠商分分鐘就自己搞出產品了,都是有測試方案,甚至有做產品方案的定製的(其實很多終端公司的產品就是在換殼換logo啊,都是方案公司做的,有時候方案公司的源頭就是晶元廠商本身,當然了,量小了打電話人家都沒人理你).

還有,人家不只賣晶元啊,人家也得有支持啊,甚至要到用戶那長期出差啊...

而且哪家晶元廠商沒出些工具啥的,什麼IDE,編輯器之類的,都是廠商做的.

還有,驅動最初基本都是由廠商提供的,各家可能會根據這個改改...驅動也不是通用的啊,又不是PC...他們寫那個驅動和windows上那個驅動就不是一個層面的,更像個怎麼操縱晶元的demo...


有bug啊 ,沒有軟體救場怎麼規避……

我是不是暴露什麼了


之前不也是晶元公司需要軟體工程師做,想得到是寫個driver開發包。

有個叫mtk的把整套都弄好了,就等你貼牌了,從此降低了下游oem的門檻,開始什麼鳥都可以做手機平板了,也因此消費電子迅速席捲祖國大地,飛入尋常百姓家,可謂普及做了豐碑式貢獻。

大家看到這塊肉就角力起來,成就了爭奪市場佔有率的一道道烽火狼煙。

要把上面系統做好,就需要軟體工程師啦,除此之外,硬體出來是需要做simulation(硬體設計者的軟體), emulation(fpga驗證的軟體),verify(打板後驗證的軟體),這幾個也都需要軟體姿勢的。

總而言之,一方面市場發展(事物發展)所需,另一方面軟與硬對於任何硬體公司都一直存在,只是以前軟體工程師或許在20%,現在或許在40%這樣。

本質上沒什麼不同,其實很多公司都是這樣發展的,改變模式,給人普遍實惠,降低門檻引導消費,完成遍地開花,最後獨裁一根苗。

手機答題

裝逼敬上


有的晶元內部程序是固定的,實現特定功能。出廠只需要OTP給參數。


研究怎麼把x86指令集動態轉換成vliw指令運行


說個我知道的,intel 有出編譯器,他家的cpp和fortran編譯器配合自家cpu,效果拔群!


晶元公司提供給下游公司往往不光晶元本身。一般情況下包含如下:

1、晶元datasheet

2、軟體demo源碼

3、硬體demo原理圖

4、各種性能測試報告

5、ibis模型

6、demo板

7、sdk開發包

8、硬體設計相關的文檔

9、demo配置的文檔

等等。

晶元公司流片完之後,首先內部開發人員進行測試,測試完後。會把各個demo發給客戶,demo上晶元廠家已經對晶元的各個介面的功能進行調試了,而且已經實現了下游廠家設備的大部分功能。下游廠家所不同的是其外圍的晶元等差異。

所以晶元廠家需要找很多嵌入式軟體工程師來完成設計。晶元廠家的fae對晶元和代碼乃至各個寄存器都相當的熟練。


給我們上verilog的老師說,intel公司做軟體的人只寫文檔,代碼編譯器自動生成。


請參考《嵌入式系統開發之道》一書的」16-01 SA(System Application)團隊簡介「一節內容


硬體(IC)是載體,軟體(FW)是靈魂。多數的FAE都是在幫客戶調FW,軟體重要性不言而喻。


上面的回答都很全面了,想跳槽的可以聯繫我們拓馳獵頭http://www.touchhr.com,哈哈!

我們提供很多晶元公司的AE、系統架構、演算法、FAE等嵌入式軟體、硬體方面的職位。

微信:13686864536


比如針對特定晶元的調試器,應該說算是晶元的附屬產品吧。我用你生產的晶元做開發,有個官方調試器還特好用的,是不是更加願意在這晶元上開發呢?比如(賣廣告了)AMD基於HSA平台的GPU調試器可以在shader代碼裡頭直接設斷點,是真的在GPU代碼裡面設斷點哦:http://gpuopen.com/compute-product/rocm-gdb/ 類似的英偉達有Nsight,英特爾有個OpenCL什麼的忘名字了。


設計,測試,應用都需要軟體工程師,只是語言用的不同。

應用出了做編譯器,還需要開發模擬器。另外還需要晶元本身的應用工程師,一般不做具體產品,主要為客戶提供技術支持,客戶用你晶元,開發過程中肯定會遇到各種問題,這就需要原廠來一起解決


我來告訴你吧 。我一個同學做晶元的,在深圳開了個晶元公司。現在公司賣了,大概賣了兩千多萬。下面進入正題。。。

軟體開發最本源的是進行演算法設計,當然你弄個vs在那拖控制項除外。相同,晶元公司最本源的也是演算法設計,從這方面來看,這兩者是相同的。

晶元公司的軟體人員不是做什麼底層驅動開發,而是在做演算法設計,比如設計一套指令集。。。


需要根據硬體特性來改編譯器或者操作系統。


我在一家硬體主導的公司做過軟體開發,工作一般是:

1,寫演算法,將底層硬體傳出來的數據做處理,畢竟硬體更新不容易,軟體更新比較方便一些;

2,寫sdk和sample code,自己做技術支持;

3,客戶沒有技術能力,需要整套解決方案,進行定製化開發;

4,偶爾老闆拍腦袋想搞個大新聞的時候,需要做配合開發。

etc.


有些晶元廠商會做些reference design. 就是演示自己的各種酷炫應用案例, 但是沒有經過嚴格測試。。國內一些代工廠就直接拿去用到成品裡頭也是醉了。。


主要有兩個原因

1 做demo演示給客戶。

2 我認為這個現在是主要原因。使用晶元的公司開發能力有限(特別是國內的一些公司),需要IC公司輔助開發,甚至IC公司做主要的開發。現在IC行業競爭越來越激烈,單純賣硅已經不行了,需要提供整個開發平台。當年功能機時代MTK之所以吊打高通,就是他們的交鑰匙策略,從電路板,到軟體全都有參考設計,像手機中的戰鬥機公司等拿過來加個殼就行。

基於以上原因,IC公司的軟體開發人員越來越多


firmware,kernel,secure OS,APP,晶元公司不僅僅只是出個晶元就行了,還需要提供方案。


前輩你好,我來補充幾句吧。

1. c編輯器直接就能將c轉化為彙編語言,這些人根本不用寫彙編吧,那要是寫c的話軟體公司直接寫不就完了嗎?

彙編也會寫,有些應用場景,針對相對應的處理器採用內嵌彙編的方式性能會提高很多。這也要求對彙編有一定要求。所以硬體公司一般都會幫忙搞定,或者做個參考設計。

2. 展訊要那麼多搞軟體的到底是做啥的?

一個硬體公司一個硬體工程師最好對應10個以上軟體工程師。如果需要硬體推廣出去,生態很重要,使用環境也很重要。不同型號處理器全流程工具鏈,調試環境搭建,操作系統等等。。總覺得我們公司軟體組的活都是排的滿滿的。。


推薦閱讀:

如何看待 macOS Sierra 代碼中發現新增的 ARM 處理器,以及要求提交中間代碼一事?

TAG:ARM | 晶元集成電路 | ARM架構 | ARM編譯器 | ARM指令 |