當前位置:首頁 » 編程軟體 » 交叉編譯器能編制led燈嗎

交叉編譯器能編制led燈嗎

發布時間: 2022-05-12 14:05:34

❶ 基於LPC2124LED流水燈C程序設計

如果單片機16個腳,那麼用兩層循環或者取余數搞定。兩層循環i=0;無限循環{循環i=0 到i=15{ 點亮發光管i 延時(由你定) 熄滅發光管i}}

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

❸ 我在ubuntu9。04下,用arm-linux-gcc 交叉編譯了一個led驅動程序。引用的內核源碼放在/usr/src/linux2.6

如果你要編譯一個 驅動 首先你那個 linux內核事編譯好的。makefile 裡面耀指向你的linux內核目錄
你在試試

❹ 我想學嵌入式開發,但是沒有項目資料實踐,不知大佬可有資源

以下這篇文章或許對你有幫助,而且現在有各種視頻教程,也是一個不錯的學習途徑。可以自己DIY一些東西,多看看相關網站把,多和前輩交流~網頁鏈接

寫給新手,從不懂到入門,一隻老鳥的嵌入式入門心得

本人大學學的是電子信息科學與技術專業,其實這個專業和嵌入式沒有多大的關系,要說有關系就是簡單的講了下c語言語法,學完之後還不知道什麼是C語言,只記住了,char,int,string等占幾個位元組,if,
for,
while循環什麼的,感覺也就能算一些小學就會的題目,全國計算機等級二級也就糊塗的過了。我這個專業沒學過C++,一開始不知道什麼是向對象,什麼叫面向過程,這可能讓大家笑話了。不過這說的是實話,大學的時候比較喜歡動手,喜歡硬體方面的東西,也喜歡看書。在大一的時候就聽學長說,單片機很難學,在沒事的時候就從圖書管借了本關於51的書,一開始還真是不怎麼懂,然後硬著頭皮去看,當我把51的結構看完了,就不像一開始那樣一頭霧水了,自己在紙上把51的結構圖默畫一遍,然後再把各個寄存器功能寫一下,各個功能口的結構也畫一遍,然後就不覺得51有什麼難了。其實有些時候不是這個東西你不會,而是在不會的時候自己先告訴自己這個太難了,自己先放棄了。我們學習51晶元,是為了以後的打基礎,知道是怎麼通過配置寄存器來實現功能。網頁鏈接

大二下學期的時候,我們開了51的課,這個課幾乎就沒怎麼去,因為我認為沒有必要去聽自己會的東西了。後來聽別人說avr的資源會比51的豐富的很多,所以就想試試,看看有什麼難的,就從網上買了本馬潮老師《AVR單片機嵌入式系統原理與應用實踐》,一邊看書,一邊想自己畫一個板了,一開始想實現一個點陣屏,實現滾動效果,後來想想做個板也花不少錢呢,為什麼不多加一些功能呢,還能多學到些知識,所以就加了溫感,紅外,鐵電存儲器等並把所有的擴展口都擴展了出來,備以後用,那時還挺自豪的呢,同學們都很羨慕,不過現在想想其實也沒什麼了。

大學也聽說過嵌入式這個詞,不過不太明白是什麼意思,09年的時候從網上找到中嵌視頻,有四張DVD(大約13G),下載下來後,從頭到尾的看了一遍,沒什麼印象,只記得講一些不知所雲的函數,然後莫名其妙的講怎麼使用那個44b0的開發板,不過聽完了,還是有很大收獲的,就有一種想裝一個linux的沖動,我是大二下學期才有的自己電腦,不過電腦的配置比較低,1g內存,跑虛擬機就像個蝸牛,所以就想著怎麼才能裝個linux,自己用XP習慣了,如果全換了又捨不得,那時從書上知道linux的文件系統和windows不一樣,只有一個根分區,所以也害怕一裝linux全盤就被格式化了,不過最後還是慾望戰勝了擔心,買了張redhat

9的光碟,小心的裝這個系統,里邊的英文也不是太難,還是知道大概意思的,所以一步步的裝,最後裝到我的硬碟的最後空間,重新啟動,竟可以選擇進入哪一個系統了,從這之後,自己就不害怕怎麼裝系統了,應了那句言,紙上得來終覺淺,絕知此事要躬行。

所以我認為,買一個開發板是完全有必要的,拿到實物操作一下就不會感覺太抽象了。

後來也想學學arm,但不知道arm是什麼東西,所以就買了本《從51到arm》,講的是關於arm的大體結構,看完後感覺,原來arm就是一個速度更快,介面更豐富的單片機啊。

如果想做linux設備驅動的同學應該對arm硬體有一些了解。如果對驅動不感興趣,完全沒有必要去看。交叉編譯器會幫我們做好這些事情,他比我們更了解arm結構。

大三下學期開始准備考研了,所以自己這些興趣就先放下了,報的北郵的信通學院通信專業,當時就是想一定要上個好學校好專業,也沒想太多,結果考了的成績差了點,沒有被錄取,也不想調劑一個二流的學校,然後就參加工作了,工作中每天都用的到開發板,當我看到一個小板上還可以跑系統的時候感覺很不可思議,以為要很大工程。後來邊工作邊學習,每天都要看電腦看到眼發疼,晚上也都差不多十二點時才睡覺。感覺到累,不過也感覺到自己在進步。

