當前位置:首頁 » 編程軟體 » arm驅動編譯

arm驅動編譯

發布時間: 2023-05-08 00:09:33

⑴ 請教一個驅動編譯路徑的問題

EXEC = leds
OBJS = leds.o
SRC = leds.c

INCLUDE = /mnt/linux-2.6.21-hc9261

CC = armv5l-linux-gcc
LD = armv5l-linux-ld

MODCFLAGS = -O2 -Wall -D__KERNEL__ -DMODULE -I$(INCLUDE) -march=armv4t -c -o
LDFLAGS = -r

all: $(EXEC)

⑵ 驅動編譯進內核和編譯模塊的區別

第一次把自己編譯的驅動模塊載入進開發板,就出現問題,還好沒花費多長時間,下面列舉出現的問題及解決方案1:出現insmod:errorinserting'hello.ko':-1Invalidmoleformat法一(網上的):是因為內核模塊生成的環境與運行的環境不一致,用linux-2.6.27內核源代碼生成的模塊,可能就不能在linux-2.6.32.2內核的linux環境下載入,需要在linux-2.6.27內核的linux環境下載入。a.執行uname-r//查看內核版本b.一般出錯信息被記錄在文件/var/log/messages中,執行下面命令看錯誤信息#cat/var/log/messages|tail若出現類似下面:Jun422:07:54localhostkernel:hello:versionmagic'2.6.35.6-45.fc14.i686.PAE'shouldbe'2.6.35.13-92.fc14.i686.PAE'則把Makefile里的KDIR:=/lib/moles/2.6.35.6-45.fc14.i686.PAE/build1改為KDIR:=/lib/moles/2.6.35.13-92.fc14.i686.PAE/build1//改成自己內核源碼路徑(這里的build1是一個文件鏈接,鏈接到/usr/src/kernels/2.6.35.6-45.fc14.i686.PAE和13-92的)然並卵,我的fedora14/usr/src/kernels下並沒有2.6.35.13-92.fc14.i686.PAE,只有2.6.35.13-92.fc14.i686,雖然不知道兩者有什麼區別,但改成2.6.35.13-92.fc14.i686還是不行,照樣這個問題,還好後來在看教學視頻的到啟發法二:改的還是那個位置KDIR:=/opt/FriendlyARM/linux-2.6.32.2//把這里改成你編譯生成kernel的那個路徑all:$(MAKE)-C$(KDIR)M=$(PWD)molesARCH=armCROSS_COMPILE=arm-linux-//加這句2.[70685.298483]hello:molelicense'unspecified'taintskernel.[70685.298673]方法:在模塊程序中加入:MODULE_LICENSE("GPL");3.rmmod:chdir(2.6.32.2-FriendlyARM):Nosuchfileordirectory錯誤解決方法:lsmod可查看模塊信息即無法刪除對應的模塊。就是必須在/lib/moles下建立錯誤提示的對應的目錄((2.6.32.2)即可。必須創建/lib/moles/2.6.32.2這樣一個空目錄,否則不能卸載ko模塊.#rmmodnls_cp936rmmod:chdir(/lib/moles):Nosuchfileordirectory但是這樣倒是可以卸載nls_cp936,不過會一直有這樣一個提示:rmmod:mole'nls_cp936'notfound初步發現,原來這是編譯kernel時使用makemoles_install生成的一個目錄,但是經測試得知,rmmod:mole'nls_cp936'notfound來自於busybox,並不是來自kernel1).創建/lib/moles/2.6.32.2空目錄2).使用如下源碼生成rmmod命令,就可以沒有任何提示的卸載ko模塊了[luther.gliethttp]#include#include#include#include#include#includeintmain(intargc,char*argv[]){constchar*modname=argv[1];intret=-1;intmaxtry=10;while(maxtry-->0){ret=delete_mole(modname,O_NONBLOCK|O_EXCL);//系統調用sys_delete_moleif(retread_proc=procfile_read;////Our_Proc_File->owner=THIS_MODULE;Our_Proc_File->mode=S_IFREG|S_IRUGO;Our_Proc_File->uid=0;Our_Proc_File->gid=0;Our_Proc_File->size=37;printk("/proc/%screated\n",procfs_name);return0;}voidproc_exit(){remove_proc_entry(procfs_name,NULL);printk(KERN_INFO"/proc/%sremoved\n",procfs_name);}mole_init(proc_init);mole_exit(proc_exit);[html]viewplainifneq($(KERNELRELEASE),)obj-m:=proc.oelseKDIR:=/opt/FriendlyARM/linux-2.6.32.2#KDIR:=/lib/moles/2.6.35.13-92.fc14.i686.PAE/build1PWD:=$(shellpwd)all:$(MAKE)-C$(KDIR)M=$(PWD)molesARCH=armCROSS_COMPILE=arm-linux-clean:rm-f*.ko*.o*.mod.o*.mod.c*.symversendifmake後生成proc.ko,再在開發板上insmodproc.ko即可執行dmesg就可以看到產生的內核信息啦

⑶ Qt creator 可以編寫ARM linux的驅動嗎

