日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【ARM】Tiny4412裸板编程之异常(中断向量表)

發布時間:2024/4/24 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ARM】Tiny4412裸板编程之异常(中断向量表) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 開發環境
    • 02. 異常向量表
    • 03. 異常向量表實現
    • 04. 設置Vectors bit
    • 05. 主函數實現
    • 06. 附錄

01. 開發環境

  • 開發板:Tiny4412SDK標準版 「Tiny4412 SDK 1506」
  • 工具:「arm-linux-gcc-4.5.1」 「minicom」 「dnw」
  • 平臺:Ubuntu 20.04

02. 異常向量表

B1.8.1 Exception vectors and the exception base address

03. 異常向量表實現

vector.s文件內容如下

.section .text.align 2.global vector_start vector_start:b reset @0x0b undef @0x4b swi @0x8b pabort @0xCb dabort @0x10nop @0x14b irq @0x18b firq @0x1Creset:b resetundef:b undefswi:b swipabort:b pabortdabort:b dabortirq:b irqfirq:b firq.align 2.global vector_end vector_end:nop

04. 設置Vectors bit

B6.1.86 SCTLR, System Control Register, PMSA

訪問系統寄存器的方法

MRC p15, 0, <Rt>, c1, c0, 0 ; Read SCTLR into Rt MCR p15, 0, <Rt>, c1, c0, 0 ; Write Rt to SCTLR

cp15.S增加如下函數

.section .text.align 2.global set_vector_bit set_vector_bit:mrc p15, 0, r0, c1, c0, 0orr r0, r0, #(1 << 13)mcr p15, 0, r0, c1, c0, 0mov pc, lr

05. 主函數實現

test.c內容如下

#include <string.h> #include <stdlib.h> #include <adc.h> #include <gpio.h>void (*udelay)(unsigned int) = (void*)0x43e26480; int (*print)(const char *format, ...) = (void*)0x43e11a2c;extern unsigned int __bss_start; extern unsigned int __bss_end;extern void vector_start(); extern void vector_end();//TTB的基地址 U32 *ttb = (void*)0x60000000; U32 *ttb_c = (void*)0x61000000;int main(void) {int i = 0;//0x40000000 ~ 0x80000000 1Gmemset((void*)&__bss_start, 0, (int)&__bss_end -(int)&__bss_start);print("main start\n");memset((void*)ttb, 0, 4096 * 4);ttb_l1_init(ttb);ttb_l1_mmap(ttb, 0xffff0000, 0x7fff0000);set_vector_bit();//設置TTB基地址set_ttb(ttb);//設置域訪問的權限set_domain(0xffffffff);//使能MMUenable_mmu();//將中斷向量表拷貝到0xffff0000地址處memcpy((void*)0xffff0000, (void*)vector_start, vector_end - vector_start);print("main end\n");return 0; }

06. 附錄

6.1 Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary0.pdf

6.2 ARM? Architecture Reference Manual ARMv7-A and ARMv7-R edition

總結

以上是生活随笔為你收集整理的【ARM】Tiny4412裸板编程之异常(中断向量表)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。