Linux驅動篇之hello

2021-10-04 05:50:09 字數 2132 閱讀 5015

一)環境

a)ubuntu18.04

b)arm-linux-gnueabi-gcc 7.5.0 / gcc 7.5.0

c)friendlyarm tiny4412 標準版

d)linux-5.5

二)目標

a)hello驅動

b)hello應用

三)步驟

a)hello驅動

1)在drivers目錄下新建資料夾tiny4412.

2)在tiny4412目錄下新建檔案hello.c,並做如下編碼:

#include

#include

#include

static int hello_probe(struct platform_device *pdev)

static int hello_remove(struct platform_device *pdev)

static void hello_shutdown(struct platform_device *pdev)

static int hello_suspend(struct platform_device *pdev, pm_message_t state)

static int hello_resume(struct platform_device *pdev)

static const struct of_device_id tiny4412_hello_dt_match = ,

{},};

static struct platform_driver tiny4412_hello_driver = ,

};module_platform_driver(tiny4412_hello_driver);

module_license("gpl v2");

3)在tiny4412目錄下新建檔案makefile,並做如下編碼:

obj-$(config_tiny4412_hello)    += hello.o

4)在tiny4412目錄下新建檔案kconfig,並做如下編碼:

menuconfig tiny4412_driver

bool "tiny4412 driver support"

help

select [y] to enable tiny4412 driver.

if tiny4412_driver

config tiny4412_hello

tristate "hello support"

help

this option enables hello_world in /tiny4412/hello.

you'll need this to open hello driver.

it can be built as a module.

endif # tiny4412_driver

4)修改drivers/makefile,並新增如下編碼:

obj-$(config_tiny4412_driver)  += tiny4412/

5)修改drivers/kconfig,並新增如下編碼:

source "drivers/tiny4412/kconfig"

6)make menuconfig

6-1)選[device drivers]->[tiny4412 driver support]->[hello support]

7)在exynos4412-tiny4412.dts中,新增如下編碼:

hello ;

8)make

9)make dtbs

b)hello應用

1)新增檔案hello.c,做如下編碼:

#include

2)arm-linux-gnueabi-gcc -o hello hello.c, then cp hello into rootfs/usr/bin

3)use arm-linux-gnueabi-readelf to check *.so

4)make libc.so.6 and ld-linux.so.3 in rootfs/lib , then make ramdisk.img

c)測試

1)使用上面生成的uimage, dtb, ramdisk.img, 從sd卡啟動tiny4412.

Linux 2 6核心驅動之hello模組

終於開始在鍾愛的linux上學習寫驅動程式了。本來以為寫乙個hello模組是異常簡單的事情,結果折騰了幾天才編譯通過。首先為了測試安裝了虛擬機器 核心程式是很危險滴,我可不想讓自己的愛本頻繁崩潰 裝fedora17 fedora18的live版在虛擬機器上始終跑不起來 來回來去幾次也裝不上virtu...

Hello的驅動示例 linux驅動開發入門

開發環境 虛擬機器上的linux fedora arm 11 友善之臂的光碟帶的linux核心linux 2.6.36 開發步驟 1.先安裝手冊重新編譯下核心和裁剪切檔案系統,具體的就參考手冊,上面寫的很清楚,但是需要注意的是 在編譯核心的時候不要選擇linux module sample已經led...

驅動 入門例項hello驅動(一)

一 基本理論 二 基本資料結構和例項 三 總結 一 基本理論 雖然基本的linux核心是乙個大的image檔,也可以當做是乙個bin檔,可執行檔案。但是核心是模組化組成的,它允許在核心執行時向其中動態的插入或刪除 二 基本資料結構和例項 以下是module init和module exit巨集函式 ...