日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]  最近拿出了空閑已久的Tiny6410開發(fā)板來玩一下,一直對(duì)Linux有變態(tài)的崇拜,所以這次過度沒有懸念的拋棄諸如ADS1.2或RVDS等IDE開發(fā)環(huán)境。完全的VIM + GCC搞定一切。  言簡(jiǎn)意賅,生成的BIN放入SD卡中啟動(dòng),詳細(xì)過

  最近拿出了空閑已久的Tiny6410開發(fā)板來玩一下,一直對(duì)Linux有變態(tài)的崇拜,所以這次過度沒有懸念的拋棄諸如ADS1.2或RVDS等IDE開發(fā)環(huán)境。完全的VIM + GCC搞定一切。

  言簡(jiǎn)意賅,生成的BIN放入SD卡中啟動(dòng),詳細(xì)過程參見Tiny6410的幫助文檔,配置文件附送光盤里都有。

  這里僅主要介紹一下如何點(diǎn)亮核心板上的4個(gè)LED,當(dāng)然在此之前arm-linux-gcc交叉編譯環(huán)境要搭建起來,還要添入環(huán)境變量之中(在終端中輸入arm-linux-gcc -v 看是否能正確的查詢到當(dāng)前交叉編譯器的版本號(hào)以檢查是否添加成功,出現(xiàn)如圖所示說明添加成功)。

  為了點(diǎn)亮LED,我們先看一下友善之臂Tiny6410開發(fā)板關(guān)于LED的原理圖部分。

  由圖可見,我們要操作的LED分別由GPK[4-7]口控制。

  然后就是看一下三星的datasheet了。

  可見我們把輸入方向配置為輸出,并輸出低電平LED才會(huì)亮?! ?/p>

  首先先看匯編代碼。


@********************************************@File:led_on.s@function:LED@author:pang123hui@********************************************.text@定義一個(gè)代碼段.global_start@定義一個(gè)全局入口_start:@全局入口處LDRR0,=0x7F008800@設(shè)R0為GPKCON0寄存器MOVR1,#0x11112222@設(shè)置GPKC[4-7]為輸出STRR1,[R0]LDRR0,=0x7F008808@R0設(shè)為GPKDAT寄存器MOVR1,#0x00000000@設(shè)置GPKDAT[4-7]為低電平STRR1,[R0]MAIN_LOOP:BMAIN_LOOP


匯編里的B指令為跳轉(zhuǎn)指令,直接向PC寄存器賦值。B跳轉(zhuǎn)是個(gè)相對(duì)跳轉(zhuǎn)指令,其機(jī)器嗎格式如下:

  即B跳轉(zhuǎn)指令依賴于當(dāng)前PC寄存器的值,這個(gè)特點(diǎn)使得使用B指令的程序不依賴于代碼存儲(chǔ)的位置——即不管這條代碼放在什么位置,B指令都可以跳到正確的位置。這類指令被稱為位置無關(guān)碼。

  還有一條BL指令,除了條裝之外,還將返回地址(BL的下一條指令的地址)保存在LR寄存器中,也是位置無關(guān)的指令。

  B和BL指令可跳轉(zhuǎn)的范圍是當(dāng)前指令的前后32MB.

相關(guān)Makefile文件。


CC=arm-linux-gccCFLAGS=-g-c-oled_on.bin:led_on.s$(CC)$(CFLAGS)led_on.oled_on.sarm-linux-ld-Ttext0x0000000-gled_on.o-oled_on_elfarm-linux-objcopy-Obinary-Sled_on_elfled_on.binclean:rm-fled_on.binled_on_elf*.o


簡(jiǎn)單介紹一下相關(guān)指令。

A.a(chǎn)rm-linux-gcc

-c  對(duì)源文件進(jìn)行預(yù)處理、編譯、匯編,但不做鏈接,生成中間OBJ文件,通常以.o結(jié)尾。

-g添加調(diào)試信息

-o  指定輸出文件。如果不指定-o filename選項(xiàng),默認(rèn)輸出為a.out文件。

B. arm-linux-ld

-Ttext startaddr

-Tdada startaddr

-Tbss startaddr

其中-T選項(xiàng)用來指定代碼段、數(shù)據(jù)段、BSS段的起始地址。

如果不定義數(shù)據(jù)段和BBS段的起始地址,它們會(huì)被依次放在代碼段的后面。

C. arm-linux-objcopy

用于將一個(gè)目標(biāo)文件復(fù)制到另一個(gè)文件內(nèi),可以使用不同于源文件的格式輸出到目的文件。常用于格式轉(zhuǎn)化。

