瀏覽模式: 普通 | 列表
07
10

Linux虛擬機器-QEMU初體驗

QEMU是這兩年相當火熱的一個話題,我第一次看到相關的報導,是在PTT的小軟體版,那時對這個東西的印像其實並沒有這麼深刻,”反正不過又是另一個VMWARE罷了”,我心裡這樣想著

可是後來在搜尋kernel debug相關的文章時,QEMU老是出現在搜尋的列表裡面,看了這些文章,才慢慢開啟我對它的興趣,原來kernel tracing可以這麼簡單

QEMU的特點就是內建GDBSERVER, GDBClient透過stub可以跟QEMU的GDBSERVER交換訊息,所以可以設任意的中斷點在kernel souce的任一個地方,讓使用者觀察cpu register和相關的程式執行狀態

下面這篇文章,就是在講解我做linux kernel tracing實驗的過程

[閱讀全文]

標籤: linux
07
08

檢查程式記憶體的小工具-valgrind

一般檢查memory leak的工具不外乎如electric fence, leak tracer…等,但大部份的工具在使用上都很麻煩,必需重編你的程式並連結這些debug工具的library,開什麼玩笑,為了這樣我還要改Makefile…!@#$神經病

最近發現了一個小巧且功能還不算太簡陋,又很適合懶人使用的memory leak工具,它就是valgrind.在詳細說明

[閱讀全文]

標籤: linux
07
02

Linux porting on different platform HowTo(完)

底下是操作的流程與貼圖,請先下載qt2410 noMMU image pack

(1)燒錄u-boot.bin(made by armzone
(2)開啟本機端的tftp server,並把image都擺在tftp的家目錄

(3)u-boot開機完後請在命列輸入run wkf(write kernel to nand flash and load file system)

[閱讀全文]

標籤: embedded
07
02

Linux porting on different platform HowTo(5)

如果要讓kernel自解壓縮時把訊息印在console,那只要寫下列函式即可
(1)console initial函式
(2)putc函式
這兩個函式是獨立於driver之外的特殊函式,在編譯kernel時,當編譯到misc.c,會把以下這幾個函式編進去

[閱讀全文]

標籤: embedded
07
01

Linux porting on different platform HowTo(4)

修改完我之前講過的irq,timer後,渡過了一段console沒有字的debug時間,從頭到尾都用ICE去trace是很悶的,現下我把console的程式碼加上,讓console跑點字出來吧

Kernel所有的訊息都是印在console上的,所以在kernel用printk其實等於直接把buffer content倒在console

但user space的application可不是這樣,當printf印訊息時,其實是透過tty driver呼叫我們的serial driver然後請serial driver幫忙印字

藉由上面的介紹,大概瞭解console driver會用到serial driver的write函式,而serial driver也必需跟tty driver註冊自己

[閱讀全文]

標籤: embedded
07
01

Linux porting on different platform HowTo(3)

QT2410的timer一共四組,我這邊先略過timer詳細的操作步驟,相關資料在網路上都可以找得到,而timer範例程式碼可參考我之前寫的qt2410 bootloader

打開arch/arm/mach-qt2410/time2410.c,可看到如下程式碼
  1. struct sys_timer qt2410_timer = {
  2.         .init           = qt2410_time_init,
  3.         .offset         = qt2410_gettimeoffset,
  4. };

[閱讀全文]

標籤: embedded
07
01

Linux porting on different platform HowTo(2)

承之前的文章, Linux porting的步驟如下所示
1.根據你的平台和相關硬體,找出一個跟此結構最相似的architecture
2.拷貝這個結構的硬體範本到新結構的目錄下.通常只需拷貝以下幾個資料夾
  <1>arch/xxx/mach-xxx
  <2>include/arch/xxx/mach-xxx
3.試著編譯新架構並修改相關的define和Kconfig檔案
上面的步驟完成後,你已經有一個新架構的殼在那裡了

[閱讀全文]

標籤: embedded
06
20

Linux porting on different platform HowTo(1)

這篇主要是介紹如何porting Linux到不同platform的步驟,並且把該修改的檔案和kernel該選的選項稍微介紹一下,會順代提一下debug的方式

因為小弟最近在忙其它的專案,所以這篇HowTo我把它分成幾個部份分開發表,而我打算以NoMMU的QT2410 Linux做為此次移植的目標.

[閱讀全文]

標籤: embedded