1. 程式人生 > >FPGA、ARM、微控制器下載方式及原理的比較

FPGA、ARM、微控制器下載方式及原理的比較

線上程式設計目前有兩種實現方法:
ISP:in system programming 在系統程式設計
IAP: in applicatin programming 在應用程式設計
ISP一般是通過專用的序列程式設計介面(如JTAG介面)對晶片內部的Flash儲存器進行程式設計。
IAP即串列埠程式下載,以SST公司的89E564為例:FLASH分為2塊,一塊64K,就是我們應用程式要使用的程式空間;另一塊是8K,現在出廠時一般都預置了自程式設計的軟體程式碼,這部分程式碼與上位機的下載軟體通訊,獲取機器碼內容,然後實現對64K的程式設計操作。

1、由於現在有的電腦上沒有串列埠介面,但是都有UBS介面,所以就要用UART轉USB晶片做一個轉換。

這裡寫圖片描述

2、ARM的下載主要採用的基於JTAG協議的下載方式。

JTAG的主要功能有兩種:
1)用於測試晶片的電氣特性,檢測晶片是否有問題;
2)用於Debug,對各類晶片以及其外圍裝置進行除錯;

JTAG的工作原理可以歸結為:在器件內部定義一個TAP(TestAccessPort,測試訪問口),通過專用的JTAG測試工具對內部節點進行測試和除錯。

總而言之,JTAG可以給CPU指令使其修改、擦除RAM等,完成程式燒寫和除錯。那麼如何將電腦與JTAG相連呢?

做一個板,用此板直接接收來自IAR、KEIL和ADS等軟體的除錯命令,由此板做RDI->JTAG協議的轉換。然後與目標板通訊,這就是JLINK的工作原理。也是ULINK、STLINK的工作原理。

當然,ARM也是可以通過串列埠下載程式的,比如說STM32:stm32有兩個boot引腳,上電時它根據這兩個引腳的狀態從不同位置啟動, 當這兩個引腳為某個狀態時,它上電時就啟動IAP程式,通過串列埠下載程式。

3、FPGA的程式下載方式有三種:JTAG、AS、PS模式。

AS模式:

程式被燒到FPGA的配置晶片裡儲存的,FPGA器件每次上電時,作為控制器從配置器件EPCS主動發出讀取資料訊號,從而把EPCS的資料讀入FPGA中,實現對FPGA的程式設計;

PS模式:

EPCS作為控制器件,把FPGA當做儲存器,把資料寫人到FPGA中,實現對FPGA的程式設計。該模式可以實現對FPGA線上可程式設計;

JTAG:

直接燒到FPGA裡面的SRAM中,斷電後要重燒;

JTAG模式與ARM類似,只是用的板子不同,Altera FPGA使用的是USB Blaster!

相關推薦

FPGAARM微控制器下載方式原理比較

線上程式設計目前有兩種實現方法: ISP:in system programming 在系統程式設計 IAP: in applicatin programming 在應用程式設計 ISP一般是通過專用的序列程式設計介面(如JTAG介面)對晶片內部的

通俗講解微控制器ARMMUCDSPFPGA嵌入式錯綜複雜的關係!

首先,“嵌入式”這是個概念,準確的定義沒有,各個書上都有各自的定義。但是主要思想是一樣的,就是相比較PC機這種通用系統來說,嵌入式系統是個專用系統,結構精簡,在硬體和軟體上都只保留需要的部分,而將不需要的部分裁去。所以嵌入式系統一般都具有便攜、低功耗、效能單一等特性。 然後

Spring學習(二):Spring xml檔案格式載入上下文六種方式作用域

Bean的XML檔案 <?xml version="1.0" encoding="UTF-8"?> <beans <!--標準名稱空間 --> xmlns="http://www.springframework.org/

oracle行轉列列轉行連續日期數字實現方式mybatis下實現方式

九月份複習,十月份考試,十月底一直沒法收心,趕在十一初 由於不可抗拒的原因又不得不重新找工作就;欸~, 又是一番折騰,從入職到現在,可又沒法閒下來了... 這次就簡單介紹下oracle資料庫下如何實現行轉列、列轉行及此在mybatis中的實現方式,就具體用法我就不詳細說了,主要介紹下實戰中所碰到的坑

CPU卡校驗MAC1計算MAC2校驗TAC的方式流程

前言 mac1驗證、mac2計算、tac驗證流程 執行結果如下 涉及的幫助類

比較MCUDSPARMSOCFPGA

1、採用架構 ARM:架構採用32位精簡指令集(RISC)處理器架構,從ARM9開始ARM都採用了哈佛體系結構,這是一種將指令與資料分開存放在各自獨立的儲存器結構,獨立的程式儲存器與資料儲存器使處理器的處理能力得到較大的提高。ARM多采用流水線技術,此技術通過多個功率部