-O用于指定輸出的文件格式。如二進(jìn)制–O binary

-I  用于指定源文件的格式

-S  不從源文件中復(fù)制重定位信息和符號(hào)信息到目標(biāo)文件

D. arm-linux-objdump

用于顯示二進(jìn)制文件住處。常用于進(jìn)行反匯編,方便調(diào)試。

-D  反匯編所有段

-m  指定反匯編目標(biāo)文件所使用的架構(gòu),如–m arm指定為ARM體系架構(gòu)。

-b指定輸入文件的格式,這不是必須的,arm-linux-objdump能自動(dòng)識(shí)別多種格式。

C語(yǔ)言代碼。


#definerGPKCON0(*(volatileunsigned*)(0x7F008800))#definerGPKCON1(*(volatileunsigned*)(0x7F008804))#definerGPKDAT(*(volatileunsigned*)(0x7F008808))#definerGPKPUD(*(volatileunsigned*)(0x7F00880C))intmain(void){//設(shè)置GPKCON[4-7]為輸出rGPKCON0=0x11112222;//設(shè)置GPKDAT[4-7]為低電平rGPKDAT=0xffffff0f;return0;}


  有些學(xué)習(xí)過Bootloader和內(nèi)核的朋友肯定會(huì)知道,在調(diào)用C語(yǔ)言函數(shù)之前肯定會(huì)有一段匯編代碼在前面鋪路,進(jìn)行一些必要的初始化工作;而那些只學(xué)過單片機(jī)而沒有學(xué)過ARM的朋友肯定會(huì)覺得很奇怪,在單片機(jī)中寫C代碼,前面完成可以不用任何匯編代碼。這是為什么呢?

  這主要是因?yàn)槲覀兊拈_發(fā)環(huán)境(這里主要是指編譯環(huán)境)的不同,在開發(fā)單片機(jī)程序的時(shí)候,開發(fā)環(huán)境(如KEIL)會(huì)在編譯C代碼的時(shí)候,給我添加啟動(dòng)代碼(startup-51)或者在編譯時(shí)已經(jīng)由編譯器在后臺(tái)為我們初始化好了。而在開發(fā)ARM程序時(shí),ARM處 理器支持多種模式,多種功能,而在不同的領(lǐng)域不同的項(xiàng)目里面,我們可以有選擇的、適當(dāng)?shù)倪x擇這些功能,這時(shí),編譯器就不知道我們需要什么功能,需要什么模 式,編譯器也就無法給我們提供默認(rèn)的“初始化”代碼,所以,編譯器干脆就“不管”這些了,把這些工作交由我們開發(fā)者來處理。

這里最簡(jiǎn)單的啟動(dòng)代碼。


@****************************************@File:startup.s@function:startup@author:pang123hui@****************************************.text.global_start_start:LDRR0,=0x7E004000@WATCHDOG寄存器地址MOVR1,#0x0STRR1,[R0]@寫入0,禁止WATCHDOG,否則CPU會(huì)不斷重啟LDRSP,=0x0c001000@設(shè)置堆棧,注意:這時(shí)我們是將程序直接燒錄到SDRAM中,所以堆棧要設(shè)置在SDRAM中@如果將程序燒在NANDFLASH中,需將堆棧改為1024*4,因?yàn)镹ANDFLASH中的代碼@在復(fù)位后會(huì)移到內(nèi)部RAM中,此RAM只有4KBLmain@調(diào)用C程序中的main函數(shù)halt_loop:Bhalt_loop


這里要注意的一點(diǎn)是S3C6410中RAM的地址,見datasheet,如圖。

最后是Makefile文件。


CC=arm-linux-gccCFLAGS=-g-c-oled_on.bin:startup.smain.c$(CC)$(CFLAGS)startup.ostartup.s$(CC)$(CFLAGS)main.omain.carm-linux-ld-Ttext0x0c000000-gstartup.omain.o-oled_on_elfarm-linux-objcopy-Obinary-Sled_on_elfled_on.binclean:rm-fled_on.binled_on_elf*.o


  東西很簡(jiǎn)單沒什么好說的,在此記錄,以免忘記,如有疑問或發(fā)現(xiàn)本文有何錯(cuò)誤,歡迎提出。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

中國(guó) 上海,2025年8月28日——全球領(lǐng)先的智能傳感和發(fā)射器解決方案供應(yīng)商艾邁斯歐司朗(SIX:AMS)今日宣布,其全新UV-C LED在輻射滅菌領(lǐng)域取得重大技術(shù)突破,并獲得評(píng)估認(rèn)可。

