如何設計一個在線燒錄方案?

如何設計一個在線燒錄方案?

[導讀]在線燒錄,芯片先貼在PCB板上後,再對其進行燒錄。由於在線燒寫的靈活性(產品先生產出來後,可根據用戶訂單,臨時燒錄不同的固件)、易返工性(直接在板重新燒錄),越來越多的工廠選擇了在線燒錄的方案。由於每款目標板

在線燒錄,芯片先貼在PCB板上後,再對其進行燒錄。由於在線燒寫的靈活性(產品先生產出來後,可根據用戶訂單,臨時燒錄不同的固件)、易返工性(直接在板重新燒錄),越來越多的工廠選擇了在線燒錄的方案。

由於每款目標板存在各種差異性,燒錄環境參數不統一,導致燒錄出現異常以及達不到需求效果。那麼,如何設計一個更合理的在線燒錄放案?以下羅列了幾個注意事項。

1、選擇合適的燒錄通訊協議

一款芯片,可能同時支持幾種燒錄通信協議,基於每種協議的特點,根據需求,在目標板預留一個或多個燒錄通訊協議接口。以LPC1517爲例,可以支持SWD、UART燒錄通訊協議。其中,SWD通信速率能達到6M以上,而UART模式只能支持115200 的波特率(相比之下,SWD速率大約是UART的52倍)。更快的通訊速度,將減少燒錄時間,提高燒錄生產效率,如果追求燒錄速度,首選SWD。但當芯片加密後,芯片杜絕編程器通過SWD訪問芯片,這時只能通過UART模式擦除解密。一般產品出產後,芯片都配置成加密模式,後續產品升級、維修需要重新燒錄固件時,由於芯片已處於加密模式,故不能再用SWD模式燒錄,只能採用UART模式。因此,應根據具體情況,預留對應的SWD或UART燒錄接口。或者兩種都預留,SWD模式接口用於量產燒錄,UART用於維修、升級時單次燒錄。


2、預留禁能看門狗的接口

爲了避免芯片程序跑飛或進入死循環狀態,目標板一般都會放置外部看門狗,有效保證整個系統穩定運行。但是,如果芯片正處於燒錄狀態,由於沒有喂狗,看門狗將計數溢出並復位目標芯片,意外中斷了當前的燒錄工作。爲了避免以上異常情況,目標板應預留禁能看門狗的接口。當芯片燒錄的時候,通過一個跳線,禁能看門狗,杜絕燒錄時芯片被看門狗復位。如圖1所示,目標板預留了禁能看門狗接口。


圖1 禁能看門狗接口

3、燒錄接口是焊盤測試點還是接線座

圖2爲焊盤測試點和普通燒錄接線座的對比。如果生產燒錄量很大,爲了提高燒錄效率,可以配合夾具和自動機,進行自動化的燒錄。夾具一般都是配合頂針一起使用的,故需要在目標板預留焊盤測試點,以便燒錄信號線的頂針與目標板接觸;而如果生產燒錄量偏小,則可以人工手動拔插燒錄接口。

 

圖2 焊盤測試點和普通燒錄接線座的對比

4、引出芯片復位管腳

有時候,出於節省PCB空間考慮,設計燒錄接口時會省掉復位管腳,但這有可能導致燒錄不穩定。燒錄前,先復位芯片,可以給芯片燒錄提供一個純淨的初始化環境,避免芯片已跑有代碼時,影響後續的燒錄。此外,燒錄前先復位芯片,還可以避免上電瞬間燒錄信號線電平的抖動,使得芯片誤採集到握手信號,導致燒錄通信握手失敗。因此,爲了保證燒錄的穩定性,燒錄接口需引出復位管腳。燒錄器燒錄芯片前,利用復位管腳先復位芯片,使芯片處於一個純淨的初始化狀態,有效保證芯片燒錄的穩定性和有效性。

 

圖3 引出復位管腳

以上只是羅列了常見的幾種情況,但由於在線燒寫目標板的差異性,設計PCB板時應該根據具體的芯片,配合你選擇的燒錄器特性,設計一個合理的方案。

 

/**********************wdt fuction**********************************************************************/
#define  WDT_OPEN		1
#define IS_DEBUG	(0)//NOTE:1)在線debug程序,須先禁掉看門狗,否則超時復位重啓;2)keil在線燒錄,燒錄期間未能及時喂狗則會復位重啓,導致燒錄失敗
void wdt_init(void)
{
		uint8_t u8Lock;
	
		/************在線debug,禁掉看門狗***************/
		#if(IS_DEBUG)
		u8Lock = SYS_Unlock();
		WDT_Close();
		CLK_DisableModuleClock(WDT_MODULE);
		SYS_Lock(u8Lock);
		#endif
	
		
	
		#if(1 != IS_DEBUG)  //test wdt timeout reset function 
		u8Lock = SYS_Unlock();
		CLK_EnableXtalRC(CLK_PWRCTL_LXTEN_Msk);//使能無源晶振(無源晶振記得要使能啊,有源晶振則上電自動起振)
		CLK_EnableModuleClock(WDT_MODULE);
		//CLK->CLKSEL1 = (CLK->CLKSEL1 & ~(3<<0)) | (1<<0);//clk source 32k  ==
		CLK_SetModuleClock(WDT_MODULE, CLK_CLKSEL1_WDTSEL_LXT, MODULE_NoMsk);//32k  CLK_CLKSEL1_WDTSEL_HCLK_DIV2048
		SYS_Lock(u8Lock);
			
		WDT_RESET_COUNTER();
		WDT_CLEAR_RESET_FLAG();
	
		u8Lock = SYS_Unlock();
	/*
		WDT->CTL = (WDT->CTL & ~(7 << 8)) | (7 << 8);//8224 ms
    WDT->CTL |= 1 << 1;//enable rst
		WDT->CTL |= 1 << 7;//enable wdt
		*/
		WDT_Open(WDT_TIMEOUT_2POW18,TRUE);//8224 ms
		SYS_Lock(u8Lock);
		#endif
}

void wdt_clear(void)
{
		WDT_RESET_COUNTER();
		WDT_CLEAR_RESET_FLAG();
}

餐考:http://www.21ic.com/app/analog/201605/676150.htm?_t_t_t=0.20653475700134421

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章