避免當野monkey, 走野路子

 一直都想寫點“深”層次的東西,總停留在代碼層面確實不夠腕,當然啦,我也不是什麼腕。^_^上面這些都可以當個笑話,但其實也是有一定意義的,最少細心的人會想到我要表達的思想:只停留在代碼層面的不是腕。是的,我是這麼認為的。但至於什麼才算是腕,這個我真不知道。因為我目前也不是腕,所以沒法對一個壓根不瞭解的東西做總結。既然不是腕那我們就還是回到代碼的層面討論吧。我只想說一句:千萬不要走野路子。什麼叫野路子?舉個例子:我們code monkey界入門有一個經典的例子叫hello

mini2440驅動學習第一課————HELLO WORLD

      按照國際慣例,先從hello world 講起,目的是瞭解驅動模組的基本結構。貼上源碼: #i nclude <linux/kernel.h> #i nclude <linux/module.h> static int __init hello_module_init(void) {       printk("Hello, world !/n");       return 0; } static void __exit hello_module_exit(

mini2440驅動學習第二課————LED

經過上一篇的hello world 驅動,熟悉了驅動程式大體的架構,這次第二課的驅動,輪到LED了!要注意它是怎麼操作GPIO的,又是怎麼和使用者層(應用程式層)聯絡起來的。附上代碼: #include <linux/miscdevice.h>#include <linux/delay.h>#include <asm/irq.h>#include <mach/regs-gpio.h>#include <mach/hardware.h>#

2440裸機定時器中斷問題

    今晚簡單做了一下定時器中斷,開始沒有初始化MMU,超級終端會返回dummy irq....資訊。上網查詢相關資料,發現程式都在0x30000000之上運行,而相關中斷入口卻在0x0之上,所以要用MMU來映射地址。好事多磨,在代碼加進MMU_Init()之後,一旦執行到MMU_Init(),程式就不會繼續往下執行了(估計是跑飛了)。       問題一時得不到解決,故先放一放,等解決了再來補充解決辦法。

mmap記憶體映射操作之一

    我們在驅動的代碼當中,經常需要把硬體地址映射到虛擬記憶體上面去,這就是我們需要學習mmap的原因所在了!正所謂磨刀不誤砍柴工,讓我們靜下心來學習一下這個十分有用的工具吧。 prototype : void *mmap(void *start, size_t length, int prot, int flags,                                  int fd, off_t offset);parameter : start :

