Andes Technology PPT Temp

Similar documents
Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

(Microsoft Word - 11\244T\246\342\277\337\260l\302\334.doc)

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

mvc

C语言的应用.PDF

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C Project 30 C Project 3 60 Project 40

Microsoft Word - ??山

Microsoft Word - 助理人員教育訓練-會計室.docx

关于规范区委、区委办公室发文

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

PowerPoint Presentation

untitled

秘密

E11701


bingdian001.com

<4D F736F F D20D1A7C9FACAD6B2E1B8C4D7EED6D5A3A8B4F8B1EDB8F1BCD3D2B3C2EBB0E6A3A9372E3239>

桂林市劳动和社会保障局关于

第三章 維修及管理

Microsoft Word 年度选拔硕博连读研究生的通知.doc

C/C++程序设计 - 字符串与格式化输入/输出

untitled

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

Microsoft Word - MAN2011A_CH_RTT.doc

目录

AL-M200 Series

第5章:汇编语言程序设计

EK-STM32F

ebook55-13

学习MSP430单片机推荐参考书

Microsoft Word - Learn Objective-C.doc

新・明解C言語入門編『索引』

5B_sasaki.pdf

2

CC213

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

untitled

Microsoft Word - MSP430 Launchpad 指导书.docx

第7章-并行计算.ppt

untitled

Strings

ARM JTAG实时仿真器安装使用指南

instructions.PDF

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS

提纲 1 2 OS Examples for 3

林教授2.PDF

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

Microsoft Word doc

Table of Contents Design Concept 03 Copyrights & TradeMark 04 Special Notice 05 Notice to concerned 05 Installation and Registration Introduction 07 s

RAID RAID 0 RAID 1 RAID 5 RAID * (-1)* (/ 2)* No Yes Yes Yes SATA A. B. BIOS SATA C. RAID BIOS RAID ( ) D. RAID/AHCI ( ) S ATA S S D ( ) (

C35_RG_E.book

Microsoft Word htm

目 录

Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice

华恒家庭网关方案

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%

Microsoft PowerPoint - C15_LECTURE_NOTE_11

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

CC213

Open topic Bellman-Ford算法与负环

投影片 1


1 CPU

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer)

穨UPSentry_SC_.PDF

ICD ICD ICD ICD ICD

Microsoft PowerPoint - os_4.ppt

例 如, 一 个 含 有 2000 个 记 录 的 文 件, 每 个 磁 盘 块 可 容 纳 250 个 记 录, 则 该 文 件 包 含 8 个 磁 盘 块 然 后 对 该 文 件 作 二 路 归 并 的 外 排 序, 每 次 往 内 存 读 入 两 个 磁 盘 块, 排 序 后 再 写 回 磁


51 C 51 isp 10 C PCB C C C C KEIL

MANUAL CHARLS SMS INTERVIEWER MODE

RAID RAID 0 RAID 1 RAID 5 RAID * ( -1)* ( /2)* No Yes Yes Yes A. B. BIOS SATA C. RAID BIOS RAID ( ) D. SATA RAID/AHCI ( ) SATA M.2 SSD ( )

第三章 中原儺文化圈

Microsoft Word - ~ doc

untitled

