原创 查找ko文件中text段的某個函數名

1.前言 目的是找到ko_hi3518目錄下某個ko文件中是否存在某個函數定義的地方。 如:查找CMPI_CreateProc是在哪個驅動文件中實現的。 2.ko_hi3518目錄 acodec.ko hi

原创 批量建立軟鏈接

批量建立軟鏈接 例如以下三個文件: arm-hisiv100-linux-uclibcgnueabi-addr2line arm-hisiv100-linux-uclibcgnueabi-gc

原创 Linux 內核資源限制 -- 棧限制

1.序言 今天某同事突然問我:我在Linux上寫了一個測試程序,在函數內部定義了一個很大的數組,一運行就 Segmentation fault. 當時一想肯定是棧溢出了。其實這樣說也不準確,還是決定去看內核代碼,其實內核對

原创 Windows 與 Ubuntu 實現共享

1.前言 在開發當中,往往爲了方便閱讀代碼,而需要實現Windows與Linux server之間的文件共享。 2.共享 ⑴共享Windows目錄 ⑵掛着Windows到Linux server sudo

原创 多個shell命令組合

1.概述 在項目開發中,會依賴許多標準庫或者頭文件。而我們又不知道該庫在哪個路徑下面,我們可以使用某些編譯器所自帶的屬性來操作。 2.命令 ⑴首先 man gcc ,然後 輸入 /print 回車 ...s

原创 Linux命令 - 去掉空格、去掉多餘空格、大小寫轉換、打印列

1.空格 ⑴去掉空格 leon@netview:~$ date Fri Sep 30 14:30:55 CST 2016 leon@netview:~$ date | sed s/[[:space:]]//g FriSep301

原创 項目經驗之談 —— 利用編譯器及C語言特性進行內存邊界檢測

1.前言 在C語言中,邊界檢測總是一個讓程序員頭疼的問題,一不小心程序就崩潰了。C語言本身並沒有提供邊界檢測的語法。但我們可以利用語言本身的一些特性及編譯器進行邊界檢查。 2.校驗內存邊界 #define VERIFY_BOUND

原创 Linux命令-dirname、basename

1. 例子 leon$ find ./ -maxdepth 3 -type f ./misc/nv_misc_pub.h ./util/nv_util_pub.h ./common/nv_common_pub.h ./camer

原创 設計淺談 -- 分層設計之驅動框架

1.前言 良好的代碼必定有良好的架構. 2.框架 app layer driver layer 3.代碼設計 ⑴數據結構 (2)函數設計 點贊 收藏 分享 文章舉報

原创 面向對象編程之C庫函數 -- strcpy , memcpy , strdup 之區別

1.概述 在C編程當中常常會用到這三個函數。一般初級程序員會區分不出其本質性區別。在編程當中不正確使用,或者隨意使用常常會帶來不可控的風險。 2.函數原型 char* strcpy(char* des,const

原创 Linux命令 -- 將某個文件中的字符串小寫字母全部轉爲大寫字母

1.前言 有時候要將某個文件字符串進行大小寫轉換,這條命令還是很方便. 2.腳本 將 test.txt 文本中字符串的小寫字母全部轉爲大寫字母,另存爲 result.txt echo ` cat test.txt

原创 位置相關(無關)碼 淺談

1.前言 在嵌入式開發當中.往往會聽到一個概念:代碼重定位. 2.重定位 將代碼進行重新映射。 3.位置相關/無關碼 ⑴位置相關碼 簡單來說,包含全局信息相關的代碼。 ⑵位置無關碼 資源在棧上分配,

原创 Linux命令 -- 提取字符串指定字符串之間的字符串

1. 例子 提取字符串以下字符串 error: 與 : 之間的子字符串。並消除空格。 "src/network/misc/nv_net_udp.c:17: fatal error: nv_net_tools.h: No such

原创 將某個目錄下所有ko文件反彙編

1.命令 for i in `ls *.ko`; do objdump -D $i > $i.dis; done 點贊 收藏 分享 文章舉報 leon_2016

原创 項目經驗之談--驅動崩潰分析之棧回溯技術與反彙編

1.序言 驅動往往是芯片廠商提供的,而且是不開源的。 一旦崩潰很難查找原因,當然辦法是有的,比如內核爲此也提供棧回溯技術(低版本的好像沒有實現)來定位分析驅動問題。再不濟也可以反彙編ko文件。 2.棧回溯 棧回溯技術由來已