A. gcc一個led驅動,說沒有linux/moles頭文件,然後我去make moles_install,說沒又arm-linux-gcc,但我裝了
沒有找到mole.h這個頭文件,一般是你的內核地址不對。你需要看你編譯的內核地址是否正確。
B. linux如何編譯arm-2440的led跑馬燈程序不是編譯驅動程序
這是一個很簡單的問題。使用ads生成二進制文件的時候會直接可執行的二進制文件的頭去掉。如程序的執行地址,鏈接地址等等信息被去掉。但是在linux上你使用的arm-linux-gcc編譯過後產生的只是linux 系統的可執行二進制文件,它能夠被linux 內核所識別。但是他們不能直接作為裸板程序直接被開發板所執行。除了使用arm-linux-gcc 以外還要使用兩個命名arm-linux-ld 和 arm-linux-obj 才能生成能直接被裸板執行的代碼
原文地址:http://www.ebhou.com/post/armtest.html
今天在空間看到一個關於arm裸板代碼的問題。這個問題對於老鳥來說都是簡單得不能再簡單的問題了。可是當時確把我給難住了,以前學習的時候沒有少些過裸板代碼。自己的電腦上至今還保留著lcd,觸摸屏和 音效卡的裸板驅動。才1年多點時間盡然自己只知道分三不,編譯、鏈接、去掉elf頭。而具體的步驟盡然只知道gcc 另外兩部的命名盡然不知道參數是什麼。慚愧啊!
今天保留過程於此。
做備忘只用,如果能夠幫助到任何人那就不虛此寫啊。
看過編譯原理的人都知道我們一句簡單的arm-linux-gcc 到達做了哪些工作。他並不是簡單的把我們的原文件編譯成我們可執行的二進制文件,在這個過程中他其實至少做了兩部工作。「編譯」和鏈接「當然這其中包含了很多關於編譯原理的至少,由於本人才疏學淺說以也只能夠簡單的把他說成編譯和鏈接了。如果需要跟深入的理解請查找相關」編譯原理的書籍吧「
這里我們先介紹一下常用的gcc命令.
1.arm-linux-gcc -v 查看gcc 版本號
2.arm-linux-nm 查看一個.o文件所需要的庫。
3.arm-linux-ld 鏈接命令
3.arm-linux-gcc 編譯命令
4 arm-linux-objmp -h test 查看符號
-d 反匯編
5 arm-linux-as ls.S -o ls.o 將匯編原文件編譯成.o文件
6 arm-linux-obj -I elf32-littlearm -O binary test test.bin 去掉二進制文件elf頭。
現在我們來寫一個arm裸板的LED閃燈程序 非常簡單的。
源代碼 led_test.c
void main()
{
int i=0;
volatile long *GPKCON0 = 0x7F008800;
volatile long *GPKDAT = 0x7F008808;
volatile long *GPKPUD = 0x7F00880C;
*GPKCON0 &= ~(0XFFFF <<16);
*GPKCON0 |= (0X1111 <<16);
while(1){
*GPKDAT &= ~(0XF <<4);
i=0xfffff;
while(i--)
;
*GPKDAT |= (0XF <<4);
i=0xfffff;
while(i--)
;
}
}
每隔大概3秒鍾的時間LED閃爍一次。非常簡單的一個程序。這里沒有使用定時器啊 什麼的知識簡單的做循環來延時。注意 關於LED 的GPIO相關寄存器地址根據你自己的實際情況來。
編譯過程
1 編譯
arm-linux-gcc -c -march=armv4 test.c -o test.o
2.鏈接 http://www.ebhou.com/post/armtest.html
C. linux交叉編譯生成的文件如何下載。
要把東西下到NOR FLASH要用JTAG吧,如果要驗證可執行程序,下到NAND FLASH就好啦。下到NAND FLASH我一般用的是NFS傳
D. 基於LPC2124LED流水燈C程序設計
如果單片機16個腳,那麼用兩層循環或者取余數搞定。兩層循環i=0;無限循環{循環i=0 到i=15{ 點亮發光管i 延時(由你定) 熄滅發光管i}}
E. 怎麼在linux下編譯驅動程序我我按照別人寫的LED啟動程序,用交叉編譯器arm-linux-gcc編譯,總提示找不到
不改MAKEFILE文件,當然不能編譯了,Linux的驅動就是這么搞的啊,沒辦法的,反正是批處理的,也就多花點時間嘛,你可以把一些不需要的驅動,選擇不編譯,這樣就能加快速度了。給你個辦法,在Windows虛擬機中安裝交叉編譯環境,你可以在Windows下編輯你的程序,Linux只起到編譯的作用,這樣,兩個工作可以同時進行,有空你還可以上上網,這樣你就不覺得時間長了。
F. linux 交叉編譯器可以編寫一個控制arn開發板led燈的程序嗎
必須可以的
要不要操作系統幹嘛啊
先在arm上上系統
然後在linux電腦上編寫程序
其實就是驅動哈
交叉編譯
移植
執行
ok
G. riotboard 使用什麼交叉編譯工具鏈
不需要改源碼Makefile,只要在你的驅動目錄下配置好Makefile裡面的源碼樹路徑就行了。
obj-m := led_ko.o
KDIR := /home/zs5577517/ti-ezsdk_dm816x-evm_5_03_01_15/board-support/linux-2.6.37-psp04.00.01.13.patch2
all:
make -C $(KDIR) M=$(PWD) moles ARCH=arm CROSS_COMPILE=/home/zs5577517/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-
clean:
rm -f *.ko *.o
H. 我在ubuntu9。04下,用arm-linux-gcc 交叉編譯了一個led驅動程序。引用的內核源碼放在/usr/src/linux2.6
如果你要編譯一個 驅動 首先你那個 linux內核事編譯好的。makefile 裡面耀指向你的linux內核目錄
你在試試
I. 嵌入式的一些基本問題
學Linux你以為只是亮個燈,寫個IO口什麼的啊。這些都只是嵌入式系統的皮毛而已,實話告訴你底層的最難,嵌入式領域驅動和硬體這塊最麻煩。看來你基本不懂。
嵌入式復雜之處在於處理器可以不同,linux操作系統不同,移植絕對是難點。led照樣可以寫成你看不懂的形式。
gcc基本不用,用交叉編譯器arm-gcc或者其他的gcc,Makefile你肯定沒有寫過,寫過的話夠你學很久。
led燈告訴你基本的驅動開發。但是驅動遠遠沒有這么簡單。呵呵,這是最最最簡單的。
至於把開發板做成路由,你指的是無線還是什麼,這裡面涉及到網卡驅動,網路編程,因為沒坐過這塊所以也不好說,就這些吧,希望對你有幫助
J. linux 驅動交叉編譯問題。
不需要改源碼Makefile,只要在你的驅動目錄下配置好Makefile裡面的源碼樹路徑就行了。
obj-m := led_ko.o
KDIR := /home/zs5577517/ti-ezsdk_dm816x-evm_5_03_01_15/board-support/linux-2.6.37-psp04.00.01.13.patch2
all:
make -C $(KDIR) M=$(PWD) moles ARCH=arm CROSS_COMPILE=/home/zs5577517/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-
clean:
rm -f *.ko *.o