1. 程式人生 > >燒寫程式(下載程式)的基礎知識整理

燒寫程式(下載程式)的基礎知識整理

什麼是燒寫(下載)和韌體

嵌入式系統需要預先將程式寫入ROM/FLASH中,在啟動時載入執行這些程式,將已經生成的程式寫入ROM/FLASH的過程叫做燒寫。這樣固化在儲存介質上的檔案叫韌體(firmware)。那麼燒寫即為更新韌體的過程。

常用的幾種燒寫方式

【1】把系統當做一個儲存區域進行燒寫;

【2】採用專門介面及專用的下載線將程式燒寫到韌體中。這時CPU除了執行微控制器本身的指令之外,還能執行對儲存器進行操作的特殊指令,擦除、燒寫和校驗指令。先通過傳輸相應的指令給CPU執行(擦除、讀入、燒寫、校驗等),這樣完成燒寫。現在普遍使用的JTAG模擬器也是這樣,CPU能執行JTAG的特殊指令,完成對韌體的燒寫操作。

【3】載入程式,即微控制器中已經存在了一個燒寫程式。啟動微控制器時首先執行這程式,程式判斷埠狀態,識別為燒寫的特殊狀態,就從某個埠讀取資料,然後寫入到儲存單元中。如果是正常的狀態,就轉到使用者的程式開始執行。需要觸發硬體選擇使用者程式模式還是燒寫模式。

關於ISP、ICP、IAP三種程式設計方式區別

ISP:In System Programing,在系統程式設計
ICP:In Circuit Programing,在電路程式設計
IAP:In Applicating Programing,在應用程式設計

ICP工作方式:只需要上電,處理器無需工作,更新整個儲存內容的方式,不需要處理器中間操作,不需要存在載入程式,屬於硬體單獨處理行為

ISP工作方式:可以程式設計寫入終端使用者程式碼,而不需要從電路板上取下器件,已經程式設計的器件也可以用ISP方式擦除或再程式設計,理解上需要一些必要的硬體邏輯或引導程式碼,如使用JTAG下載;

IAP工作方式: IAP從結構上將Flash儲存器對映為多個儲存體區域(引導區、執行區、下載儲存區等等),第一個專案程式存放在應用引導區,不執行正常的功能操作,而只是通過某種通訊管道接收程式或資料,執行對其他部分程式碼的更新;其他程式碼才是真正的功能程式碼,存放在程式儲存區。當晶片上電後,首先執行應用引導區程式,它作如下操作,檢查是否需要對第二部分程式碼進行更新,存在更新則進行更新後執行,否則直接執行。所以引導區程式應該不可以IAP方式更新。

相關推薦

程式下載程式基礎知識整理

什麼是燒寫(下載)和韌體 嵌入式系統需要預先將程式寫入ROM/FLASH中,在啟動時載入執行這些程式,將已經生成的程式寫入ROM/FLASH的過程叫做燒寫。這樣固化在儲存介質上的檔案叫韌體(firmware)。那麼燒寫即為更新韌體的過程。 常用的幾種燒寫

嵌入式系統MAC地址(新增內容)方法未完

參考: http://bbs.chinaunix.net/thread-3557100-1-1.html 現在有兩種做法: 第一種做法:通過cmdline的方式:因為在Linux起來的時候我們可以通過cat /proc/cmdline檢視uboot傳遞給核心的一些引數,

卷積神經網路記錄基礎知識整理

卷積神經網路記錄 最近一段時間在學習卷積神經網路的知識,看了很多部落格和資料之後,決定自己寫一篇記錄一下學習地知識,鞏固一下所學。 1.卷積神經網路與全連線神經網路的異同 首先來看卷積神經網路之前的網路的異同,兩種神經網路結構對比圖如下: 在結構上,兩種網路看

黑馬程式設計師————C語言_基礎知識整理(一)

