娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

S5PV210中斷體系結(jié)構(gòu)分析

發(fā)布者:breakthrough2最新更新時(shí)間:2024-12-20 來(lái)源: cnblogs關(guān)鍵字:S5PV210  中斷體系  結(jié)構(gòu)分析 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

我們按照Tiny210官方的裸板程序來(lái)梳理S5PV210的中斷體系。


關(guān)于 S5PV210 的中斷體系結(jié)構(gòu)

S5PV210 的中斷控制器是由 4 個(gè)向量中斷控制器(VIC)、 ARM PrimeCell PL192 和 4 個(gè)

TrustZone Interrupt Controller (TZIC)共同組成。

S5PV210 共支持 93 個(gè)中斷源(具體見官方手冊(cè))。


首先看 Start.S


.global _start

.global IRQ_handle


_start:

@ 關(guān)閉看門狗

ldr r0, =0xE2700000

mov r1, #0

str r1, [r0]


@ 設(shè)置棧,以便調(diào)用c函數(shù)

ldr sp, =0x40000000


@ 開中斷

mov r0, #0x53

msr CPSR_cxsf, r0


@ 匯編初始化時(shí)鐘

bl clock_init


@ 調(diào)用main函數(shù)

bl main


IRQ_handle:


@ 設(shè)置中斷模式的棧

ldr sp, =0xD0037F80

@ 保存現(xiàn)場(chǎng)

sub lr, lr, #4

stmfd sp!, {r0-r12, lr}

@ 跳轉(zhuǎn)到中斷處理函數(shù)

bl irq_handler

@ 恢復(fù)現(xiàn)場(chǎng)

ldmfd sp!, {r0-r12, pc}^

設(shè)置 CPSR = #0x53,進(jìn)入SVC模式,開IRQ中斷。

接著在main函數(shù)中會(huì)調(diào)用 system_initexception 函數(shù):


void system_initexception( void)

{

    // 設(shè)置中斷向量表

    pExceptionUNDEF   = (unsigned long)exceptionundef;

    pExceptionSWI    = (unsigned long)exceptionswi;

    pExceptionPABORT  = (unsigned long)exceptionpabort;

    pExceptionDABORT  = (unsigned long)exceptiondabort;

    pExceptionIRQ   = (unsigned long)IRQ_handle;

    pExceptionFIQ   = (unsigned long)IRQ_handle;


    // 初始化中斷控制器

    intc_init();

}


void intc_init(void)

{

    // 禁止所有中斷

    VIC0INTENCLEAR = 0xffffffff;

    VIC1INTENCLEAR = 0xffffffff;

    VIC2INTENCLEAR = 0xffffffff;

    VIC3INTENCLEAR = 0xffffffff;


    // 選擇中斷類型為IRQ

    VIC0INTSELECT = 0x0;

    VIC1INTSELECT = 0x0;

    VIC2INTSELECT = 0x0;

    VIC3INTSELECT = 0x0;


    // 清VICxADDR

    VIC0ADDR = 0;

    VIC1ADDR = 0;

    VIC2ADDR = 0;

    VIC3ADDR = 0;

}

然后設(shè)置 VICINTENABLE 使能中斷。


我們只關(guān)心這條就可以:


pExceptionIRQ   = (unsigned long)IRQ_handle;

頭文件中這樣定義:


#define    _Exception_Vector 0xD0037400

#define    pExceptionIRQ ( *((volatile unsigned long *)(_Exception_Vector + 0x18)) )

而S5PV210 的異常向量表的起始地址是0xD0037400,原因見下圖:

這樣,在發(fā)生IRQ中斷時(shí),PC就會(huì)跳轉(zhuǎn)到 pExceptionIRQ 地址處,從而執(zhí)行了 IRQ_handle 函數(shù),接著又執(zhí)行了 irq_handler 函數(shù)。


void irq_handler(void)

{

    unsigned long vicaddr[4] = {VIC0ADDR,VIC1ADDR,VIC2ADDR,VIC3ADDR};

    int i=0;

    void (*isr)(void) = NULL;


    for(; i<4; i++)

    {

        if(intc_getvicirqstatus(i) != 0)

        {

            isr = (void (*)(void)) vicaddr[i];

            break;

        }

    }

    (*isr)();

}


通過(guò)調(diào)用 intc_getvicirqstatus 函數(shù)返回 VICIRQSTATUS 的值就知道當(dāng)前VIC中是否有中斷請(qǐng)求,有的話就會(huì)將isr賦值為 VICADDR 的值,即(服務(wù)函數(shù)的地址),然后調(diào)用服務(wù)程序。


有一點(diǎn)需要說(shuō)明:

當(dāng)有中斷發(fā)生時(shí),硬件上會(huì)將當(dāng)前中斷的中斷處理函數(shù)從寄存器 VICVECTADDR 自動(dòng)拷貝到寄存器

