目前日期文章:201010 (9)

瀏覽方式: 標題列表 簡短摘要

先從幾個重要的structure 看起,並以wm8580為例,這些屬於platform driver,請見smdkc100_wm8580.c:

platform device註冊

snd_soc_device: audio subsystem

這個結構是platform device註冊最主要的,註冊就是利用這個結構來填platform drvdata。

/* SoC Device - the audio subsystem */

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

  • Oct 27 Wed 2010 10:38
  • scope

variable的modifier定義其特性,這次討論static與extern:

static variable: 其值是會保留在記憶體的,不隨著離開其scope而消失 (只initialize一次)。

extern variable: 該變數已在其他地方(包括其他file)被定義過了,存取的方式是先宣告為extern,再來存取。

看例子:

1. static variable:

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

已知

  1. int 4 bytes = 32 bits, char 1 byte = 8bits

  2. 負數以2's complement 儲存

  3. %d是signed integer %u是unsigned integer。做型別轉換時,需要做sign extention,方式為不足的bit補其符號(即正補0,負補1)。

環境

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

新增一個bus的範例程式如下,這個範例新增了一個bus叫testbus。這是一個空的bus,只有基本的sysfs entry,沒有任何的device和driver註冊到該bus,所以/sys/bus/testbus下的devices和drivers folder都是空的。

範例程式很短,一目了然,不需要說明。

空的bus

#include <linux/module.h>
#include <linux/kobject.h>

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

循著前人的分享,為自己的理解做記錄。

三角關係

Linux Device Model由bus, device, driver所組成。其關係為: bus是cpu與device溝通的橋樑,而driver賦與device行為的能力。因此有人說,device是男人,driver是女人,而bus則是媒人。媒人有match的功能,讓男人與女人彼此 認識。在coldplug的時代,男人先登記後,由媒人去match女人。而後來的hotplug,則讓女人先提供資訊,讓後來有意願的男人match。 device與driver對bus而言,就沒有一定誰先誰後了。

基礎

kobject做為LDM的最基本結構,提供了reference count (kref)、sysfs的dirent和hotplug相的的event等其他屬性。bus, device, driver都會是一個kobject,意即其struct都內含一個kobject。

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

build-in module 的init function會加上__init這個字樣,這是指當kernel做完這個module_init function後,即可釋放其resource,因為到下一次開機之前都不會再執行到了。其定義在include/linux/init.h:

#define __init        __section(.init.text) __cold notrace

這是讓gcc知道當compile時,把這個fucntion放到text section。當initialize完成後即可釋放memory。開機完成後,看到的Freeing unused kernel memory: xxx k就是釋放的結果。

同樣的,在module_exit的前面也要加上__exit。

__init和__exit對loadable的module就沒有意義了。

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()

系統整合時,常常會跟driver有關,不管是port driver還是拿廠商build好的driver。開發環境不同時,很可能會有driver跟 kernel版號不同的情況,而產生類似"-1 Invalid module format" 這樣的錯誤訊息。如果kernel 版本差別不大,是有機會可以modprobe成功,看看結果如何。而不用卡在版號不同,插不進去的loop裡。

在kernel裡,先disable modules version:

modversion

 

接下來修改include/linux/vermagic.h

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

  • Oct 13 Wed 2010 14:25
  • 密碼文章

  • 這是一篇加密文章,需輸入密碼才可閱讀
  • 密碼提示:0800
  • 請輸入密碼:

前陣子有報導,有兩個人沒有讓座而被拍下後po上網。

看到這則新聞,聽聽他報導的內容,實在是很難苟同。

不是讓座的問題,而是報導的方式 ==> 台灣人這麼需要剌激嗎?非腥膻色不看嗎?

沒有聽到前因後果,只看到部分事實==>他們坐著,而孕婦站著。結果==>被公幹,人肉搜索。

有多少人會想真正的事實是怎樣?是他們真的不讓,還是沒注意,還是本身也有需要?

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()