原创 Crash:一個死鎖引發Kernel PANIC的思考

       軟件開發過程中經常會遇到因驅動或內核引起的死機問題,我遇到的有hung_task和NULL point兩種類型問題。通常的分析和解決這兩類問題,都是通過查看kernel log的方式去解決,但是有時也會從kernel log

原创 基於linux-4.18新建一個項目和如何給linux社區發送patch

我們在工作的過程中,通常會遇到新建項目的需要,比如項目經理提出我們需要基於linux-4.18的內核版本創建新項目A的需要,大部分做開發的人員可以會一頭霧水了。下述步驟是在ubuntu16.04上執行的結果,其他linux系統類似. 1.

原创 Linux常見的內存分析工具

    隨着技術的日新月異,嵌入式軟件產品也逐漸往更高端, 運行更流暢方向發展。正常我們目前的手機產品,常見的基本都是32G,16G,已經很難在看到1G的內存了。即使如此我們還是會面臨內存不夠用導致系統慢的結果。本文將列出幾個我比較熟悉的

原创 一個簡單的例子:native service binder通信

本小結描述native層進程間binder通信,包括client端和 Server端. 下面將根據一個具體的事例來介紹如何在native層使用binder. 自頂往下看,首先看到的就是Android.mk, 可以看到在使用binder之前

原创 gerrit上提交代碼時出現Merge Conflict解決辦法

    平時使用gerrit管理代碼的公司,軟件開發人員經常會發現如果提交的代碼不及時+2或者merge,如果有其他開發人員先於你merge(你們都是基於同於代碼base), 那麼你的代碼將無法入庫,出現merge conflict.  

原创 module_init()加載設備驅動

 我們知道在寫設備驅動的時候通常要爲某個設備實現xxx_init函數,並將該函數傳入module_init(xxx_init), 當kernel啓動之後該設備驅動就可以被內核加載,這一章節將以倒敘的方式詳細介紹了內核是如何加載module

原创 QEMU調試linux內核

經常會有學習linux的朋友在問學習linux是否一定要買發開版,答案是否定的,但如果你需要在產品級別的驗證,買一塊開發板做開發板還是非常有必要的。本文主要介紹使用QEMU來調試ARM linux內核,一臺PC全部搞定,調試內核非常方便。