




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《嵌入式操作系統(tǒng)》實(shí)驗(yàn)報(bào)告《嵌入式操作系統(tǒng)》試驗(yàn)報(bào)告
班級(jí)計(jì)算機(jī)
學(xué)號(hào)
姓名
指導(dǎo)老師莊旭菲
工業(yè)高校信息工程學(xué)院計(jì)算機(jī)系
2024年6月
試驗(yàn)一Linux核移植與編譯試驗(yàn)
1.試驗(yàn)?zāi)康?/p>
?了解Linux核相關(guān)學(xué)問(wèn)與核結(jié)構(gòu)
?了解Linux核在ARM設(shè)備上移植的基本步驟和方法
?把握Linux核裁剪與定制的基本方法
2.試驗(yàn)容
?分析Linux核的基本結(jié)構(gòu),了解Linux核在ARM設(shè)備上移植的一些基本步驟及常識(shí)。
?學(xué)習(xí)Linux核裁剪定制的基本配置方法,利用UP-Magic210型設(shè)備配套Linux核進(jìn)行
自定義功能(如helloworld顯示)的添加,并重新編譯核源碼,生成核壓縮文件zImage,下載到UP-Magic210型設(shè)備中測(cè)試。
3.試驗(yàn)步驟
試驗(yàn)名目:/UP-Magic210/SRC/kernel/linux-/
編譯核:在宿主機(jī)端為UP-Magic210設(shè)備的Linux核編寫(xiě)簡(jiǎn)潔的測(cè)試驅(qū)動(dòng)(核)程序helloworld.c并修改核名目中相關(guān)文件,添加對(duì)測(cè)試驅(qū)動(dòng)程序的支持。
(1)、使用vim編輯器手動(dòng)編寫(xiě)試驗(yàn)代碼helloworld.c
helloworld.c如如下:
#include
#include
MODULE_LICENSE("DualBSD/GPL");
//驅(qū)動(dòng)程序入口函數(shù)
staticinthello_init(void)
{
printk(KERN_ALERT"##############Hello,world############\n");
return0;
}
//驅(qū)動(dòng)程序出口函數(shù)
staticvoidhello_exit(void)
{
printk(KERN_ALERT"###############Goodbye,world#########\n");
}
module_init(hello_init);
module_exit(hello_exit);
有關(guān)驅(qū)動(dòng)程序的編寫(xiě)規(guī),請(qǐng)參考課程教材,本試驗(yàn)只在編寫(xiě)簡(jiǎn)潔的驅(qū)動(dòng)(核)程序并加入到Linux核名目樹(shù)中,使用戶(hù)熟識(shí)編譯核的過(guò)程。該驅(qū)動(dòng)程序是向終端輸出相關(guān)程序信息。編寫(xiě)好helloworld.c后將其拷貝到核源碼樹(shù)的drivers/char/名目下。
#cphelloworld.c/UP-Magic210/SRC/kernel/linux-/drivers/char/(2)、進(jìn)入試驗(yàn)核源碼名目修改driver/char/名目下的Kconfig文件,根據(jù)Kconfig語(yǔ)法添加helloworld程序的菜單支持
#cdUP-Magic210/SRC/kernel/linux-/
#vidrivers/char/Kconfig
例如:在Kconfig文件中的source“driver/char/hw_random/Kconfig”下面添加如下:source“driver/char/hw_random/Kconfig”
configHELLO_MODULE
bool"HelloWorldTest"
dependsonCPU_S5PV210
help
ThisisademototestkernelexperimentOnUP-Magic210.
(3)、進(jìn)入試驗(yàn)核源碼名目修改driver/char/名目下的Makefile文件,根據(jù)核中Makefile語(yǔ)法添加helloworld程序的編譯支持
#vidrivers/char/Makefile
在Makefile中(大約在91行)添加如下一行
obj-$(CONFIG_TOSHIBA)+=toshiba.o
obj-$(CONFIG_I8K)+=i8k.o
obj-$(CONFIG_DS1620)+=ds1620.o
obj-$(CONFIG_HW_RANDOM)+=hw_random/
obj-$(CONFIG_HELLO_MODULE)+=helloworld.o
obj-$(CONFIG_PPDEV)+=ppdev.o
(4)、運(yùn)行makemenuconfig配置核對(duì)helloworld程序的支持:
#makedistclean
#makemenuconfig
先加載核配置單,如圖:
然后進(jìn)入到DeviceDrivers--->菜單中如圖:
進(jìn)入到Characterdevices--->如圖:
進(jìn)入該菜單會(huì)發(fā)覺(jué)HelloWorldTest選項(xiàng),按下空格將其靜態(tài)編譯進(jìn)核
退出保存核配置
(5)、重新編譯核
在核源碼的頂層名目下編譯核
#make
scripts/kconfig/conf-sarch/arm/Kconfig
CHKinclude/linux/version.h
CHKinclude/generated/utsrelease.h
make:“include/generated/mach-types.h”是最新的。
CALLscripts/checksyscalls.sh
CHKinclude/generated/pile.h
CCdrivers/char/helloworld.o
LDdrivers/char/built-in.o
LDdrivers/built-in.o
LDvmlinux.o
MODPOSTvmlinux.o
初次編譯核源碼,由核代碼浩大,所需較長(zhǎng)時(shí)間(大約幾分鐘至10幾分鐘不等)。編譯勝利后會(huì)在核源碼名目的arch/arm/boot/名目下生成核壓縮文件zImage。
#lsarch/arm/boot/zImage
arch/arm/boot/zImage
#
(6)、將新生成的核鏡像文件zImage燒寫(xiě)到UP-Magic210型設(shè)備中,這里不在贅述(燒寫(xiě)步驟可以參考文檔“UP-Magic210出廠程序燒寫(xiě)手冊(cè)(LINUX)V1.0.pdf”第23頁(yè))。新核燒寫(xiě)勝利后啟動(dòng)UP-Magic210型系統(tǒng),可以在串口終端中查看到Linux核在啟動(dòng)過(guò)程中打印出來(lái)的如下信息:
S3C_LCDclockgotenabled::133.000Mhz
Window-FB1:map_video_memory:clearff600000:00096000
FB1:map_video_memory:dma=57100000cpu=ff600000size=00096000
Console:switchingtocolourframebufferdevice80x30
fb-1069494052:framebufferdevice
###################Hello,world###################
ppdev:user-spaceparallelportdriver
s3c-uart.0:ttySAC0atMMIO0x7f005000(irq=37)isaS3C
s3c-uart.1:ttySAC1atMMIO0x7f005400(irq=38)isaS3C
s3c-uart.2:ttySAC2atMMIO0x7f005800(irq=39)isaS3C
RAMDISKdriverinitialized:16RAMdisksof4096Ksize1024blocksize
loop:loaded(max8devices)
nbd:registereddeviceatmajor43
dm9000EthernetDriver
eth0:dm9000atc7866000,c7866002IRQ78MAC:00:22:12:34:56:90
S3CIrDAdriver,(c)2024SamsungElectronics
Linuxvideocaptureinterface:v2.00
可以看到在終端上打印出###################Hello,world###################信息。同樣進(jìn)入ARM系統(tǒng)后也可以通過(guò)dmesg命令查看核啟動(dòng)信息。
#dmesg
S3C_LCDclockgotenabled::133.000Mhz
Window-FB1:map_video_memory:clearff600000:00096000
FB1:map_video_memory:dma=57100000cpu=ff600000size=00096000
Console:switchingtocolourframebufferdevice80x30
fb-1069494052:framebufferdevice
###################Hello,world###################ppdev:user-spaceparallelportdriver
s3c-uart.0:ttySAC0atMMIO0x7f005000(irq=37)isaS3C
s3c-uart.1:ttySAC1atMMIO0x7f005400(irq=38)isaS3C
s3c-uart.2:ttySAC2atMMIO0x7f005800(irq=39)isaS3CRAMDISKdriverinitialized:16RAMdisksof4096Ksize1024blocksize4.試驗(yàn)結(jié)果
思索:如何能在Linux系統(tǒng)啟動(dòng)時(shí),輸出顯示自定義的文本信息,請(qǐng)修改Linux核啟動(dòng)代碼,完成此功能。
5.試驗(yàn)中遇到的問(wèn)題及解決方法
在試驗(yàn)中遇到一些問(wèn)題,例如在復(fù)制的時(shí)候我記得原來(lái)用cp–a/tmp/linux-2.4.18-br.tar.gz就可以了,可這次不行必需要用cp–a/tmp/linux-2.4.18-br.tar.gz./到自己的名目下。不過(guò)最終都順當(dāng)解決了問(wèn)題,在編譯復(fù)習(xí)了makemenuconfig的編譯配置。
試驗(yàn)二根文件系統(tǒng)試驗(yàn)
1.試驗(yàn)?zāi)康?/p>
?了解UP-Magic210魔法師試驗(yàn)套件Linux系統(tǒng)下根文件系統(tǒng)結(jié)構(gòu)
?把握根文件系統(tǒng)的搭建過(guò)程
?把握busybox、mkcramfs等工具的使用方法
2.試驗(yàn)容
?使用busybox生成文件系統(tǒng)中的命令部分,使用mkcramfs工具制作CRAMFS格式的
根文件系統(tǒng)。
?分析根文件系統(tǒng)etc名目下重要配置文件的格式及語(yǔ)法,熟識(shí)根文件系統(tǒng)的啟動(dòng)過(guò)程3.試驗(yàn)步驟
試驗(yàn)名目:/UP-Magic210/SRC/kernel/linux-/
/UP-Magic210/SRC/rootfs/
一、在核中添加文件系統(tǒng)類(lèi)型支持
(1)、進(jìn)入宿主機(jī)中UP-Magic210型光盤(pán)核名目:
#cd/UP-Magic210/SRC/kernel/linux-/(2)、運(yùn)行makemenuconfig命令配置核文件系統(tǒng)相關(guān)支持添加對(duì)CRAMFS根文件以及YAFFS2文件系統(tǒng)系統(tǒng)支持
進(jìn)入Filesystems--->菜單
進(jìn)入Miscellaneousfilesystems--->菜單
選擇CompressedROMfilesystemsupport(cramfs)支持,如圖:
選擇YAFFS2filesystemsupport支持,配置如下圖
退出保存核配置
運(yùn)行make編譯核,重新燒寫(xiě)核。
二、根文件系統(tǒng)的實(shí)現(xiàn)
(1)、制作BUSYBOX工具集
進(jìn)入本次試驗(yàn)名目
#cd/UP-Magic210/SRC/rootfs/
#ls
bash-4.0.tar.bz2busybox-1.19.3.tar.bz2rootfs
解壓busybox-1.19.3.tar.bz2壓縮包
#tarxjvfbusybox-1.19.3.tar.bz2
產(chǎn)生busybox-1.19.3名目
#ls
bash-4.0.tar.bz2busybox-1.19.3busybox-1.19.3.tar.bz2rootfs
進(jìn)入busybox-1.19.3名目進(jìn)行busybox的修改及配置
修改此名目的Makefile文件,更改ARCH?和CROSS_PILE?=宏定義,如下:CROSS_PILE?=arm-none-linux-gnueabi-
ARCH?=arm
退出保存。
運(yùn)行makemenuconfig對(duì)工具集進(jìn)行定制
#makemenuconfig
進(jìn)入BusyboxSettings--->選項(xiàng)
進(jìn)入BusyboxLibraryTuning--->選項(xiàng)
選中Fancyshellprompts支持
進(jìn)入MiscellaneousUtilities--->選項(xiàng)
去除inotifyd選項(xiàng)
接下來(lái)的配置可以依據(jù)詳細(xì)狀況來(lái)設(shè)置或裁剪相關(guān)工具。退出保存設(shè)置。
編譯busybox
#make
安裝busybox
#makeinstall
勝利后會(huì)在當(dāng)前名目下生成_install名目,編譯的工具也都集成在該安裝名目下。
#cd_install/
#ls
binlinuxrcsbinusr
#
可以看到_install名目下生成了根文件系統(tǒng)常用的命令及工具,接下來(lái)的工作,用戶(hù)可以依據(jù)需要將_install名目下生成的命令拷貝到根文件系統(tǒng)相應(yīng)名目下。
例如:將從busybox生成的which命令拷貝到根文件系統(tǒng)名目的usr/bin名目下,這樣,我們的根文件系統(tǒng)就支持which命令了。
(2)、制作CRAMFS根文件系統(tǒng)鏡像
試驗(yàn)中已經(jīng)供應(yīng)了mkcramfs制作工具以及mkrootfs.sh腳本文件,用戶(hù)只需執(zhí)行mkrootfs.sh腳本文件來(lái)使用mkcramfs制作根文件系統(tǒng)鏡像即可。
當(dāng)然也可以手動(dòng)的執(zhí)行命令:./mkcramfsrootfs_up210rootfs_up210.cramfs
#./mkrootfs.sh
此時(shí)在當(dāng)前名目下生成根文件系統(tǒng)鏡像文件rootfs_up210.cramfs
#ls
mkcramfsmkrootfs.shrootfs_up210rootfs_up210.cramfs
三、燒寫(xiě)根文件系統(tǒng)
將新生成的根文件系統(tǒng)鏡像文件rootfs_up210.cramfs燒寫(xiě)到UP-Magic210型設(shè)備中進(jìn)行測(cè)試,這里不在贅述(燒寫(xiě)步驟可以參考文檔“UP-Magic210出廠程序燒寫(xiě)手冊(cè)
(LINUX)V1.0.pdf”第24頁(yè))。假如用戶(hù)新添加了相關(guān)命令或工具(例如which命令)啟動(dòng)系統(tǒng)后可以驗(yàn)證用戶(hù)添加入的新命令或工具。
4.試驗(yàn)結(jié)果
5.試驗(yàn)中遇到的問(wèn)題及解決方法
make編譯有錯(cuò)誤,進(jìn)行源代碼的修改。之后再makemenuconfig中將這個(gè)宏對(duì)應(yīng)的東西配置成沒(méi)有就好了,假如沒(méi)有這個(gè)宏,那么就直接用出錯(cuò)的那個(gè)文件的名字找就行了,找到后給它去掉,將來(lái)make的時(shí)候就不會(huì)編譯這個(gè)文件了,在次進(jìn)行make編譯后,編譯出來(lái)了busybox這個(gè)東西,就在證明編譯通過(guò)了。
試驗(yàn)三模塊方式驅(qū)動(dòng)試驗(yàn)
1.試驗(yàn)?zāi)康?/p>
學(xué)習(xí)在LINUX下進(jìn)行驅(qū)動(dòng)設(shè)計(jì)的原理
?把握使用模塊方式進(jìn)行驅(qū)動(dòng)開(kāi)發(fā)調(diào)試的過(guò)程
2.試驗(yàn)容
?在PC機(jī)上編寫(xiě)簡(jiǎn)潔的虛擬硬件驅(qū)動(dòng)程序并進(jìn)行調(diào)試,試驗(yàn)驅(qū)動(dòng)的各個(gè)接口函數(shù)的實(shí)
現(xiàn),分析并理解驅(qū)動(dòng)與應(yīng)用程序的交互過(guò)程。
?在ARM設(shè)備上創(chuàng)建設(shè)備驅(qū)動(dòng)節(jié)點(diǎn),編寫(xiě)用戶(hù)空間應(yīng)用程序,對(duì)驅(qū)動(dòng)程序進(jìn)行測(cè)試。
3.試驗(yàn)步驟
(1)、編譯驅(qū)動(dòng)程序/UP-Magic210/SRC/exp/driver/01_demo/demo.c,手工加載驅(qū)動(dòng)程序,通過(guò)設(shè)備號(hào)建立驅(qū)動(dòng)設(shè)備節(jié)點(diǎn),執(zhí)行應(yīng)用程序測(cè)試該驅(qū)動(dòng)及設(shè)備,分析驅(qū)動(dòng)程序demo.c。
進(jìn)入試驗(yàn)名目編譯源程序
#cd/UP-Magic210/SRC/exp/driver/01_demo/
清除中間代碼,重新編譯
#makeclean
#make
當(dāng)前名目下生成驅(qū)動(dòng)程序demo.ko和應(yīng)用測(cè)試程序test_demo。
啟動(dòng)UP-Magic210試驗(yàn)系統(tǒng),連好網(wǎng)線(xiàn)、串口線(xiàn)。通過(guò)串口終端掛載宿主機(jī)試驗(yàn)名目(留意:虛擬機(jī)IP地址需要設(shè)置為:57)。
#mount-tnfs-onolock57:/UP-Magic210/mnt/nfs
進(jìn)入串口終端的NFS共享試驗(yàn)名目
#cd/mnt/nfs/SRC/exp/driver/01_demo/
手動(dòng)加載驅(qū)動(dòng)程序demo.ko
#insmoddemo.ko
通過(guò)設(shè)備號(hào)建立驅(qū)動(dòng)設(shè)備節(jié)點(diǎn)
#mknod/dev/democ2510
執(zhí)行應(yīng)用程序測(cè)試該驅(qū)動(dòng)及設(shè)備,分析應(yīng)用程序測(cè)試結(jié)果。
#./test_demo
(2)、請(qǐng)參考驅(qū)動(dòng)程序demo.c,編寫(xiě)一個(gè)虛擬字符設(shè)備驅(qū)動(dòng)程序并進(jìn)行調(diào)試,該虛擬字符設(shè)備驅(qū)動(dòng)程序完成如下功能:
◆在核模塊初始化函數(shù)中,實(shí)現(xiàn)動(dòng)態(tài)申請(qǐng)?jiān)O(shè)備號(hào)并注冊(cè)該設(shè)備,動(dòng)態(tài)建立設(shè)備文件節(jié)
點(diǎn);
◆在核模塊的退出函數(shù)中,實(shí)現(xiàn)設(shè)備注銷(xiāo),刪除該設(shè)備文件節(jié)點(diǎn);
◆實(shí)現(xiàn)file_operations設(shè)備驅(qū)動(dòng)文件結(jié)構(gòu)體中的open、read、write、ioctl和release
函數(shù)功能,其中:
?open函數(shù):設(shè)置一個(gè)計(jì)數(shù)器count,每調(diào)用一次open函數(shù),計(jì)數(shù)器count加1。
?read函數(shù):讀取用戶(hù)寫(xiě)入的字符串?dāng)?shù)據(jù)的排列結(jié)果。
?write函數(shù):實(shí)現(xiàn)將用戶(hù)寫(xiě)入的字符串?dāng)?shù)據(jù),根據(jù)每個(gè)字符的ASCII值逆序或升序排序(依據(jù)開(kāi)關(guān)值asc排序:asc=0,逆序排序;asc=1,升序排序;)。
?ioctl函數(shù):設(shè)置排序方式開(kāi)關(guān)值asc。
?release函數(shù):每調(diào)用一次release函數(shù),計(jì)數(shù)器count減1。
4.試驗(yàn)結(jié)果
5.試驗(yàn)中遇到的問(wèn)題及解決方法。
沒(méi)有修改makefile文件直接進(jìn)行編譯導(dǎo)致出錯(cuò)。試驗(yàn)前沒(méi)有仔細(xì)閱讀試驗(yàn)原理,看懂試驗(yàn)代碼,所以在使用make命令以后無(wú)法實(shí)現(xiàn)。最終在同學(xué)的關(guān)心下找到了緣由。忽視了自己使用的是gcc編譯而不是交叉編譯,因而沒(méi)有設(shè)置節(jié)點(diǎn)。嘗試了許多次以后才發(fā)覺(jué)了問(wèn)題,期間以為是test_demo文件的問(wèn)題,但是導(dǎo)入導(dǎo)出許多次都沒(méi)有解決,問(wèn)了同學(xué)才找到了問(wèn)題。
試驗(yàn)四LED驅(qū)動(dòng)及掌握試驗(yàn)
1.試驗(yàn)?zāi)康?/p>
?了解ARM設(shè)備外圍電路結(jié)構(gòu)與接口原理
?熟識(shí)Linux系統(tǒng)下硬件驅(qū)動(dòng)編程
?編程實(shí)現(xiàn)對(duì)嵌入式設(shè)備上LED燈的掌握
2.試驗(yàn)容
?閱讀UP-Magic210平臺(tái)硬件文檔,熟識(shí)ARM處理硬件外圍接口電路
?編程實(shí)現(xiàn)UP-Magic210平臺(tái)設(shè)備上LED驅(qū)動(dòng)及應(yīng)用測(cè)試程序
3.試驗(yàn)步驟
編寫(xiě)UP-Magic210平臺(tái)設(shè)備上LED驅(qū)動(dòng)及應(yīng)用測(cè)試程序并進(jìn)行調(diào)試,該LED驅(qū)動(dòng)程序完成如下功能:
◆在核模塊初始化函數(shù)中,實(shí)現(xiàn)動(dòng)態(tài)申請(qǐng)?jiān)O(shè)備號(hào)并注冊(cè)該設(shè)備,動(dòng)態(tài)建立設(shè)備文件節(jié)
點(diǎn);
◆在核模塊的退出函數(shù)中,實(shí)現(xiàn)設(shè)備注銷(xiāo),刪除該設(shè)備文件節(jié)點(diǎn);
◆實(shí)現(xiàn)file_operations設(shè)備驅(qū)動(dòng)文件結(jié)構(gòu)體中的ioctl函數(shù),完成如下功能:
?一次調(diào)用掌握全部的LED亮或滅;
?掌握單個(gè)LED亮或滅;
?實(shí)現(xiàn)流水燈顯示,流水燈顯示效果自行定義,流水燈循環(huán)顯示次數(shù)由用戶(hù)應(yīng)用程序傳入。
程序:
驅(qū)動(dòng)程序分析:
#include
#include
#include
#include
#include
#include
#include
#include
#include
MODULE_LICENSE("GPL");
#defineDEVICE_NAME"leds"http://驅(qū)動(dòng)名稱(chēng)
#defineDEVICE_MAJOR231//驅(qū)動(dòng)主設(shè)備號(hào)
#defineDEVICE_MINOR0//驅(qū)動(dòng)次設(shè)備號(hào)
//聲明字符設(shè)備類(lèi)結(jié)構(gòu)
structcdev*mycdev;
structclass*myclass;
dev_tdevno;
//LEDGPIO列表
staticunsignedlongled_table={
S3C_GPQ2,
S3C_GPQ3,
S3C_GPQ4,
S3C_GPQ5,
S3C_GPQ6,
};
//LEDGPIO輸出類(lèi)型配置列表
staticunsignedintled_cfg_table={
S3C_GPQ2_OUTP,
S3C_GPQ3_OUTP,
S3C_GPQ4_OUTP,
S3C_GPQ5_OUTP,
S3C_GPQ6_OUTP,
};
//LEDIOCTRL處理函數(shù),主要完成從用戶(hù)空間傳遞數(shù)據(jù)進(jìn)行GPIO引腳設(shè)置功能
staticintuptech_leds_ioctl(structinode*inode,structfile*file,unsignedintcmd,unsignedlongarg)
{
switch(cmd){
case0:
case1:
if(arg>6){
return-EINVAL;
}
//LEDGPIO設(shè)置函數(shù)接口
s3c_gpio_setpin(led_table,!cmd);
return0;
default:
return-EINVAL;
}
}
//驅(qū)動(dòng)層file_operations接口函數(shù)初始化
staticstructfile_operationsuptech_leds_fops={
.owner=THIS_MODULE,
.ioctl=uptech_leds_ioctl,
};
//驅(qū)動(dòng)程序入口初始化函數(shù),設(shè)置LEDGPIO、向核注冊(cè)設(shè)備。staticint__inituptech_leds_init(void)
{
intret;
inti;
//注冊(cè)LED設(shè)備
devno=MKDEV(DEVICE_MAJOR,DEVICE_MINOR);//獵取設(shè)備號(hào)mycdev=cdev_alloc();
cdev_init(mycdev,//初始化字符設(shè)備err=cdev_add(mycdev,devno,1);//向系統(tǒng)添加LED設(shè)備if(err!=0)
printk("s3cledsdeviceregisterfailed!\n");
myclass=class_create(THIS_MODULE,"leds");
if(IS_ERR(myclass)){
printk("Err:failedincreatingclass.\n");
return-1;
}
//建立LED設(shè)備節(jié)點(diǎn)
class_device_create(myclass,NULL,MKDEV(DEVICE_MAJOR,DEVICE_MINOR),NULL,DEVICE_NAME,DEVICE_MINOR);
//LEDGPIO配置初始化
for(i=0;i
#include
#include
#include
intmain(intargc,char**argv)
{
inti;
inton;
intled_number;
intfd;
/*
依據(jù)命令行參數(shù)容,進(jìn)行掌握。將命令行參數(shù)1設(shè)置成LEDnumber,參數(shù)2設(shè)置成LED點(diǎn)亮熄滅狀態(tài)on
*/
if(argc!=3||sscanf(argv,"%d",
fprintf(stderr,"\t./ledled_numberon|off\n");
fprintf(stderr,"Options:\n");
fprintf(stderr,"\tled_numberfrom0to4\n");
fprintf(stderr,"\ton:1off:0\n");
exit(1);
}
//打開(kāi)LED設(shè)備節(jié)點(diǎn)
fd=open("/dev/leds",0);
if(fdtm_gmtoff為:
#defineTIMEZONE_OFFSET(foo)foo->tm_gmtoff
修改boa.c:
修改:
if(setuid(0)!=-1){
DIE("ickyLinuxkernelbug!");
}
為:
//if(setuid(0)!=-1){
//DIE("ickyLinuxkernelbug!");
//}
修改defines.h:
修改:
#ifndefSERVER_ROOT
#defineSERVER_ROOT"/etc/boa"
#endif
為:
#ifndefSE
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 天然氣儲(chǔ)氣設(shè)施的運(yùn)營(yíng)與維護(hù)策略
- 加強(qiáng)城市生活污水收集、處理和再生利用設(shè)施建設(shè)改造實(shí)施方案
- 就業(yè)指導(dǎo)課面試題及答案
- 量子科技面試題及答案
- 開(kāi)封高校面試題及答案
- 賽罕區(qū)聯(lián)考試題及答案
- 家教保姆面試題及答案
- 聯(lián)合培養(yǎng)面試題及答案
- 石油公司研發(fā)投入與創(chuàng)新驅(qū)動(dòng)戰(zhàn)略
- 教育醫(yī)療面試題及答案
- 中國(guó)近現(xiàn)代史綱要知到章節(jié)答案智慧樹(shù)2023年廣東工業(yè)大學(xué)
- GB 15612-1995食品添加劑蒸餾單硬脂酸甘油酯
- 京東白條應(yīng)收賬款債權(quán)資產(chǎn)支持專(zhuān)項(xiàng)計(jì)劃說(shuō)明書(shū)(披露)
- 汽車(chē)電工與電子基礎(chǔ)
- 世界海洋工程裝備市場(chǎng)的現(xiàn)狀及的趨勢(shì)課件
- DB11T 716-2019 穿越既有道路設(shè)施工程技術(shù)要求
- 罪犯的權(quán)利與義務(wù)
- 我國(guó)未成年人犯罪的現(xiàn)狀、成因及對(duì)策研究
- 軋機(jī)主傳動(dòng)裝置及主電機(jī)的選擇
- 工程移交書(shū)及質(zhì)量保修書(shū)水利工程
- 水污染源自動(dòng)監(jiān)控系統(tǒng)運(yùn)行作業(yè)指導(dǎo)書(shū)
評(píng)論
0/150
提交評(píng)論