閑話有點多了,說了很多都是自己大學那點破事。

聽很多的初學者說不知道從哪裡開始,學習嵌入都要學哪些東西,從網上搜了一下,一大堆的東西要學,一下就推薦十幾本書,說看完這本書怎麼怎麼樣,看完那本書怎麼怎麼樣,一下子就給初學者給嚇住了,其實完全沒必要把網上的那些東西全部看一遍,那樣又費時,又感覺工程太大,讓初學者沒有信心去把每一種都看完。網上說的些方面都要知道,不一定全部都掌握,我們可以退成求其次,每一個都知道一些,當然會的越多越好。今天學點這個明天學點那,換著樣來也不會覺得煩。而且還能感覺到每天都有收獲。

下面給嵌入式初學者一些自己的我個人建議。

1嵌入式涉及到很多的基礎知識:

c語言,關於C語言要知道基本的語法,什麼是結構體,什麼是共用體,有什麼區別,不用強記一些二級考的東西,因在實際中用的很少。

c++要知道什麼是類,怎麼定義,繼承,介面,要深刻理解,當然基本語法也是必不可少的。

操作系統原理也應該知道基本的原理的,我記得我大學沒這個課還是去電信學院蹭別的專業的課呢,後來學習發現很多的東西都是在這個課上學到的。什麼時間片啊,任務調度啊,都是在那裡知道的。

Linux基本命令的使用(vi編輯器必須會用,因為在終端改文件的時候只能用這個),我們現在很多的人都習慣用滑鼠了,很少用到命令,我們學習嵌入linux可要改改這個習慣了,linux用命令操作一是效率高,二是功能非常強大,遠非圖形界面能比的了的,其實我們用圖形界面的操作都要轉化為命令傳給硬體的。

Linux文件系統的管理要清楚,哪個目錄存放是什麼東西,有什麼用,文件許可權管理等

Shell編程也要了解一些,在這給大家推薦一個教程,周朝劍的 shell編程,也就七八講吧,講的很全面。初學者看前4講就可以了。

Linux設備驅動的架構要了解,初學者可以以飛凌的OK6410開發板上的led驅動分析一下,結合原理圖和linux設備驅動相關書籍把每一行代碼都分析明白。關於驅動給大家推薦一本書《LINUX社備驅動程序》中國電力出版社出版的,很經典的,初學者看可能看不太明白,不過要堅持看,最次也得把前6章看完了。

2

看書不要希望一次就會,一次就明白是什麼意思,也不要死記硬背,看不明白也沒關系,以後遇到了知道去哪裡去找就可以了,以後遇到的多了,也就記住了,遇到的少的,忘記也就忘記了。還有,不要直接閱讀linux內核源代碼,看一些自己把頭撞破也想不明白的事,會打擊初學者的積極性,要循序漸進,今天學個做個led,明天做個串口,後天說不定就做硬體編解碼了。

3、你可以不接受培訓,但是不能不買開發板。

如果你想學習嵌入式一定要買塊學習板,現在的開發板很便宜了,給我們初學者減輕了很多經濟負擔。看再多的視頻,看再多的書,也不如自己動手試一下,看著很簡單的東西,做起來就可能遇到很多的問題,遇到問題找到原因,解決問題,只有這樣才能學到東西,記得我第一次寫led的驅動,想自己試一下,網上也有人寫過相關的代碼,可是自己一試,就出了好多的問題,那個led弄了我一天才把led燈點亮。所以不要眼高手低。

還有關於培訓,現在的培訓機構很多,講的也不錯,老師也很好,但是有一個問題,太集中了,而且學生動手的機會也不太多,記得我們公司還招了一個在北京某個培訓機構培訓半年的員工呢,花了一萬多,來了之後也沒感覺有多高,問他都學了什麼,也就是我前邊說的那些基礎知識,很多的東西還是不知道的,照著書弄個helloworld模塊驅動兩天沒搞定。不是培訓不好,但我個人見解效果並不是很好。記住:只有自己動手做過的東西才是自己的。

現在買一塊開發板很便宜,飛凌的OK6410的開發板就不錯,源碼完全開放,而且資料也很豐富,完全能滿足初學者學慣用,有人說友善的板子也不錯,我個人覺得友善的板子不錯,但是不適合初學者,因為他的很多的東西是不給代碼的,用過友善的板子的同學經常有這樣的痛苦,想學一個東西,去找他的代碼的時候,卻找不到,很多友善提供的代碼中很多的都是封裝好的,只提供給客戶一個庫,初學者想要找代碼的時候就不知道怎麼辦了。

4 不要好高騖遠,要腳踏實地

對於初學者,還有一點小建議,我們拿到一個開發板,很興奮也很激動,想法自然也很多,想用開發板實現自己的這個想法,實現那個想法,然後又不知道從何下手,然後就去論壇中發一個貼,

