在c源程式中用軟中斷時可以使用 格式:__swi(軟中斷號) 函式名(形參) 來宣告乙個軟中斷函式 例如:__swi(0x01) led(void); 這樣就宣告了乙個具有中斷號為0x01的軟中斷函式。
注:在arm處理器中,一般將軟中斷號放在發生軟中斷的那條指令的低24位。
下面是處理軟中斷的彙編**:(在彙編**前面需要加import c_swi_handler)
handlerswi
stmfd sp!, ;儲存現場,apcs規定彙編和c函式之間形參的傳遞為:r0作為第乙個形參,少於4個時使用r0-r3傳遞,多的要使用堆疊
ldr r0, [lr,#-4] ;取出軟中斷號所在的指令
bic r0, r0, #0xff000000 ;低24位為軟中斷號
bl c_swi_handler ;呼叫軟中斷處理函式
ldmfd sp!, ^ ;恢復現場
在軟中斷服務函式中,如果不止乙個軟中斷,則需要使用軟中斷號來判斷
完整程式的例子:
#include "2440addr.h"
#include "config.h"
extern void c_swi_handler(unsigned num);
__swi(0x01) void led(void);
void ledinit(void);
void main(void)
void c_swi_handler(unsigned int num) }
void ledinit(void)
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 首先...
TQ2440移植strace工具
一 以下是網上的乙個方法,但是不適合tq2440 主要是主機靜態連線的庫我沒有,呵呵 strace工具是乙個非常強大的工具,是除錯程式的好工具。要移植到arm平台,就需要使用交叉編譯工具編譯生成靜態鏈結的可執行檔案。具體步驟如下 2.解壓。3.配置。configure host arm none l...