QT主要是應用於上層應用軟體的開發,一般不能做驅動的開發,驅動層是跟操作系統內核早頌緊密關聯的。qmake是QT的編譯命令,make是GCC的編譯命令。做驅動用什麼還得看你是要給什麼操作信散系統添加設備。如果是windows就用WIN ddk吧,如果是Linux就用gcc,前者是一個類似於VC的集成開發環境,後者只是一個編陸坦鄭譯器。可以用任意的文本編輯器寫代碼,然後寫Makefile,編譯出驅動。

⑷ ARM linux設備驅動,寫的驅動必須在編譯內核的時候添加到內核才能用嗎比如led驅動,我生成

linux2.6以後的內核在載入驅動的時候是可以動態添加的,不用每次添加之後都make zImage,
你只用先編譯一邊,然後就可以一直用這個做驅動的開發嘍,
只要生成了led.ko,然後insmod led.ko,就可以了,至於是不是用應用層,我覺得你還是先學一下應用層的東西吧,比如nuix系統高級編程之內的書,

⑸ linux系統下編譯的驅動模塊如何在arm上運行

arm驅動和x86驅動並不通用,Linux的驅動不能用在arm上

⑹ 為ARM開發的linux驅動程序,應該怎麼編譯得到.o文件

編譯驅動是要和內核相關的,你的這個Mafefile是沒問題,你查查你的/weke/kernel/s3c2410_kernel2.4.18_rel那個內核有沒有交叉編譯過
內核裡面有Makefile,所以你編譯驅動的時候指定內核路徑後,會用編譯內核的交叉編譯工具編譯,然後你試一下make default

⑺ 為什麼每款ARM電腦都需要專門為它編譯的內核,而x86的可以通用

就算是電腦巨頭的英特爾和AMD,也有針對操作體統的驅動或者叫補丁的。而arm架構具體的實施更亂,很難一個驅動通吃,打補丁實屬正常。

x86經過多年發現,在pc這塊已經成為一個分工配合協調的產業鏈,無論是AMD還是INTEL,會發現他們每山絕代都有個主板范圍,這裡面涉及的主要就是晶元組、介面、一系列的設計規范,本質上雖然主機品牌不同、配置不同,但是都是一個模式出來的。

相比起來arm涉及的軟硬體平台就太多了,甚至晶元本身的設計都千差萬別,所以需要單獨去定製,目前市面辯隱上還沒有像pc這種通用的各自搞一部分的模塊化設計。逗灶姿

⑻ 如何用arm-linux-gcc編譯驅動程序,Makefile文件怎麼寫

回復
http://bbs.chinaunix.net/viewthread.php?tid=1921952
上面說的方法我還是不是很明白啊,我現在簡直沒辦法了,昨天晚我看到一個資料上面寫的helloworld驅動的例子有兩份Makefile,一份是x86機子上的,一份是arm平台上的,arm上的這樣寫:ifneq
($(KERNELRELEASE),)obj-m:=hello.oelseKDIR/usr/src/kernels/opt/EmbedSky/linux-2.6.30.4/all:
make
-C
$(KDIR)
M=$(PWD)
moles
ARCH=arm
CROSS_COMPLIE=arm-linux-clean:
rm
-f
*.ko
*.o
*.mod.o
*.mod.c
*.symversendif看到後我想應該是要用用於移植的內核來編譯吧,於是我乾脆把資料提供的內核拷貝到PC的Linux系統中然後解壓、編譯直至安裝,然後就再模仿例子寫了Makefile如上所示,然後make後終於通過編譯成功了,然後我再下載到arm板上安裝,卻又出現下面的錯誤:insmod:
can't
insert
'hello.ko':
unknown
symbol
in
mole,
or
unknown
parameter。我就又徹底暈了。到底是怎麼回事,應該怎麼辦的呢?

⑼ 如何用arm-linux-gcc編譯驅動的,煩勞告訴我完整命令 ,如果可以的話 把整個流程告訴我下,多謝了

簡單的告訴你
yum install gcc* -y

⑽ 在linux下編譯驅動程序,用arm-linux-gcc編譯時出現了很多錯誤

不改橡漏makefile文件,當然不能編譯羨賣了,linux的驅動就是這么搞的啊,沒辦法的,反正是批處理的,也就多花點時間嘛,你可以把一些不需要的驅動,選擇不編譯,這樣就能加快速度了。給你個辦法,在windows虛擬機中安裝交叉編譯環境,你可以在windows下編輯你的程序,linux只起到編譯的作用,這樣,兩個工作可以兄如逗同時進行,有空你還可以上上網,這樣你就不覺得時間長了。

熱點內容
粉土壓縮模量 發布:2024-05-02 07:53:59 瀏覽:805
國都證券初始密碼是多少 發布:2024-05-02 07:46:39 瀏覽:109
shell腳本和linux命令行 發布:2024-05-02 07:37:54 瀏覽:968
自己的伺服器搭建微信小程序商城 發布:2024-05-02 07:36:26 瀏覽:426
php單行注釋 發布:2024-05-02 07:36:22 瀏覽:958
買車哪些配置必備 發布:2024-05-02 07:30:20 瀏覽:52
華為手機的自帶鈴聲文件夾 發布:2024-05-02 07:20:14 瀏覽:501
xp系統開機密碼怎麼設置 發布:2024-05-02 06:49:48 瀏覽:759
柱加密區公式 發布:2024-05-02 06:40:19 瀏覽:4
java位元組轉換 發布:2024-05-02 06:40:11 瀏覽:687