Time of Update: 2018-12-03
遠端偵錯環境由宿主機GDB和目標機調試stub共同構成,兩者通過串口或TCP串連。使用GDB標準程串列協議協同工作,實現對目標機上的系統核心和上層應用的監控和調試功能。調試stub是嵌入式系統中的一段代碼,作為宿主機GDB和目標機偵錯工具間的一個媒介而存在。就目前而言,嵌入式Linux系 統中,主要有三種遠端偵錯方法,分別適用於不同場合的調試工作:用ROM
Time of Update: 2018-12-03
我們都應該知道,進階語言的函數調用過程中,有“棧”這麼一個概念,被調用函數的局部變數是存放在棧中的,函數調用的參數也是通過棧傳遞的。那麼,調用函數是怎麼把各種資料壓入棧中,被調用函數又是怎麼對棧進行操作以擷取必要的資料呢?函數調用發生完畢之後,誰又負責清理這個棧?這就用到了函數調用棧規範!函數調用棧規範是指編譯器的一中“約定”,他規定了調用者如何傳遞參數,被調用者如何擷取參數,調用完成後怎麼清理棧,怎麼傳遞傳回值等。編譯器在編譯器的時候遵循這種規範,從而使程式正確的執行。對於不同的編譯器,不同
Time of Update: 2018-12-03
1、首先ldd不是一個可執行程式,而只是一個shell指令碼 2、ldd能夠顯示可執行模組的dependency,其原理是通過設定一系列的環境變數,如下:LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIND_NOW、LD_LIBRARY_VERSION、LD_VERBOSE等。當LD_TRACE_LOADED_OBJECTS環境變數不為空白時,任何可執行程式在運行時,它都會只顯示模組的dependency,而程式並不真正執行。要不你可以在shell終端測試一下,如下:
Time of Update: 2018-12-03
轉自:http://www.zxbc.cn/html/20080712/60742.htmlInclude的header檔案,動態連結程式庫,系統定義,總共有下列來源指定gcc去那裡找。當初在編譯時間指定的(在~gcc/gcc/collect2.c:locatelib()寫在specs內的 ,內定的,這是當初compile gcc時寫在程式內的。後來用-D -I -L指定的gcc環境變數設定(編譯的時候)ld.so的環境變數(這是run
Time of Update: 2018-12-03
當我們的程式中有經常使用的模組,而且這種模組在其他程式中也會用到,這時按照軟體重用的思想,我們應該將它們產生庫,使得以後編程可以減少開發代碼量。這裡介紹命令ar,用來對庫操作。 1.ar基本用法 ar命令可以用來建立、修改庫,也可以從庫中提出單個模組。庫是一單獨的檔案,裡麵包含了按照特定的結構組織起來的其它的一些檔案(稱做此庫檔案的member)。原始檔案的內容、模式、時間戳記、屬主、組等屬性都保留在庫檔案中。 下面是ar命令的格式: ar
Time of Update: 2018-12-03
本文詳細的記錄了在 Linux 安裝Fortran編譯器的過程 1. 在瀏覽器中開啟 http://gcc.gnu.org/wiki/GFortranBinaries2. 下載Linux的2進位版本,我的Linux是Fedora16, x86-64,所以我選擇的是http://gcc.gnu.org/wiki/GFortranBinaries下的 64-bit AMD-compatible processors (x86_64, AMD64,Intel64, em64t) 2.1
Time of Update: 2018-12-03
Linux手機DIY.庫檔案專題.知識準備草木瓜轉抄 於 2006-11-9一、序 軟體移植過程中,Linux作業系統的庫檔案著實令人頭疼,這方面資料也比較少。通過一段時間搜尋查詢推敲,寫點總結吧,也算是有點成果。不過這篇內容大多都是抄的,這裡對原創作者表示深深的敬意~二、重要提示 為了方便更好的理解本文,提供下面鏈結。 全系列的文章地址,手機應用開發專欄:http://blog.csdn.net/liwei_cmg 相關的重要成果的:http://play.younet.
Time of Update: 2018-12-03
Linux手機DIY.夏新E600和飛利浦968的重大突破草木瓜 更新於 2006-10-24 下午一、序 夏新E600和飛利浦968終於在同一天取得了重大突破!皆可以執行自訂的Shell指令碼!在這樣還是要感謝那些無數次重啟試機的朋友們。 昨天無意翻到一個貼子,說得是Shell的解釋執行,忽然想到目前嘗試的Shell指令碼,全是想當然的用/bin/bash解釋運行,如果飛利浦968不存在這個可執行檔是絕對不可能啟動並執行。
Time of Update: 2018-12-03
Linux手機DIY.庫檔案專題.交叉編譯的浮點問題草木瓜 於 2006-11-9一、序 交叉編譯過程的浮點問題可畏老大難,各個gcc的版本相容性不一,所對應的patch效果差異又很大。這對構造不同於E680的E600編譯環境造成了很大麻煩,這裡我對嘗試的過程做下描述,以供參考,畢竟中文資料少得可憐。二、重要提示 為了方便更好的理解本文,提供下面鏈結。 全系列的文章地址,手機應用開發專欄:http://blog.csdn.net/liwei_cmg
Time of Update: 2018-12-03
Linux手機DIY.夏新E600和飛利浦968安裝包專題草木瓜
Time of Update: 2018-12-03
Linux手機DIY.構建統一安裝包草木瓜 於 2006-11-25一、序 因為夏新E600與飛利浦968差異比較大,所以有必要對安裝進行一次標準性的統一。subtle早在幾天前就針對目前安裝包的弊端,開發出新包。所以安裝包是在此基礎上,又重新考慮夏新E600和飛利浦968的系統特點和未來的軟體因素製作而成。
Time of Update: 2018-12-03
之前一直有這樣的需求,當時問到,也沒搜到方法,現在竟然既問到了,也搜到了,哎,世事真是不能強求啊! 在linux核心調試中,經常用到的列印函數呼叫堆疊的方法非常簡單,只需在需要查看堆棧的函數中加入:dump_stack();或 __backtrace();即可。 dump_stack()在~/kernel/ lib/Dump_stack.c中定義 void dump_stack(void){ printk(KERN_NOTICE "This architecture does not
Time of Update: 2018-12-03
Linux手機DIY.核心初探.系統後台啟動簡單介紹草木瓜 於 2006-11-25一、序 Linux系統是如何啟動,這對將來應用開發是十分重要的,本文整理自Linux論壇,結合Moto E680,夏新E600和飛利浦968進行簡單介紹二、重要提示 為了方便更好的理解本文,提供下面鏈結。 全系列的文章地址,手機應用開發專欄:http://blog.csdn.net/liwei_cmg三、Linux啟動過程總體概述
Time of Update: 2018-12-03
解壓縮 arm-linux-gcc-3.4.1.tar.bz2 得到一個usr 目錄把usr/local/arm 檔案夾 拷貝到 /usr/local下 看好了,第一個usr是目前的目錄 ,第二個usr是根目錄下cp -r usr/local/arm /usr/local這就放好來,然後添加環境變數編輯/etc/bash.bashrc (sudo 開啟,或者 root 使用者)最後添加兩行: export PATH=$PATH:/usr/local/arm/3.4.1/bin export
Time of Update: 2018-12-03
linux下/dev/loop常用於製作檔案系統鏡像檔案rootfs.img,以便下載到核心中掛載;http://zh.wikipedia.org/wiki//dev/loop我們日常接觸到比較多的鏡像檔案*.iso,都是用資料檔案來儲存實際塊裝置上的資料;首先必須明確,想光碟片,硬碟,磁碟片這樣的裝置上隱藏檔需要特定的檔案系統,上面有大量的檔案系統特定資訊用於管理上面的檔案,這些資訊和檔案資料一起組成了檔案系統的全部,所以鏡像檔案就是這些內容的總和。鏡像檔案做出來之後,可以放在存放裝置上作為一
Time of Update: 2018-12-03
url:http://cache.baidu.com/c?m=9d78d513d98205f34fede520564a902c0e54f1744dd6c7610ec3e24b84132c550026bdb47d645646c4c40f7a1cff1701bfe73605664276eb8cc8ff168afd8f7664de20377a01d501438942eb9c5b25c3229a47eba504e4b1ed3296a5d7d0de5244ca24563bc2ba&p=cb77c6
Time of Update: 2018-12-03
在程式不尋常退出時,核心會在當前工作目錄下產生一個core檔案(是一個記憶體映像,同時加上調試資訊)。使用gdb來查看core檔案,可以指示出導致程式出錯的代碼所在檔案和行數。1.core檔案的產生開關和大小限制 1)使用ulimit -c命令可查看core檔案的產生開關。若結果為0,則表示關閉了此功能,不會產生core檔案。 2)使用ulimit -c filesize命令,可以限制core檔案的大小(filesize的單位為kbyte)。若ulimit -c
Time of Update: 2018-12-03
下面是以前學習Linux時寫的,後來仔細研究rc.sysinit後發現,只需要修改下列地方就可以了,不必這麼麻煩的:rc.sysinit中有這樣的一段代碼:# Load other user-defined modulesfor file in /etc/sysconfig/modules/*.modules ; do[ -x $file ] && $filedone# Load modules (for backward compatibility with VARs)if [
Time of Update: 2018-12-03
自旋鎖:是linux核心中最常見的鎖,自旋鎖最多隻能被一個可執行線程持有,如果一個執行線程試圖獲得一個被持有的自旋鎖,那麼該線程會一直進行忙迴圈,旋轉,等待鎖重新可用.在任何時候,自旋鎖都可以防止多於一個的執行線程同時進入臨界區,一個被爭用的自旋鎖會導致請求他的線程在等待鎖重新可用時自旋,所以自旋鎖不應被長期持有.這也是自旋鎖的初衷:在短期內進行輕量級加鎖.自旋鎖的實現與體繫結構密切相關,代碼往往通過彙編實現.這些與體繫結構相關的代碼定義在<asm/spinlock.h>檔案中,實際
Time of Update: 2018-12-03
---------------------------------------------------------------------------------------------已經看過的書: C 程式設計語言第二版Linux C 編程UNIX環境進階編程(第2版)Linux裝置驅動程式(第三版)構建嵌入式 Linux 系統LINUX與UNIX SHELL編程指南Linux核心設計與實現(第二版) Linux核心編程指南(第三版)Linux 核心完全剖析-----------------