• 簡介集成電路引線框電鍍四點要求

    簡介集成電路引線框電鍍四點要求

    引線框是將芯片的功能極引出與電子線路連接的重要連接線,因此對質量有着嚴格的要求,以下以鍍銀為例來説明這些要求。 (1)鍍層純度與厚度 為了保證引線有良好的可焊性,以鍍銀為例,要求所鍍鍍層的純度達99.9%,厚度則要求在3.5μm以上。 (2)鍍層外觀 鍍層結晶要求細緻,外觀為半光亮,光亮度過高,會難免有內應力的影響,硬度也會偏高,會對焊接性能不利,但不光亮的鍍層會結晶粗糙,容易表面變色,也影響焊接性能。 (3)鍍層結合力 鍍層結合力的要求是要能通過熱衝擊試驗,即要求能通過在450℃温度下烘烤3min而不得有起皮、脱落、變色、氧化等情況發生。 (4)局部電鍍 大多數引線框要求只對需要的部位進行電鍍,背面是不需要鍍上鍍層的。 你對集成電路引線框電鍍四點要求瞭解了嗎?

    時間:2020-10-22 關鍵詞: 集成電路 引線框 電鍍

  • 紫外激光器在工業領域PCB中的4大主要應用,你瞭解嗎?

    紫外激光器在工業領域PCB中的4大主要應用,你瞭解嗎?

    搞過PCB的小夥伴都知道,紫外激光器是很多工業領域中各種PCB材料應用的最佳選擇,從生產最基本的電路板,電路佈線,到生產袖珍型嵌入式芯片等高級工藝都通用。 這一材料的差異性使得紫外激光器成為了很多工業領域中各種PCB材料應用的最佳選擇,從生產最基本的電路板,電路佈線,到生產袖珍型嵌入式芯片等高級工藝都通用。 紫外激光器在生產電路時工作迅速,數分鐘就能將表面圖樣蝕刻在電路板上。這使得紫外激光器成為生產PCB樣品的最快方法。研發部門注意到,越來越多的樣品實驗室正在配備內部紫外激光系統。 依賴於光學儀器檢定,紫外激光光束的大小可以達到10-20μm, 從而生產柔性電路跡線。圖2中的應用表明紫外線在生產電路跡線方面的最大優勢,電路跡線極其微小,需要在顯微鏡下才能看見。 這一電路板尺寸為0.75英寸x0.5 英寸,由一塊燒結陶瓷基片和鎢/鎳/銅/表面組成。激光器能夠產生2mils的電路跡線,間距為1 mil,從而使得整個間距僅為3 mils。 雖然使用激光光束生產電路是PCB 樣品最快的方法,但大規模進行表面蝕刻應用最好留給化學工藝。 應用2:PCB的拆卸 紫外激光器切割對於大型或小型生產來説都是一個最佳的選擇,同時對於PCB的拆卸,尤其是需要應用於柔性或剛柔結合的電路板上時也是一個不錯的選擇。拆卸就是將單個電路板從嵌板上移除,考慮到材料柔性的不斷增加,這種拆卸就會面臨很大的挑戰。 V槽切割和自動電路板切割等機械拆卸方法容易損傷靈敏而纖薄的基板,給電子專業製造服務(EMS)企業在拆卸柔性和剛柔結合的電路板時帶來麻煩。 紫外激光器切割不僅可以消除在衝緣加工、變形和損傷電路元件等拆卸過程中產生的機械應力的影響,同時比應用如CO2激光器切割等其它激光器拆卸時產生熱應力影響要少一些。 “切割緩衝墊”的減少能夠節省空間,這意味着元件能夠放置在更靠近線路邊緣的位置,每一塊電路板上可以安裝更多線路,將效率提升到最高,從而達到柔性線路應用的最大極限。 應用3:鑽孔 另外一種利用紫外激光器小型光束尺寸和低應力屬性的應用是鑽孔,包括貫穿孔、微孔和盲埋孔。紫外激光器系統通過聚焦垂直波束徑直切割穿透基板來鑽孔。依據所使用的材料,可以鑽出小至10μm的孔。 紫外激光器在進行多層鑽孔時尤為有用。多層PCB使用複合材料經熱壓鑄入在一起。這些所謂的“半固化”會發生分離,特別是在使用温度更高的激光器加工後。但是,紫外激光器相對來説無應力的屬性就解決了這一問題,如圖4所示。 在圖示橫切面,一塊14 mil的多層板上鑽直徑為4mil的孔。這一在柔性聚酰亞胺鍍銅基板上的應用,顯示了各層之間沒有出現分離。關於紫外激光器低應力屬性,還有重要一點:提高了成品率數據。成品率是從一塊嵌板上移除的可用電路板的百分率。 在製造過程中,很多情況都會造成電路板的損壞,包括斷裂的焊點、破裂的元件或分層。任一種因素都會導致電路板在生產線上被丟進廢物箱而非進入運輸箱。 應用4:深度雕刻 另外一種展示紫外激光器通用性的應用是深度雕刻,這包含多種形式。利用激光器系統的軟件控制,激光光束設定進行受控消融,即能夠按照所需深度在某一材料上進行切割,在轉向另外一種深度和開始另外一個任務之前可以停止、繼續和完成所需的加工。 各種深度應用包括:嵌入芯片時用到的小型生產以及將有機材料從金屬表面移除的表面研磨。 紫外激光器還可以在基板上進行多步驟操作。在聚乙烯材料上,第一步是用激光產生一個深度為2 mils的凹槽,第二步是在上一步的基礎上產生8 mils的凹槽,第三步是10mils的凹槽。這説明紫外激光系統所提供的整體用户控制功能。 結論:一種萬能的方法 紫外激光器最為引人矚目的是能夠用單一的步驟來完成上述所有應用。這對於製造電路板意味着什麼?人們不再需要在不同的設備上使用同時產生影響的工藝和方法來完成某一應用,而只需一次加工就可以獲得完整的零件。 這一流線型的生產方案有助於消除電路板在不同流程間轉換時產生的質量控制問題。紫外線無碎屑消融特性也意味着不需要進行後加工清洗。

    時間:2020-10-22 關鍵詞: PCB 紫外激光器

  • 淺分析PCB硬板和FPC軟板差異

    淺分析PCB硬板和FPC軟板差異

    今天小編和大家分享一下PCB硬板和FPC軟板有什麼不同,和硬板軟板各自的特點。 硬板:PCB,常用作主板,不可以彎折。 硬板:PCB (Printed Circuit Board);軟板:FPC或FPCB(Flexible Printed Circuit Board);軟硬結合板:RFPC或RFPCB(Rigid-Flex Printed Circuit Board),顧名思義,就是兼有硬板和軟板特點的一種新型的線闆闆。硬板部分跟PCB線路板一樣,有一定的厚度和強度,可以安裝電子元件並承受一定的機械力,而軟板部分通常是用來實現三維安裝的,軟板的使用使得整塊軟硬結合板在局部可以彎曲。 軟板:FPC,又稱柔性線路板,是可以彎折的。 柔性電路板(FlexiblePrintedCircuit,FPC),又稱軟性電路板、撓性電路板,其以質量輕、厚度薄、可自由彎曲摺疊等優良特性而備受青睞,但國內有關FPC的質量檢測還主要依靠人工目測,成本高且效率低。而隨着電子產業飛速發展,電路板設計越來越趨於高精度、高密度化,傳統的人工檢測方法已無法滿足生產需求,FPC缺陷自動化檢測成為產業發展必然趨勢。

    時間:2020-10-22 關鍵詞: PCB fpc fpc硬板

  • 電路中的“高頻”和“高速”有什麼區別

    電路中的“高頻”和“高速”有什麼區別

    “高速電路”已經成為當今電子工程師們經常提及的一個名詞,但究竟什麼是高速電路? 這的確是一個“熟悉”而又“模糊”的概念。而事實上,業界對高速電路並沒有一個統一的定義,通常對高速電路的界定有以下多種看法:有人認為,如果數字邏輯電路的頻率達到或者超過45MHZ~50MHZ,而且工作在這個頻率之上的電路已經佔到了整個電子系統一定的份量(比如説1/3),就稱為高速電路;也有人認為高速電路和頻率並沒有什麼大的聯繫,是否高速電路只取決於它們的上升時間;還有人認為高速電路就是我們早些年沒有接觸過,或者説能產生並且考慮到趨膚效應的電路;更多的人則對高速進行了量化的定義,即當電路中的數字信號在傳輸線上的延遲大於1/2上升時間時,就叫做高速電路,本文也沿用這個定義作為考慮高速問題的標準 此外,還有一個容易產生混淆的是“高頻電路”的概念,“高頻”和“高速”有什麼區別呢?對於高頻,很多人的理解就是較高的信號頻率,雖然不能説這種看法有誤,但對於高速電子設計工程師來説,理解應當更為深刻,我們除了關心信號的固有頻率,還應當考慮信號發射時同時伴隨產生的高階諧波的影響,一般我們使用下面這個公式來做定義信號的發射帶寬,有時也稱為EMI發射帶寬。 F=1/(Tr*π),F是頻率(GHz);Tr(納秒)指信號的上升時間或下降時間。 通常當F》100MHz的時候,就可以稱為高頻電路。所以,在數字電路中,是否是高頻電路,並不在於信號頻率的高低,而主要是取決於上升沿和下降沿。根據這個公式可以推算,當上升時間小於3.185ns左右的時候,我們認為是高頻電路。 對於大多數電子電路硬件設計工程師來説,完全沒有必要拘泥於概念的差異,心中應該有個廣義的“高速”定義,那就是:如果在確保正確的電氣連接的前提下,電路仍不能穩定的高性能工作,而需要進行特殊的佈局,佈線,匹配,屏蔽等處理,那麼,這就是“高速”設計。 這樣你能區別開高速與高頻了嗎?

    時間:2020-10-22 關鍵詞: 高頻 高速電路

  • PCBA加工對BGA佈局設計的要求及其優化的必要性

    PCBA加工對BGA佈局設計的要求及其優化的必要性

    眾所周知,好的設計才能生產出好的產品,BGA佈局設計在PCB設計上需要格外注意,BGA位置放置不當,非常容易導致PCBA品質問題,接下來介紹PCBA加工對BGA佈局設計的要求。 優化BGA佈局設計的必要性 BGA尺寸大,焊點截面積小,PCB彎曲時其四角部位的焊點成為應力集中部位,如果PCBA加工中應力過大,將可能導致焊點開裂。 PCBA加工對BGA佈局設計的要求 1.儘可能佈局在PCB靠近傳送邊的部位,因為焊接時變形相對小些。 2.儘可能避免佈局在L形板的拐角處、壓接連接器附近。 3.儘可能避免正反面鏡像佈局。如果必須這樣佈局,PCB的板厚應≥2.0mm,這主要是從長期可靠性考慮的,來源於多家知名企業的研究結論,鏡像佈局BGA可靠性降低50%以上。 4.PBGA儘可能避免佈局在第一裝配面(第一次焊接面、Bottom面)。 5.BGA儘可能避免佈局在拼版分離邊附近。 你對BGA佈局設計的要求和優化了解了嗎?

    時間:2020-10-22 關鍵詞: bga pcba 佈局設計

  • 淺析PCBA加工出現橋接的原因及解決方法

    淺析PCBA加工出現橋接的原因及解決方法

    我們在PCBA加工時,會遇到各種各樣的問題,橋接是PCBA加工中常見的缺陷之一,它會引起元器件之間的短路,遇到橋接必須返修。 1.焊膏質量問題 錫膏中的金屬含量較高,尤其是在過長的印刷時間之後,往往會增加金屬含量,從而導致IC引腳橋接; 焊膏粘度低,預熱後擴散到焊盤上; 預熱後擴散到焊盤,焊錫膏崩解性差。 解決方案:調整焊膏混合或使用良好的焊膏。 2.印刷機系統問題 印刷機的可重複性差,對準不均勻(鋼板對準不良,PCB對準不良),導致錫膏印刷到焊盤的外部,通常在生產精細QFP時會見到; PCB窗板的尺寸和厚度設計不正確,PCB焊盤設計中SN-PB合金塗層不均勻,導致焊膏量過多。 解決方案:調整印刷機以改善PCB焊盤的塗層。 3.貼裝問題 焊膏壓縮後過大的焊膏壓力和擴散流是生產中的常見原因。另外,貼片精度不夠,元件會出現位移,IC引腳變形等情況,也容易導致橋接。 4.預熱問題 迴流焊爐的加熱速度太快,焊錫膏溶劑沒有時間揮發。 解決方案:調整SMT貼片機的Z軸高度和迴流爐加熱速率。

    時間:2020-10-22 關鍵詞: PCB 橋接 pcba加工

  • 如何解決SMT加工QFN和LGA空洞不良問題?

    如何解決SMT加工QFN和LGA空洞不良問題?

    空洞帶來的影響是比較大的,可靠性問題–散熱問題–各種失效–客户投訴;你想解決空洞嗎? QFN元件空洞原因 快速增長,底部散熱焊盤過大,空洞》25% QFN空洞的解決方案 鋼網設計》爐温調整》錫膏調整 另一種簡單又方便的解決方案-一—焊片如何將焊片應用於QFN元件LGA元件空洞? 二、QFN空洞原因 QFN結構圖 四側無引腳扁平封 接地焊盤在元件本體下,通常尺寸為4mm*4mm 接地焊盤與錫膏直接接觸 錫膏與鋼網 錫膏中助焊劑體積佔50%,錫量越多,助焊劑量相應更多。》對於鋼網開孔,需要更多地出氣通道,但過多的通道意味着錫量減少 過大的空洞會造成短期的產品失效或長期的可靠性風險 PCBA裝配時單個大空洞的危害 LED,汽車電子,手機產品,以及很多工業產品對空洞非常敏感,要求降低空洞 2.1鋼網設計對空洞的影響 通過X-ray檢測,發現大多時候QFN空洞的形態都是一個或幾個較大的空洞 在實驗中,QFN接地焊盤的尺寸為4.1mm*4.1mm,在鋼網設計上,我們採用如下幾種方式 2.2爐温設計對空洞的影響 3.3錫膏調整 助焊劑在熔化的焊點裏很難揮降低出氣 -適當的高沸點的溶劑 -溶劑的揮發性 增加助焊劑的活性 一更好的焊接性,有助於擠出助焊劑的氣體 三、另一種解決方案-焊片 什麼是焊片? 與錫膏相同的屬性,相同合金的焊料SnPb,SAC305等等。 固態,不同的形狀,方形,圓形,不規則形狀 體積可精確計算 1%~3%的助焊劑或無助焊劑 為什麼焊片也需要助焊劑? 焊片表面鍍助焊劑可幫助QFN焊盤和PCBPAD去除氧化,有助於焊接 1%~3%Flux不會形成較大的出氣而造成空洞過大。 四、如何將焊片應用於QFN元件? 焊片厚度? 在實驗中,接地焊盤尺寸為4.1mm*4.1mm,焊片尺寸為3.67mm*3.67mm*0.05mm,表面鍍1%的助焊劑 一般而言,焊片的尺寸佔焊盤的尺寸比為80%-90% 焊片/鋼網厚度--50~70% 在實驗中,鋼網為4mil厚度,焊片厚度為2mil。在QFN焊盤開孔上,接地焊盤不需要錫膏焊接,只需在四個角各開一個0.4mm的圓孔以固定焊片 五、如何貼片? 料帶裝,機器自動貼片 也可選擇盒裝,料盤裝,或散裝,手工貼片 SMT爐温調整? 不需要,與其它元件一起過爐 相同的合金,温度一致 僅1%~3%助焊劑,對出氣無要求 焊接效果 焊片中1%助焊劑,相比焊膏,不僅減少了助焊劑的比例,同時焊片中的助焊劑主要為固體成分,減少了揮發物的含量。 1%的助焊劑即可去除焊盤表面的氧化,幫助形成良好的焊接。 空洞率為3~6%,單個最大空洞約0.7% 六、什麼是LGA空洞? lGA焊盤-——-58個2mm直徑的圓形焊盤和76個1.6mm直徑的圓形焊盤,焊盤上有過孔。空洞率在25%-45%之間。 解決方案1---採用焊片,空洞降到6-14% 解決方案2---Indium10.1HF 焊片與錫膏兼容性問題 實驗中採用免洗的錫膏和免洗的助焊劑。 如果錫膏為水洗型,焊片可採用表面不塗覆助焊劑,但是焊接效果是否達到理想值需要再確認 錫膏只需印刷QFN接地焊盤四個角,對錫量的要求是越少越好,僅作固定焊盤的作用 焊片尺寸一般為接地焊盤的80% 焊片的厚度一般為鋼網錫膏印刷厚度的50%~70% 免洗助焊劑重量比一般為1.5% 需考慮免洗助焊劑兼容性 貼片時也注意壓力不要過大,以免造成焊片擠壓變形不需額外調整爐温曲線 七、總結 不同的錫膏對QFN空洞的影響非常大鋼網開孔和焊爐調整對降低空洞有一定的幫助在工藝中採用焊片: 焊片形狀多樣化,表面含助焊劑,爐後非常低的助焊劑殘留物; 可採用料帶包裝,SMT貼片設備快速精確貼裝; 在迴流時,不需要對爐温進行任何的修改; 極低的空洞率,無論是大焊盤或小焊盤; 此外,在SMT僅通過印刷焊膏無法提供足夠的焊料用量時,貼裝焊料可以提供精確且可重複的焊料用量,達到增加焊料的作用。 這樣你對以上內容瞭解了嗎?

    時間:2020-10-22 關鍵詞: qfn smt lga

  • 將大數據轉變為智能數據?利用嵌入式AI就可以

    將大數據轉變為智能數據?利用嵌入式AI就可以

    大數據產生於工業4.0時期。傳感器和可用數據源越來越多,通常要求機器、系統和流程的虛擬視圖更詳細。這自然會增加在整個價值鏈上產生附加值的潛力。但與此同時,有關如何挖掘這種價值的問題不斷出現。畢竟,用於數據處理的系統和架構變得越來越複雜。只有使用相關、優質且有用的數據,也就是智能數據,才能挖掘出相關的經濟潛力。 挑戰 收集所有可能的數據並將其存儲在雲中,希望以後對其進行評估、分析和構建使用,這仍然是一種廣泛採用的挖掘數據價值方法,但不是特別有效。從數據中挖掘附加值的潛力仍未得到充分利用,並且以後再尋找解決方案會變得更加複雜。更好的替代方法是儘早考慮確定哪些信息與應用相關,以及可以在數據流的哪個位置提取信息。可以用細化數據來打比方,即從整個處理鏈的大數據中提取出智能數據。可在應用層決定哪些AI算法對於單個處理步驟的成功概率較高。這個決定取決於邊界條件,如可用數據、應用類型、可用傳感器模型和有關物理層處理的背景信息。 對於單獨立的理步驟,正確處理和解讀數據對於從傳感器信號生成真正的附加值非常重要。根據應用的不同,正確解讀分立傳感器數據並提取所需的信息可能很困難。時間行為通常會發揮作用,並直接影響所需的信息。此外,還必須經常考慮多個傳感器之間的依賴關係。對於複雜的任務,簡單的閾值和手工確定的邏輯已不足以應對。 AI算法 相比之下,通過AI算法進行數據處理可以自動分析複雜的傳感器數據。通過這種分析,可從數據處理鏈中的數據自動獲得所需的信息,從而獲得附加值。 對於始終屬於AI算法一部分的模型構建,基本上有兩種不同的方法。 一種方法是通過公式、傳感器數據與所需信息之間的顯式關係進行建模。這些方法需要以數學描述的形式提供物理背景信息。這些所謂基於模型的方法將傳感器數據與此背景信息相結合,針對所需信息產生更精確的結果。這裏最廣為人知的示例是卡爾曼濾波器。 如果有數據,而沒有可使用數學方程形式描述的背景信息,那麼必須選擇所謂的數據驅動方法。這些算法直接從該數據中提取所需的信息。它們包含所有的機器學習方法,包括線性迴歸、神經網絡、隨機森林和隱式馬爾可夫模型。 選擇哪種AI算法通常取決於有關應用的現有知識。如果有廣泛的專業知識,AI將發揮更大的支持作用,所使用的算法也很初級。如果沒有專業知識,所使用的AI算法可能要複雜得多。在很多情況下,由應用定義硬件,從而限制AI算法。 嵌入式、邊緣或雲實現 包含每單個步驟所需的所有算法的整體數據處理鏈必須以能夠儘可能生成附加值的方式實現。通常在總體層級實現——從具有有限計算資源的小型傳感器,到網關和邊緣計算機,再到大型雲計算機。很明顯,這些算法不應只在一個層級上實現。而儘可能接近傳感器實現算法通常會更有利。通過這種方式,可以在早期階段對數據進行壓縮和細化,並降低通信和存儲成本。此外,通過早期從數據中提取基本信息,在更高層級開發全局算法就沒那麼複雜。在大多數情況下,流分析區域中的算法也有助於避免不必要的數據存儲,由此降低數據傳輸和存儲成本。這些算法只使用每個數據點一次;也就是説,直接提取完整信息,且無需存儲數據。 在終端(例如,嵌入式AI)上處理AI算法需要採用嵌入式處理器,以及模擬和數字外設,用於數據採集、處理、控制和連接。處理器還需要能夠實時捕獲和處理本地數據,以及擁有執行先進的智能AI算法的計算資源。例如,ADI的ADuCM4050基於ARMCortex-M4F架構,提供集成且節能的方法來嵌入AI。 實施嵌入式AI遠遠不止是單純採用微控制器。為了加快設計,許多硅芯片製造商都構建了開發和評估平台,例如EV-COG-AD4050LZ。這些平台將微控制器與傳感器和HF收發器等組件結合在一起,使工程師無需深度掌握多種技術,就能探索嵌入式AI。這些平台可擴展,使得開發人員能夠使用不同的傳感器和其他組件。例如,通過使用EV-GEAR-MEMS1Z擴展板,工程師能夠快速評估不同的MEMS技術,例如,該擴展板中使用的ADXL35x系列(包括ADXL355)提供出色的振動校正、長期可重複性和低噪聲性能,並且尺寸很小。 平台和擴展板(例如EV-COG-AD4050LZ和EV-GEAR-MEMS1Z)的組合讓工程師能夠基於振動、噪聲和温度分析來了解結構健康狀況,以及實施機器狀態監控。其他傳感器也可根據需要連接到平台,以便所使用的AI方法可以通過所謂的多傳感器數據融合來更好地估計當前的情況。這樣,即可使用更好的粒度和更高的概率,對各種運行狀態和故障情況進行分類。通過平台上的智能信號處理,大數據在本地就變成智能數據,使得只有與應用案例相關的數據才會發送至邊緣或雲端。 平台方法還可以簡化通信,因為擴展板可用於實施不同的無線通信。例如,EV-COG-SMARTMESH1Z具有高可靠性、魯棒性和極低功耗特性,支持適合大量工業應用的6LoWPAN和802.15.4e通信協議。SmartMeshIP網絡由負責採集和中繼數據的無線節點的高度可擴展、自成型多跳Mesh網絡組成。網絡管理器監視和管理網絡性能及安全性,並與主機應用程序交換數據。 特別是對於電池供電的無線狀態監控系統,嵌入式AI可實現完整附加值。通過ADuCM4050中嵌入的AI算法將傳感器數據在本地轉換為智能數據,與直接將傳感器數據傳輸到邊緣或雲端相比,數據流更低,因此功耗也更低。 應用 AI算法開發平台(包括為其開發的AI算法)廣泛應用於機器、系統、結構和過程控制領域,從簡單的異常檢測擴展到複雜的故障診斷。通過集成的加速度計、麥克風和温度傳感器,可以實現多種功能,例如監測來自各種工業機器和系統的振動和噪音。嵌入式AI可用於檢測過程狀態、軸承或定子的損壞、控制電子設備的故障,甚至是因電子設備損壞而導致的未知系統行為變化。如果預測模型適用於特定的損壞,甚至可以在本地預測這些損壞。通過這種方法,可以在早期階段採取維護措施,從而避免不必要的基於損壞的故障。如果不存在預測模型,平台還可以幫助學科問題專家不斷了解機器的行為,並隨着時間的推移,得出一個全面的機器模型用於預測維護。 理想情況下,通過相應的本地數據分析,嵌入式AI算法應該能夠確定哪些傳感器與各自的應用相關,以及哪種算法最適合它。這意味着平台具有智能可擴展性。目前,學術專家仍然必須為各自的應用找到理想算法,儘管只需對各種機器狀態監控應用進行很少的實施工作,即可擴展AI算法。 嵌入式AI還應對數據的質量作出決定,如果數據質量不佳,就為傳感器和整個信號處理找到並進行相應設置。如果採用多種不同的傳感器模式進行融合,則使用AI算法可彌補某些傳感器和方法的不足。通過這種方式,可提高數據質量和系統可靠性。如果傳感器被AI算法劃分為與應用不太相關,將相應地控制其數據流。 ADI的開放式COG平台包含可免費使用的軟件開發套件以及許多硬件和軟件示例項目,用於加速原型創建、促進開發並實現最初的想法。通過多傳感器數據融合(EV-GEAR-MEMS1Z)和嵌入式AI(EV-COG-AD4050LZ),可創建穩健可靠的無線智能傳感器Mesh網絡(SMARTMESH1Z)。 DzianisLukashevich是ADI公司的平台和解決方案總監。他主要關注大趨勢、新興技術、完整解決方案,以及塑造行業未來,並在廣闊的市場中變革ADI業務的新商業模式。DzianisLukashevich於2012年加入德國慕尼黑的ADI銷售與營銷部。他在2005年獲得慕尼黑工業大學電氣工程博士學位,2016年獲得華威商學院工商管理碩士學位。 FelixSawo於2005年獲得德國伊梅諾科技大學機械電子理學碩士學位,2009年獲得卡爾斯魯厄理工學院計算機科學博士學位。畢業之後,他在弗勞恩霍夫協會光電、系統技術和圖像處理研究所(IOSB)擔任科學家,開發機器診斷算法和系統。自2011年起,他一直擔任KnowTIon的首席執行官,專注於傳感器融合和自動數據分析的算法開發。

    時間:2020-10-22 關鍵詞: AI 大數據 嵌入式ai

  • Linux內核電源管理的整體架構解析,你瞭解嗎?

    Linux內核電源管理的整體架構解析,你瞭解嗎?

    Linux可以説是越來越火了,它在消費電子領域的應用相當普遍,而對於消費電子產品,省電是一個重要的議題。 Linux電源管理非常複雜,牽扯到系統級的待機、頻率電壓變換、系統空閒時的處理以及每個設備驅動對於系統待機的支持和每個設備的運行時電源管理,可以説和系統中的每個設備驅動都息息相關。 對於消費電子產品來説,電源管理相當重要。因此,這部分工作往往在開發週期中佔據相當大的比重,圖1呈現了Linux內核電源管理的整體架構。大體可以歸納為如下幾類: 1.CPU在運行時根據系統負載進行動態電壓和頻率變換的CPUFreq。 2.CPU在系統空閒時根據空閒的情況進行低功耗模式的CPUIdle。 3.多核系統下CPU的熱插拔支持。 4.系統和設備對於延遲的特別需求而提出申請的PMQoS,它會作用於CPUIdle的具體策略。 5.設備驅動針對系統SuspendtoRAM/Disk的一系列入口函數。 6.SoC進入suspend狀態、SDRAM自刷新的入口。 7.設備的runtime(運行時)動態電源管理,根據使用情況動態開關設備。 8.底層的時鐘、穩壓器、頻率/電壓表(OPP模塊完成)支撐,各驅動子系統都可能用到。 這樣,你對linux的電源管理知道多少了?

    時間:2020-10-22 關鍵詞: Linux 電源管理 linux內核

  • 淺析arm歷史和交叉編譯鏈選擇

    淺析arm歷史和交叉編譯鏈選擇

    眾所周知ARM的設計是艾康計算機公司於1983年開始的開發項目。這個團隊由RogerWilson和SteveFurber帶領,着手開發一種類似高級6502架構的處理器。Acorn計算機有一大堆建構在6502處理器上的計算機,因此能設計出一顆類似的芯片即意味着對公司有很大的優勢。 AcornRISCMachine:ARM2 用在BBCMicro上的ARM1secondprocessor 團隊在1985年時開發出樣本“ARM1”,而首顆真正能量產的“ARM2”於次年投產。ARM2具有32位的數據總線、26位的定址空間,並提供64Mbyte的定址範圍與16個32-bit的寄存器。寄存器中有一個作為程序計數器,其前面6位和後面2位用來保存處理器狀態標記。ARM2可能是全世界最簡單實用的32位微處理器,僅容納了30,000個晶體管(六年後的摩托羅拉68000包含了70,000顆)。之所以精簡的原因在於它不含微碼(這大概佔了68000的晶體管數約1/4至1/3);而且與當時大多數的處理器相同,它沒有包含任何的高速緩存。這個精簡的特色使它只需消耗很少的電能,卻能發揮比Intel80286更好的性能[10]。後繼的處理器“ARM3”則備有4KB的高速緩存,使它能發揮更佳的性能。 Apple、DEC、Intel、Marvell:ARM6、StrongARM、XScale[編輯] 在1980年代晚期,蘋果計算機開始與艾康計算機合作開發新版的ARM核心。由於這項目非常重要,艾康計算機甚至於1990年將設計團隊另組成一間名為安謀國際科技(AdvancedRISCMachinesLtd.)的新公司。也基於這原因,使得ARM有時候反而稱作AdvancedRISCMachine而不是AcornRISCMachine。由於其母公司ARMHoldingsplc於1998年在倫敦證券交易所和NASDAQ掛牌上市[11],使得AdvancedRISCMachines成了ARMLtd旗下擁有的產品[12]。 這個項目到後來進入“ARM6”,首版的樣品在1991年發佈,然後蘋果計算機使用ARM6架構的ARM610來當作他們AppleNewton產品的處理器。在1994年,艾康計算機使用ARM610做為他們個人計算機產品的處理器。 在這些變革之後,內核部分卻大多維持一樣的大小——ARM2有30,000顆晶體管,但ARM6卻也只增長到35,000顆。主要概念是以ODM的方式,使ARM核心能搭配一些選配的零件而製成一顆完整的CPU,而且可在現有的晶圓廠裏製作並以低成本的方式達到很大的性能。 ARM的經營模式在於出售其IP核,授權廠家依照設計製作出建構於此核的微控制器和中央處理器。最成功的實現案例屬ARM7TDMI,幾乎賣出了數億套內置微控制器的設備。 Digital曾購買這個架構的產權並研發出“StrongARM”。在233MHz的頻率下,這顆CPU只消耗1瓦特的電能(後來的芯片消耗得更少)。這項設計後來為了和英特爾的控訴和解而技術移轉,英特爾因而利用StrongARM架構補強他們老舊的i960產品。英特爾後來開發出他們自有的高性能架構產品XScale,之後賣給了邁威爾科技。 支持智能手機、個人數碼助理和其他手持設備最常見的架構是“ARMv4”。XScale和ARM926處理器是“ARMv5TE”,而且比起建構在ARMv4的StrongARM、ARM925T和ARM7TDMI等處理器還更常見於許多高端設備上[來源請求]。 內核種類 ARMv1ARM1 ARMv2ARM2、ARM3 ARMv3ARM6、ARM7 ARMv4StrongARM、ARM7TDMI、ARM9TDMI ARMv5ARM7EJ、ARM9E、ARM10E、XScale ARMv6ARM11、ARMCortex-M ARMv7ARMCortex-A、ARMCortex-M、ARMCortex-R ARMv8(A)Cortex-A35、Cortex-A50系列[13]、Cortex-A72、Cortex-A73、Cortex-A75、Cortex-A76 架構 從1995年開始,《ARM體系結構參考手冊》是ARM文檔的主要來源,提供了關於ARM處理器架構和指令集,區分接口,所有的ARM處理器的支持(如指令語義)的實現細節可能會有所不同。該體系結構隨着時間的演變,並與Cortex系列的核心開始,存在三個“配置”的定義如下: "應用"配置:Cortex-A系列 "嵌入式"配置:Cortex-R系列 "微處理器"配置:ARMCortex-M系列。 每個配置允許有其子集的架構。 CPU模式 CPUARM架構指定了以下的CPU模式。在任何時刻,CPU只可處於某一種模式,但可由於外部事件(中斷)或編程方式進行模式切換。 用户模式僅非特權模式。 系統模式僅無需例外進入的特權模式。僅以執行明確寫入CPSR的模式位的指令進入。Supervisor(svc)模式在CPU被重置或者SWI指令被執行時進入的特權模式。 Abort模式預讀取中斷或數據中斷異常發生時進入的特權模式。 未定義模式未定義指令異常發生時進入的特權模式。 干預模式處理器接受一條IRQ干預時進入的特權模式。 快速干預模式處理器接受一條IRQ干預時進入的特權模式。 Hyp模式armv-7a為cortex-A15處理器提供硬件虛擬化引進的管理模式。 最新的armv8Aarm64與aarch64 在找交叉編譯鏈過程中被這三個困惑好久,在選擇之前一定要先搞明白這三者的關係 ARM在2007年已着手設計工作,並於2011年11月公報ARMv8A64bit指令集架構,耗用了4年的研發時間。 ARMv8A分為A64及A32兩個部分,A64顧名思義屬於64bit的部份,主要存在於AARCH64的狀態。而A32又稱AARCH32狀態,用作支持現有A32ARM指令集。ARM並沒有採用AMDx86-64及IntelEM64T擴充32bit指令做法,而是選擇全新開發專用的64bit指令。據ARM方面表示,這一做法與省電的考慮有關,當運行64biTISA時,ARMv7電路可處於閒置狀態,節省功耗。同A64ISA也移除了作用不大的LDM/STM(load/storemulTIple)指令,改為LD/ST’P’指令,以降低複雜性及功耗,與此同時,32bit到64bit狀態轉換採用Inter-processing的做法,確保32bit到64bit指令皆可順利執行。 armv8A架構又細分為armv8.2a、armv8.3a、armv8.4a、armv8.5a。 在今年的Computex上arm公佈了2018年的Cortex-A旗艦CPU,Cortex-A76.這個CPU的微構架做了徹底的重新設計,它重點提高了峯值性能,同時良好地保持了性能功耗比。Cortex-A76將armCPU的性能推上了一個新高度。Cortex-A76還是armv8.2-a構架實現,與現有的處理兼容,還是使用DSU技術,到時微構架的重新設計使得它比Cortex-A75平均有35%的性能提升,且有40%的能耗比提升。對浮點數和機器學習運算任務提升最大。麒麟980用的性能核心就是公版Cortex-A76. Cortex-A76是第一個開始逐漸去除32bit支持的CPU。A76還是支持aarch32,但是隻是在最低特權級的EL0支持,而aarch64在EL0-EL3都支持-從OS到底層的固件。在將來某個時候,arm非常有可能完全只支持64bit,這取決於arm生態系統的發展。 arm授權方式 ARM公司本身並不靠自有的設計來製造或出售CPU,而是將處理器架構授權給有興趣的廠家。ARM提供了多樣的授權條款,包括售價與散播性等項目。對於授權方來説,ARM提供了ARM內核的集成硬件敍述,包含完整的軟件開發工具(編譯器、debugger、SDK),以及針對內含ARMCPU硅芯片的銷售權。對於無晶圓廠的授權方來説,其希望能將ARM內核集成到他們自行研發的芯片設計中,通常就僅針對獲取一份生產就緒的智財核心技術(IPCore)認證。 許多半導體公司持有ARM授權:Atmel、Broadcom、CirrusLogic、Freescale(於2004從摩托羅拉公司獨立出來)、富士通、英特爾(藉由和Digital的控訴調停)、IBM、NVIDIA、台灣新唐科技(NuvotonTechnology)、英飛凌、任天堂、恩智浦半導體(於2006年從飛利浦獨立出來)、OKI電氣工業、三星電子、Sharp、STMicroelectronics、德州儀器和VLSI等許多這些公司均擁有各個不同形式的ARM授權。雖然ARM的授權項目由保密合約所涵蓋,在知識產權工業,ARM是廣為人知最昂貴的CPU內核之一。單一的客户產品包含一個基本的ARM內核可能就需索取一次高達美金20萬的授權費用。而若是牽涉到大量架構上修改,則費用就可能超過千萬美元。 交叉編譯鏈選擇 以上都是廢話,重點關注armv8a即可。armv8a分為aarch32與aarch64兩種模式。因此在選擇交叉編譯鏈時一定要確定自己運行的arm設備是什麼架構,什麼模式。 從授權上,交叉編譯鏈分為免費授權版和付費授權版。 免費版目前有三大主流工具商提供,第一是GNU(提供源碼,自行編譯製作),第二是Codesourcery,第三是Linora。 收費版有ARM原廠提供的armcc、IAR提供的編譯器等等,因為這些價格都比較昂貴,不適合學習用户使用,所以不做講述。 arm-none-linux-gnueabi-gcc:是Codesourcery公司(目前已經被Mentor收購)基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARM(32位)系統中所有環節的代碼,包括裸機程序、u-boot、Linuxkernel、filesystem和App應用程序。 arm-linux-gnueabihf-gcc:是由Linaro公司基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARM(32位)系統中所有環節的代碼,包括裸機程序、u-boot、Linuxkernel、filesystem和App應用程序。 aarch64-linux-gnu-gcc:是由Linaro公司基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARMv864位目標中的裸機程序、u-boot、Linuxkernel、filesystem和App應用程序。 arm-none-elf-gcc:是Codesourcery公司(目前已經被Mentor收購)基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARMMCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。 arm-none-eabi-gcc:是GNU推出的的ARM交叉編譯工具。可用於交叉編譯ARMMCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。 命名規則 交叉編譯工具鏈的命名規則為:arch[-vendor][-os][-(gnu)eabi] arch–體系架構,如ARM,MIPS(通過交叉編譯工具生成的可執行文件或系統鏡像的運行平台或環境) vendor–工具鏈提供商 os–目標操作系統(host主要操作平台,也就是編譯時的系統) eabi–嵌入式應用二進制接口(EmbeddedApplicaTIonBinaryInterface) 根據對操作系統的支持與否,ARMGCC可分為支持和不支持操作系統,如 arm-none-eabi:這個是沒有操作系統的,自然不可能支持那些跟操作系統關係密切的函數,比如fork(2)。他使用的是newlib這個專用於嵌入式系統的C庫。 arm-none-linux-eabi:用於Linux的,使用Glibc linaro交叉編譯鏈簡介 以下面的鏈接為例,分析下各個文件的作用。//releases.linaro.org/components/toolchain/binaries/5.5-2017.10/aarch64-linux-gnu/。該目錄下面列出了一些列的交叉編譯工具: gcc-linaro-5.5.0-2017.10-i686-mingw32_aarch64-linux-gnu.tar.xz27-Feb-201800:17234.0Mopen 運行在32位x86windows主機的aarch64支持linux系統的交叉編譯鏈。 gcc-linaro-5.5.0-2017.10-i686_aarch64-linux-gnu.tar.xz27-Feb-201800:1789.0Mopen 運行在32位x86linux主機的aarch64位支持linux系統的交叉編譯鏈。 gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz27-Feb-201800:1789.9Mopen 運行在64位linux主機的aarch64位支持linux系統的交叉編譯鏈。這個正是我要找的交叉編譯鏈。 runTIme-gcc-linaro-5.5.0-2017.10-aarch64-linux-gnu.tar.xz28-Jan-201817:326.2Mopen runtime-gcc-linaro-5.5.0-2017.10-aarch64-linux-gnu.tar.xz.asc28-Jan-201817:3292open sysroot-glibc-linaro-2.21-2017.10-aarch64-linux-gnu.tar.xz27-Feb-201800:1833.6Mopen sysroot-glibc-linaro-2.21-2017.10-aarch64-linux-gnu.tar.xz.asc 這個runtime以及sysroot-glibc暫時不確定是做什麼用的。 再補充點交叉編譯鏈的東西: 實例 1、arm-none-eabi-gcc (ARMarchitecture,novendor,nottargetanoperatingsystem,complieswiththeARMEABI) 用於編譯ARM架構的裸機系統(包括ARMLinux的boot、kernel,不適用編譯Linux應用Application),一般適合ARM7、Cortex-M和Cortex-R內核的芯片使用,所以不支持那些跟操作系統關係密切的函數,比如fork(2),他使用的是newlib這個專用於嵌入式系統的C庫。 2、arm-none-linux-gnueabi-gcc (ARMarchitecture,novendor,createsbinariesthatrunontheLinuxoperatingsystem,andusestheGNUEABI) 主要用於基於ARM架構的Linux系統,可用於編譯ARM架構的u-boot、Linux內核、linux應用等。arm-none-linux-gnueabi基於GCC,使用Glibc庫,經過Codesourcery公司優化過推出的編譯器。arm-none-linux-gnueabi-xxx交叉編譯工具的浮點運算非常優秀。一般ARM9、ARM11、Cortex-A內核,帶有Linux操作系統的會用到。 3、arm-eabi-gcc AndroidARM編譯器。 4、armcc ARM公司推出的編譯工具,功能和arm-none-eabi類似,可以編譯裸機程序(u-boot、kernel),但是不能編譯Linux應用程序。armcc一般和ARM開發工具一起,KeilMDK、ADS、RVDS和DS-5中的編譯器都是armcc,所以armcc編譯器都是收費的(愛國版除外,呵呵~~)。 5、arm-none-uclinuxeabi-gcc和arm-none-symbianelf-gcc arm-none-uclinuxeabi用於uCLinux,使用Glibc。 arm-none-symbianelf用於symbian,沒用過,不知道C庫是什麼。 Codesourcery Codesourcery推出的產品叫SourceryG++LiteEdition,其中基於command-line的編譯器是免費的,在官網上可以下載,而其中包含的IDE和debug工具是收費的,當然也有30天試用版本的。 目前CodeSourcery已經由明導國際(MentorGraphics)收購,所以原本的網站風格已經全部變為Mentor樣式,但是SourceryG++LiteEdition同樣可以註冊後免費下載。 Codesourcery一直是在做ARM目標GCC的開發和優化,它的ARMGCC在目前在市場上非常優秀,很多patch可能還沒被gcc接受,所以還是應該直接用它的(而且他提供Windows下[mingw交叉編譯的]和Linux下的二進制版本,比較方便;如果不是很有時間和興趣,不建議下載src源碼包自己編譯,很麻煩,Codesourcery給的shell腳本很多時候根本沒辦法直接用,得自行提取關鍵的部分手工執行,又費精力又費時間,如果想知道細節,其實不用自己編譯一遍,看看他是用什麼步驟構建的即可,如果你對交叉編譯器感興趣的話。 ABI和EABI ABI:二進制應用程序接口(ApplicationBinaryInterface(ABI)fortheARMArchitecture)。在計算機中,應用二進制接口描述了應用程序(或者其他類型)和操作系統之間或其他應用程序的低級接口。 EABI:嵌入式ABI。嵌入式應用二進制接口指定了文件格式、數據類型、寄存器使用、堆積組織優化和在一個嵌入式軟件中的參數的標準約定。開發者使用自己的彙編語言也可以使用EABI作為與兼容的編譯器生成的彙編語言的接口。 兩者主要區別是,ABI是計算機上的,EABI是嵌入式平台上(如ARM,MIPS等)。 arm-linux-gnueabi-gcc和arm-linux-gnueabihf-gcc 兩個交叉編譯器分別適用於armel和armhf兩個不同的架構,armel和armhf這兩種架構在對待浮點運算採取了不同的策略(有fpu的arm才能支持這兩種浮點運算策略)。 其實這兩個交叉編譯器只不過是gcc的選項-mfloat-abi的默認值不同。gcc的選項-mfloat-abi有三種值soft、softfp、hard(其中後兩者都要求arm裏有fpu浮點運算單元,soft與後兩者是兼容的,但softfp和hard兩種模式互不兼容): soft:不用fpu進行浮點計算,即使有fpu浮點運算單元也不用,而是使用軟件模式。 softfp:armel架構(對應的編譯器為arm-linux-gnueabi-gcc)採用的默認值,用fpu計算,但是傳參數用普通寄存器傳,這樣中斷的時候,只需要保存普通寄存器,中斷負荷小,但是參數需要轉換成浮點的再計算。 hard:armhf架構(對應的編譯器arm-linux-gnueabihf-gcc)採用的默認值,用fpu計算,傳參數也用fpu中的浮點寄存器傳,省去了轉換,性能最好,但是中斷負荷高。 把以下測試使用的C文件內容保存成mfloat.c: #include intmain(void) { doublea,b,c; a=23.543; b=323.234; c=b/a; printf(“the13/2=%f\n”,c); printf(“helloworld!\n”); return0; } 1、使用arm-linux-gnueabihf-gcc編譯,使用“-v”選項以獲取更詳細的信息: arm-linux-gnueabihf-gcc-vmfloat.c COLLECT_GCC_OPTIONS=’-v’‘-march=armv7-a’‘-mfloat-abi=hard’‘-mfpu=vfpv3-d16′‘-mthumb’-mfloat-abi=hard 可看出使用hard硬件浮點模式。 2、使用arm-linux-gnueabi-gcc編譯: arm-linux-gnueabi-gcc-vmfloat.c COLLECT_GCC_OPTIONS=’-v’‘-march=armv7-a’‘-mfloat-abi=softfp’‘-mfpu=vfpv3-d16′‘-mthumb’-mfloat-abi=softfp 可看出使用softfp模式。

    時間:2020-10-22 關鍵詞: ARM 交叉編譯鏈

  • 如何在Linux終端虛擬機中進行幻燈片展示,來看乾貨!

    如何在Linux終端虛擬機中進行幻燈片展示,來看乾貨!

    我們平常做很多的一項就是演示文稿,演示文稿往往是枯燥的。這就是為什麼有些人會添加動畫或漫畫/meme 來增加一些幽默和風格來打破單調。 如果你需要在你的大學或公司的演示文稿中加入一些獨特的風格,那麼使用 Linux 終端怎麼樣?想象一下,這將是多麼酷的事情啊! Present:Linux 終端中進行演示 在終端中可以做很多有趣好玩的事情。製作和展示幻燈片只是其中之一。 這個基於 Python 的應用名為 Present,它可以讓你創建基於 Markdown 和 YML 的幻燈片,你可以在你的大學或公司裏演講,並以真正的極客風格取悦人們。 我製作了一個視頻,展示了在 Linux 終端中用 Present 演示一些東西的樣子。 Present 的功能 你可以用 Present 做以下事情: 使用 Markdown 語法在幻燈片中添加文本 用箭頭或 PgUp/Down 鍵控制幻燈片 改變前景和背景顏色 在幻燈片中添加圖像 增加代碼塊 播放模擬代碼,並用 codio YML 文件輸出 在 Linux 上安裝 Present Present 是一個基於 Python 的工具,你可以使用 PIP 來安裝它。你應該確保用這個命令在 Ubuntu 上安裝 Pip: sudo apt install python3-pip 如果你使用的是其他發行版,請檢查你的包管理器來安裝 PIP3。 安裝 PIP 後,你就可以以這種方式全局安裝 Present: sudo pip3 install present 你也可以只為當前用户安裝,但你也必須將 ~/.local/bin 添加到你的 PATH 環境變量。 在 Linux 終端中使用 Present 來創建和展示幻燈片 由於 Present 使用了 Markdown 語法,你應該用它來創建自己的幻燈片。在這裏使用 Markdown 編輯器會有幫助。 Present 需要一個 Markdown 文件來讀取和播放幻燈片。你可以下載這個示例幻燈片,但你需要單獨下載嵌入的圖像,並將它放在圖像文件夾內。 在 Markdown 文件中使用 — 來分隔幻燈片。 使用 Markdown 語法在幻燈片中添加文本。 使用以下語法添加圖片 ![RC] (images/name.png)。 通過添加像 《!– fg=white bg=red –》 這樣的語法來改變幻燈片的顏色。 使用像 《!– effect=fireworks –》 這樣的語法來添加帶有效果的幻燈片。 使用 codio 語法 添加代碼運行模擬。 使用 q 退出演示,並用左/右箭頭或 PgUp/Down 鍵控制幻燈片。 請記住,在演示時調整終端窗口的大小會把東西搞亂,按回車鍵也是如此。 總結 如果你熟悉 Markdown 和終端,使用 Present 對你來説並不困難。 你不能把它和常規的用 Impress、MS Office 等製作的幻燈片相比,但偶爾使用,它是一個很酷的工具。如果你是計算機科學/網絡專業的學生,或者是開發人員或系統管理員,你的同事一定會覺得很有趣。

    時間:2020-10-22 關鍵詞: Linux 終端虛擬機

  • 淺談單片機的嵌入式系統加密算法的分類

    淺談單片機的嵌入式系統加密算法的分類

    在現代社會中,信息安全所佔據的地位越來越重要。但不幸的是,信息安全問題[1]正變得越來越突出。加密算法是解決上述問題的有效方法。除了消息傳輸的接收者之外,即使外界非法攔截密文,它也只會產生一些無意義的亂碼。有許多類型的加密算法,它們適應的地方通常是不同的。在單片機和嵌入式系統中,信息的傳輸非常頻繁,甚至沒有很多機密信息。因此,信息傳輸的安全性變得越來越重要。 一、單片機加密的必要性 自單片機誕生以來,由於其成本低,環境適應性強,可靠性高,結構靈活,易於生產,引起了人們的廣泛關注。憑藉其卓越的性能,它已廣泛應用於各種行業,如機器人,航空航天,儀器儀表,工業和電信。單片機的普及也對促進各個領域的技術改造起到了很好的作用。然而,在通過MCU傳輸信息的過程中,它經常遭受非法入侵者的各種攻擊,例如偽造,篡改和盜版。但無論你攻擊哪種方式,這無疑會在各個方面給用户造成無法估量的損失。在信息傳輸中,發送信息的一方稱為發送方,信息發送的預定目標稱為接收方。然而,在實際傳輸過程中,除了接收者之外,還有一些未知的非法攔截器將通過諸如竊聽之類的各種手段獲得傳輸的信息。更重要的是,他們會篡改,偽造,然後將收到的信息傳送給收件人。如果信息被歸類為機密信息,則由此產生的損失是不可想象的。因此,在發送信息之前處理該信息。要傳輸的信息稱為明文,明文通過一組規則轉換的信息稱為密文。密文本是隨機的,無序的,看似毫無意義的信息,所以即使密文是由攔截器獲得的,也不需要擔心信息泄露。當接收到密文時,需要恢復明文,並將密文恢復規則稱為解密算法。通常,加密和解密算法需要一對密鑰,它們可以相同或不同,並且這兩種情況對應於兩個不同的密碼系統。 二、單片機的嵌入式系統加密算法分類 隨着微型計算機的快速發展,微控制器和嵌入式系統已經滲透到人們的日常生活中。但微型計算機的信息安全問題引起了人們的擔憂,在信息傳遞的過程中,經常會受到非法入侵者的攻擊,導致信息被截取、篡改甚至偽造,從而造成巨大的損失。加密算法是保障信息安全的有效措施之一,而且加密算法還具有良好的可修改性和移植性,有關加密算法的研究及應用是極其廣泛的。現代加密算法主要分為4大類:對稱式加密算法、非對稱式加密算法、Hash算法以及輕量級密碼算法。本文就其中的2類進行分析和研究,對稱式加密算法以DES算法(三重)和AES算法為代表,非對稱式加密算法以RSA算法和ECC算法為代表,通過詳細研究上述加密算法的加解密過程,結合各自的優缺點及適用場所,最終選取AES算法作為單片機及嵌入式系統的加密算法。 (一)公鑰加密算法 公鑰密碼系統的概念[2]於1976年首次提到。最初提出解決私鑰密碼系統中的兩個眾所周知的問題(數字簽名和密鑰分發)。在此之前,幾乎所有加密算法,加密過程無非就是兩種基本方式-替換和替換,與公鑰加密不同,它使用數學函數。可以説,公鑰加密算法的出現給密碼學帶來了新的方向。公鑰加密算法的最大特點是加密和解密使用一對不同但相關的密鑰,因此公鑰加密算法也稱為雙密鑰加密算法。在這對密鑰中,加密密鑰是公共的,並且解密密鑰對用户是私有的。這意味着在不知道解密密鑰的情況下,知道密文想要恢復明文是不可行的。 (二)DES算法 數據加密標準DES算法[3]是世界上最具影響力的數據包加密算法之一。DES算法是由一種稱為Lucifer算法修改以及發展而來,它有很多的優點:比如密鑰容易生成,加解密速度比較理想,在軟件上也易於實現。但是隨着密碼分析學的發展,人們發現,過去被認為足夠安全的DES算法已被證明不夠安全。另一方面,DES算法的密鑰長度僅為56Bit,這似乎太短。由於計算機計算能力的逐年增加,DES算法終於在1998年宣佈。後來,一些學者提出DES算法可以用於多個密鑰的情況,這是三重DES的起源。三重DES對密碼分析有着很強的抵抗能力,但是,正由於多重使用所以產生了一個難以克服的缺點,那就是實現算法的速度較慢。此外,三重DES的分組長度跟先前一樣,還是短了些。儘管TripleDES的複雜性,但它越來越顯示出下降的跡象。新數據加密標準最基本的要求如下:首先,必須比三重DES加解密速度快;其次,最少要與三重DES安全性一樣;最後,數據包長度和密鑰長度就足夠了。最後,Rijndael算法在許多候選算法中成功地作為新的數據加密標準。雖説DES算法已不可避免地走向衰亡,但它的出現對密碼學的發展有着很大的推動作用,對於學習分組加密算法還是有着重要的參考意義。 (三)AES算法 根據AES加密算法密鑰安全性不足、加解密輪變換不對稱以及S盒存在安全隱患的缺點,針對性地對密鑰擴展算法、加解密算法結構以及S盒進行了改進。對於加解密算法結構,在加密算法輪變換中合併了行移位和列混合,精簡了輪函數的計算部件;在解密算法中首先調整了輪函數的變換順序,使其與加密輪變換順序保持了一致,之後再套用加密算法中的改進,合併了逆行移位和逆列混合,使得算法結構進一步得到了優化。對於原S盒的不足,筆者提出了一種新S盒的構造,經測試證明新S盒比原S盒有着更好的密碼性質,有效地提高了AES算法的安全性。現代社會越來越多地走向信息社會,信息的作用變得越來越重要。隨着微型計算機進一步的智能化、微型化,人們的日常生活也越來越離不開它。但在微型計算機的應用中,如果不能保證信息傳輸的安全性,則無法保證。們的重視。因此,微控制器和嵌入式系統的數據加密研究是必要的,並且有關這方面的研究在今後也必定會更加廣泛和深入。 這樣你瞭解了嗎?

    時間:2020-10-22 關鍵詞: 嵌入式 嵌入式系統 單片機

  • 小心! APT組織對Linux設備的攻擊越來越多

    小心! APT組織對Linux設備的攻擊越來越多

    根據近期的一項調查,APT組織開始越來越多地對Linux設備執行有針對性的攻擊,並開發了更多針對Linux的工具。 APT對Linux的重視並不讓人意外,因為越來越多的企業和組織選擇Linux而不是Windows來運行具有戰略意義的關鍵業務服務器和系統。此外,人們通常認為Linux操作系統更安全,不是很流行因而不太可能成為惡意軟件的攻擊目標。 但是,據觀察APT攻擊者正在利用Linux用户的這種想當然和麻痹大意。報告指出,“過去八年來,已經觀察到十幾個APT組織使用Linux惡意軟件或某些基於Linux的模塊”。 其中包括臭名昭著的團體,例如圖拉(Turla)、拉撒路(Lazarus)、鋇(Barium)、索法西(Sofacy)、朗伯(Lamberts)和方程式(EquaTIon)等。報告重點介紹了俄語APT小組Turla的例子,該小組近年來使用Linux後門作為其不斷變化的工具集的一部分。 雖然目前針對性的基於Linux的系統仍然不常見,但已經有不少針對Linux的惡意軟件,包括webshell、後門程序、rootkit甚至定製的漏洞利用程序。 這意味着企業應當開始重視Linux系統的安全性,Linux服務器被攻擊往往會造成嚴重後果,除了受感染的設備之外,攻擊者還可以訪問運行Windows或macOS的端點。 卡巴斯基俄羅斯全球研究與分析團隊(GReAT)負責人YuryNamestnikov表示:“過去,我們的專家多次確認APT工具集日益增強的趨勢,而以Linux為重點的工具也不例外。為了提高IT系統安全性,IT和安全部門比以前更頻繁地使用Linux。而攻擊者正在加緊開發針對Linux系統的複雜攻擊工具來對此做出響應。我們建議網絡安全專家認識到這一趨勢,並採取其他措施來保護其服務器和工作站。” Synopsys的高級安全工程師BorisCipot評論道:“Linux的系統也有漏洞並容易受到攻擊,這並不令人感到震驚。人們普遍存在一種誤解,以為Linux系統或Mac不會受到惡意軟件的影響。不幸的是,這是致命的錯誤想法。” 今天早些時候,ESET剛剛宣佈發現一種全新的Linux惡意軟件——CDRThief,能夠攻擊中國sf集運Linknat的VOS2009和VOS3000軟交換機使用的特定VoIP平台。

    時間:2020-10-22 關鍵詞: Linux apt

  • 嵌入式系統的設計和開發資料大全

    嵌入式系統的設計和開發資料大全

    現在嵌入式系統時相當火爆的,嵌入式系統設計方法變化的背景。 嵌入式系統設計方法的演化總的來説是因為應用需求的牽引和IT技術的推動,隨着微電子技術的不斷創新和發展,大規模集成電路的集成度和工藝水平不斷提高。硅材料與人類智慧的結合,生產出大批量的低成本、高可靠性和高精度的微電子結構模塊,推動了一個全新的技術領域和產業的發展。 在此基礎上發展起來的器件可編程思想和微處理(器)技術可以用軟件來改變和實現硬件的功能。微處理器和各種可編程大規模集成專用電路、半定製器件的大量應用,開創了一個嶄新的應用世界,以至廣泛影響着並在逐步改變着人類的生產、生活和學習等社會活動。 計算機硬件平台性能的大幅度提高,使很多複雜算法和方便使用的界面得以實現,大大提高了工作效率,給複雜嵌入式系統輔助設計提供了物理基礎。 高性能的EDA綜合開發工具(平台)得到長足發展,而且其自動化和智能化程度不斷提高,為複雜的嵌入式系統設計提供了不同用途和不同級別集編輯、佈局、佈線、編譯、綜合、模擬、測試、驗證和器件編程等一體化的易於學習和方便使用的開發集成環境。 硬件描述語言HDL(HardwareDescrIPTIonLanguage)的發展為複雜電子系統設計提供了建立各種硬件模型的工作媒介。它的描述能力和抽象能力強,給硬件電路,特別是半定製大規模集成電路設計帶來了重大的變革。目前,用得較多的有已成為IEEE為STD1076標準的VHDL、IEEESTD1364標準的VerilogHDL和Altera公司企業標準的AHDL等。由於HDL的發展和標準化,世界上出現了一批利用HDL進行各種集成電路功能模塊專業設計的公司。其任務是按常用或專用功能,用HDL來描述集成電路的功能和結構,並經過不同級別的驗證形成不同級別的IP內核模塊,供芯片設計人員裝配或集成選用。IP(IntellectualProperty)內核模塊是一種預先設計好的甚至已經過驗證的具有某種確定功能的集成電路、器件或部件。它有幾種不同形式。IP內核模塊有行為(behavior)、結構(structure)和物理(physical)3級不同程度的設計,對應有主要描述功能行為的“軟IP內核(sofTIPcore)”、完成結構描述的“固IP內核(firmIPcore)”和基於物理描述並經過工藝驗證的“硬IP內核(hardIPcore)”3個層次。這相當於集成電路(器件或部件)的毛坯、半成品和成品的設計技術。軟IP內核通常是用某種HDL文本提交用户,它已經過行為級設計優化和功能驗證,但其中不含有任何具體的物理信息。據此,用户可以綜合出正確的門電路級網表,並可以進行後續結構設計,具有最大的靈活性,可以很容易地藉助於EDA綜合工具與其他外部邏輯電路結合成一體,根據各種不同的半導體工藝,設計成具有不同性能的器件。可以商品化的軟IP內核一般電路結構總門數都在5000門以上。但是,如果後續設計不當,有可能導致整個結果失敗。軟IP內核又稱作虛擬器件。硬IP內核是基於某種半導體工藝的物理設計,已有固定的拓撲佈局和具體工藝,並已經過工藝驗證,具有可保證的性能。其提供給用户的形式是電路物理結構掩模版圖和全套工藝文件,是可以拿來就用的全套技術。固IP內核的設計深度則是介於軟IP內核和硬IP內核之間,除了完成硬IP內核所有的設計外,還完成了門電路級綜合和時序仿真等設計環節。一般以門電路級網表形式提交用户使用。 TI,Philips和Atmel等sf集運就是通過Intel授權,用其MCS51的IP內核模塊結合自己的特長開發出有個性的與IntelMCS51兼容的單片機。 常用的IP內核模塊有各種不同的CPU(32/64位CISC/RISC結構的CPU或8/16位微控制器/單片機)、32/64位DSP、DRAM、SRAM、MRAM、EEPROM、Flashmemory、A/D、D/A、MPEG/JPEG、USB、PCIe、、MIPI、標準接口、網絡單元、編譯器、編碼/解碼器和模擬器件模塊等。豐富的IP內核模塊庫為快速地設計專用集成電路和單片系統以及儘快佔領市場提供了基本保證。 軟件技術的進步,特別是嵌入式實時操作系統EOS(EmbeddedOperaTIonSystem)和RTOS的推出,為開發複雜嵌入式系統應用軟件提供了底層支持和高效率開發平台。 02 嵌入式系統設計方法的變化 過去擅長於軟件設計的編程人員一般對硬件電路設計“敬而遠之”,硬件設計和軟件設計被認為是性質完全不同的技術。 隨着電子信息技術的發展,電子工程出身的設計人員,往往還逐步涉足軟件編程。其主要形式是通過微控制器(國內習慣稱作單片機)的應用,學會相應的彙編語言編程。在設計規模更大的集散控制系統時,必然要用到已普及的PC++機,以其為上端機,從而進一步學習使用C、C++、Python等高級語言編程作系統程序,設計系統界面,通過與單片機控制的前端機進行多機通信構成集中分佈控制系統。 軟件編程出身的設計人員則很少有興趣去學習應用電路設計。但是,隨着計算機技術的飛速發展,特別是硬件描述語言HDL的發明,系統硬件設計方法發生了變化,數字系統的硬件組成及其行為完全可以用HDL來描述和仿真。在這種情況下,設計硬件電路不再是硬件設計工程師的專利,擅長軟件編程的設計人員可以藉助於HDL工具來描述硬件電路的行為、功能、結構、數據流、信號連接關係和定時關係,設計出滿足各種要求的硬件系統。EDA工具允許有兩種設計輸入工具,分別適應硬件電路設計人員和軟件編程人員兩種不同背景的需要。讓具有硬件背景的設計人員用已習慣的原理圖輸入方式,而讓具有軟件背景的設計人員用硬件描述語言輸入方式。由於用HDL描述進行輸入,因而與系統行為描述更接近,且更便於綜合、時域傳遞和修改,還能建立獨立於工藝的設計文件,所以,擅長軟件編程的人一旦掌握了HDL和一些必要的硬件知識,往往可以比習慣於傳統設計的工程師設計出更好的硬件電路和系統。所以,習慣於傳統設計的工程師應該學會用HDL來描述和編程。 為什麼在大部分畢業生眼中,只有嵌入式、單片機、ARM、FPGA才是技術呢?現在的高校,幾乎都開設這方面的專業,這方面固然有很多高層次人才,高待遇的,但這個東西並不是適合所有人的,大部分起點低的,或者年級偏大的,其實不應該去做這些東西。 現在的嵌入式都是快餐,隨着大學生的不停湧入,價值越來越低,並且這些羣體大部分都能做出東西來,卻就是做不穩定,最後就是白菜價格也賣不出去,而根本點在於缺少對生產、質量、售後、測試、模擬基礎功底的漠視。 中國發展這麼多年,本質上講,真正賺錢的,還是這幫搞生產,抓質量,懂銷售的羣體賺錢,絕對不是研發技術人員。但技術人員,總是把技術舉得高高的,而支撐技術變成產品再銷售出去的環節,則非常漠視,最後一輩子只能打工。相反,若抓其他幾個環節,則完全可以發展出來當老闆,自己聘請技術人員即可。 到今天為止,一個公司的倒閉,沒有幾個是因為技術問題導致的,大多數都是因為其他原因,比如市場、生產、品質等等。賺錢是一個體系,研發只是其中一塊。 可以説,對於國內大部分公司來説,就今天來説,貿、工、技路線遠比技、工、貿容易成功的多。 21ic援引一位標準的技術人員的話:現在我教給我同事的,大部分都是工廠的東西:一看、二想、三做、四檢查。其次就是基於事實,用常理去推理分析,讓他們捨去所謂的高科技,把常理用好。通過這兩點來做各種事情,而不僅僅限於技術。同時,儘可能避開大家做的東西,大家都喜歡做嵌入式,那我們就做給嵌入式配套的設備,或者嵌入式羣體做不了的設備,只有這樣,才能獲得高額的利潤。 03 嵌入式系統設計的3個層次 21ic家瞭解到,嵌入式系統設計有3個不同層次: 第1層次:以PCBCAD軟件和ICE為主要工具的設計方法 這是過去直至現在我國單片機應用系統設計人員一直沿用的方法,其步驟是先抽象後具體。抽象設計主要是根據嵌入式應用系統要實現的功能要求,對系統功能細化,分成若干功能模塊,畫出系統功能框圖,再對功能模塊進行硬件和軟件功能實現的分配。具體設計包括硬件設計和軟件設計。硬件設計主要是根據性能參數要求對各功能模塊所需要使用的元器件進行選擇和組合,其選擇的基本原則就是市場上可以購買到的性價比最高的通用元器件。必要時,須分別對各個沒有把握的部分進行搭試、功能檢驗和性能測試,從模塊到系統找到相對優化的方案,畫出電路原理圖。硬件設計的關鍵一步就是利用印製板(PCB)計算機輔助設計(CAD)軟件對系統的元器件進行佈局和佈線,接着是印製板加工、裝配和硬件調試。工作量最大的部分是軟件設計。軟件設計貫穿整個系統的設計過程,主要包括任務分析、資源分配、模塊劃分、流程設計和細化、編碼調試等。軟件設計的工作量主要集中在程序調試,所以軟件調試工具就是關鍵。最常用和最有效的工具是在線仿真器(ICE)。第2層次:以EDA工具軟件和EOS為開發平台的設計方法 隨着微電子工藝技術的發展,各種通用的可編程半定製邏輯器件應運而生。在硬件設計時,設計師可以利用這些半定製器件,逐步把原先要通過印製板線路互連的若干標準邏輯器件自制成專用集成電路(ASIC)使用,這樣,就把印製板佈局和佈線的複雜性轉換成半定製器件內配置的複雜性。 然而,半定製器件的設計並不需要設計人員有半導體工藝和片內集成電路佈局和佈線的知識和經驗。隨着半定製器件的規模越來越大,可集成的器件越來越多,使印製板上互連器件的線路、裝配和調試費用越來越少,不僅大大減少了印製板的面積和接插件的數量,降低了系統綜合成本,增加了可編程應用的靈活性,更重要的是降低了系統功耗,提高了系統工作速度,大大提高了系統的可靠性和安全性。這樣,硬件設計人員從過去選擇和使用標準通用集成電路器件,逐步轉向自己設計和製作部分專用的集成電路器件,而這些技術是由各種EDA工具軟件提供支持的。半定製邏輯器件經歷了可編程邏輯陣列PLA、可編程陣列邏輯PAL、通用陣列邏輯GAL、複雜可編程邏輯器件CPLD和現場可編程門陣列FPGA的發展過程。其趨勢是集成度和速度不斷提高,功能不斷增強,結構趨於更合理,使用變得更靈活和方便。設計人員可以利用各種EDA工具和標準的CPLD和FPGA等,設計和自制用户專用的大規模集成電路。然後再通過自下而上的設計方法,把用半定製器件設計自制的集成電路、可編程外圍器件、所選擇的ASIC與嵌入式微處理器或微控制器在印製板上佈局、佈線構成系統。第3層次:以IP內核庫為設計基礎,用軟硬件協同設計技術的設計方法 20世紀90年代後,進一步開始了從“集成電路”級設計不斷轉向“集成系統”級設計。目前已進入單片系統SOC(Systemo-nachip)設計階段,並開始進入實用階段。這種設計方法不是把系統所需要用到的所有集成電路簡單地二次集成到1個芯片上,如果這樣實現單片系統,是不可能達到單片系統所要求的高密度、高速度、高性能、小體積、低電壓、低功耗等指標的,特別是低功耗要求。 單片系統設計要從整個系統性能要求出發,把微處理器、模型算法、芯片結構、外圍器件各層次電路直至器件的設計緊密結合起來,並通過建立在全新理念上的系統軟件和硬件的協同設計,在單個芯片上完成整個系統的功能。有時也可能把系統做在幾個芯片上。因為,實際上並不是所有的系統都能在一個芯片上實現的;還可能因為實現某種單片系統的工藝成本太高,以至於失去商業價值。目前,進入實用的單片系統還屬簡單的單片系統,如智能IC卡等。但幾個着名的半導體sf集運正在緊鑼密鼓地研製和開發像單片PC這樣的複雜單片系統。單片系統的設計如果從零開始,這既不現實也無必要。因為除了設計不成熟、未經過時間考驗,其系統性能和質量得不到保證外,還會因為設計週期太長而失去商業價值。為了加快單片系統設計週期和提高系統的可靠性,目前最有效的一個途徑就是通過授權,使用成熟優化的IP內核模塊來進行設計集成和二次開發,利用膠粘邏輯技術GLT(GlueLogicTechnology),把這些IP內核模塊嵌入到SoC中。IP內核模塊是單片系統設計的基礎,究竟購買哪一級IP內核模塊,要根據現有基礎、時間、資金和其他條件權衡確定。 購買硬IP內核模塊風險最小,但付出最大,這是必然的。但總的來説,通過購買IP內核模塊不僅可以降低開發風險,還能節省開發費用,因為一般購買IP內核模塊的費用要低於自己單獨設計和驗證的費用。當然,並不是所需要的IP內核模塊都可以從市場上買得到。為了壟斷市場,有一些公司開發出來的關鍵IP內核模塊(至少暫時)是不願意授權轉讓使用的。像這樣的IP內核模塊就不得不自己組織力量來開發。這3個層次各有各的應用範圍。從應用開發角度看,在相當長的一段時間內,都是採用前2種方法。第3層次設計方法對一般具體應用人員來説,只能用來設計簡單的單片系統。而複雜的單片系統則是某些大的半導體sf集運才能設計和實現的,並且用這種方法實現的單片系統,只可能是那些廣泛使用、具有一定規模的應用系統才值得投入研製。還有些應用系統,因為技術問題或商業價值問題並不適宜用單片實現。當它們以商品形式推出相應單片系統後,應用人員只要會選用即可。 所以,3個層次的設計方法會並存,並不會簡單地用後者取代前者。初級應用設計人員會以第1種方法為主;富有經驗的設計人員會以第2種方法為主;很專業的設計人員會用第3種方法進行簡單單片系統的設計和應用。但所有的設計人員都可以應用半導體大sf集運推出的用第3種方法設計的專用單片系統。 04 嵌入式硬件系統設計 嵌入式設計是個龐大的工程,在軟件方面嵌入式ARM已經有了多次介紹,具體可以觀看《深度:嵌入式系統的軟件架構設計!》一文。在硬件電路設計方面,21ic家瞭解到有幾個注意事項,首先,咱們瞭解下嵌入式的硬件構架。 我們知道,CPU是這個系統的靈魂,所有的外圍配置都與其相關聯,這也突出了嵌入式設計的一個特點硬件可剪裁。在做嵌入式硬件設計中,以下幾點需要關注。 第一、電源確定 電源對於嵌入式系統中的作用可以看做是空氣對人體的作用,甚至更重要:人呼吸的空氣中有氧氣、二氧化碳和氮氣等但是含量穩定,這就相當於電源系統中各種雜波,我們希望得到純淨和穩定符合要求的電源,但由於各種因素制約,只是我們的夢想。這個要關注兩個方面: a、電壓嵌入式系統需要各種量級的電源比如常見的5v、3.3v、1.8v等,為儘量減小電源的紋波,在嵌入式系統中使用LDO器件。如果採用DCDC不僅個頭大,其紋波也是一個很頭疼的問題。 b、電流嵌入式系統的正常運行不但需要穩定足夠的電源,還要有足夠的電流,因此在選擇電源器件的時候需要考慮其負載,我設計時一般留有30%的餘量。 如果是多層板,電源部分在layout的時候需電源分割,這時需要注意分割路徑,儘量將一定量的電源放置在一起。如果是雙面板,則走線寬度需要注意,在板子允許的情況下儘量加寬。合適的退耦電容儘量靠近電源管腳。 第二、晶振確定 晶振相當於嵌入式系統的心臟,其穩定與否直接關係其運行狀態和通訊性能。常見的振有無源晶振,有源晶振,首先要確定其振盪頻率,其次要確定晶振類型。 a、無源晶振其匹配電容和匹配電阻的選擇,這部分一般依據參考手冊。在單片機設計中,經常使用插件晶振配合瓷片電容。在ARM中,為了減少空間和便於佈線,經常使用四角無源晶振配合貼片電容。雖然我們對於固定晶振的匹配電路比較熟悉,但是為了達到萬無一失,還是要看參考手冊確定電容大小,是否需要匹配電阻等細節。 b、有源晶振具有更好的更準確的時鐘信號,但是相比之下,比無緣晶振價格高,因此這也是在硬件電路設計中需要關注的成本。 在做電路板設計時需要注意晶振走線儘量靠近芯片,關鍵信號遠離時鐘走線。在條件允許的情況下增加接地保護環。如果是多層板,也要講關鍵信號遠離晶振的走線。 第三、預留測試IO口 在嵌入式調試階段,在管腳資源豐富的情況下,我通常預留一個IO口連接led或者喇叭,為下一步軟件的編寫做鋪墊。在嵌入式系統運行過程中適當控制該IO接口,從而判斷系統是否正常運行。 第四、外擴存儲設備 一個嵌入式系統如果有電源、晶振和CPU,那麼這就是我們熟悉的最小系統。如果該嵌入式系統需要運行大點的操作系統,那麼不但需要CPU具有MMU,CPU還需要外接SDRAM和NANDFLASH。如果該cpu具有SDRAM和NANDFLASH控制器,那麼在硬件設計上不用過多的考慮地址線的使用。如果沒有相關的控制器,那麼需要注意地址線的使用。 這部分在LAYOUT的時候是一個重點,究其原因就是要使相關信號線等長以確保信號的延時相等,時鐘和DQS的差分信號線走線。在佈線的時候各種佈線技巧需要綜合使用,例如與cpu對稱分佈,菊花鏈佈線、T型佈線,這都需要依據內存的個數多少來進行選擇,一般來説個數越多,佈線越複雜,但是知道其關鍵點,一切迎刃而解。 第五、功能接口 一個嵌入式系統最重要的就是通過各種接口來控制外圍模塊,達到設計者預設的目的。常用的接口有串口(可用來連接藍牙,wifi和3G等模塊),USB接口、網絡接口、JTAG接口、音視頻接口、HDMI接口等等。由於這些接口與外部模塊連接,做好電磁兼容設計是重要的一項工作。除此之外,在LAYOUT的時候注意差分線的使用。 第六、屏幕 這個功能之所以單獨列出來,是由於其可有可無。如果一個嵌入式系統只是作為一個連接器連接外圍設備模塊,通過相關接口連接到電腦主機或者直接掛在網絡上,那麼屏幕就不需要了。但是如果做出來的是一個消費類產品,與用户交互頻繁,這就不得不嘮叨幾句。 電容屏幕是嵌入式屏幕的首選,在電路設計中需要注意觸屏連接線和顯示屏連接線的佈局。在走線的過程中儘量短的靠近主控cpu,同時注意配對信號走差分線,RGB控制信號走等長。各種信號走線間距遵循3W規則,避免相互干擾。在屏幕的設計中,一定要確保功率和防止干擾,以防屏幕閃屏和花屏現象的出現。 06 嵌入式產品開發流程 嵌入式產品,與普通電子產品一樣,開發過程都需要遵循一些基本的流程,都是一個從需求分析到總體設計,詳細設計到最後產品完成的過程。但是,與普通電子產品相比,嵌入式產品的開發流程又有其特殊之處。它包含嵌入式軟件和嵌入式硬件兩大部分,針對嵌入式硬件和軟件的開發,在普通的電子產品開發過程中,是不需要涉及的。21ic家瞭解到嵌入式產品的研發流程具體如下圖: 下面,針對嵌入式產品的開發過程中的各個階段,我們進行詳細探討。 階段1:產品需求 在這一個階段,我們需要弄清楚的是產品的需求從何而來,一個成功的產品,我們需要滿足哪些需求。只有需求明確了,我們的產品開發目標才能明確。在產品需求分析階段,我們可以通過以下這些途徑獲取產品需求: 1)市場分析與調研,主要是看市場有什麼需求,還有就是前沿的技術是什麼(站在做一款產品的角度);2)客户調研和用户定位,從市場廣大客户那獲取最準確的產品需求(要注意分析市場,產品生命週期,升級是否方便);3)利潤導向(成本預算);4)如果是外包項目,則需要我們的客户提供產品的需求(直接從客户那獲取,讓客户籤協議); 當一個項目做完的時候,如果客户突然又增加需求,增加功能,將導致你的項目週期嚴重拖延,成本劇烈上升,並且測試好的產品可能要全部重新測試,原本的設計可能將不會滿足當前的要求,所以做項目之前,最好要跟客户把需求確定下來,並且簽定一份協議,否則,你辛苦多少個日日夜夜,得到的將是一個無法收拾的爛攤子! 階段2:產品規格説明 在前一個階段,我們蒐集了產品的所有需求。那麼在產品規格説明階段,我們的任務是將所有的需求,細化成產品的具體的規格,就比如一個簡單的USB轉串口線,我們需要確定產品的規格,包括: 1)產品的外觀;2)產品支持的操作系統;3)產品的接口形式和支持的規範; 等等諸如此類,切記,在形成了產品的規格説明後,在後續的開發過程中,我們必須嚴格的遵守,沒有200%的理由,不能隨意更改產品的需求。否則,產品的開發過程必將是一個反覆無期的過程。 《產品規格説明》主要從以下方面進行考慮: 1)考慮該產品需要哪些硬件接口;2)產品用在哪些環境下,要做多大,耗電量如何。如果是消費類產品,還跟設計美觀,產品是否便於攜帶,以確定板子大小的需求,是否防水;3)產品成本要求;4)產品性能參數的説明(例如交換機,如果是百兆的速率,用於家庭和一般公司;如果是用於整個省的交換,那設計的速率肯定數十萬兆以上了)所以説,產品性能參數的不同,就會影響到我們設計考慮的不同,那麼產品的規格自然就不同了;5)需要適應和符合的國家標準,國際標準,或行業標準; 階段3:產品總體設計方案 在完成了產品規格説明以後,我們需要針對這一產品,瞭解當前有哪些可行的方案,通過幾個方案進行對比,包括從成本、性能、開發週期、開發難度等多方面進行考慮,最終選擇一個最適合自己的產品總體設計方案。 在這一階段,我們除了確定具體實現的方案外,我們還需要綜合考慮,產品開發週期,多少人月的工作量,需要哪些資源或者外部協助,以及開發過程中可能遇到的風險及應對措施,形成整個項目的項目計劃,指導我們的整個開發過程。 階段4:產品概要設計 產品概要設計主要是在總體設計方案的基礎上進一步的細化,具體從硬件和軟件兩方面入手: 硬件模塊概要設計 硬件模塊概要設計,主要從硬件的角度出發,確認整個系統的架構,並按功能來劃分各個模塊,確定各個模塊的的大概實現。首先要依據我們到底要哪些外圍功能以及產品要完成的工作,來進行CPU選型(注意:CPU一旦確定,那麼你的周圍硬件電路,就要參考該CPU廠家提供的方案電路來設計)。然後再根據產品的功能需求選芯片,比如是外接AD還是用片內AD,採用什麼樣的通訊方式,有什麼外部接口,還有最重要的是要考慮電磁兼容。 一般一款CPU的生存週期是5-8年,你考慮選型的時候要注意,不要選用快停產的CPU,以免出現這樣的結局:產品辛辛苦苦開發了1到2年,剛開發出來,還沒賺錢,CPU又停產了,又得要重新開發。很多公司就死在這個上面。 軟件模塊概要設計 軟件模塊概要設計階段,主要是依據系統的要求,將整個系統按功能進行模塊劃分,定義好各個功能模塊之間的接口,以及模塊內主要的數據結構等。 階段5:產品詳細設計 硬件模塊詳細設計 主要是具體的電路圖和一些具體要求,包括PCB和外殼相互設計,尺寸這些參數。接下來,我們就需要依據硬件模塊詳細設計文檔的指導,完成整個硬件的設計。包括原理圖、PCB的繪製。軟件模塊詳細設計 功能函數接口定義,該函數功能接口完成功能,數據結構,全局變量,完成任務時各個功能函數接口調用流程。在完成了軟件模塊詳細設計以後,就進入具體的編碼階段,在軟件模塊詳細設計的指導下,完成整個系統的軟件編碼。 一定要注意需要先完成模塊詳細設計文檔以後,軟件才進入實際的編碼階段,硬件進入具體的原理圖、PCB實現階段,這樣才能儘量在設計之初就考慮周全,避免在設計過程中反覆修改。提高開發效率,不要為了圖一時之快,沒有完成詳細設計,就開始實際的設計步驟。 階段6&7:產品調試與驗證 該階段主要是調整硬件或代碼,修正其中存在的問題和BUG,使之能正常運行,並儘量使產品的功能達到產品需求規格説明要求。 硬件部分: 1)目測加工會得PCB板是否存在短路,器件是否焊錯,或漏焊接;2)測試各電源對地電阻是否正常;3)上電,測試電源是否正常;4)分模塊調試硬件模塊,可藉助示波器、邏輯分析儀等根據。 軟件部分: 驗證軟件單個功能是否實現,驗證軟件整個產品功能是否實現。 階段8:測試 功能測試(測試不通過,可能是有BUG); 壓力測試(測試不通過,可能是有BUG或哪裏參數設計不合理); 性能測試(產品性能參數要提煉出來,供將來客户參考,這個就是你的產品特徵的一部分); 其他專業測試:包括工業級的測試,例如含抗干擾測試,產品壽命測試,防潮濕測試,高温和低温測試(有的產品有很高的温度或很低的温度工作不正常,甚至停止工作)。 有的設備電子元器件在特殊温度下,參數就會異常,導致整個產品出現故障或失靈現象的出現;有的設備,零下幾十度的情況下,根本就啓動不了,開不了機;有的設備在高温下,電容或電阻值就會產生物理的變化,這些都會影響到產品的質量。這裏要引出一個話題,工業級產品與消費類產品有什麼區別呢?工業級的產品就要避免這些異常和特殊問題,有的產品是在很深的海里工作,或者在嚴寒的山洞工作,或者火熱沙漠工作,或者顛簸的設備上,比如汽車;或者是需要防止雷擊;所以這就是工業級產品跟消費類產品的區別,消費類的產品就不需要做這麼多的測試。 階段9:產品 通過上一階段完整測試驗證,在此階段,即得到我們開發成功的產品。在此階段,可以比較實際的產品和最初的形成的產品規格説明,看經過一個完整的開發過程,是否產品完全符合最初的產品規格説明,又或者,中途發現產品規格説明存在問題,對它進行了多少修改呢? 附錄:嵌入式硬件開發流程 之前,我們詳細講述了嵌入式產品的研發流程,那麼在這一節,我們具體以嵌入式產品的硬件部分為例,再次講解其開發過程,希望通過這一節,大家能對嵌入式硬件開發流程有更深刻的認識,在以後的學習和工作中,更加規範化和標準化,提高開發技能。嵌入式硬件開發流程一般如下圖,分為8個階段: 嵌入式產品的硬件形態各異,CPU從簡單的4位/8位單片機到32位的ARM處理器,以及其他專用IC。另外,依據產品的不同需求,外圍電路也各不相同。每一次硬件開發過程,都需要依據實際的需求,考慮多方面的因素,選擇最合適的方案來。 硬件階段1:硬件產品需求 和普通的嵌入式產品需求一樣。階段1:產品需求。 硬件階段2:硬件總體設計方案 一個硬件開發項目,它的需求可能來自很多方面,比如市場產品的需要或性能提升的要求等,因此,作為一個硬件設計人員,我們需要主動去了解各個方面的需求並分析,根據系統所要完成的功能,選擇最合適的硬件方案。 在這一階段,我們需要分析整個系統設計的可行性,包括方案中主要器件的可採購性,產品開發投入,項目開發週期預計,開發風險評估等,並針對開發過程中可能遇到的問題,提前選擇應對方案,保證硬件的順利完成。 硬件階段3:硬件電路原理圖設計 在系統方案確定後,我們即可以開展相關的設計工作,原理設計主要包括系統總體設計和詳細設計,最終產生詳細的設計文檔和硬件原理圖。 原理設計和PCB設計是設計人員最主要的兩個工作之一,在原理設計過程中,我們需要規劃硬件內部資源,如系統存儲空間,以及各個外圍電路模塊的實現。另外,對系統主要的外圍電路,如電源、復位等也需要仔細的考慮,在一些高速設計或特殊應用場合,還需要考慮EMC/EMI等。 電源是保證硬件系統正常工作的基礎,設計中要詳細的分析:系統能夠提供的電源輸入;單板需要產生的電源輸出;各個電源需要提供的電流大小;電源電路效率;各個電源能夠允許的波動範圍;整個電源系統需要的上電順序等等。 為了系統穩定可靠的工作,復位電路的設計也非常重要,如何保證系統不會在外界干擾的情況下異常復位,如何保證在系統運行異常的時候能夠及時復位,以及如何合理的復位,才能保證系統完整的復位後,這些也都是我們在原理設計的時候需要考慮的。 同樣的,時鐘電路的設計也是非常重要的一個方面,一個不好的時鐘電路設計,可能會引起通信產品的數據丟包,產生大的EMI,甚至導致系統不穩定。原理圖設計中要有“拿來主義”!現在的芯片廠家一般都可以提供參考設計的原理圖,所以要儘量的藉助這些資源,在充分理解參考設計的基礎上,做一些自己的發揮。 硬件階段4:PCB圖設計 PCB設計階段,即是將原理圖設計轉化為實際的可加工的PCB線路板,目前主流的PCB設計軟件有PADS,Candence和Protel幾種。 PCB設計,尤其是高速PCB,需要考慮EMC/EMI,阻抗控制,信號質量等,對PCB設計人員的要求比較高。為了驗證設計的PCB是否符合要求,有的還需要進行PCB仿真。並依據仿真結果調整PCB的佈局佈線,完成整個的設計。 硬件階段5:PCB加工文件製作與PCB打樣 PCB繪製完成以後,在這一階段,我們需要生成加工廠可識別的加工文件,即常説的光繪文件,將其交給加工廠打樣PCB空板。一般1~4層板可以在一週內完成打樣。 硬件階段6:硬件產品的焊接與調試 在拿到加工廠打樣會的PCB空板以後,接下來我們,需要檢查PCB空板是否和我們設計預期一樣,是否存在明顯的短路或斷痕,檢查通過後,則需要將前期採購的元器件和PCB空板交由生產廠家進行焊接(如果PCB電路不復雜,為了加快速度,也可以直接手工焊接元器件)。 當PCB已經焊接完成後,在調試PCB之前,一定要先認真檢查是否有可見的短路和管腳搭錫等故障,檢查是否有元器件型號放置錯誤,第一腳放置錯誤,漏裝配等問題,然後用萬用表測量各個電源到地的電阻,以檢查是否有短路,這樣可以避免貿然上電後損壞單板。調試的過程中要有平和的心態,遇見問題是非常正常的,要做的就是多做比較和分析,逐步的排除可能的原因,直致最終調試成功。 在硬件調試過程中,需要經常使用到的調試工具有萬用表和示波器,邏輯分析儀等,用於測試和觀察板內信號電壓和信號質量,信號時序是否滿足要求。 硬件階段7:硬件產品測試 當硬件產品調試通過以後,我們需要對照產品產品的需求説明,一項一項進行測試,確認是否符合預期的要求,如果達不到要求,則需要對硬件產品進行調試和修改,直到符合產品需求文明(一般都以需求説明文檔作為評判的一句,當然明顯的需求説明錯誤除外)。 硬件階段8:硬件產品 我們最終開發的硬件成功。一個完整的,完成符合產品需求的硬件產品還不能説明一個成功的產品開發過程,我們還需要按照預定計劃,準時高質量的完成。才是一個成功的產品開發過程。

    時間:2020-10-22 關鍵詞: 嵌入式 嵌入式系統

  • Linux安裝軟件文件時遇到的常見報錯和解決方法

    Linux安裝軟件文件時遇到的常見報錯和解決方法

    我們在使用linux時,提示 Could not get lock /var/lib/dpkg/lock 報錯? 有些小夥伴在使用 apt 包管理器更新或安裝軟件時,可能會遇到過諸如以下的錯誤提示: 這種時候大可不必驚慌,這些錯誤提示一般都是因為某些程序在系統後台進行着某些 apt 操作,因此鎖定了 apt 數據庫,所以暫時不能進行 apt 操作。 解決方案 那遇到這種情況,一般我們只需要安靜地等待幾分鐘,或者先去做其他的事情,比如瀏覽一下良許 Linux 公眾號裏的文章,直到當前的更新、安裝或卸載任務完成後,鎖就會自動釋放,然後就可以進行 apt 操作了。 當然了,上面説的是正常情況下的對應,那非正常情況下,比方説你等了好多個幾分鐘鎖都還沒有被釋放,你就要看看是不是該進程由於某些原因而卡住了並且一直佔用着鎖。如果是的話,那你只能幹掉這個進程,然後刪除該鎖定了。 首先,我們先找出是哪個進程佔用了鎖文件 /var/lib/dpkg/lock $ sudo lsof /var/lib/dpkg/lock 其他鎖文件對應的命令 $ sudo lsof /var/lib/dpkg/lock-frontend $ sudo lsof /var/lib/apt/lists/lock 然後得到輸出結果 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME unattende 1548 root 6uW REG 8,2 0 1181062 /var/lib/dpkg/lock 我們可以從結果中看到,該進程的 PID 為 1548 接着,kill 掉這個進程 $ sudo kill -9 1548 然後你就可以放心地刪除鎖文件 $ sudo rm /var/lib/dpkg/lock 或者 $ sudo rm /var/lib/dpkg/lock-frontend $ sudo rm /var/lib/apt/lists/lock 如果需要,還可以刪除緩存目錄下的鎖文件 $ sudo rm /var/cache/apt/archives/lock 做完上面的步驟後,記得要運行以下命令 $ sudo dpkg --configure -a 這樣問題應該就可以解決了。

    時間:2020-10-22 關鍵詞: Linux 文件

首頁  上一頁  1 2 3 4 5 6 7 8 9 10 下一頁 尾頁
發佈文章