linux-device-driver

    0熱度

    3回答

    從我的理解,後PC /嵌入式系統啓動時,操作系統將佔據整個RAM區,該RAM看起來就像這樣: 這意味着,當我運行一個程序我寫道,所有變量,分配在堆棧中的動態內存,堆等都將保留在區域內。如果我運行firefox,paint,gedit等,他們也會在這個區域運行。 (這種理解是否正確?) 但是,我想縮小操作系統區域。下面是我要如何劃分RAM一個例證: ,我想這樣做是因爲,我想存儲一些數據的原因從外部接

    12熱度

    2回答

    remap_pfn_range函數(用於調用驅動程序中的mmap)可用於將內核內存映射到用戶空間。它是如何完成的?任何人都可以解釋精確的步驟內核模式是特權模式(PM),而用戶空間是非特權(NPM)。在PM中,CPU可以訪問所有內存,而在NPM中,某些內存受到限制 - 不能由CPU訪問。當調用remap_pfn_range時,現在僅限於PM的內存範圍現在是如何被用戶空間訪問的? 看着remap_pf

    3熱度

    2回答

    我想學習Linux設備驅動程序開發。 肯定: 我已經開發WinCE的小型驅動器和SPI,從應用程序即開I2C接口工作,讀,寫驅動程序。 我擅長操作系統和數據結構。 否定: 我從來沒有工作在Linux上。 我的背景不是嵌入式系統。 我該如何繼續學習Linux設備驅動程序開發? 編輯:任何一本書引用的將是可觀的感謝

    3熱度

    2回答

    我對設備驅動程序編程非常陌生。 我正在瀏覽以下網站。 http://www.codeproject.com/KB/system/driverdev.aspx 我只是混淆了單詞「二進制」。 特別聲明說:「鏈接器生成最終的二進制文件,並基於PE頭中的選項....」。 所以我的問題是什麼二進制意味着在設備驅動程序編程?

    1熱度

    2回答

    我正在創建一個模塊,將捕獲TCP/IP數據包從TCP/IP堆棧並將其發送到從發送到用戶空間的內核。我的代碼現在已經在下半年完成了。它從Kernel向用戶空間發送一條消息。有人可以幫助我捕獲數據包。我不想用libcap #include <linux/module.h> #include <net/sock.h> #include <linux/netlink.h> #include <lin

    2熱度

    3回答

    試圖編寫簡單的字符設備驅動程序後,我現在希望編寫一個字符設備驅動程序來訪問嵌入式Linux板(如Beagleboard)上的GPIO引腳。我有興趣編寫一個模塊"mygpiomodule",它在加載時必須出現在/dev/mygpiomodule中,以便從用戶空間讀取,寫入訪問GPIO。我不希望從用戶空間訪問GPIO。我想這樣做是因爲我第一次嘗試編寫可以與某些外設進行交互的模塊。我想將一些LED插入端

    1熱度

    1回答

    我的目標是禁用除特定類型的USB之外的USB端口使用情況。每次插入USB設備時,都會調用udev規則,並運行一個程序來處理工作。 我無法卸載usb_storage模塊,因爲它需要使用,所以如何刪除usb dev鏈接,如果它不符合我的情況?

    -1熱度

    2回答

    我已經寫了模塊讀/寫在/ proc文件和工作正常,但要使用權限與它時,我給下面顯示的權限,它給了我錯誤(基本上我希望每個人都可以讀取文件,但只有根可以寫在裏面)。 int my_permission(struct inode *inode, int op) { if(op == 4||(op == 2 && current->euid = 0)) //euid is not a member

    5熱度

    3回答

    我有一個有問題的內核模塊,我正在嘗試修復。基本上當這個模塊運行時,它會導致其他任務掛起超過120秒。由於幾乎所有掛起的任務都在等待mm-> mmap_sem或某些文件系統鎖(i_node-> i_mutex),我懷疑它與這個模塊有關,並不會獲取mmap_sem鎖和一些文件系統級鎖定(如inote-> i_mutex),這可能會導致一些死鎖問題。由於我的模塊不會直接抓住這些鎖,所以我認爲這是我調用的

    0熱度

    2回答

    我做了一個模塊正在傳輸,但我不知道我傳輸的數據包是否是ping數據包。代碼如下所示: icmp.type = 8; icmp.code = 0; icmp.un.echo.sequence = i; ip4.protocol = 1; //for icmp protocol ip4.frag_off = 0; ip4.daddr = in_aton(procfs_buffer); ip