Time of Update: 2018-12-03
文章來源:http://www.top-e.org/jiaoshi/class/ 03年我畢業於陝西一所普通高校電子資訊專業,當時對Linux作業系統一無所知,幾乎都沒有真正運行過Linux系統,大學畢業後在北京一所大學讀了2年的軟體工程碩士,也許是學校和專業的原因,我對軟體開發有了強烈的興趣。04年底上研究生期間我找了份實習機會,在Motorola中國電子有限公司做手機測試,由於之前沒有任何工作經驗,所以雖說測試工作比較簡單但也讓我學到了很多軟體開發流程方面的知識,實習了6個月,實習結束時我
Time of Update: 2018-12-03
引言 Embedded Linux技術基於開放源碼的資源,並且已經是當今最重要的嵌入式應用技術之一。Embedded Linux是燒錄在目標裝置上的系統,1個Embedded Linux系統包含Linux kernel與 root filesystem 2大部分,Embedded Linux系統到底包含哪些組成要素構成,本文將由概念的層面進行解析。 本文 由於目前的目標裝置,都必須嵌入極為複雜的功能,所以嵌入式作業系統(Embedded
Time of Update: 2018-12-03
文章來源:http://www.top-e.org/jiaoshi/class/EXPORT_SYMBOL標籤內定義的函數對全部核心代碼公開,不用修改核心代碼就可以在核心模組中直接調用。還可以手工修改核心原始碼來匯出另外的函數,用於重新編譯並載入新核心後的測試。 使用時注意事項:在使用EXPORT_SYMBOL 的.c檔案中 需要 #include <linux/module.h> 檔案。//先寫函數func
Time of Update: 2018-12-03
文章來源:http://www.top-e.org/jiaoshi/class/一般來說,使用者是不需要關心section的具體位置的。在使用者態,核心會解析elf可執行檔的各個section,然後把它映射到虛擬位址空間。然而,在核心啟動時,一切得從零開始。很多在使用者態下應用程式不需要操心的東西,例如映射section的任務不得不由核心自己來完成。上一篇感悟揭示了核心如何建立頁表,並且把自身的一部分映射到虛擬位址。核心還要負責對BSS段(所有在代碼中未定義的全域變數)的初始化(設定為0),這就
Time of Update: 2018-12-03
常用嵌入式Linux二進位調試工具(1) Ø READELFreadelf可用來顯示ELF格式可執行檔的資訊。比如用readelf查看hello.o中的各個Section的結果如下:$ readelf -S hello.oThere are 15 section headers, starting at offset 0x228: Section Headers: [Nr] Name Type Addr Off
Time of Update: 2018-12-03
首次發表於:http://www.top-e.org/jiaoshi/html/?125.html 1.首先需要對C語言編程非常熟悉,這是在Linux下編程的基本條件。2.會寫簡單的Makefile,編寫一個簡單的應用程式,再寫一個Makefile,讓它能正常編譯。Makefile主要目的就是用來管理編譯龐大的代碼檔案。3.瞭解Linux核心的目錄結構,尤其要熟悉kernel目錄下的driver目錄組織圖,這裡一般存放核心中的驅動程式。4.學會配置、編譯Linux核心。5.寫一簡單char驅動,
Time of Update: 2018-12-03
一.linux理論知識 1.電腦基本理論;2.CPU體繫結構;3.記憶體管理;4.檔案系統;5.進程調度;6.Linux常用操作。二.linux驅動知識1.i2c驅動添加使用 2.spi驅動添加和讀寫 3.io驅動 4.dma驅動 5.中斷源 6.競爭,並發,阻塞,非同步,線程,記憶體,io,調試
Time of Update: 2018-12-03
文章來源:http://www.top-e.org/jiaoshi/html/?196.html “真羅嗦,直接告訴我Linux下用glibc庫編譯出來的C程式真正的入口地址是_start()不就行了嗎?”臭雞蛋撲面而來。嗯,我說了我只是想用一種特別的方式來敘述問題。我更看重探索的過程中體現的思考方式以及其中的樂趣。回到我們的主題。Linux核心為什麼不是從main函數開始執行?事實上,Linux核心原始碼裡有許多main()函數,但仔細一看。他們都是運行在使用者態的。其實,從上一節中可以看到,
Time of Update: 2018-12-03
前言 本系列文章將結合近年來不斷在各種硬體(包括 CPU、晶片集、PCI Express 等各種最新匯流排標準以及外設)上新增的節能技術。 從 Linux 2.6核心及整個 software stack (包括 kernel、middleware 以及各種使用者態 utility)如何添加對這些創新的節能技術的支援這一角度,為讀者介紹 Linux 操作系統近幾年來在電源管理方面所取得的長足進步以及未來的發展方向。
Time of Update: 2018-12-03
嵌入式Linux核心最佳化裁剪 最佳化1、取消虛擬記憶體的支援General setup ---> [ ] Support for paging of anonymous memory (swap) 最佳化2、使用預設的IO調度器,取消其他的調度器-*- Enable the block layer ---> IO Schedulers ---> < > Anticipatory I/O scheduler <*>
Time of Update: 2018-12-03
一、嵌入式系統設計方法變化的背景 嵌入式系統設計方法的演化總的來說是因為應用需求的牽引和IT技術的推動。
Time of Update: 2018-12-03
1.修改linux啟動方式(文本方式或xwindow方式)vi /etc/inittab,找到id:x:initdefault:一行,x=3為文本方式 x=5為xwindow方式,重啟機器即可生效2.如何退出man?q3.如何察看核心版本號碼?uname -r4.刪除內有檔案和子目錄的目錄?rm -fr dir5.如何查看系統資訊?cat /proc/meminfo(cpuinfo/pci...)6.查看目錄的大小?du -sh dir7.如何安裝RMP軟體?rpm -ivh ***.rpm
Time of Update: 2018-12-03
由於嵌入式系統中硬體條件的限制,在嵌入式Linux系統中龐大臃腫的X Window不太適合,我們需要一個高效能、輕量級的GUI系統。一般的說,適合於嵌入式Linux系統的GUI應該具有下面的一些特點:² 體積小,佔用較少的Flash和RAM。安裝GUI系統的時候應可以根據實際的需求對GUI系統進行方便的裁剪和精簡,以減少安裝所需要的儲存空間;在系統啟動並執行時候應佔用儘可能少的RAM。²
Time of Update: 2018-12-03
這段時間在看《Linux核心原始碼情景分析》,順便寫了一些感悟。讀核心原始碼是一件很有意思的事。它像一條線,把作業系統,編譯原理,C語言,資料結構與演算法,電腦體繫結構等等電腦的基礎課程串起來。
Time of Update: 2018-12-03
標題很拗口。這兩天在折騰這個事,把折騰的結果記錄一下。 先說在應用程式層怎麼搞這個事,很簡單:#include <stdio.h>#include <unistd.h>int main() { char link[100], path[100]; sprintf(link, "/proc/%d/exe", getpid()); readlink(link, path, sizeof(path)); printf("
Time of Update: 2018-12-03
函數說明: kthread_create:建立線程。struct task_struct *kthread_create(int (*threadfn)(void *data),void *data,const char *namefmt, ...); 線程建立後,不會馬上運行,而是需要將kthread_create() 返回的task_struct指標傳給wake_up_process(),然後通過此函數運行線程。 kthread_run :建立並啟動線程的函數:struct
Time of Update: 2018-12-03
最近在調試linux核心驅動,宕機無數次。關於linux的死法也有些心得。 1、嘎嘣兒脆型。 特點:啥提示也沒有,說宕就宕,/var/log/messagesXXX,裡邊啥提示資訊也沒有。 原因:八成是你自己沒玩兒好,在kernel裡邊記憶體越界了。還有兩成是超過了linux核心棧8K的限制。2、半死不活型。 特點:ssh不上,但是ping是能ping通的。 原因:一定是在什麼地方加鎖了,然後return的時候忘瞭解鎖了。3、自我救贖型。
Time of Update: 2018-12-03
如果一個木馬要隱藏起來,不被系統管理員發現。截獲系統調用似乎是必須的。大部分情況下,通過修改系統調用表來實現系統調用的劫持。下面是一個典型的截獲系統調用的模組:模組一:#include <linux/module.h>#include <linux/kernel.h>#include <asm/unistd.h>#include <sys/syscall.h>#include <linux/types.h>#include
Time of Update: 2018-12-03
Linux2.6X核心中檔案相關結構體總結一、 常見檔案相關結構體以2.6.22為例,其他的2.6.X版本可能調整,但是變化不大。1.1 struct filestruct file結構體定義在include/linux/fs.h中定義。檔案結構體代表一個開啟的檔案,系統中的每個開啟的檔案在核心空間都有一個關聯的struct file。它由核心在開啟檔案時建立,並傳遞給在檔案上進行操作的任何函數。在檔案的所有執行個體都關閉後,核心釋放這個資料結構。在核心建立和驅動源碼中,struct
Time of Update: 2018-12-03
====================Step1====================在Windows下參看http://www.cnblogs.com/vincentfon/archive/2011/06/13/2079823.htmlhttp://www.seriss.com/people/erco/fltk-videos/ 在linux下: 下載fltk的SourceCode後, 直接解壓 tar xvf fltk... 然後 make 再 make