嵌入式Linux裸機開發(一)——點亮Led
嵌入式Linux裸機開發(一)——點亮Led
開發板:友善之臂smart210
一、電路圖查閱
1、底板電路圖
查閱開發板底板電路圖,查閱LED相關部分
LED電路工作原理:
LED的正極接3.3V,負極接地時導通,LED發光。
開發板共有四顆LED,正極接3.3V,負極接開發板的LED1_LED4引腳,如果LED要點亮則需要輸入低電平。
2、核心板電路圖
查閱核心板電路圖可知,LED1-LED4接在SoC的GPJ2_0-GPJ2_3,通過控制GPJ2_0-GPJ2_3的暫存器使對應GPIO引腳輸出電平為低電平,則LED會點亮。
二、SoC手冊查閱
查閱三星S5PV210 SoC的dadasheet:S5PV210_UM_REV1.1文件,GPIO位於文件的section2-system部分的GPIO節,查詢GPJ2_0-GPJ2_3對應的暫存器,得到GPJ2_0-GPJ2_3對應的暫存器地址和配置引數。
GPJ2CON = 0xE0200280 設定為0001 = Output方式
GPJ2DAT = 0xE0200284設定bit0-bit3為低電平,即0
三、程式實現
start.S原始碼檔案:
#define GPJ2CON 0xE0200280
#define GPJ2DAT 0xE0200284
.global _start
_start:
//設定GPJ2CON
ldr r0,=0xE0200280 //GPJ2CON
ldr r1,=0x00001111 //設定led1--led4為output
str r1,[r0]//將GPJ2CON設定為0x00001111
//led閃爍
led_blink:
ldr r0,=0xE0200284 //GPJ2DAT
ldr r1,=(0<<0 | 0<<1 | 0<<2 | 0<<3) //led1--led4點亮
str r1,[r0]
bl delay//延時
ldr r0,=0xE0200284
ldr r1,=(1<<0 | 1<<1 | 1<<2 | 1<<3) //關閉led1--led4
str r1,[r0]
bl delay//延時
ldr r0,=0xE0200284
ldr r1,=(0<<0 | 1<<1 | 1<<2 | 1<<3) //點亮
str r1,[r0]
bl delay//延時
ldr r0,=0xE0200284
ldr r1,=(1<<0 | 0<<1 | 1<<2 | 1<<3) //點亮led2,其他熄滅
str r1,[r0]
bl delay
ldr r0,=0xE0200284
ldr r1,=(1<<0 | 1<<1 | 0<<2 | 1<<3) //點亮led3,其他熄滅
str r1,[r0]
bl delay
ldr r0,=0xE0200284
ldr r1,=(1<<0 | 1<<1 | 1<<2 | 0<<3) //點亮led4,其他熄滅
str r1,[r0]
bl delay
b led_blink//迴圈流水燈
//延時函式
delay:
ldr r2,=0x1FFFFFF
ldr r3,=0x0
loop:
sub r2,r2,#1
cmp r2,r3
bne loop
mov pc,lr
.end
Makefile:
led.bin: start.o
arm-linux-ld -Ttext 0x0 -o led.elf $^
arm-linux-objcopy -O binary led.elf led.bin
arm-linux-objdump -D led.elf > led_elf.dis
gcc mkv210_image.c -o mkmini210
./mkmini210 led.bin smart210.bin
%.o : %.S
arm-linux-gcc -o [email protected] $< -c
%.o : %.c
arm-linux-gcc -o [email protected] $< -c
clean:
rm *.o *.elf *.bin *.dis –f
編譯後用工具將smart210.bin燒錄到SD卡,將SD卡插到開發板,切換到SD卡啟動模式,啟動開發板則可以看到四顆LED先全亮,後全滅,接著LED1-LED4分別點亮,如此迴圈。
說明:mkv210_image.c編譯得到的mkmini210工具用於製作SD映象。
相關推薦
嵌入式Linux裸機開發(一)——點亮Led
嵌入式Linux裸機開發(一)——點亮Led開發板:友善之臂smart210一、電路圖查閱1、底板電路圖查閱開發板底板電路圖,查閱LED相關部分LED電路工作原理:LED的正極接3.3V,負極接地時導通
嵌入式Linux驅動開發(一)一個簡單的Linux核心模組框架
#include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> static
STM32F103+RTT從零開始(一)——點亮LED
最近心血來潮,打算重新撿起老本行,結果發現很多都忘記了。乾脆重新開始學習,並做個從零開始的筆記了。 STM32系列MCU STM32系列晶片包括F0/F1/F2/F3/F4/F7/L0/L1/L4/H7等系列晶片晶片。不同系列的晶片適用於不同的應用場景。
STC89C52微控制器學習(一)----點亮LED
1.通過陣列實現led流水燈 #include <reg52.h> int m; unsigned char code leds[8] = {0x7f, 0xbf, 0xdf, 0x
嵌入式 Linux系統程式設計(一)——檔案IO
嵌入式 Linux系統程式設計(一)——檔案IO一、檔案IO概念 linux檔案IO操作有兩套大類的操作方式:不帶快取的檔案IO操作,帶快取的檔案IO操作。不帶快取的屬於直接呼叫系統呼叫(
嵌入式Linux驅動開發(四)——字元裝置驅動之中斷方式以及中斷方式獲取按鍵值
之前我們完成了關於通過查詢的方式獲取按鍵鍵值的驅動程式,可以參考:嵌入式Linux開發——裸板程式之中斷控制器。 雖然讀取鍵值沒有什麼問題,但是測試程式佔用CPU過高,一直在不斷的查詢,資源消耗過大,這個問題非常嚴重,我們必須要來解決一下。但是在解決這個問題之前,我們先來思考一個問題,除
nanoPc T2裸機開發(一)
---------------------------寫在前面已經好久沒有玩微控制器了,之前玩的stm32根本就不算是學習,只是單純地使用之前學過的51知識和呼叫原子的庫函式,菜得一匹。有什麼不對的地方,還請大家指正,謝謝。參考:開發板是使用友善之臂的nanoPc T2,So
MicroPython (一)點亮我的Led
inter n! ati f429 rep code dom art 推薦 工具 : putty F429Discovery 開發板 Notepad++ 註意:不知道為什麽 其他的終端工具有問題,推薦 putty 基本沒有發現問題 putty 實時調試 使用put
嵌入式Linux裝置驅動開發(一)
裝置驅動開發是Linux開發領域一個非常重要的部分,在Linux原始碼的85%都是驅動程式的程式碼。裝置驅動開發不僅需要了解硬體底層的知識,還需要擁有作業系統的背景。驅動程式追求的是高效,穩定,驅動程式發生的問題有可能直接導致整個系統的崩潰。 驅動程式不主動執
嵌入式Linux——nand flash 驅動開發(一):硬體介紹
本文章講nand flash的驅動開發,而在介紹驅動程式之前我想先介紹一下我所用的硬體。這樣對程式的開發更為方便。本文所使用的nand flash晶片為K9F2G08U0C,下面是他的一些必要的特性:
Linux USB 驅動開發(一)—— USB裝置基礎概念
Linux USB 驅動開發(一)—— USB裝置基礎概念 在終端使用者看來,USB裝置為主機提供了多種多樣的附加功能,如檔案傳輸,聲音播放等,但對USB主機來說,它與所有USB裝置的介面都是一致的。一個USB裝置由3個功
Linux 網路協議棧開發(一)—— 網路協議棧核心分析
1.1 傳送端 1.1.1 應用層 (1) Socket 應用層的各種網路應用程式基本上都是通過 Linux Socket 程式設計介面來和核心空間的網路協議棧通訊的。Linux Socket 是從 BSD Socket 發展而來的,它是 Linux 作業系統的重要組成部分之一,它是網路應用程式
linux下 c++ 伺服器開發(一)
苦逼的c++程式設計師還沒找到工作,所以順便開始寫伺服器練手。。 對內容不滿意不要噴我我是寫給自己看的(把自己犯得錯誤記下來) 1.我的電腦是win10的,所以先去網上下虛擬機器,我下載了 ,然後安裝了。 2.新建了一個ubuntu 32位的虛擬電腦。(我劃分的
Linux 下wifi 驅動開發(一)—— WiFi基礎知識解析
一、WiFi相關基礎概念 1、什麼是wifi 我們看一下百度百科是如何定義的: Wi-Fi是一種可以將個人電腦、手持裝置(如pad、手機)等終端以無線方式互相連線的技術,事實上它是一個高頻無線電訊號。[1] 無線保真是一個無線網路通訊技術的品牌
Linux學習日記(一)
linux 命令 對於Linux新手來說,要想入門必先打好基礎,而Linux的命令就是這基礎中的重中之重。 首先學習了幫助命令Man的使用,Man可以查看命令的作用以及可用參數。並且如何去看幫助文檔中的內容NAME 使用命令的名稱 SYNOPSIS 命令參數的大致使用方法EXAMP
NIO原理剖析與Netty初步----淺談高性能服務器開發(一)
返回 創建 基於 register 訪問 io操作 nbsp info class 除特別註明外,本站所有文章均為原創,轉載請註明地址 在博主不長的工作經歷中,NIO用的並不多,由於使用原生的Java NIO編程的復雜性,大多數時候我們會選擇Netty,m
Linux系統管理(一)
linux redhat 服務器 系統管理 點擊下載:Linux系統管理(一)本文出自 “飛奔的魚兒” 博客,請務必保留此出處http://feiyuer.blog.51cto.com/6967044/1931977Linux系統管理(一)
淺談WebService開發(一)轉
man att set style 訪問 row nag 序列 ros 一、什麽是WebService: 簡單通俗來說,就是企業之間、網站之間通過Internet來訪問並使用在線服務,一些數據,由於安全性問題,不能提供數據庫給其他單位使用,這時候可以使
微信公眾號開發(一)
jpg 解壓 china arc 公眾平臺 開發 技術分享 更換 微信公眾號 4.1 示例代碼設置 首先下載此處的php接入代碼 ,在公眾號中 配置 url 地址指向 文件 代碼 只需更換 自定義的token 即可 這樣就完成最初的接入 微信公眾平臺提供了一個php示例
從零開始學習OpenCL開發(一)架構
處理器 多媒體 c++ stl context 實驗 通用 必看 是你 同時存在 1 異構計算、GPGPU與OpenCL OpenCL是當前一個通用的由很多公司和組織共同發起的多CPU\GPU\其他芯片 異構計算(heterogeneous)的標準,它是跨平臺的。旨在充