Linux嵌入式開發的一些總結

2021-05-11 12:39:05 字數 2570 閱讀 1031

宋立新email

[email protected]

做了幾年

linux

底層嵌入式開發,

有一些心得,

這裡記錄下來,作為進一步學習

linux

之前的乙個總結。

daily build

nokia/microsoft

等,都採用了該機制。是終端產品開發中乙個

best practise.

其好處有:

ü構建指令碼在一定的穩定週期後可以保證無差錯的編譯出版本。

避免人工編譯的偶發性錯誤。

ü節約人力成本。

dailybuild

通常在深夜執行。不占用白天寶貴的人力、機器時間。

ü便於版本回溯。出了新問題時,只要取出歷史版本,進行二分查詢,即可快速定位問題的初現版本。

ü可以快速推出版本。

必要時,可以人工執行指令碼。

相信很少有人開發軟體不使用版本管理工具。版本管理是每日構建,快速開發的基礎。

目前可選的版本管理工具有:

cc/git/svn ü

cc 由於沒有深入研究(沒有機會進行伺服器端管理及二次開發等),目前個人看到了兩個缺點:

1.**昂貴,一般只有

windows

客戶端,

很難獲得符合要求的

linux

客戶端(

比如,某版本只支援

redhat linux)

。所以,提交等操作必須在

windows

下執行。而我們的**都是在

linux

主機上編譯的。

手工地進行

windows/linux

拷貝容易出問題。比如,

鏈結檔案問題。

2.windows

下的cc

無法支援事後取出每個版本(指以

commit

為最小區分的版本,也可能是我不知道,

至少我請教過的所有人都不知道)這導致在出了問題時很難快速定位。

ügit

的好處是非常快速,

由於所有**都在本地,任何操作都不依賴伺服器。缺點有:

1.不支援許可權管理。由於任何乙個客戶端其實就是伺服器端得乙份拷貝。所以人都對等地獲得所以源**。

2.不支援子目錄操作。

你無法只是取出某個感興趣的子目錄。

(android

在git

的基礎上使用了

repo)ü

svn

的好處是支援非常精細的許可權管理

(當然,可能不如

cc,

但足夠了

),可以控制某個人對某個目錄的許可權。缺點有:

1.由於基於

cs (客戶、伺服器)架構,如果伺服器崩潰了,則歷史資訊就丟失了。這一點跟

cc類似。

git

則沒有此問題。

通常,我們對版本管理工具的需求有:

1)支援

dailybuild/autobuild,

因為人工操作經常出錯,我們應該盡量把能夠自動化的操作交給指令碼自動執行。

2)支援高效的回歸測試。 3)

支援許可權管理。

4)支援

linux/windows

雙作業系統下的便捷操作。

目前看來,

svn

比較合適。

現在應用層開發單元測試的思想已經很流行,有人提出了測試驅動開發。

其實我認為底層開發同樣適合使用測試驅動的方法。

測試可以是乙個指令碼,

一段**,或者乙個過程描述。

可以執行

/執行的測試程式比乙份使用說明更加令人放心,乙個驅動的測試**可以用作:

1)應用層開發人員**整合時的示例**。

2)測試人員進行測試時的起點**。

3)後續維護人員熟悉**的切入點。

4)原作者在新增新**後檢查新**是否會有影響的工具。

5)硬體同事用來測試硬體特性的工具。

單元測試可以分為功能測試,效能測試,穩定性測試等。豐富的單元測試用例是開發人員給自己的**加上的一道保險,也是提高系統迭代效率的利器。

工作過程中的很多細節,包括測試資料,除錯資訊,查到的參考資料,想法等,事後再去回憶,其實是很難跟當時一樣詳細的。

養成記錄的好習慣,對以後整理文件、

復現問題、工作交接等都有很大的幫助。

在實現了產品定義的基本功能後,我們就開始做優化了!

優化就是定義一些關鍵指標,然後將這些指標做的足夠好。

linux

下已經有很多任務具,可以幫助我們來實現基於度量的優化。這裡不講細節,只是強調要有優化意識。腦海裡總是想著該如何能夠做得更好,一有想法要盡快去嘗試,不斷把事情做得更好。

優化不僅僅侷限於把乙個模組、乙個產品做好,

流程、工作方式的優化是更重要的優化。

山外有山,人外有人。身處資訊時代,我們每天都可以快速獲得全世界的資訊。

新的技術、新的工具可以提高我們的開發效率。有時你正在努力製造的輪子其實別人已經提供了乙個完美的版本。

技術進步實在太快,我們應該努力跟上。也唯有持續學習,才能保持旺盛的工作能力,立於不敗之地。

嵌入式開發中的一些細節

從事開發一年多,發現到一些小細節,會影響到自己開發的效率,特總結如下,以免犯錯 1.標準c中str系列的函式中,0 有特殊的含義 字串結束 所以如果要操作具有0x00 有實際意義 的字串,不應該用該系列的函式。例 有字串 0nocookie 0nocache 0 本義是想用 0 來表示分隔符,分隔出...

一些C函式 嵌入式Linux

1.exit 電腦函式 函式名 exit 所在標頭檔案 stdlib.h 如果是 vc6.0 的話標頭檔案為 windows.h 功 能 關閉所有檔案,終止正在執行的程序。exit 1 表示異常退出.這個1是返回給作業系統的。exit x x不為0 都表示異常退出 exit 0 表示正常退出 exi...

嵌入式linux開發 一

最近買了乙個 正點原子arm linux開發板,想在這兩天對資料熟悉一下.並結合 jz2440 探索者stm32f407 和 普中科技 em3.0 進行專題分析.開發板基於 soc mcimx6y2cvm08ab i.mx6ull cortex a7 易失性儲存 nt5cc256m16ep ek d...