外掛Flash的引導裝載設計
發布時間:2008/5/26 0:00:00 訪問次數:777
    
    
    來源:中電網 作者:艾禮科
    
    1 bootloader分析
    
    ti公司的dsp芯片出廠時,在片內rom中固化有引導裝載程序bootloader,其主要功能就是將外部的程序裝載到片內ram中運行,以提高系統的運行速度。
    
    tms320vc5409是ti公司的一款定點dsp芯片,其指令周期可達10ns,片內有32k×16位的ram,性價比極高,被廣泛應用在嵌入式系統、數據采集系統中。tms320vc5409的bootloacler程序位于片內rom的0f800h~0fbffh空間。系統上電時,dsp將檢查外部引腳mp/mc的狀態,如果該引腳為高電平,則dsp按微處理器模式啟動;如果該引腳為低電平,則dsp按微計算機模式啟動。此時,系統從0ff80h地址處開始執行程序,0ff80h是bootloader的中斷矢量。因此,如果系統上電時mp/mc的狀態為低電平,dsp將從ff80h處跳轉到f800h開始執行ti的bootloader自動裝載程序。
    
    進入bootloader程序后,首先檢查dsp引腳int2的狀態,如果為低電平,則進入hpi引導裝載模式,如果int2為高電平則接下來檢查int3引腳。如果int3引腳為低電平,則進入串行eeprom引導裝載模式,如果int3為高電平則進入并行引導裝載模式。當并行引導裝載模式失敗后,系統會自動進入串行口引導裝載模式.串行口引導裝載失敗后,系統又將進入i/o口引導裝載模式。
    
    當進入并行引導裝載模式后,dsl 首先讀取地址為0ffffh的i/o空間單元,并將該單元的值作為引導表的首地址.在數據地址空間中讀取引導表的第一個字,如果該字的值為10aah,則進入16位引導模式,如果低字節為08h,則再進一步讀取下一個值,如果該值的低字節為aah,則進人8位引導模式。如果從i/o地址空間中讀取的引導表首地址所對應的引導表中得不到正確的引導信息,那么dsp將會從數據空間的0ffffh地址再去讀一個字作為引導表首地址,進而再從引導表首地址讀取一個字。如果該字為loaah,則立即進入l6位引導模式,否則,將按8位方式處理:從0ffffh讀取一字節作為引導表首地址的低字節,從0fffeh讀取一字節作為引導首地址的高字節,再從引導表首地址讀取一個值,如果低字節為08h,則再讀引導表的下一個值,如果為aah,則說明外部存儲器是8位寬度,進入8位引導裝載模式;如果以上步驟不能獲取正確的引導信息,那么dsp將進人串行口引導裝載模式。
    
    如果并行引導裝載成功,dsp將從裝載后新的程序開始地址執行程序。詳細的并行引導流程圖如圖1所示。
    
    
    
    2 硬件設計
    
    在本系統中,flash選用的是atmel公司的at29lvl024,at29lvl024容量為64k×16位,可以滿足一般的應用要求,并且其工作電壓為3v~3.6v,可以直接與tms320vc5409接口而不必再使用電壓接口芯片進行轉接,使硬件電路更為簡單。
    
    從tms320vc5409的存儲器空間映射得知,在mp/m c=0 時,外部存儲器空間映射的地址范圍為8000h-ffffh共32k,因此flash中的程序部分必須位于8000h~ffffh的地址范圍,才能成功引導。筆者的程序量小于32k×16位,因此可以將flash的地址線a0-a15直接與dsp的地址線ao~al5相連,然后將程序燒錄到flash的32k之后的位置,這樣程序剛好位于dsp的8000h~ffffh范圍。如果程序量大于32k字,則可將flash的前32k地址編碼在dsp的8000h~ffffh范圍.采用分頁的方式,逐步裝載需要運行的程序。 本文中,采用從data空間引導,具體的電路連接如圖2所示。
    
    
    
    flash的地址線ao-a15直接與dsp的低16根地址線a0-a15相連。
    
    flash的16位數
    
    據線do-d15直接接dsp的16位數據總線d0-d15。
    
    flash的寫信號we直接接高電平(因為對flash的編程采用編程器燒錄)。
    
    flash的片選信號ce直接接低電平或者接dsp的ds引腳。 flash的讀
    
    
    來源:中電網 作者:艾禮科
    
    1 bootloader分析
    
    ti公司的dsp芯片出廠時,在片內rom中固化有引導裝載程序bootloader,其主要功能就是將外部的程序裝載到片內ram中運行,以提高系統的運行速度。
    
    tms320vc5409是ti公司的一款定點dsp芯片,其指令周期可達10ns,片內有32k×16位的ram,性價比極高,被廣泛應用在嵌入式系統、數據采集系統中。tms320vc5409的bootloacler程序位于片內rom的0f800h~0fbffh空間。系統上電時,dsp將檢查外部引腳mp/mc的狀態,如果該引腳為高電平,則dsp按微處理器模式啟動;如果該引腳為低電平,則dsp按微計算機模式啟動。此時,系統從0ff80h地址處開始執行程序,0ff80h是bootloader的中斷矢量。因此,如果系統上電時mp/mc的狀態為低電平,dsp將從ff80h處跳轉到f800h開始執行ti的bootloader自動裝載程序。
    
    進入bootloader程序后,首先檢查dsp引腳int2的狀態,如果為低電平,則進入hpi引導裝載模式,如果int2為高電平則接下來檢查int3引腳。如果int3引腳為低電平,則進入串行eeprom引導裝載模式,如果int3為高電平則進入并行引導裝載模式。當并行引導裝載模式失敗后,系統會自動進入串行口引導裝載模式.串行口引導裝載失敗后,系統又將進入i/o口引導裝載模式。
    
    當進入并行引導裝載模式后,dsl 首先讀取地址為0ffffh的i/o空間單元,并將該單元的值作為引導表的首地址.在數據地址空間中讀取引導表的第一個字,如果該字的值為10aah,則進入16位引導模式,如果低字節為08h,則再進一步讀取下一個值,如果該值的低字節為aah,則進人8位引導模式。如果從i/o地址空間中讀取的引導表首地址所對應的引導表中得不到正確的引導信息,那么dsp將會從數據空間的0ffffh地址再去讀一個字作為引導表首地址,進而再從引導表首地址讀取一個字。如果該字為loaah,則立即進入l6位引導模式,否則,將按8位方式處理:從0ffffh讀取一字節作為引導表首地址的低字節,從0fffeh讀取一字節作為引導首地址的高字節,再從引導表首地址讀取一個值,如果低字節為08h,則再讀引導表的下一個值,如果為aah,則說明外部存儲器是8位寬度,進入8位引導裝載模式;如果以上步驟不能獲取正確的引導信息,那么dsp將進人串行口引導裝載模式。
    
    如果并行引導裝載成功,dsp將從裝載后新的程序開始地址執行程序。詳細的并行引導流程圖如圖1所示。
    
    
    
    2 硬件設計
    
    在本系統中,flash選用的是atmel公司的at29lvl024,at29lvl024容量為64k×16位,可以滿足一般的應用要求,并且其工作電壓為3v~3.6v,可以直接與tms320vc5409接口而不必再使用電壓接口芯片進行轉接,使硬件電路更為簡單。
    
    從tms320vc5409的存儲器空間映射得知,在mp/m c=0 時,外部存儲器空間映射的地址范圍為8000h-ffffh共32k,因此flash中的程序部分必須位于8000h~ffffh的地址范圍,才能成功引導。筆者的程序量小于32k×16位,因此可以將flash的地址線a0-a15直接與dsp的地址線ao~al5相連,然后將程序燒錄到flash的32k之后的位置,這樣程序剛好位于dsp的8000h~ffffh范圍。如果程序量大于32k字,則可將flash的前32k地址編碼在dsp的8000h~ffffh范圍.采用分頁的方式,逐步裝載需要運行的程序。 本文中,采用從data空間引導,具體的電路連接如圖2所示。
    
    
    
    flash的地址線ao-a15直接與dsp的低16根地址線a0-a15相連。
    
    flash的16位數
    
    據線do-d15直接接dsp的16位數據總線d0-d15。
    
    flash的寫信號we直接接高電平(因為對flash的編程采用編程器燒錄)。
    
    flash的片選信號ce直接接低電平或者接dsp的ds引腳。 flash的讀