嵌入式驅動day01

2021-08-14 16:12:37 字數 2804 閱讀 6089

1.編寫乙個簡單的驅動**,在核心態執行的helloworld

#include

#include

int

__init helloworld_init

(void

){

printk

("hello world\n"

);

return

0;

void

__exit helloworld_exit

(void

)

moudle_init

(helloworld_init

);

moudle_exit

(helloworld_exit

);

編譯helloworld.c

1)把helloworld.c變成zimage的一部分

複製到核心原始碼根目錄中/deivers/char/(此目錄為簡單的字元驅動裝置)

kconfig  

make menuconfig產生選單的要素

makefile

每個目錄下的makefile決定了當前目錄下的檔案(夾)是否要編譯進核心

.config

vmlinux.lds 

鏈結檔案

方式一 :修改vi/dervier/char下的makefile檔案

obj-y :必須編譯進核心

obj-m:編譯成模組

obj-y

+=helloworld.o(makefile預設找helloworld.c編譯)

方式二;修改kconfig檔案

vi /dirver/char/kconfig

tristate 

三態

config hello

tristate

"helloworld demo"

depends on mach_cw210

||cpu_s5pv210

default

y

----

help

---

my first kernel demo

!

obj-$(config_hello)

+=helloworld.o

命令:dmesg 列印核心上電後列印後的資訊

dmesg | grep "hello"  檢視核心檔案zimage修改結果

2)編譯成核心模組

方式一:1.vi /drivers/char/makefile 2.kconfig也一樣

obj-m

+=helloworld.o

.config中config_hello=m

make modules 

會生成.ko檔案、/drivers/char/helloworld.ko

cp drivers/char/helloworld.ko rotfs

insmod helloworld.ko 安裝模組

rmmod helloworld.ko 解除安裝模組

注意會提醒

helloworld:module license 『unspecified』 taints kernel

**中需要新增

module_license("gpl")

模組許可宣告

方式二:

在自己編寫目錄下

vi makefile

obj-m

+=helloworld.o

make -c /opt/kernel m=$(pwd) modules

-c /opt/kernel 指明核心**根目錄

m=$(pwd)

指定了要做的動作makefile

目錄下生成乙個.ko檔案

方式三:

基於第二種

修改makefile

kerneldir  ?=/

opt/

kernel

obj-m

+=helloworld

.o

default

:

/*1*/$(

make)-

c $(kerneldir) m=$

(pwd

)module

clean

:

/*2*/

@rm-

f *.

o *.

ko *.

order

*.sy**.

mod*

/*1*/

:注意一定是

table

/*2*/

這裡@不加存在列印資訊,加了就沒有列印資訊

嵌入式linux IIC驅動

linux驅動和裝置隔離,驅動分層,iic驅動框架分為兩部分 1.1 iic匯流排驅動 platform是虛擬匯流排,針對沒有匯流排的裝置實現,匯流排 裝置 驅動框架,iic不用虛擬,可直接用匯流排bus。iic匯流排驅動有兩個重要資料結構 i2c adapter,i2c algorithm。i2c...

嵌入式Linux SPI驅動

1.1 spi主機驅動 linux使用spi master結構體表示spi主機驅動,定義在 drivers linux spi spi.h transfer 資料傳輸函式 transfer one message spi傳送護具函式,傳送乙個spi message資料 1.2 spi裝置驅動 lin...

Spring註解驅動開發 容器day01

1.回顧舊的方式 xml去開發 此處省略pom.xml檔案!person實體類 test類 package com.yikuan.test import org.junit.after import org.junit.before import org.junit.test import impo...