關(guān)鍵字: LED 發(fā)射器 光電半導(dǎo)體

在LED照明技術(shù)向高能效、低電磁干擾(EMI)方向演進(jìn)的過程中,電流模式控制與動(dòng)態(tài)負(fù)載調(diào)整算法的協(xié)同優(yōu)化成為突破技術(shù)瓶頸的核心路徑。本文將從控制架構(gòu)創(chuàng)新、動(dòng)態(tài)負(fù)載補(bǔ)償機(jī)制及EMI抑制策略三個(gè)維度,揭示新一代LED驅(qū)動(dòng)器的...

關(guān)鍵字: LED 動(dòng)態(tài)負(fù)載調(diào)整算法 EMI

在全球倡導(dǎo)節(jié)能減排的大背景下,家電產(chǎn)品的能耗問題日益受到關(guān)注。電視機(jī)作為家庭中使用頻率較高的電器之一,其能耗的降低對(duì)于節(jié)約能源和減少碳排放具有重要意義。LED 驅(qū)動(dòng)技術(shù)作為影響電視機(jī)能耗的關(guān)鍵因素,正不斷發(fā)展和創(chuàng)新,為實(shí)...

關(guān)鍵字: 驅(qū)動(dòng)技術(shù) 能耗 LED

LED是一種能發(fā)光的半導(dǎo)體電子元件,這種電子元件早期只能發(fā)出低光度的紅光,隨著技術(shù)的不斷進(jìn)步,現(xiàn)在已發(fā)展到能發(fā)出可見光、紅外線及紫外線的程度,光度也有了很大的提高。

關(guān)鍵字: LED

PCB設(shè)計(jì)在EMI抑制中起著關(guān)鍵作用。合理的布局布線能夠有效減少信號(hào)的電磁輻射和相互干擾。首先,應(yīng)將功率電路和控制電路進(jìn)行物理隔離,避免功率電路中的大電流、高電壓信號(hào)對(duì)控制電路造成干擾。功率器件和電感等高頻器件應(yīng)盡量靠近...

關(guān)鍵字: LED 開關(guān)電源

為確保太陽(yáng)能路燈的穩(wěn)定工作,建議使用硅酮密封將太陽(yáng)能路燈組件的接線固定在支架上。在連接路燈部件的線路時(shí),必須遵循正確的順序,以防止正負(fù)連接顛倒導(dǎo)致的短路問題。此外,太陽(yáng)能路燈燈桿底部的接線應(yīng)采用適當(dāng)?shù)拿芊庋b置或硅膠進(jìn)行密...

關(guān)鍵字: LED 路燈

在我們家,WTW已經(jīng)運(yùn)行了14年了。它是一種非連接(不在線)的通風(fēng)機(jī),從房子外面吸收新鮮空氣,經(jīng)過過濾后空運(yùn)到房子里。新鮮的環(huán)境空氣是用從房子里大多數(shù)房間取出的空氣預(yù)熱的。再加熱的能量是通過熱交換器從流出的“臟”空氣中獲...

關(guān)鍵字: Zigbee LED 傳感器

中國(guó) 上海,2025年8月12日——全球領(lǐng)先的智能傳感和發(fā)射器解決方案供應(yīng)商艾邁斯歐司朗(SIX:AMS)今日宣布,使用新一代OSTAR? Projection Power LED為緊湊型投影系統(tǒng)乃至未來的抬頭顯示器(H...

關(guān)鍵字: 顯示器 LED 座艙

Aug. 6, 2025 ---- 根據(jù)TrendForce集邦咨詢最新調(diào)查,因國(guó)際形勢(shì)變化以及中國(guó)相關(guān)政策的推動(dòng),2025年上半年全球電視品牌出貨量達(dá)9,250萬臺(tái),年增2%。由于品牌普遍提前出貨,下半年旺季可能面臨壓...

關(guān)鍵字: LED OLED 電視

艾邁斯歐司朗新一代中功率LED為原始設(shè)備制造商(OEM)提供面向未來的超高效、長(zhǎng)壽命及節(jié)能的解決方案——成為燈槽、線條燈與筒燈等商業(yè)照明裝置的最優(yōu)選擇。除本次新品外,艾邁斯歐司朗還推出另一系列新款LED,實(shí)現(xiàn)超高光效,完...

關(guān)鍵字: LED 發(fā)射器 嵌入式
關(guān)閉