-
1 # 1003時光實驗室
-
2 # EndyC
瞭解這個問題,首先要明白嵌入式裝置的生產流程及原理。
一臺嵌入式裝置,這裡就以相機為例。核心部分是CPU,也就是運算核心,總控大腦,當然相機還包含CCD、CMOS這類的感光晶片,也是屬於相機的核心部分。這些晶片,通常是由晶片生產廠商直接整合到一塊PCB線路板上,俗稱開發板。然後由晶片廠商根據晶片的指令集提供相應的作業系統,通常都是UNIX系列的改版系統。到這一步,基本都是彙編範疇,也是開發者不用太過關心的部分。這個作業系統會提供給中間層的開發者一套API,這套API絕大多數都是基於C語言。
相機廠商購買晶片廠商的開發板之後(這裡分開敘述是為了使步驟明確,很多相機廠商自己同時也是晶片廠商,沒有晶片製造能力的相機廠商,則可以採用購買的方式),首先根據晶片廠商提供的API文件為自己生產的硬體編寫驅動程式,再在作業系統的基礎上編寫啟動後的邏輯應用,比如載入驅動、顯示使用者介面等等。這部分開發叫做中介軟體開發,中介軟體開發最終會將作業系統、驅動程式、可執行的邏輯應用全部打包並且採用一定的壓縮演算法(這一步可選,根據相機ROM大小而定),生成一個適應相機ROM大小的firmware,也就是最終使用者可以遇到的韌體升級裡面的“韌體”。這個韌體會透過串列埠或者其他連線方式燒錄到相機的ROM當中。
同時中介軟體廠商會提供給上層應用開發者一套基於自己的邏輯應用而開發的SDK,如NikonCtrl、EosCtrl、SonyWifiCtrl、EDSDK等等。這些SDK對上層提供的也是C介面。上層應用開發者可以使用這些SDK開發運行於PC、PAD、Mobile等裝置上的應用程式,這些應用程式可以透過這樣的路徑【App→SDK→中介軟體邏輯應用→驅動程式→硬體】來實現控制相機的目的。
-
3 # 寒光的攝影生活
相機裡的程式分兩種,一種是直接與硬體層接觸的底層程式碼,如涉及光電轉換數模轉換等,這些程式碼應該就象各位說的用匯編,C,C十十等,另一種是應用層面的程式,就是我們選擇相機直出照片jpg或tiff格式時,相機對raw資料處理生成照片檔案。
回覆列表
本人學過程式設計,但不瞭解相機程式的編制語言。但根據相機硬體特性來看,相機程式應該是組合語言或者是C系列語言編出來的。
既然說到程式語言,就順便再安利幾句為什麼我認為是彙編和C編出來,這是依據這兩種語言的特性決定的。
組合語言是一種用於電子計算機、微處理器、微控制器或其他可程式設計器件的低階語言。它通常被應用在底層,像硬體操作和高要求的程式最佳化的場合,以及驅動程式、嵌入式作業系統和實時執行程式都會用到組合語言。
C語言是一門通用計算機程式語言,應用廣泛。可以透過簡易的方式進行編譯、以及不需要任何執行環境支援便能執行,還提供了許多低階處理的功能。