淺談 fork() 和 vfork()(

    今天練習進程調度,順帶寫下個人對fork和vfork的見解,如有不妥之處,還請指點一二。     fork和vfork的相同點:被調用一次,卻返回兩次,可能有三種不同的傳回值。                         1.在父進程,返回子進程的PID。                         2.在子進程,返回0。                         3.若異常,返回一個負值。    

S3C2440驅動簡析——DM9000網卡驅動(2)

     經過本系列第一篇博文對DM9000網卡驅動的架構解釋之後,接下來就應該按模組來分析這個對新手來說的“龐然大物”了。本文先解釋.driver 和.remove

S3C2440驅動簡析——看門狗驅動

     本文假設各位看官已經瞭解看門狗的工作原理,而且手上有2440的datasheet,可以隨時查看看門狗相關的寄存器。我在這裡僅僅專註於對驅動程式的分析,望見諒~  借用網上的朋友☆&寒 煙☆的一幅描述看門狗驅動程式的結構框圖,總結得還是相當到位的,這裡妄自copy如下(如有冒犯原作者請立刻通知,立刪並道歉),各位可以按照結構圖來按圖索驥,更好地掌握驅動程式裡面稍稍複雜的關係。 看過結構框圖,想必對程式的構成有一個大致的認識了。下面開始貼上代碼並分析之 watchdog_init

eval命令使用

 本文將會講解一些linux中命令的使用與技巧希望對新手給予協助 一 e v a l命令將會首先掃描命令列進行所有的置換,然後再執行該命令。該命令適用於那些一次掃描無法實現其功能的變數。該命令對變數進行兩次掃描。這些需要進行兩次掃描的變數有時被稱為複雜變數。不過這些變數本身並不複雜。e v a l命令也可以用於回顯簡單變數,不一定是複雜變數。1 eval命令也可以用於回顯簡單變數,不一定是複雜變數 例如: [neau@mail ~]$ NAME=VALUEBANK [neau@mail ~]$

常用vi操作

      用vi也有一小段時間了,我沒有故意去學習vi的命令用法等,但是在用的時候慢慢熟悉,雖然比較慢,但是記得比較牢,先記下我已經掌握的命令。       1.刪除操作      x刪除游標處的單個字元      dd刪除游標所在行      dw刪除當前字元到單詞尾包括空格的所有字元      #x例如3x刪除游標處向右的三個字元      #dd例如3dd從當前行開始向下刪除三行文本    

緩衝區方式讀

// 驅動層代碼#ifdef __cplusplusextern "C" {#endifNTSTATUS DriverEntry( IN OUT PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ){ PDEVICE_OBJECT pdoDeviceObj = 0; NTSTATUS status = STATUS_UNSUCCESSFUL; pdoGlobalDrvObj

簡單檔案I/O編程之基本操作函數

     昨晚專門抽時間練習了一下檔案I/O編程,由於嵌入式Linux是經Llinux裁剪而來的,它的系統調用及使用者編程介面API與Linux基本一致,因此,學習Linux中相關內容的基本編程,對以後嵌入式Linux的實際開發是十分有協助的。      本文介紹幾個最最最基本的檔案I/O操作函數,如open、close、read、write、lseek等。      1.open       原型:int open(const char *pathname, int flags, int

mini2440驅動學習————序

      從今年4月份中下旬以來,一直在熟悉驅動,查閱了相關的書籍,現在總算把簡單的字元驅動瞭解個大概。熟悉了驅動程式的結構、架構,這使我閱讀驅動程式的速度大大的加快。萬事起頭難,我是邊看《LINUX裝置驅動程式》等等書籍,邊看友善提供的驅動程式和上層測試程式,再結合板子來驗證。說來實在慚愧,自己唯寫過最最簡單的hello 、 led 等驅動,修改友善的key驅動,實現自己的控制。     

實際使用者ID、有效使用者ID、儲存的設定使用者ID之間的區別與聯絡

實際使用者ID:標誌我們究竟是誰,是使用者登入的時候從口令檔案中取得的欄位。有效使用者ID:決定了我們訪問檔案的許可權。儲存的設定使用者ID:當我們改變有效使用者ID的時候,所儲存的有效使用者ID的副本,這可用於有效使用者ID的恢複。下面是改變這幾種ID的方法:IDexecexecsetuid(uid)setuid(uid) 設定使用者ID位關閉設定使用者ID位開啟超級使用者普通使用者實際使用者ID不變不變設定為uid不變有效使用者ID不變設定為檔案使用者ID同上設定為uid儲存的設定使用者ID

簡單檔案I/O編程之fcntl

    在檔案I/O編程之一的基礎上,本文主要討論函數fcntl的用法及其注意事項。    在Linux中,實現檔案上鎖的函數有lock和fcntl,其中lock對應的是建議性鎖,而fcntl不僅可以施加建議性鎖,也可以施加強制鎖。同時,fcntl能對檔案的某一記錄上鎖,也就是記錄鎖。     fcntl函數原型:int fcntl(int fd, int cmd, struct flock *lock)    函數傳入值:    fd為檔案描述符。    cmd為控制命令,主要有以下若干情況:

S3C2440驅動簡析——I2C驅動(3)

     書接上回,在討論完i2c裝置、i2c適配器等初始化和刪除相應驅動的程式後,我們在這個小節把注意力放在file_operations裡面的幾個函數操作上,先貼上file_operations結構體代碼,讓我們先看看其包含了哪幾個函數。 static const struct file_operations i2cdev_fops = {.owner= THIS_MODULE,.llseek= no_llseek,.read= i2cdev_read,.write=

S3C2440驅動簡析——I2C驅動(2)

     緊接上一篇博文的I2C主要資料結構的介紹,現在就讓我們真正地進入I2C驅動的代碼裡面,領略一下這個稍微複雜點點的驅動。由於代碼已經有一定長度,再也不能像之前那樣整段copy,然後直接分析了。為了鄙人以後能夠更好地翻閱自己的筆記,也為了比我更菜的小菜鳥考慮(應該沒有的,呵呵),這次還是採取按照代碼邏輯順序,講到哪,代碼就貼到哪~ go go go~~~      看到i2c-dev.c

簡單配置Samba服務

前後折騰了半個晚上,終於把Samba服務用上,用windows順利訪問虛擬機器上的Linux檔案,廢話不多說,馬上進入正題。 環境:vmware + ubuntu 10.10 在root許可權下執行以下操作 1.安裝sambaapt-get install sambaapt-get install smbfs 2.建立需要共用的檔案若用已有檔案目錄,建立檔案可省略,但仍需改變檔案許可權。mkdir /home/sharechmod 777 /home/share 3.配置smb.confvi /

清空內心的雜物

    今天放棄午休的時間,把自己的書桌、書櫃重新布置一番,並徹徹底底地幫它們搞了一次衛生。對於一個疏於做家務事的我來說,實屬罕見,但是經過整理後,所帶來的愉悅並不只是環境上的改善,更重要的對內心的一次清空,一次盥洗。   

孤兒進程組的由來

 孤兒進程組的由來:當一個終端控制進程(即會話首進程)終止後,那麼這個終端可以用來建立一個新的會話。這可能會產生一個問題,原來舊的會話(一個或者多個進程組的集合)中的任一進程再次訪問這個的終端。為了防止這類問題的產生,於是就有了孤兒進程組的概念。當一個進程組成為孤兒進程組時,posix.1要求向孤兒進程組中處於停止狀態的進程發送SIGHUP(掛起)訊號,系統對於這種訊號的預設處理是終止進程,然而如果無視這個訊號或者另行處理的話那麼這個掛起進程仍可以繼續執行。

總頁數: 61357 1 .... 14225 14226 14227 14228 14229 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.