任何一個C語言程式都是由一個或多個程式段(小程式)構成的,每個程式都有自己的功能,我們一般稱這些程式段為“函式” C程式的結構:由函式構成 一、unix指令 /* ls -l 列出當前目錄下的所需內容 pwd 顯示當前目錄的名稱

窄帶物聯網NB-IoT基礎知識

注:本人在組建機器學習開發團隊,專案是“基於數字影象處理的簡譜識別系統”,現在已經初步建成系統,誠心招納此方向的高手或者有程式設計基礎的愛好者加入。(不是公司,不發工資)QQ:957702659(註明來源為部落格,現居住地,公司/學校,姓名) 基本概念: 1.頻帶:通道

如何從門外漢到大概理解嵌入式c語言基礎知識

1.什麼是計算機程式?什麼是程式語言?為什麼需要程式語言?程式語言是用來幹嘛的?舉例一些程式語言,以及他們各自的特點?答:計算機程式(英語:Computer program),也稱為軟體(英語:software),簡稱程式(英語:Program)是指一組指示計算機或其他具有資

從頭開始學演算法:考研機試題練習C/C++--基礎知識

從頭開始學演算法:考研機試題練習(C/C++)–基礎知識 最近重學c語言,刷的是胡凡寫的《演算法筆記》,這本書的題主要是面向考研機試和一般演算法考試的,零基礎入門,還不錯,在此記錄學習過程。 本文回顧c語言的I/0操作和字元字串操作等基礎知識。 #incl

ESP8266如何程式noboot版本

ESP8266程式燒寫 Noboot模式,也就是不具備升級功能。 硬體平臺 Nodemcu Wifi模組: 安信可ESP-12系列,Flash為華邦的32M Flash。 下載地址 1、參考樂鑫的官方文件。《2a-esp8266-sd

友善之臂-用minitools工具系統或裸機程式方法mini2440

(1)、先使用Jlink軟體燒寫Superboot2440.bin檔案到NOR FLASH中,此時S2開關撥在NOR位置。              a、 載入工程:File -> Open project -> 選擇s3c2440a_embedclub.j

python 3編寫貼吧圖片下載程式超簡單

業餘時間初學者作品,大佬勿噴,程式碼都很簡單。py檔案打包成exe教程:python3.7 打包成exe程式,程式體驗下載地址: 先上效果圖 啟動後是這樣的: 按提示輸入內容執行後是這樣的: 上程式碼(基本都是最基本的語法,不多解釋了): import

使用 Android Studio 出第一個 NDK 程式超詳細

    NDK(Native Development Kit),是用於在 Android 應用中巢狀原生代碼的工具集,現在 Android 開發最常用的工具就是 Android Studio 了,筆者也是剛剛接觸 NDK 開發,用了一天的時間,踩了很多坑,最終跑通了自己的第一

程式設計師應掌握的基礎知識不定時更新

1、HTTP協議預設埠號:80,也是訪問網站的預設埠2、HTTP大都採用post或get提交資料,get提交資料不能超過256個字元,即get提交資料量有限,此外,get還是不安全的,post更為安全,post常用來提交表單資料,如提交使用者資料、上傳檔案等。3、對於Web開

後端程式設計師必備的 Linux 基礎知識+常見命令近萬字總結

[大家好!我是 Guide 哥,Java 後端開發。一個會一點前端,喜歡烹飪的自由少年。](https://www.yuque.com/docs/share/71251673-1fef-416e-93d7-489a25a9eda5?#%20%E3%80%8A%E8%B5%B0%E8%BF%91JavaGuid

nsa工程式fb.py: perl6調用並修改IP

!= -1 分享 data swa .py ip地址 rgs log use v6; if (@*ARGS != 1) {say ‘Use:scan.p6 ip‘;exit;} my $check_ip = @*ARGS[0]; $check_ip = ‘<val

S2.1 修復影象小程式簡單版

用OpenCV自帶的inpaint()演示 CV_EXPORTS_W void inpaint( InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRad

Linu實現簡單進度條小程式彩色版

在實現進度條小程式之前,我們先來看兩段小程式碼 test.c #include<stdio.h> int main() { printf("hello bit\n"); sleep(3); return 0; } test1.c #include<stdio.h

利用微信小程式小遊戲API製作適配cocos creator小遊戲排行榜的例項程式

cocos creator 可以通過新建一個creator專案進行新增子域專案,但是有一個缺點就是佔用檔案大小是一個問題,所以我這裡採用微信的API進行繪製排行榜, 主域就是各種傳送給子域的訊息,這裡不再這裡贅述,就是各種呼叫微信的API 這裡給出微信的API 微信開放資料域 新建m

程式設計菜鳥到大佬之路:C語言程式十二

第十二天學習精要 遞迴初步 遞迴 一個函式,自己呼叫自己,就是遞迴。 # include <iostream> using namespace std; int factorial(int n) // 函式返回n的階乘 { if (n ==

python實現Excel檔案讀取的程式附原始碼

python實現Excel檔案讀取的程式   前一段時間幫一個朋友用python寫了一個讀Excel程式操作的程式,具體要求為:讀取兩個Excel檔案,根據其中某個特徵的特徵值對這兩個檔案進行取交集操作,生成三個Excel檔案,第一個Excel檔案為這兩個檔案的公

一個自動管理學生資訊的控制檯應用程式C語言

  //學生統計 Ver 6.0 #include<stdlib.h> #include<stdio.h> #include<string.h> #include<math.h> #define MAXN_stu 35 #defin