VICADDR 中, 所以我們?cè)?irq_handler()函數(shù)里會(huì)調(diào)用保存在寄存器 VICADDR 里的中斷處理函數(shù)。假如我們要開啟 EXINT0 中斷,那么我們只需將中斷服務(wù)程序的地址賦值給 VIC0VECTADDR0 即可。


關(guān)鍵字:S5PV210  中斷體系  結(jié)構(gòu)分析 引用地址:S5PV210中斷體系結(jié)構(gòu)分析

上一篇:S5PV210開發(fā)系列四_uCGUI的移植
下一篇:S5PV210啟動(dòng)過(guò)程詳解1

推薦閱讀最新更新時(shí)間:2025-03-26 00:49

s3c2440中斷體系
一、S3C2440的中斷系統(tǒng) 1.1 S3C2440的7種模式 用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài) 快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理 中斷模式(irq):用于通用的中斷處理 管理模式(svc):操作系統(tǒng)使用的保護(hù)模式 數(shù)據(jù)訪問(wèn)終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù) 系統(tǒng)模式(sys):運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù) 未定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真 除用戶模式外,其他6種工作模式都屬于特權(quán)模式,大多數(shù)程序運(yùn)行于用戶模式,進(jìn)入特權(quán)模式是為了處理中斷、異常,或者訪問(wèn)被保護(hù)的系統(tǒng)資源。 s3c2440中
[單片機(jī)]
s3c2440<font color='red'>中斷</font><font color='red'>體系</font>
S3C2440中斷體系結(jié)構(gòu):外部中斷實(shí)驗(yàn)
1 SUBSRCPND和SRCPND表明有哪些中斷被觸發(fā)了 INTSUMMSK和INTMSK寄存器用于屏蔽某些中斷 2 中斷觸發(fā)→SUBSRCPND相應(yīng)位置1→INTSUBMSK未屏蔽→SRCPND相應(yīng)位置1→ ↑ 中斷觸發(fā) →若是FIQ中斷:INTMOD相應(yīng)位置1(同一時(shí)間,只能有一位置1) →INTMSK未屏蔽→INTPND相應(yīng)位置1(同一時(shí)間,只能有一位置1) 3 讀取INTPND或INTOFFSET可以確定中斷源 4 清除中斷的順序:SUBSRCPND(相應(yīng)位寫1)→SRCPND(相應(yīng)位寫1)→INTPND
[單片機(jī)]
S3C2440中斷體系結(jié)構(gòu)
一、S3C2440中斷體系結(jié)構(gòu) 1)ARM體系CPU的7種工作模式 用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài) 快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理 中斷模式(irq):用于通用的中斷處理 管理模式(svc):操作系統(tǒng)使用的保護(hù)模式 數(shù)據(jù)訪問(wèn)終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù) 系統(tǒng)模式(sys):運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù) 未定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真 除用戶模式外,其他6種工作模式都屬于特權(quán)模式,大多數(shù)程序運(yùn)行于用戶模式,進(jìn)入特權(quán)模式是為了處理中斷、異常,或者訪問(wèn)被保護(hù)的系統(tǒng)資源。
[單片機(jī)]
S3C2440<font color='red'>中斷</font><font color='red'>體系</font><font color='red'>結(jié)構(gòu)</font>
ARM體系的異常中斷
在ARM體系中,通常有3種方式控制處理器的流程    1:在正常執(zhí)行過(guò)程中,每執(zhí)行一條ARM指令,程序計(jì)數(shù)器寄存器PC的值加四個(gè)字節(jié),在每執(zhí)行一條Thumb指令,程序計(jì)數(shù)器寄存器PC的值加兩個(gè)字節(jié),整個(gè)過(guò)程是按照順序執(zhí)行的      2:通過(guò)跳轉(zhuǎn)指令,程序可以跳轉(zhuǎn)到指定的地址標(biāo)號(hào)進(jìn)行執(zhí)行,或者跳轉(zhuǎn)到特定的子程序進(jìn)行執(zhí)行,其中B指令用于執(zhí)行跳轉(zhuǎn)操作,BL指令用于執(zhí)行跳轉(zhuǎn)操作的同時(shí),保存子程序相應(yīng)的返回地址,BX在執(zhí)行跳轉(zhuǎn)操作的同時(shí),分居目標(biāo)地址的最低位,可以將程序切換到THumb狀態(tài),BLX執(zhí)行上述三個(gè)操作    3:當(dāng)異常中斷發(fā)生時(shí),系統(tǒng)執(zhí)行當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序進(jìn)行執(zhí)行,當(dāng)異常處理中斷執(zhí)行完成之后,程序返回
[單片機(jī)]
虛擬儀器的結(jié)構(gòu)分析
  虛擬儀器可以由多種接口(如GPIB、VXI、PXI等)或具有這些接口的儀器,來(lái)連接構(gòu)成被測(cè)控對(duì)象和計(jì)算機(jī)。虛擬儀器的結(jié)構(gòu)如圖1所示。   虛擬儀器系統(tǒng)包括儀器硬件和應(yīng)用軟件兩大部分。儀器硬件是計(jì)算機(jī)的外圍電路,與計(jì)算機(jī)一起構(gòu)成了虛擬儀器系統(tǒng)的硬件環(huán)境,是應(yīng)用軟件的基礎(chǔ);應(yīng)用軟件則是虛擬儀器的核心,在基本硬件確定以后,軟件通過(guò)不同功能模塊即軟件模塊的組合構(gòu)成多種儀器,賦予系特有的功能,以實(shí)現(xiàn)不同的測(cè)量功能。   圖1 虛擬儀器結(jié)構(gòu)   虛擬儀器硬件連接被測(cè)對(duì)象和計(jì)算機(jī)。根據(jù)不同的接口類型,虛擬儀器硬件結(jié)構(gòu)包括數(shù)據(jù)采集系統(tǒng)、GPIB儀器控制系統(tǒng)、VXI儀器系統(tǒng)等不同部分。   虛擬儀器軟件體系結(jié)構(gòu)VISA(Virt
[測(cè)試測(cè)量]
虛擬儀器的<font color='red'>結(jié)構(gòu)</font><font color='red'>分析</font>
提高電源冗余度的結(jié)構(gòu)分析
為了提高冗余度,不少使用"或"運(yùn)算二極管的 電源 都可接入同一個(gè)負(fù)載。在維護(hù)期間,當(dāng)你拆去任何一個(gè) 電源 時(shí),希望負(fù)載的電源騷動(dòng)盡可能最小。為了補(bǔ)償"或"運(yùn)算二極管兩端的電壓降,你必須在"或"運(yùn)算二極管之后,在負(fù)載處連接電源反饋線。因此,所有參與電源的反饋連接是通用的(圖1)。 圖1 電源模塊的標(biāo)準(zhǔn)冗余配置都在輸出端使用"或"運(yùn)算二極管。 因?yàn)槊恳粋€(gè)電源都會(huì)發(fā)生自然變化,所以只有VOUT最大的電源才是有效的。其他檢測(cè)"高電位"輸出的電源都試圖降低其輸出,從而有效地中止穩(wěn)壓功能。如果從與圖1類似的設(shè)置中去掉"有效的"電源模塊,就會(huì)使VOUT下降(圖2)。 圖2 當(dāng)你從冗余配置中去掉一個(gè)電源時(shí),就會(huì)引起輸出電壓的下降(a)和
[電源管理]
S5PV210 移植無(wú)線wifi網(wǎng)卡 MT7601
一、準(zhǔn)備工作 1、MT7601驅(qū)動(dòng)下載 點(diǎn)擊下載 2、插入usb WiFi 啟動(dòng)開發(fā)板linux,lsusb查看usb驅(qū)動(dòng) Bus 001 Device 003: ID 148f:7601看到的是該驅(qū)動(dòng)的廠家設(shè)備信息 3、解壓源碼到linux下,確認(rèn)USB的VID和PID,在rtusb_dev_id.c中 USB_DEVICE_ID rtusb_dev_id = { #ifdef RT6570 {USB_DEVICE(0x148f,0x6570)}, /* Ralink 6570 */ #endif /* RT6570 */ {USB_DEVICE(0x148f, 0x7650)}, /* MT7650 */ #ifdef
[單片機(jī)]
<font color='red'>S5PV210</font> 移植無(wú)線wifi網(wǎng)卡 MT7601
第七章之S5PV210移植到Nandflash
1,之前的操作都是基于SD卡進(jìn)行運(yùn)行的,如今在Nandfalsh中運(yùn)行u-boot.因?yàn)閟5p_goni.h配置文件沒(méi)有配置Nand相關(guān)文件,所以先配置Nand文件. 在include/configs/s5p_goni.h中添加一個(gè):#define CONFIG_CMD_NAND 2,根據(jù)board_init_r函數(shù)中nand_init()如下圖: 3,進(jìn)行nand_init(); 4,所以配置文件還需要添加#defnie CONFIG_SYS_MAX_NAND_DEVICE 1,及其 nand基地址#define CONFIG_SYS_NAND_BASE  0xB0E00000 5,查看common/Makefi
[單片機(jī)]
第七章之<font color='red'>S5PV210</font>移植到Nandflash
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 垫江县| 汉源县| 乾安县| 丰顺县| 平潭县| 年辖:市辖区| 木兰县| 房山区| 河间市| 类乌齐县| 柳州市| 克什克腾旗| 全椒县| 麦盖提县| 乌鲁木齐市| 墨竹工卡县| 和龙市| 仁怀市| 正蓝旗| 永兴县| 湘西| 泰宁县| 凤凰县| 玛沁县| 青浦区| 松滋市| 汉中市| 汾阳市| 仙游县| 新余市| 古蔺县| 永登县| 乌拉特前旗| 武义县| 桂东县| 华容县| 千阳县| 辽宁省| 汉沽区| 通河县| 页游|