作者Email: wolfman6353@sina.com
引言:
C8051FXXX系列高速SOC單片機(jī)是由美國(guó)Cygnal公司開發(fā)的完全集成的混合信號(hào)系統(tǒng)級(jí)芯片,具有與8051兼容的微處理器內(nèi)核,內(nèi)部集成FLASH程序存儲(chǔ)器,具有在系統(tǒng)重新編程能力,以C8051F020為例,內(nèi)部集成64K的FLASH程序存儲(chǔ)器。在系統(tǒng)控制軟件的開發(fā)調(diào)試階段,可用集成開發(fā)環(huán)境來(lái)下載及測(cè)試系統(tǒng),但當(dāng)將C8051F020目標(biāo)系統(tǒng)集成到產(chǎn)品后,則由于操作系統(tǒng)及軟硬件接口不一樣等等原因,不能在最終產(chǎn)品中用集成開發(fā)環(huán)境來(lái)下載FLASH程序,故產(chǎn)品到了用戶處之后,如要再進(jìn)行FLASH程序的更新,則必須更換相應(yīng)的集成電路印刷板,造成很多麻煩及不可靠因素。筆者通過(guò)實(shí)驗(yàn),在用戶操作界面的PC機(jī)及C8051F020的單片機(jī)控制系統(tǒng)之間,通過(guò)串行口進(jìn)行C8051F020單片機(jī)控制程序的自動(dòng)升級(jí)及程序加密,從而使用戶只要從互聯(lián)網(wǎng)上下載控制程序,即可實(shí)現(xiàn)單片機(jī)程序的自動(dòng)升級(jí)。以下以64KBFLASH RAM為例簡(jiǎn)要介紹單片機(jī)目標(biāo)程序的準(zhǔn)備及自動(dòng)升級(jí)的制作過(guò)程。
1)系統(tǒng)簡(jiǎn)介及自動(dòng)升級(jí)的實(shí)現(xiàn)方法
PC機(jī)(80486/DX2以上) 具有1.44吋軟驅(qū)及串行口。單片機(jī)控制系統(tǒng)(具有串行口及內(nèi)置的FLASH程序區(qū))。PC與C8051FXXX之間通過(guò)九針串行接口線相連。設(shè)置傳送速率為115200BIT/S。
C8051F020單片機(jī)的FLASH RAM分為用戶程序區(qū)(0000H~0FDFDH),廠家保留及加密區(qū)(0FDFEH~0FFFFH)兩部分?,F(xiàn)將用戶程序區(qū)(0000H~0FDFDH)的0000H~0DFFFH部分用于裝載用戶程序,而0E000H~0FDFDH部分作為引導(dǎo)程序區(qū),引導(dǎo)程序區(qū)在升級(jí)時(shí)不能改變,它用于與用戶操作界面的PC機(jī)部分進(jìn)行程序接收及裝載等工作。
在控制程序區(qū)0000H~0DFFFH中,做一握手程序塊,在上電時(shí),用于和用戶操作界面PC機(jī)部分進(jìn)行握手,當(dāng)接收到PC機(jī)部分要進(jìn)行軟件升級(jí)的命令時(shí),程序跳至引導(dǎo)程序區(qū),執(zhí)行如下流程:
->發(fā)送準(zhǔn)備升級(jí)字節(jié)到PC機(jī)
->刪除FLASH程序區(qū)
->發(fā)送開始下載命令到PC機(jī)
->接收且放到相應(yīng)地址
->加密
為了達(dá)到自動(dòng)升級(jí)的目的,需要在用戶界面的PC機(jī)引導(dǎo)時(shí),自動(dòng)檢測(cè)PC機(jī)外設(shè),軟盤控制器,一旦檢索到軟盤中有升級(jí)文件及其索引文件,且其版本比現(xiàn)有的單片機(jī)控制程序的版本高,則開始執(zhí)行PC機(jī)中的下載程序。
2)刪除0000H~ODFFFH的FLASH程序區(qū)
C8051FXXX系列單片機(jī)將FLASH程序區(qū)按512字節(jié)為一頁(yè)(PAGE)來(lái)組織,在刪除控制程序區(qū)0000H~ODFFFH時(shí),首先屏蔽掉所有中斷,使能程序刪除位PSEE(PSCTL.1),同時(shí)使能PSWE(PSCTL.0)MOVX指令指向FALSH程序區(qū)。應(yīng)用MOVX指令在每一頁(yè)的任意一地址寫0FFH,則將該頁(yè)的所有字節(jié)都置為0FFH,從而實(shí)現(xiàn)了該頁(yè)的刪除。依此操作可刪除所有的程序頁(yè)。刪除部分程序如下:
//刪除0000H’ODFFFH的FLASH程序區(qū)
DEL_NEXT_PAGE:
CLR EA
MOV A,FLSCL
ANL A,#0FEH
ORL A,#01H
MOV FLSCL,A
MOV A,PSCTL
ANL A,#0FCH
ORL A,#03H
MOV PSCTL,A;#03H //使能頁(yè)刪除及頁(yè)寫操作
MOV A,#0FFH
MOVX @DPTR,A //將該頁(yè)全填充為0FFH
INC DPH
INC DPH //調(diào)節(jié)頁(yè)指針
MOV A,PSCTL
ANL A,#0FDH
MOV PSCTL,A;#03H
MOV A,DPH
CJNE A,#0E0H,DEL01_NEXT_PAGE
DEL01_NEXT_PAGE:
JC DEL_NEXT_PAGE
3)從PC中接收FLASH字節(jié)
以下程序用于從PC機(jī)中接收程序并放到相應(yīng)的FLASH地址。在此僅使能PSWE(PSCTL.0)位,使MOVX指令指向FALSH程序區(qū)。
MOV DPTR,#0000H
MOV FLSCL,#01H
MOV PSCTL,#01H;
RECEIVE_NEXT_DOWNLOAD_CHAR:
MOV FLSCL,#01H
MOV PSCTL,#01H;
JNB RI,$
CLR RI
MOV A,SBUF0
MOVX @DPTR,A
INC DPTR
MOV A,DPH
CJNE A,#0E0H,RECEIVE_NEXT_DOWNLOAD_CHAR
MOV FLSCL,#01H //FLASH 寫使能
MOV PSCTL,#01H
MOV DPTR,#0FDFEH
CLR A
MOVX @DPTR,A
MOV DPTR,#0FDFFH
MOVX @DPTR,A
MOV PSCTL,#00H
MOV FLSCL,#00H
CYCLE_FOREVER:SJMP CYCLE_FOREVER;死循環(huán)
RET
4)FLASH程序的準(zhǔn)備
為了更快地得到—下載到C8051F020的FLASH程序,先在CYGNAL IDE開發(fā)環(huán)境中,將做好的控制程序編澤,鏈按,然后用廠家提供的串行適配器將PC與目標(biāo)板連接起來(lái),傳送FLASH程序到目標(biāo)系統(tǒng)中去。接下來(lái)用“UPLOAD MEMORY T0 PILE…”(如圖示)功能將0000H~OEOOOH的FLASH代碼程序上載到硬盤存儲(chǔ)器中,再將此ASCII文件轉(zhuǎn)化為16進(jìn)制的HE文件,注意將其十的0DH,0AH等回車換行字節(jié)取消,最后生成的HEX文件即可被直接下載到FLASH的0000H~0DFFFH的相應(yīng)地址中。此HEX文件即可發(fā)送至用戶處,用于升級(jí)用戶的單片機(jī)FLASH程序。

