matter樂鑫 c3 低功耗樂鑫科技的代理商深入RISC-V 程序開發,在嵌人式系統軟件開發過程中經常會遇到一些共性的問題。本文將討論嵌入式系統程序中的啟動程序、內存資源管理、程序優化和系統能耗管理等問題,并通過在GD32VF103V-EVAL 開發環境上所實現的程序進行說明。
RISC-V 啟動程序
上電復位后,CPU 程序計數器 PC 指向程序空間的起始地址,讀取指令并執行啟動程序與處理器架構和類型緊密關聯,是 CPU 啟動后執行的第一段程序,它初始化處理器和系統硬件,為后續運行用高級語言編寫的程序做準備。在不同類型處理器之間移植軟件系統時,啟動程序必須重寫或改寫。matter樂鑫 c3 低功耗樂鑫科技的代理商啟動程序是引導裝載程序(Bootloader)的關鍵部分,通常用匯編語言編寫。例如,在 u-boot 中,CPU 的啟動程序文件是“start.s”。
啟動過程
當處理器上電,或者復位(RESET)引腳的電平由低變高時,matter樂鑫 c3 低功耗樂鑫科技的代理商處理器執行硬件初始化及內部自測試(Build-in Self-Test,BIST),然后執行啟動程序,后執行由高級語言編寫的程序,完成系統啟動,進入正常工作狀態。
啟動程序通常包含處理器中斷和異常向量表、處理器初始化模塊、系統硬件初始化模塊,以及準備高級語言程序運行環境模塊等。如圖 8.1 所示為一個典型嵌入式系統中的啟動程序流程。
上電或復位后,處理器 PC 首先指向中斷向量表的基地址,即復位中斷向量的位置,然后執行啟動程序。matter樂鑫 c3 低功耗樂鑫科技的代理商在啟動程序中,先初始化處理器本身的工作狀態,再初始化系統中處理器以外的硬件環境,然后初始化 C 語言程序運行環境,后跳轉到C語言程序入口 main。
通常,初始化處理器的工作包括選擇內時鐘源,設置內核工作頻率,設置處理器工作模式,設置內核定時器,初始化存儲管理單元,設置內部看門狗(Watchdog)電路,設置外部存儲接口,設置內核中斷使能及其他片內集成外設。系統初始化系統中處理器外部的設備。
準備高級語言運行環境需要初始化系統堆棧,改變處理器模式或狀態,為高級語言程序運行環境分配并初始化存儲空間。如圖8.2所示為一個處理器初始化過程的示例。其中,matter樂鑫 c3 低功耗樂鑫科技的代理商初始化存儲管理單元適用于擁有存儲管理單元的處理器,并且該步驟必須在初始化處理器的存儲器接口之后進行。
中斷和異常常向量--初始化處理器--初始化系統硬件--初始化C語言程序運行環境--調用主程序main
圖8.1 啟動程序流程
初始化系統時鐘--初始化存儲器接口--初始化存儲管理單元--初始化I/O接口--設置看門狗--設置處理器模式
圖8.2 初始化處理器流程