5 功 能 选 择 键 10 电 源 指 示 灯 基 本 操 作 时 钟 设 置 时 钟 显 示 屏 闪 烁 说 明 没 有 显 示 正 确 的 时 间 通 过 以 下 步 骤 调 整 时 间 : 按 参 数 选 择 键 选 择 时 钟 图 标 ( 如 果 你 是 第 一 次 接 电 源 或 断 电

C/C++ 语言 - 循环

Microsoft Word - ACE檢定筆試選擇題2013-H2-All V 2.0.doc

8051 与 AndesCore TM 的软件差异与移植 与 AndesCore TM 本文将介绍使用 8051 与 AndesCore 差异事项, 并对两种 CPU 系统相关事项做说明, 后面再介绍从 8051 移植到 AndesCore 上注意事项, 举中断向量表及异常处理函数的

untitled

Go构建日请求千亿微服务最佳实践的副本

audiogram3 Owners Manual

Microsoft Word - PHP7Ch01.docx

untitled

CDWA Mapping. 22 Dublin Core Mapping

幻灯片 1

ebook 132-6

先生別耍我

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

桃園縣秀才實驗學校多元適性發展的課程規畫

第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與

C++ 程式設計

投影片 1

untitled

untitled

untitled

Oracle 4

Transcription:

晶心科技線上技術研討會 AndesCore 便捷的全 C 嵌入式编程 晶心科技市場及技術服務部毛礼杰軟件經理 WWW.ANDESTECH.COM

大纲 系统初始化介绍 异常和中断说明 全 C 语法例子说明 总结 2

CPU 相关特性 1: 中断向量表 系统初始化 (1) 2: 系统寄存器 通常需要用 assembly( 汇编 / 组合 ) 语言来操作 AndesCore 全 C 嵌入式编程 C 扩展语法 用于 Exception/Interrupt 处理 Intrinsic function 用于系统寄存器设置等 适用于 Non-OS 系统 3

系统初始化 (2) 系统初始化 1: 中断向量表 2: 系统寄存器 3:memory 的初始化 4

汇编初始化 (1) 中断向量表 5

汇编初始化 (2) 系统寄存器 memory 初始化 其它初始化 6

ISR 入口前期汇编部分 汇编初始化 (3) 7

汇编与全 C 嵌入式编程系统初始化对比 Assemble crt0.s _start bal init Replacement Andes 全 C 嵌入式编程 void NDS32ATTR_RESET() { _nds32_init_mem() _cpu_init() _c_init() _soc_init() bal main } Main() 8

向量表 : 异常和中断 NDS32ATTR_RESET NDS32ATTR_EXCEPT NDS32ATTR_ISR 10

Include head file : nds32_isr.h Project Linker Setting Link libnds32_isr.a AndeSight Project 设定 11

中断向量表的设置 (1) +ISR at SaG 关于 SaG 语法可以参考技术文档 :Andes 的分散聚合 (SAG) 机制 http://www.andestech.com/cn/news-events/technicalarticle/2014/andes20141008.pdf 12

Link Script File 中断向量表的设置 (2) 13

NDSATTR_RESET(1) void NDS32ATTR_RESET( <option_list> ) reset_handler(void) <option_list> contains zero or more of the following separated by ; vectors=xxx nmi_func=yyy warm_func=zzz 14

NDSATTR_RESET(2) Example void NDS32ATTR_RESET("vectors=32;nmi_func=nmi_han dler;warm_func=warm_handler") reset_handler(void) { _nds32_init_mem(); cpu_init(); c_init(); soc_init(); main(); } 15

区分 NMI 和 Warm_Reset Cold Reset, NMI 和 Warm Reset 共用 vector 0 用 ir6 ETYPE 区分 系统根据 ir6 ETYPE 自动跳转到 nmi_fun 或者 warm_fun 16

_nds32_init_mem() 内存初始化函数 系统一上电或者是复位, 通常 memory 是不可用的, 在函数使用到 memory 之前准备好 memory 空间 系统 reset 后最先被呼叫 必须是个 leaf function, 因为 leaf function 可以做到不 push stack, 即不使用还未准备好的 memory 17

Intrinsic Function(1) AndesCore Intrinsic Function 和 CPU 紧密相关 用于设置系统寄存器,cache 操作等 通常对应于一条或几条机器指令, 以函数的形式来使用 类似于 inline assembly, 但避免了 inline assembly 使用上的较复杂语法 18

Intrinsic Function(2) AndesCore intrinsic function 例子 19

Intrinsic Function(3) _cpu_init() 函数使用 intrinsic function 20

NDS32ATTR_EXCEPT(1) ID=1 ID=2 21

NDS32ATTR_EXCEPT(2) void NDS32ATTR_EXCEPT ( id=xxx[;save_caller_regs;<is_nested>] ) excpt_hdlr(int vid) id=xxx, id should be 1 to 8 void NDS32ATTR_EXCEPT("not_nested;id=8") syscall_isr() { printf( syscall except ); return; } 22

NDS32ATTR_ISR(1) void NDS32ATTR_ISR ( id=xxx[;save_caller_regs;<is_nested>] ) intr_hdlr(int vid) id=xxx,id should be 0 to 63 <save_reg> <is_nested> 23

NDS32ATTR_ISR(2) Example void NDS32ATTR_ISR("not_nested;id=0,1") HW01_ISR(int vid) { printf( hw0,1 interrupt isr ); return; } ID=0 ID=1 24

<save_reg> (1) 两种 :save_caller_regs 或者 save_all_regs. (Default: save_caller_regs) save_caller_regs 保存 caller 寄存器, 通常 ISR 都是采用这种 int foo() { bar(); } foo(): caller bar(): callee save_all_regs 保存所有寄存器, 这种方式用于上下文切换 (context switch) 25

<save_reg> (2) save_all_regs(v3m toolchain) Entry the interrupt End of the interrupt 26

<save_reg> (3) save_caller_regs What s caller? Entry the interrupt End of the interrupt 27

四种模式 : nested : 可被中断嵌套. <is_nested> (1) not_nested : 不可被中断嵌套. ready_nested : 进入中断后手动打开 GIE 后可被中断嵌套, 通常用于完成一小段紧急处理后再打开 GIE 启用中断嵌套 critical : 用于紧急处理, 通常很简短, 不可被嵌套, 而且 ISR 须要是 leaf 函数 28

<is_nested> (2) ir0(psw) Processor Status Word Register GIE(Global Interrupt Enable) 0:interrupt disable 1:interrupt enable INTL(Interruption Stack Level) 0:No interruption 1:Interruption stack level 1 2:Interruption stack level 2 29

<is_nested> (3) Nested(GIE 启用, INTL 减 1) mfsr $r3,$psw subi333 $r3,$r3,#1 mtsr $r3,$psw Ready_neseted(INTL 减 1) mfsr $r3,$psw subi333 $r3,$r3,#2 mtsr $r3,$psw 30

<is_nested> (4) No_nested(PSW 保持不变 ) 做保存寄存器相关操作 Critical 直接跳转到 ISR 寄存器也不保存 31

<is_nested> (5) <is_nested> GIE Enable INTL-1 SAVE_REG Nested YES YES YES Ready_Nested NO YES YES No_Nested NO NO YES Critical NO NO NO 32

参考示例代码 Installation AndeSight folder\demo\startup\demo-intc-ext.tgz 33

总结 AndesCore 全 C 嵌入式编程 减轻学习新指令的开销 减少开发时间 便于系统调试和维护 34

Thank You! WWW.ANDESTECH.COM