FPPA 程式架構.

Slides:



Advertisements
Similar presentations
嵌入式系统与单片机 北京科技大学电子信息系.
Advertisements

第 2 章 中央處理單元.
第8章 单片机系统的抗干扰技术 本章学习目标: 熟悉单片机系统的各种干扰来源及形式 学会供电系统及过程通道的抗干扰措施
最新計算機概論 第3章 計算機組織.
加速度計 指導老師 : 洪正瑞 製作人 : 蔡昌佑.
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
CH.2 Introduction to Microprocessor-Based Control
題目:LED電子數位時鐘 第 二組 組員: 陳柏霖 李育昇.
第 2 章 中央處理單元.
基本程式範例.
项目2 2个LED发光二极管控制 知识与能力目标 熟悉单片机的I/O口功能与特性。
4-10 STM Timer/Counter 與比較吻合輸出
第5章 中央處理單元與主記憶體 5-1 中央處理單元-CPU 5-2 主記憶體.
第7章 中斷系統.
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
项目成果展示 ——深圳凯吉尔科技—— 凯吉尔全线代理无锡研奥产品 说明:
PIC16F1827介紹 以微控器為基礎之電路設計實務-微處理器實驗室.
第8章 AT89S52单片机外部 存储器的扩展 1.
沈阳辽通自动控制装备厂 电牵引采煤机变频器培训课程.
Timer & KEYPAD 11/24.
Chapter 5 Verilog硬體描述語言
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
第六部分 ADSP-2189M EZ-KIT评估套件 a.
5 Computer Organization (計算機組織).
第2章 16位和32位微处理器 位微处理器8086/ 位微处理器80386
第十一章 复位、时钟和省电方式控制.
國立大甲高工 電機科 單晶片微電腦控制實習 輸出埠基礎實習 閃爍燈 2018年11月23日 8051 單晶片實習---E0901閃爍燈.
Operating System Internals and Design principles
HOLTEK 产品 在小家电的应用.
Game Boy Architecture 计算机体系结构课程报告 --刘继元.
2-1 接腳說明 2018/11/30 第2章 系統分析.
Ch 9: Input/Output System 输入/输出系统
微处理器设计2 刘鹏 College of ISEE Zhejiang University
第8章 記憶體管理的概念.
5-8 光遮斷器控制實習.
操作系统实验 lab1-系统引导
第9章 DSP集成开发环境CCS 内容提要 CCS是TI公司推出的用于开发DSP芯片的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。 本章对CCS开发软件的使用作了详细地介绍。首先,对CCS开发软件作了简要地说明,并介绍了该软件的安装及配置;其次,介绍了CCS的基本操作,包括:CCS的窗口和工具条、文件的编辑、反汇编窗口、存储器窗口、寄存器窗口、观察窗口
第3章 認識處理元.
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
本 章 重 点 单片机的结构特点 单片机的存储器特点 I/O端口的特点 CPU时序 课时安排:3个课时.
合泰半导体股份有限公司 技术讲座 - Holtek V3 C Compiler介绍 主讲人:王幼端 2017/06/15.
4-15 WDT HT66F50.
单片机系统设计 教师:朱华贵 2016年03月01日
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
5-6 串列埠模式0輸出埠擴充實習.
中国科学技术大学计算机系 陈香兰 2013Fall 第七讲 存储器管理 中国科学技术大学计算机系 陈香兰 2013Fall.
中国科学技术大学计算机系 陈香兰 Fall 2013 第三讲 线程 中国科学技术大学计算机系 陈香兰 Fall 2013.
嵌入式系统实验 ● 交叉开发实验 ● 仿真开发实验.
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
第1章 可编程控制器的硬件 构成及工作原理 1.1 可编程控制器的硬件构成 1.2 可编程控制器的工作原理.
第7章 進階的同步 觀念與實務.
基本IO.
什么是单片机 单片微型计算机(Single Chip Microcomputer)简称单片机,是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(Central Processing Unit)、存储器(memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时/计数器和中断系统等,都制作在一块集成芯片上,构成一个完整的微型计算机。单片机内部基本结构如图1.7所示。由于它的结构与指令功能都是按照工业控制要求设计的,故又称为微控制器(Micro-Controller.
4-9 Timer/Counter 控制七段速度
四川工商学院 单片机原理及应用 刘 强
4.19 Fsys _ SLOW MODE HT66F70A.
第三章 计算机系统的组成与工作原理.
4-16 SLEEP0 HT66F70A.
实验2 中断模拟实验.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
利用HT66F50 SIM模組單元中PCK腳位輸出特性 控制speaker 發聲 SIM 串列界面模組
4.11 ADC.
FPPA 程式設計 這一章開始正式進入FPPA程式設計的世界,我會從一個簡單的程式開始解說,一邊介紹專案開發時最常應用的技巧還有程式控制的手段,一邊把系統規畫的概念導入給大家,讓大家對專案的規畫能有一個初步的概念。
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
ARM裸机第二部分-ARM体系结构与汇编指令
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

FPPA 程式架構

Processor Array Organization PC Stack Point ACC Flag FPP0 PC Stack Point ACC Flag FPP1 IO Ports PC Stack Point ACC Flag FPP2 Register PC Stack Point ACC Flag FPP3 Program Memory PC Stack Point ACC Flag FPP4 FPPA硬體組織架構圖 八個核心的地位是平行的,可以同時共享所有的IO、暫存器、ROM、SRAM 各自擁有的有程式指標PC、堆疊SP、累加器ACC、狀態旗標FLAG Data Memory PC Stack Point ACC Flag FPP5 PC Stack Point ACC Flag FPP6 PC Stack Point ACC Flag FPP7

FPP Units Initialization Program Memory Organization Address OPT ROM 000h 007h FPP Boot Entry 010h ISR Entry FPP0 FPP Units Initialization FPP0 Program Memory User Program FPP1 FPP1 Program Memory 韌體在 OPT ROM 中看的來的架構類以這個樣子,位址 000h~007h 是八個核心的程式進入點,FPPA一上電開始運作程序就是從這個地方開始,但是一開始只有FPP0是在RUN的狀態,其它都是暫停的狀態,原因是為了給MCU作初始化的動作,這個後面會談到。 再來010h的地方是FPPA中斷進入點,FPPA跟傳統MCU一樣可以設置IO、Timer…的Interrupt ,但是我自己在實作上卻很少用到(因為有八核分工,不再需要去”打斷”主程序的進行),等對FPPA程式運作有了初步的概念後,你就會發覺Interrupt事實上不是必要的。(這對大多數人是一項好消息,因為不用再為一大堆奇奇怪怪的暫存器作設定來初始化Interrupt) 再後面的 ROM 區都是韌體存放的地方,順序其實沒有一定,看個人習慣作安排,當然最好還是以看的懂、易維護為原則,譬如同一個核心的主程式碼放一起、副程式放一起、變數宣告放一起、常數定義放一起、TABLE放一起…。 Global Subroutine Table FFEh FFFh System Use

Data Memory Organization Address SRAM 000h index 100h FPP0 FPP0 Stack 這張是FPPA記憶體的架構圖,事實上是完全空白的,完全可以由程式設計師來作分配。(index是什麼? RAM查表用,不同於ROM查表…),比較要注意的是STACK的分配(順便解釋一下stack的概念…),由於FPPA的STACK是由程式設計師來分配位置、大小,你可以自訂STACK起點,所以比較要小心的一點就是要了解自己程式運行所需要的STACK大小來合理分配STACK,以免各CPU的STACK重疊或超出SRAM的大小。 FPP1 FPP1 Stack 1FFh

Firmware Structure of Processor Unit .romadr 0x0000 Boot: goto FPP0Boot; goto FPP1Boot; goto FPP2Boot; goto FPP3Boot; goto FPP4Boot; goto FPP5Boot; goto FPP6Boot; goto FPP7Boot; .romadr 0x0010 Interrupt: reti; FPP0Boot: //--- Initialize MCU //--- Enable other FPP //--- Initialize FPP1 SP and so on … FPP0MainLoop: goto FPP0MainLoop; FPP1Boot: //--- Initialize FPP1 SP and so on … FPP1MainLoop: goto FPP1MainLoop; FPP2Boot: //--- Initialize FPP2 SP and so on … FPP2MainLoop: goto FPP2MainLoop; 這張是基本的程式碼架構圖,其實也就是跟剛剛介紹的 ROM 的架構圖一樣。 .romadr 0x0000 代表底下程式碼要放到 ROM 位址 0X0000,也是 FPPA 開始運作的起點, 8行等於八個核心的起點。 FPPA一上電,FPP0 Enable 其餘 Disable 狀態,等 FPP0 作好一些初始化的動作,再 Enable 其它 FPP,然後開始同步多工執行。 FPP3Boot: //--- Initialize FPP3 SP and so on … FPP3MainLoop: goto FPP3MainLoop;

Boot Procedure START 32KHz ILRC oscillator Initialize the system System Clock define Initialize the I/O I/O define Initialize the shared Resources of FPPx SRAM define Enable Other FPP 開機程序目的是幫 MCU 作初始化的動作,設定核心時脈、IO、記憶體變數…,之後系統才算是真正開始運作。 Performance Bandwidth Sharing Set The Stack of FPP0 Set The Stack of FPP1 Set The Stack of FPP2 FPP0 Firmware FPP1 Firmware FPP2 Firmware

Boot Procedure example The example code for fpp0Boot is listed below, it’s for reference only FPP0Boot: // turn-off watchdog set0 clkmd.1; // Enable EOSC and wait for stable mov a, 0b00000000; mov eoscr, a; delay 0xFF; // Calibrate IHRC and wait for stable mov a, 0b0000_0000 ; mov ihrcrh, a; mov a, 0b1100_1010; mov ihrcrl, a; delay 0xFF ; //switch ILRC to IHRC mov a, 0b00110100; mov clkmd, a; //--- initial the I/O Pin mov a, 0xff; mov pac, a ; mov a, 0xff ; mov pa, a ; //---- Set the performance for units pmode 31; //---- Enable other Processor unit --- mov a, 0xFF ; mov fppen, a ; // Stack Pointer Setting for FPP0 mov a, 0x60 ; mov sp, a ; … 初始化的流程寫成程式碼其實沒幾行,就是設定一些暫存器的值,這邊是一小段範例,大體上都跑不出這樣的框架,至於暫存器的值要填什麼? 最好研讀原廠 Datasheet 會有更詳細的說明。底下先大略介紹幾個重要而且必要的。 eoscr-設定是否使用外部RC或OSC clkmd-設定系統時脈振盪除頻、看門狗 ihrcrh ihrcrl-設定使用內部HighRC的頻率校正值 pmode-設定八個核心系統時脈分時 各核心跑多快? 舉例來說 外掛16MhzOSC、clkmd/2、pmode/8 = 16/2/8 = 1Mhz  1T = 1us (1T=1個指令週期)

eoscr - Enable External OSCillator Registers eoscr - Enable External OSCillator bit-0: 1=Enable XTAL Smith trigger strong mode 0=Disable XTAL Smith trigger strong mode bit-1: 1=Enable XTAL Smith trigger 0=Disable XTAL Smith trigger bit4-2: Option of driving strength in crystal oscillator bit6-5: 00=External RC oscillator 01=32KHz crystal oscillator 10=4Mhz crystal oscillator 11=20MHz crystal oscillator bit7: 1=Enable external RC oscillator or crystal oscillator 0=Disable external RC oscillator or crystal oscillator internal 32KHz need delay 30m/S external 20MHz need delay 1m/S

clkmd - Clock Mode Register Registers clkmd - Clock Mode Register Use External OSCillator bit-0: Reset Function/RA5 bit-1: 1=Enable Watch Dog (default) 0=Disable Watch Dog bit-2: 1=Enable Internal Low RC (default) 0=Disable Internal Low RC bit-3: No Used bit-4: 1=Enable Internal High RC (default) 0=Disable Internal High RC bit-7~5: 000=internal high RC/4 001=internal high RC/2 010=internal high RC 011=external OSC/4 100=external OSC/2 101=external OSC 110=internal low RC/4 111=internal low RC (default)

ihrcrh / ihrcrl - Internal high RC Calibrate Register Registers ihrcrh / ihrcrl - Internal high RC Calibrate Register bit-0:Internal high RC Calibrate Register High bit-0-7:Internal high RC Calibrate Register Low VDD=5V,T=25℃ H-HIHRCRL FREQ H-HIHRCRL FREQ 0_0000_0000 10.6 0_1011_1000 15.5 0_0001_0000 10.9 0_1101_0000 15.9 0_0010_0000 11.3 0_1101_1000 16.3 0_0100_0000 11.7 0_1110_0000 16.7 0_0101_0000 12.2 0_1110_1000 17.2 0_0110_0000 12.7 0_1111_0000 17.7 0_0111_0000 13.2 0_1111_1000 18.2 0_1001_0000 13.8 1_0001_0000 18.7 0_1010_0000 14.4 1_0010_0000 19.9 0_1010_1000 14.8 1_0011_0000 21.3 AP-NOTE:PDK-APN-2006004_V001.pdf

pmode - FPP units bandwidth sharing Registers pmode - FPP units bandwidth sharing 80C0X/80C1X/80C2X 0 : /2、/8、/16、/16、/16、/16、/16、/16 1 : /4、/4、/8、/8、/16、/16、/16、/16 2 : /8、/8、/8、/8、/8、/8、/8、/8 3 : /2、/8、/8、/8、/8、X、X、X 4 : /4、/4、/4、/8、/8、X、X、X 5 : /16、/4、/4、/4、/16、/16、/16、X 6 : /16、/2、/8、/16、/16、/16、/16、/16 7 : /8、/2、/8、/8、/8 ICE/80C6X/82CXX 0: /2, /2 1: /2, /4, /4 2: /4, /2, /4 3: /2, /4, /8, /8 4: /4, /2, /8, /8 5: /8, /2, /4, /8 … 31: /8, /8, /8, /8, /8, /8, /8, /8

1T = OSC / CLKMD / PMODE ( 1T=1個指令週期 ) 各核心跑多快 BOOT程序的重點主要在決定各核心要跑多快。 1T = OSC / CLKMD / PMODE ( 1T=1個指令週期 ) 舉例來說… eoscr = 0b11110000 ;外掛16MhzOSC clkmd = 0b10010100 ; external OSC/2 pmode = 2 ;八個核心都 /8 1T = 16/2/8 = 1Mhz  1T = 1us

程式架構參考 Project Description FPPA Entry Pre-Processor Setting FPPA Boot/Clock Setting I/O Define Signal/Flag Control RAM Define Const Value Define MACRO Define FPPA Enable Control Define FPPA Program Counter Define STACK Define FPPA Entry Interrupt Service Routine Entry FPP0Boot FPPA Boot Setting Clear RAM space I/O Setting Timer16 initial setup Interrupt initial setup AD initialize for PDK82CX Variables initialize FPP1Boot FPP2Boot FPP3Boot FPP4Boot FPP5Boot FPP6Boot FPP7Boot Subroutine libraries ROM 總結一下 FPPA 程式的架構可以看成這張圖,這也是我自己的程式樣版程式,一些固定不變的BOOT程序、常數的定義都寫好了,有新的專案就只要稍微修改一下設定值就可以專心在程式的開發上了(畢竟那才是重點) 順便介紹一下 Ultra Edit IO、變數、常數、巨集定義 中斷程式 MCU 初始化 程式碼 副程式 OTP ROM 區