宋立新email
做了幾年
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...