此筆記由個人整理塞上蒼鷹_fly
課程來自:正點原子_手把手教你學linux
.global _start
_start:
/* 設定處理器進入svc模式 */
mrs r0,cpsr /* 讀取cpsr到r0 */
bic r0,r0,#0x1f /* 對cpsr低五位清零 */
orr r0,r0,#0x13 /* 使用svc模式 */
msr cpsr,r0 /* 將r0寫入到cpsr中 */
/* 設定sp指標 */
ldr sp,=0x80200000
b main /* 跳轉到main函式中 */
#ifndef __main_h
#define __main_h
/*定義要使用的暫存器*/
#define ccm_ccgr0 *((volatile unsigned int *)0x020c4068)
#define ccm_ccgr1 *((volatile unsigned int *)0x020c406c)
#define ccm_ccgr2 *((volatile unsigned int *)0x020c4070)
#define ccm_ccgr3 *((volatile unsigned int *)0x020c4074)
#define ccm_ccgr4 *((volatile unsigned int *)0x020c4078)
#define ccm_ccgr5 *((volatile unsigned int *)0x020c407c)
#define ccm_ccgr6 *((volatile unsigned int *)0x020c4080)
#define sw_mux_gpio1_io03 *((volatile unsigned int *)0x020e0068)
#define sw_pad_gpio1_io03 *((volatile unsigned int *)0x020e02f4)
#define gpio1_dr *((volatile unsigned int *)0x0209c000)
#define gpio1_gdir *((volatile unsigned int *)0x0209c004)
#define gpio1_psr *((volatile unsigned int *)0x0209c008)
#define gpio1_icr1 *((volatile unsigned int *)0x0209c00c)
#define gpio1_icr2 *((volatile unsigned int *)0x0209c010)
#define gpio1_imr *((volatile unsigned int *)0x0209c014)
#define gpio1_isr *((volatile unsigned int *)0x0209c018)
#define gpio1_edge_sel *((volatile unsigned int *)0x0209c01c)
#endif
#include
"main.h"
/*使能外設時鐘*/
void
clk_enable
(void
)/*初始化led*/
void
led_init
(void
)/*短延時*/
void
delay_short
(volatile
unsigned
int n)
}/*長延時(大概一毫秒)*/
/*n:延時毫秒數*/
void
delay
(volatile
unsigned
int n)
}/*開啟led*/
void
led_on
(void
)/*關閉led*/
void
led_off
(void
)/*主函式*/
intmain
(void
)return0;
}
objs = main.o start.o #定義變數objs,main.o和start.o是其依賴檔案
#注意start.o要在main.o的前面,這樣在編譯的時候才會最先編譯,第一次做的時候,我找了半天都沒找到原因在哪,後面編譯的時候也是第一冊將main.o放在start.o前面才會產生的結果
.rodata align(4) : /*將所有檔案的.rodata放入到rodata段*/
.data align(4) : /*將所有檔案的.data放入到data段*/
__bss_start = .; /*對bss段的起始位址進行賦值*/
.bss align(4) :
__bss_end = .; /*對bss段的結束位址進行賦值*/
嵌入式Linux裸機開發(十五) LCD
lcd liquid crystal display 是 液晶顯示器簡稱。lcd的構造是在兩片平行的 玻璃基板當中放置液晶盒,下基板玻璃上設定 tft 薄膜電晶體 上基板玻璃上設定彩色濾光片,通過tft上的訊號與電壓改變來控制液晶分子的轉動方向,從而達到控制每個畫素點偏振光出射與否而達到顯示目的。按...
嵌入式Linux裸機開發(十二) iNand簡介
inand 是sandisk公司研發的儲存晶元,可以看成sd卡或mmc卡晶元化。inand是sandisk公司符合emmc協議的晶元系列名稱,內部採用mlc儲存顆粒。inand介面電路設計複雜,功能完善,提供emmc介面協議,與soc的emmc控制器配對通訊。相對mlc nandflash inan...
嵌入式Linux 17 裸機 蜂鳴器實驗
此筆記由個人整理 塞上蒼鷹 fly 課程來自 正點原子 手把手教你學linux 函式宣告 void beep init void beep初始化 void beep switch int status beep控制函式 endif beep h include bsp beep.h beep初始化 ...