CAD轉換器下載方式步驟教程!

安裝 term 格式轉換 打開 桌面 com 圖片 提高 搜索框 CAD轉換器下載方式及步驟教程!CAD轉換器的功能是可以將CAD圖紙的格式轉換成其他一些格式的操作,例如CAD轉PDF等,那麽我們應該選擇哪一款好用的CAD轉換器軟件呢?今天小編就來給大家安利一款好用的CAD

CountDownLatchCyclicBarrier和Semaphore 使用示例原理

CountDownLatch CountDownLatch使用者監聽某些初始化操作,並且執行緒進行阻塞,等初始化執行完畢後,通知主執行緒繼續工作執行。 CountDownLatch 使用示例 使用示例,執行緒t3 要等待t1和t2執行完畢才執行: /** * @Desc

Glide 系列-1:預熱Glide 的常用配置方式及其原理

在接下來的幾篇文章中,我們會對 Android 中常用的圖片載入框架 Glide 進行分析。在本篇文章中,我們先通過介紹 Glide 的幾種常用的配置方式來了解 Glide 的部分原始碼。後續的文中,我們會對 Glide 的原始碼進行更詳盡的分析。 對於 Glide,相信多數 Android 開發者並不陌生

常見函式呼叫約定(x86x64armarm64)

我學習逆向,整理的一些常見的函式呼叫約定反彙編筆記。由於我是新手,肯定有一些疏漏不完善的,我遇到了會實時更新的。 X86 函式呼叫約定 X86 有三種常用呼叫約定,cdecl(C規範)/stdcall(WinAPI預設)/fastcall

嵌入式X86ARMMIPS架構對比 arm晶片將成主流?

在縱觀市面上包括商顯終端在內的主流物聯網裝置所採用的晶片時,你會發現ARM已經雄霸半壁江山!ARM的合作伙伴們基於ARM的設計向移動和嵌入式市場的出貨量已經達500億片!對比全球最主要的三大架構X86、ARM、MIPS架構分析, ARM晶片會成為物聯網行業的主流? 指令集可分

x86armmips架構函式呼叫例項分析

原文網址:http://nieyong.github.com/wiki_cpu/ 在看過了上面的幾節之後,在潛意識中你想記住的東西肯定很多了。這個時候,你需要靜下心來休息一下在沉澱一下。 "Now is a good point to take a break to l

手機處理器XscaleIntel PXA272 armTI OMAP處理器各自有什麼特點?

一、Xscale Intel的XScale處理器主要用於掌上電腦等便攜裝置,它是Intel公司始於ARM v5TE處理器發展的產品,在架構擴充套件的基礎上同時也保留了對於以往產品的向下相容,因此獲得了廣泛的應用。相比於

JS對象創建常用方式原理分析

原型模式 這樣的 前言 values 一句話 開始 creat 動態原型 1-1 ====此文章是稍早前寫的,[email protected]/* */==== 前言 俗話說“在js語言中,一切都對象”,而且創建對象的方式也有很多種,所以今天我們做一下梳理 最

Struts2的傳值方式原理

evm method struts-2 hash xtend page getattr class blog 1.普通的傳值方式 UserActionForCommonParam類 Action類接收三個參數,分別是id,username,content. packag

分布式鎖的實現方式原理

模擬 才有 border zook zed pla 不為 .info byte 轉載自http://www.jb51.net/article/118312.htm * 在集群等多服務器中經常使用到同步處理一下業務,這是普通的事務是滿足不了業務需求,需要分布式鎖 * * 分

前端跨域問題各種解決方式原理

create jsonp json 註意 require font name 報錯 lencod 跨域的各種解決方式及原理 因為瀏覽器有某些安全級別的限制,例如,同源策略,所以在進行瀏覽器端的web應用開發的時候,經常會遇到跨域問題。 同源策略:只有在同源的情況下(同域

jsonp跨域請求,常見的集中書寫方式,優缺點比較

簡介     符合Web2.0特徵的眾多網站一個明顯的特點就是採用Ajax。Ajax提供了在後臺提交請求訪問資料的功能。其實現主要使用的是XMLHttpRequest函式,這個函式允許客戶端的Javascript傳送到伺服器端的HTTP請求並獲得返回資料。Ajax同時也是

redis 的兩種持久化方式原理

Redis是一種高階key-value資料庫。它跟memcached類似,不過資料可以持久化,而且支持的資料型別很豐富。有字串,連結串列,集 合和有序集合。支援在伺服器端計算集合的並,交和補集(difference)等,還支援多種排序功能。所以Redis也可以被看成是一個

建立執行緒的兩種方式原理

建立執行緒的第一種方式: 1.  定義類繼承Thread類。 2.  重寫run()。 3.  建立執行緒物件。 4.  呼叫start()啟動執行緒。 class Thread {     priv