許多微控制器在燒錄之前需要一個自定義的初始化序列來初始化目標硬件,例如初始化PLL時鐘,關閉看門狗或定義Flash的等待狀態。在使用這些對初始化過程有特殊要求的芯片時,在Segger J-Flash軟件中創建工程時需要設置芯片的初始化序列。
打開J-Flash軟件,在Options->Project settings選項中,可以設置芯片的初始化和燒錄成功後需要執行的動作。
J-Flash支持設置的初始化命令包括讀寫特定地址、校驗、暫停CPU和設置芯片復位方式等。支持的完整的指令列表請參考J-Flash用戶手冊中的介紹。下面簡單介紹一些常用的初始化指令。
Reset:設置芯片的復位方式,如硬件復位或軟件復位等,某些芯片需要的特殊復位方式也需要通過該命令進行設置。
Delay:延時一段時間。
Write 32bit:向指定地址寫入32位的數據。註意所有的 "Write *"命令隻能用於寫入RAM或SFR寄存器,而不能將數據寫入到Flash閃存地址。要修改寫入到Flash區域的數據隻能通過改變燒錄文件來實現。燒錄文件可以通過使用 "Write File*"命令在初始步驟中修改。
Write File 32bit:向燒錄文件中的指定地址中寫入32位的數據,用於修改要燒錄的固件。
Halt:暫停CPU。
Go:CPU開始運行。
下面通過AT91SAM7S256該芯片的初始化序列設置來幫助理解,在Init.steps選項設置的Comment一欄可以添加註釋,用於記錄該行命令所要實現的功能。
如上圖所示,在該芯片的初始化序列中共設置瞭8條指令,下面將介紹這些指令具體完成的工作。
指令0:無延時立即執行復位動作,復位模式是模式8。該復位方式是用於ATMEL AT91SAM7內核芯片的特定復位模式,該模式通過寫芯片的RSTC_CR寄存器來復位外設。復位外設會使所有外設處於定義的復位狀態。這包括內存映射寄存器,這意味著復位後flash被映射到地址0。JLink支持的所有復位模式的介紹請參考J-Link的用戶手冊。
指令1:向0xFFFFFD44(看門狗定時模式寄存器)地址寫入數據0x00008000這個值來關閉看門狗。
指令2:向0xFFFFFF60(MC Flash模式寄存器)地址寫入數據0x00320300這個值來設置flash的等待狀態。
指令3:向0xFFFFFC20(PMC寄存器)地址寫入數據0x00000601這個值來初始化PLL時鐘。
指令4:延時200ms。
指令5:向0xFFFFFC2C(PLL寄存器)地址寫入數據0x00191C05這個值來設置PLL時鐘和分頻系數。
指令6:延時200ms。
指令7:向0xFFFFFC30(PMC寄存器內的特定位)地址寫入數據0x00000007這個值來選擇系統時鐘和外設時鐘。
本文中我們介紹瞭如何在J-Flash中設置芯片的初始化序列,該功能令J-Flash軟件能夠適配更多類型的芯片,進而更好的滿足用戶需求。
上一篇