「那個什麼什麼怎麼實現啊,哪位大俠能詳細說一下啊,跪求!!」然後等著別人去回復。見沒人回復就抱怨。有想法是好的,我們要實現自己的想法也是有前提的,首先,我們對這部分知識了解嗎?如果不了解就去google一下(最好別用網路,不太好用),了解了一些,也就大概知道要怎麼做了。如果再遇到問題,再去發貼問,這樣也顯得咱們有水平。比如自己連串口是什麼都不太清楚呢,就問串口通信怎麼做啊,就是人家把代碼給咱,咱也不明白是怎麼回事啊。

5 多看代碼,多寫代碼

見多識廣,熟能生巧。多看代碼,要從代碼中讀出代碼的意思來。自己平時也要多寫代碼,多練習(這一點我做的不好,寫的少)。

寫完已經晚上兩點了,思路有些亂,有些也是個人的見解,在有些人看來可能是錯誤的,每個人有每個人的學習方法,但是我們的目的只有一個——希望我們學到更多的知識。

❺ 用keil編一個led燈閃爍程序

點亮 小燈的程序我們第二課完成了,就是讓 LED = 0。熄滅小燈的程序也很簡單,就是 LED = 1。點亮和熄滅都會了,那麼如果我們在亮和滅中間加個延時,反復不停的點亮和熄滅小燈,就成了閃爍了。

我們首先復習一下 Keil 寫程序的過程,建立工程-->保存工程-->建立文件-->添加文件到工程-->編寫程序-->編譯-->下載程序。

LED 對於有 C 基礎的同學來說很簡單,那我先寫出來,大家可以先看下。沒有C 語言基礎的同學也可以跟著抄一遍,下節課我會補充部分 C 語言基礎知識,這樣你先抄一遍後,再跟著看 C 語言基礎知識的時候也比較容易理解透徹。

純文本復制

#<reg52.h>

sbit LED = P0^0;

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

main(){ //void 即函數類型

//以下為聲明語句部分

unsigned int i = 0; //定義一個變數 i,並賦初值 0

//以下為執行語句部分

ENLED = 0; //U3、U4 兩片 74HC138 總使能

ADDR3 = 1; //使能 U3 使之正常輸出

ADDR2 = 1; //經 U3 的 Y6 輸出開啟Q16

ADDR1 = 1;

ADDR0 = 0;

(1){

LED = 0; //點亮小燈

for (i=0; i<30000; i++); //延時一段時間

LED = 1; //熄滅小燈

for (i=0; i<30000; i++); //延時一段時間

}

}

大家把這個程序編譯一下,下載到里,就會發現 LED2 這個小燈會閃爍了。

❻ 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/c++能控制LED燈嗎

可以,看實現功能復雜程度。控制一個LED燈簡單,控制LED大屏幕就復雜多了

❽ 嵌入式的一些基本問題

學Linux你以為只是亮個燈,寫個IO口什麼的啊。這些都只是嵌入式系統的皮毛而已,實話告訴你底層的最難,嵌入式領域驅動和硬體這塊最麻煩。看來你基本不懂。
嵌入式復雜之處在於處理器可以不同,linux操作系統不同,移植絕對是難點。led照樣可以寫成你看不懂的形式。
gcc基本不用,用交叉編譯器arm-gcc或者其他的gcc,Makefile你肯定沒有寫過,寫過的話夠你學很久。
led燈告訴你基本的驅動開發。但是驅動遠遠沒有這么簡單。呵呵,這是最最最簡單的。
至於把開發板做成路由,你指的是無線還是什麼,這裡面涉及到網卡驅動,網路編程,因為沒坐過這塊所以也不好說,就這些吧,希望對你有幫助

❾ 你好,我想問問你知道C語言編程顯示LED燈是如何實現的嗎

通過對LED燈的控制寄存器的修改達到LED燈亮與滅。一般來說就是把LED晶元上的一個IO管腳映射成一個物理地址,我們對這個地址直接操作就可以控制LED等的亮,滅等。如果是在用戶層寫程序控制的話,需要將物理地址通過MMU映射成虛擬地址才可以控制。

❿ 怎麼在linux下編譯驅動程序我我按照別人寫的LED啟動程序,用交叉編譯器arm-linux-gcc編譯,總提示找不到

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

熱點內容
app什麼情況下找不到伺服器 發布:2025-05-12 15:46:25 瀏覽:714
php跳過if 發布:2025-05-12 15:34:29 瀏覽:467
不定時演算法 發布:2025-05-12 15:30:16 瀏覽:131
c語言延時1ms程序 發布:2025-05-12 15:01:30 瀏覽:165
動物園靈長類動物配置什麼植物 發布:2025-05-12 14:49:59 瀏覽:734
wifi密碼設置什麼好 發布:2025-05-12 14:49:17 瀏覽:148
三位數乘兩位數速演算法 發布:2025-05-12 13:05:48 瀏覽:397
暴風影音緩存在哪裡 發布:2025-05-12 12:42:03 瀏覽:541
access資料庫exe 發布:2025-05-12 12:39:04 瀏覽:628
五開的配置是什麼 發布:2025-05-12 12:36:37 瀏覽:365