新聞中心
隨著互聯(lián)網(wǎng)的迅猛發(fā)展以及物聯(lián)網(wǎng)技術(shù)的不斷融合,硬件開發(fā)在現(xiàn)代工業(yè)中變得越來越重要。在現(xiàn)代工業(yè)的軟件開發(fā)領(lǐng)域,嵌入式系統(tǒng)和物聯(lián)網(wǎng)(IoT)設(shè)備也越來越受歡迎。這些設(shè)備涉及到的一些通信協(xié)議是I2C(Inter-Integrated Circuit)總線協(xié)議。在此背景下,Linux操作系統(tǒng)自然而然地成為開發(fā)和管理I2C設(shè)備的首選系統(tǒng)。本文將介紹Linux I2C虛擬設(shè)備的基本概念以及如何使用它們。

創(chuàng)新互聯(lián)是專業(yè)的鶴崗網(wǎng)站建設(shè)公司,鶴崗接單;提供網(wǎng)站制作、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行鶴崗網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
I2C總線協(xié)議簡介
I2C是一種串行總線協(xié)議,用于在芯片之間傳輸數(shù)據(jù)。它是由Philips公司(現(xiàn)在的NXP半導(dǎo)體公司)開發(fā)的,并在1982年首次推出。I2C總線協(xié)議主要用于連接低速外設(shè),如溫度傳感器,電量計,A/D轉(zhuǎn)換器等,這些設(shè)備通常只需要很少的帶寬和數(shù)據(jù)傳輸速度。
I2C總線協(xié)議使用兩條線進行通信,SCL(Serial CLock)和SDA(Serial DAta)。 SCL是時鐘線,由主設(shè)備控制,用于同步數(shù)據(jù)傳輸,而SDA是數(shù)據(jù)線,用于傳輸實際數(shù)據(jù)。I2C總線協(xié)議最多支持127個從設(shè)備,每個設(shè)備都有一個唯一的地址。當(dāng)主設(shè)備需要與從設(shè)備通信時,它會向從設(shè)備發(fā)送地址,并在SDA線上傳輸數(shù)據(jù)。一旦從設(shè)備回復(fù)確認(rèn)信號,主設(shè)備就可以在SCL線上傳輸數(shù)據(jù)。
Linux驅(qū)動程序框架
Linux系統(tǒng)提供了一套框架供硬件開發(fā)人員開發(fā)驅(qū)動程序。這個框架使用內(nèi)核模塊的概念,可以讓開發(fā)人員編寫自己的設(shè)備驅(qū)動程序并將其編譯并添加到內(nèi)核中。在Linux中,I2C虛擬設(shè)備可以使用I2C驅(qū)動程序進行控制,I2C驅(qū)動程序是Linux操作系統(tǒng)中I2C設(shè)備的通用接口。
在Linux的I2C驅(qū)動程序中,每個I2C從設(shè)備都對應(yīng)一個i2c_client結(jié)構(gòu)體。這個結(jié)構(gòu)體包含了I2C設(shè)備的地址和一些其他信息,如設(shè)備類型和名字。I2C設(shè)備的驅(qū)動程序需要定義一組對應(yīng)的操作函數(shù),這些函數(shù)包括Probe,Remove,和Transfer等,這些函數(shù)是I2C從設(shè)備和I2C驅(qū)動程序之間的接口。
I2C虛擬設(shè)備
虛擬設(shè)備是指沒有實際硬件設(shè)備支持的設(shè)備,但在軟件開發(fā)過程中非常有用。在Linux中,I2C虛擬設(shè)備可以是一個內(nèi)核模塊,也可以是一個應(yīng)用程序。它們可以用來模擬具有不同地址和功能的I2C從設(shè)備,以便進行軟件開發(fā)和測試。與實際的I2C設(shè)備相比,虛擬I2C設(shè)備更容易調(diào)試和測試。
創(chuàng)建I2C虛擬設(shè)備
在Linux操作系統(tǒng)中,有兩種方法可以創(chuàng)建I2C虛擬設(shè)備。
方法一:使用i2c_new_device函數(shù)
i2c_new_device函數(shù)被用于創(chuàng)建一個I2C從設(shè)備,并將它添加到Linux的I2C總線中。我們需要指定I2C從設(shè)備的地址和名稱。
struct i2c_client* i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info);
方法二:使用I2C-tools工具套件
I2C-tools是一套Linux上的工具套件,它提供了一些命令行工具來管理I2C總線上的設(shè)備。利用i2c-tools中的i2cdetect命令可以掃描I2C總線并列出其中所有的設(shè)備。我們可以使用i2c-dev-tools中的i2c-stub命令來啟動一個I2C虛擬設(shè)備。
sudo i2c-stub 0x20
上面的命令會在I2C地址0x20上啟動一個虛擬設(shè)備。使用i2cdetect命令可以看到它們已被添加到I2C總線上。
測試I2C虛擬設(shè)備
I2C虛擬設(shè)備可以使用i2cget,i2cset和i2cdump等命令來測試。我們可以使用i2cget命令來讀取I2C虛擬設(shè)備上的一個或多個寄存器的值。
sudo i2cget -y 1 0x20
上面的命令會從I2C地址0x20讀取一個寄存器的值。如果寄存器的地址是0x01,則可以使用以下命令讀取寄存器的值:
sudo i2cget -y 1 0x20 0x01
在Linux中使用I2C虛擬設(shè)備可以大大簡化I2C設(shè)備的測試和調(diào)試,使我們能夠更快地開發(fā)軟件。I2C虛擬設(shè)備在Linux系統(tǒng)中非常強大,它們可以為我們帶來很多便利,我們可以輕松地模擬多個I2C從設(shè)備并進行測試。
相關(guān)問題拓展閱讀:
- linux systool 在哪個工具包中
linux systool 在哪個工具包中
systool命令
硬件管理
systool命令指令顯示基于總線、類和拓?fù)滹@示系統(tǒng)中設(shè)備的信息。
語法
systool(選項)(參數(shù))
選項
-a:顯示被請求資源的屬性;
-b:顯示指定總線的信息;
-c:顯示指定類的信息;
-d:僅臘枯寬顯示設(shè)備;
-h:顯示指令的用法;
-m:顯示輪亮指定模塊的信息;
-p:顯示資源的“sysfs”絕對路徑;
-v:顯示所有屬性;
-A:顯示請求資源的屬性值;
-D:僅顯示驅(qū)動程序信息;
-P:敗讓顯示設(shè)備的父類。
參數(shù)
設(shè)備:指定要查看信息的設(shè)備名稱。
實例
# systool
Supported sysfs buses:
acpi
i2c
ide
pci_express
pci
pcmcia
platform
pnp
scsi
serio
u
Supported sysfs classes:
backlight
cpuid
dma_v3
firmware
graphics
hidraw
hwmon
i2c-adapter
input
leds
mem
misc
msr
net
pci_bus
pcmcia_socket
printer
raw
sas_device
sas_end_device
sas_expander
sas_host
sas_phy
sas_port
scsi_device
scsi_disk
scsi_generic
scsi_host
sound
tty
u_device
u_endpoint
u_host
vc
vtconsole
Supported sysfs devices:
acpi
pci0000:00
platform
pnp0
sequencer2
sequencer
seq
system
timer
Supported sysfs modules:
8250
acpi_memhotplug
ac
asus_acpi
ata_piix
auth_rpcgss
backlight
battery
button
cifs
cpufreq
crypto_api
dell_wmi
dm_log
dm_mem_cache
dm_message
dm_mirror
dm_mod
dm_multipath
dm_raid45
dm_region_hash
dock
e1000e
edac_mc
ehci_hcd
exportfs
ext3
hwmon
i2c_core
i2c_ec
i2c_i801
i7core_edac
i8042
ip_conntrack_netbios_ns
ip_conntrack
ip_tables
iptable_filter
ipv6
it821x
jbd
joydev
keyboard
libata
lockd
lp
md_mod
mousedev
mpt2sas
nfnetlink
nfs_acl
nfsd
nls_utf8
ohci_hcd
parport_pc
parport
pci_hotplug
pcmcia
pcmcia_core
pcspkr
piix
power_meter
printk
processor
pouse
rsrc_nonstatic
s
scsi_dh
scsi_mod
scsi_transport_sas
sd_mod
serio_raw
sg
shpchp
snd_hda_intel
snd_hwdep
snd_mixer_oss
snd_page_alloc
snd_pcm_oss
snd_pcm
snd_seq_device
snd_seq_dummy
snd_seq_midi_event
snd_seq_oss
snd_seq
snd_timer
snd
soundcore
sunrpc
tcp_bic
tpm_bios
tpm_tis
tpm
uhci_hcd
ucore
uhid
video
wmi
x_tables
xfrm_nalgo
xt_limit
xt_state
xt_tcpudp
關(guān)于linux i2c dummy的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
文章標(biāo)題:LinuxI2C虛擬設(shè)備簡介(linuxi2cdummy)
轉(zhuǎn)載注明:http://m.fisionsoft.com.cn/article/cdsdcii.html


咨詢
建站咨詢