5)C程序的準(zhǔn)備
//發(fā)送FLASH程序文件到單片機(jī)中去
BOOL SendFileToFlash()
{
unsigned char ch;
FILE *fp;
long int flen,wi=0;
int i,j;
if ((fp = fopen("flashwl","rb"))==NULL)
{
return FALSE;
}
//初使化串口,且與單片機(jī)系統(tǒng)握手
InitialCommuClass();
//發(fā)送數(shù)據(jù)
for (wi=0,j=0;wi
if (feof(fp)!=0)//到達(dá)文件結(jié)束
break;
fread(&ch,sizeof(unsigned char),1,fp);
for (;;)
if (SendAByte(ch)==TRUE)
break;
Printf("%ld bytes is transmitted!\n",wi); }
fclose(fp);
for (;;)
{
Printf("All bytes is transmitted!\n");
}
}
//轉(zhuǎn)換上載文件為可下載的HEX目標(biāo)文件
BOOL ConvertFileToFlash()
{
unsigned char ch,ru;
FILE *fp,*fpw;
long int flen,wi=0;
int i,j;
if ((fp = fopen("SOURCEC","rb"))==NULL)
{
return FALSE;
}
if ((fpw = fopen("HEXOBJECT","wb"))==NULL)
{
return FALSE;
}
for (wi=0,j=0;;wi++)
{
if (feof(fp)!=0)
break;
ru=0;
fread(&ch,sizeof(unsigned char),1,fp);
if ((ch>=0x30) && (ch<=0x39))
ru+=(ch-0x30)*16;
else if ((ch>=0x61) && (ch<=0x66))
ru+=((ch-0x61)+0x0a)*16;
fread(&ch,sizeof(unsigned char),1,fp);
if ((ch>=0x30) && (ch<=0x39))
ru+=ch-0x30;
else if ((ch>=0x61) && (ch<=0x66))
ru+=(ch-0x61)+0x0a;
fwrite(&ru,sizeof(unsigned char),1,fpw);
fread(&ch,sizeof(unsigned char),1,fp);/*0x0d*/
fread(&ch,sizeof(unsigned char),1,fp);/*0x0d*/
fread(&ch,sizeof(unsigned char),1,fp);/*0x0a*/
j++;
if (j==255)
{
j=0;
fread(&ch,sizeof(unsigned char),1,fp);
fread(&ch,sizeof(unsigned char),1,fp);
fread(&ch,sizeof(unsigned char),1,fp);
fread(&ch,sizeof(unsigned char),1,fp);
fread(&ch,sizeof(unsigned char),1,fp);
continue;
}
}
fclose(fp);fclose(fpw);
}
結(jié)束語(yǔ)
以上所介紹的FLASH自動(dòng)升級(jí)程序的PC部分在VC6.0及TC2.0中開發(fā),并與805lFXXX系列的單片機(jī)聯(lián)機(jī)成功,并最后用于在用戶處的單片機(jī)FLASH程序升級(jí)。
- c805(10286)
- 自動(dòng)升級(jí)(5341)
8051系列單片機(jī)C程序設(shè)計(jì)完全手冊(cè)
8051系列單片機(jī)C程序設(shè)計(jì)完全手冊(cè)
8051系列單片機(jī)C程序設(shè)計(jì)完全手冊(cè)
C8051F35X單片機(jī)內(nèi)部Flash存儲(chǔ)器的擦寫方法
C8051F單片機(jī)的IAP系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
C8051Fxxx高速SOC單片機(jī)原理及應(yīng)用
c8051f單片機(jī)資料下載
單片機(jī)如何在flash中運(yùn)行程序
CYGNAL單片機(jī)簡(jiǎn)介
CYGNAL單片機(jī)資料介紹
Linux下ARM和單片機(jī)的串口通信設(shè)計(jì)資料分享
[討論]給大家介紹一個(gè)非常不錯(cuò)的c8051f單片機(jī)學(xué)習(xí)網(wǎng)站
關(guān)于看門狗斷電不復(fù)位的問(wèn)題
詳述經(jīng)典《8051單片機(jī)C語(yǔ)言程序設(shè)計(jì)與實(shí)例解析》
c8051f pdf datasheet
6c8051f單片機(jī)中文資料下載
248cygnal單片機(jī)教程
32CYGNAL單片機(jī)簡(jiǎn)介
38C8051F020單片機(jī)及其在總磷在線自動(dòng)分析儀中的應(yīng)用
29CYGNAL中文資料,pdf datasheet(單片機(jī)簡(jiǎn)介
47單片機(jī)程序遠(yuǎn)程升級(jí)的設(shè)計(jì)
918051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)的藝術(shù)
08051單片機(jī)C語(yǔ)言徹底應(yīng)用 (電子書)
08051單片機(jī)C語(yǔ)言開發(fā)環(huán)境實(shí)務(wù)與設(shè)計(jì)
0單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)
172C8051F35X單片機(jī)內(nèi)部Flash存儲(chǔ)器的擦寫方法
56CYGNAL 單片機(jī)原理
28CYGNAL 單片機(jī)基礎(chǔ)知識(shí)手冊(cè)
35C8051F單片機(jī)
638051單片機(jī)教程
08位FLASH單片機(jī)HR7P169BFGSD
C8051Fxxx程序丟失問(wèn)題的分析
2643C8051F005單片機(jī)的比例電磁鐵控制技術(shù)
2359
STC單片機(jī)STC8C2K64S4-36I-LQFP44
FFT在單片機(jī)C8051中的實(shí)現(xiàn)
12213
C8051F單片機(jī)介紹
306C8051F單片機(jī)的IAP系統(tǒng)設(shè)計(jì)
122C8051F單片機(jī)IAP原理
193C8051F單片機(jī)初學(xué)教程
1721AN011—在5V系統(tǒng)中使用C8051FXXX
228051單片機(jī)編程中C語(yǔ)言代碼優(yōu)化
553C8051Fxxx高速SOC單片機(jī)原理及應(yīng)用_潘琢金
0基于Linux的ARM/單片機(jī)串口通信設(shè)計(jì)
3029
Linux下ARM 和單片機(jī)的串口通信設(shè)計(jì)
3822
C8051F與80C51系列單片機(jī)的初始化比較
5529
單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例——基于8051+Proteus仿真
185Linux下ARM和單片機(jī)的串口通信設(shè)計(jì)
2251
單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例--基于8051+PROTEUS
578051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)的藝術(shù)_賴麒文
3《單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例——基于8051+Proteu
658051系列單片機(jī)C程序設(shè)計(jì)完全手_部分2
18051系列單片機(jī)C程序設(shè)計(jì)完全手_部分1
1單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例基于8051 Proteus仿真
185單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例—基于8051+Proteus仿真
39《C8051F系列單片機(jī)開發(fā)與C語(yǔ)言編程》PDF書籍+光盤程序
753單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例基于8051Proteus仿真
66單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例--基于8051+PROTEUS
2151單片機(jī)的c語(yǔ)言程序設(shè)計(jì)實(shí)例
268051系列單片機(jī)C程序設(shè)計(jì)完全手冊(cè)_31@27490
21基于C8051F020的驅(qū)動(dòng)程序設(shè)計(jì)
228051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)8051單片機(jī)C語(yǔ)言軟件設(shè)計(jì)
92AT89C51單片機(jī)和8051單片機(jī)有什么區(qū)別
50026c8051f單片機(jī)ad采樣程序(附詳細(xì)注釋)
29956基于8051+Proteus仿真的單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例詳細(xì)中文概述
8980C51單片機(jī)與8051單片機(jī)的主要差別在哪里
8415單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)PDF電子書免費(fèi)下載
5580C51單片機(jī)與8051單片機(jī)的區(qū)別是什么
97328051單片機(jī)C語(yǔ)言徹底應(yīng)用PDF電子書免費(fèi)下載
1138051單片機(jī)C語(yǔ)言開發(fā)環(huán)境實(shí)務(wù)與設(shè)計(jì)PDF電子書免費(fèi)下載
338051系列單片機(jī)C程序設(shè)計(jì)完全手冊(cè)PDF電子書免費(fèi)下載
300PIC18Fxxx單片機(jī)程序設(shè)計(jì)及應(yīng)用PDF電子書免費(fèi)下載
97C8051Fxxx系列單片機(jī)的中文資料簡(jiǎn)介
8C8051F35X單片機(jī)內(nèi)部Flash存儲(chǔ)器的擦寫方法詳細(xì)說(shuō)明
14單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例--基于8051+proteus仿真
341單片機(jī)升級(jí)
5在 Linux 下開發(fā)和下載8051單片機(jī)程序
17單片機(jī)C語(yǔ)言的知識(shí)匯總
48C8051F串口升級(jí)程序
32零開始構(gòu)建單片機(jī)遠(yuǎn)程升級(jí)平臺(tái)
29單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例基于8051 Proteus仿真
20基于AT89C51單片機(jī)用8051與1601LCD設(shè)計(jì)的計(jì)算器Proteus仿真及程序
428051單片機(jī)和PIC單片機(jī)的區(qū)別是什么
3376PIC單片機(jī)與C8051F020單片機(jī)的串行通訊
2基于C8051單片機(jī)的電子凸輪實(shí)現(xiàn)
6基于C8051F020單片機(jī)的串口通信應(yīng)用
6STM32單片機(jī)實(shí)現(xiàn)固件在線升級(jí)(IAP)
7860
電子發(fā)燒友App


評(píng)論