import main
area
init,code,readonly
;程式入口的地方
entry
start
ldr
r0, =0x56000010
; @ watchdog暫存器位址
mov
r1, #0x0
str
r1, [r0]
; @ 寫入0,禁止watchdog,否則cpu會不斷重啟
ldr
sp, =1024*4
; @ 設定堆疊,注意:不能大於4k, 因為現在可用的記憶體只有4k
; @ nand flash中的**在復位後會移到內部ram中,此ram只有4k
bl main
; @ 呼叫c程式中的main函式
halt_loop
b halt_loop
這是開始一點初始化使用彙編寫的,下面是功能函式:
#define gpb5_out
(1<<(5*2))
//gpb5位[11:10]=01就可以把對應埠設為輸出
#define gpb6_out
(1<<(6*2))
#define gpb7_out
(1<<(7*2))
#define gpb8_out
(1<<(8*2))
#define gpf4_in
~(3<<(4*2))
//把gpf4位[9:8]設為0:0就可以把按鍵設為輸入,具體對應關可以看晶元手冊
#define gpf1_in
~(3<<(1*2))
#define gpf2_in
~(3<<(2*2))
#define gpf0_in
~(3<<(0*2))
int main()
return 0;
}
tq2440 的dma裸機驅動
dma是一種提高cpu效率的工具。如果讓cpu去負責搬運資料,效率是十分低下的,因為在這個過程中,cpu就只能做這麼一件事。因此dma就應運而生。只要告訴dma,要搬運的資料源位址,以及要搬運到 去的位址,何種方式,使能它,dma就會獲取匯流排控制權,自動地搬運資料,從而解放cpu,提高效率。tq2...
TQ2440背光控制
控制lcd背光就是控制s3c2440的lcd控制的lcd pwren腳lcdcon5暫存器pwren位控制lcd是否輸出。對linux 2.6.30.4核心進行移植。新建乙個backlight.c檔案放到 drivers video 目錄下。內容如下 include include include ...
《TQ2440載入Hello world驅動模組》
經過將近乙個月都時間終於按照手冊把linux核心移植完了,接下來要開始驅動模組的移植了,在網上查了一些資料,總結如下 目標平台 tq2440 arm9 核心版本 linux 2.6.25 前提 宿主機上已安裝交叉編譯工具,因為這個在linux核心移植的時候就使用過了,這裡就不說了。進入正題 1 首先...