1. 程式人生 > >嵌入式Linux裸機開發(一)——點亮Led

嵌入式Linux裸機開發(一)——點亮Led

嵌入式Linux裸機開發(一)——點亮Led

開發板:友善之臂smart210

一、電路圖查閱

1、底板電路圖

查閱開發板底板電路圖,查閱LED相關部分

LED電路工作原理:

wKioL1dSyoCwaSpsAAAbV0ZVsno967.png

LED的正極接3.3V,負極接地時導通,LED發光。

wKiom1dSyZeChSxmAABFJfhHZso637.png

    開發板共有四顆LED,正極接3.3V,負極接開發板的LED1_LED4引腳,如果LED要點亮則需要輸入低電平。

2、核心板電路圖

wKioL1dSyrmjXqYzAADTf__16yU234.png

    查閱核心板電路圖可知,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--led4output

    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) //點亮

led1,其他熄滅

    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)的標準,它是跨平臺的。旨在充