導航:首頁 > 源碼編譯 > vpp源碼編譯

vpp源碼編譯

發布時間:2022-11-29 21:28:56

A. 智能斷路控制器的論文

匯流排式低壓斷路器新型智能控制器的研製

引言
智能斷路器是一種將計算機技術、數字處理技術和信息技術引入傳統開關設備中發展起來的新一代開關電器。智能斷路器的控制器是實現智能操作的核心部件,其基本任務是通過對電網參數的採集和處理,給出相應的控制信息。此外,智能控制器通過現場匯流排可以和計算機連接,實現斷路器間的聯網通信以及進行遠程監控管理。近年來,由於嵌入式系統的使用越來越成熟,其中us/OS-II 嵌入式操作系統由於源代碼公開化,內核體積小,可移植性好等原因,受到了廣泛的應用。本文採用了TI 公司的DSP 晶元TMS320LF2407A 作為嵌入式系統硬體,設計了低壓斷路器的智能控制器,同時,將us/OS-II 嵌入式操作系統移植到DSP 晶元中,提高了系統的運行效率和可靠性。現場試驗表明,該控制器可靠性高,試驗結果達到預期的設計要求,具有廣闊的應用前景。
1 us/OS-II 嵌入式操作系統
嵌入式系統是被內部計算機控制並執行專用功能的設備或系統,操作系統以及應用軟體都集成於計算機硬體系統之中,即應用軟體和系統硬體一體化,嵌入式系統具有軟體代碼少,高度自動化,響應速度快等特點,特別適合於要求實時性高和多任務處理的情況。
us/OS-II 嵌入式操作系統是一個完整的、源代碼公開的、可移植的、固化的、可裁剪的佔先式實時多任務內核,它是一種不可剝奪型內核,在任務調度時須預先設定任務的優先順序。us/
OS-II 包括以下幾個部分:內核管理、任務管理、時間管理、事件控制塊、信號量管理、郵箱管理等。
us/OS-II 中創建的任務有5 種狀態,分別是:睡眠態、等待態、就緒態、運行態、中斷服務態。us/OS-II 是佔先式內核,每個任務都要設置優先順序,優先順序最高的任務可以先進入CPU 運行,其它任務只能先在就緒狀態中等待。us/OS-II 最多可以創建多達64 個任務(實際可以使用的是56 個,因為前4 個和後4 個任務優先順序被保留做系統升級用)。
2 嵌入式系統的硬體設計
2.1 智能控制器總體結構及工作原理
智能控制器硬體系統的總體結構如圖1 所示。該控制器的主要任務是採集電網的電流和電壓信號,經過信號采樣電路處理後,使信號變換成DSP 的標准輸入電壓0 到3.3V,DSP 通過對採集信號的分析比較,做出正確的判斷,發出動作指令,從而實現線路的過載、短路、接地等故障的保護,並通過Profibus 匯流排發送和接收監控計算機的相關數據,實現遠程監控管理。系統主要有DSP 及其外圍電路、A/D 信號採集與處理電路,液晶顯示電路,電源,脫扣電路等部分構成。DSP 的外圍電路主要包括晶振、濾波迴路、片外RAM 和一些門電路。
2.2 TMS320LF2407A 晶元及其開發環境CCS2.2 簡介
TMS320LF2407A 是基於控制應用而設計的,它將高性能的DSP 內核和豐富的微控制器外設集成於單片中,從而成為傳統的微控制器的理想替代。TMS320LF2407A 控制器的外設包括:
事件管理器、網路介面、A/D 通道模數轉換、SPI 串列外設介面、SCI 串列通信介面、通用雙向I/O 引腳。CCS2.2 是CCS 系列中的最新版本,有很多既方便又強大的功能。包括:支持同時載入多個工程文件;加強了編譯器功能,對語法的檢查更加嚴格;通過建立庫工程,支持編譯函數文件成為庫文件等。
2.3 信號採集電路
本設計採集的信號是四路電流和三路電壓信號,電壓和電流信號都是經過互感器形成的二次側感應電壓。經濾波隔離放大之後形成適合A/D 轉換的電壓范圍,7 路信號經處理後送到
多路電子開關。由於DSP 本身具有A/D 轉換器,所以只需通過DSP 控制電子開關選通所需的各路信號,即可完成對多路信號的採集。
DSP 的A/D 轉換精度為2-10,完全能夠滿足實時採集和高精度要求。設計中利用定時中斷方式進行采樣,要求每1ms 就在3 路電壓和4 路電流信號上各採集一點。
2.4 Profibus-DP匯流排介面模塊
在Profibus-DP匯流排通信過程中,主站循地讀取從站的輸入信息並周期地向從站發送輸出信息。同時,數據的通信是通過主站和從站的監控功能進行監控的。
本系統選用了5I系列單片機DPC932AI來實現Profibus匯流排通信。由於單片機LPC932AI上安裝有增強型Profibus匯流排通信。由於單片機通過通過軟體來模擬Profibus現聲場匯流排協
議。LPC932AI指令執行時間只需167ms,增強型的UART波特率可以使數據在Profibus-DP匯流排傳輸中高達500Kb/s。它允許高述度周期性的數據通信,因此特別適用十對時間要求苛刻的場合。
Profibu-DP介面模塊見圖2,電路主要由三部分組成:模擬匯流排協議處理微控制器LPC932AI、高速光電耦合器6N137和RS485收發器SP3485。
了增強Profibus-DP 匯流排節點的抗干擾能力,LPC932A1的TXD 和RXD 並不是直接與RS-485 收發器SP3485 的TXD和RXD 相連,而是通過高速光電耦合器6N137 後與SP3485 相連,這樣能很好地實現匯流排上各Profibus-DP 節點間的電氣隔離。其中光耦部分電路所採用的2 個電源VCC 和VPP 必須完全隔離,雖然增加了節點的復雜性,但是卻提高了節點的穩定性和安全性。連接至SP3485 上A 引腳的上拉電阻和連接至B引腳的下拉電阻用於保證無連接時的SP3485 晶元處於空閑狀態,提供網路失效保護,以提高RS-485 節點與網路的可靠性。

3 嵌入式系統的軟體設計
3.1 us/OS-II 在2407 上的移植us/OS-II 在2407 實現移植是嵌入式系統軟體設計的關鍵所在, 根據嵌入式實時系統的實際需要, 對OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C 文件進行編寫,對OS_CFG.H 配置的正確設定,如對最低優先順序OS_LOWEST_PRIO、最多任務控制塊OS_MAX_EVENTS、最多任務數OS_MAX_TASKS 進行設置,對需要使用的功能進行選擇置位。
OSStartHighRdy()控制最高優先順序任務的運行,OSCtxSw()用來實現中斷服務子程序、陷阱或異常處理程序的任務切換,OSTickISR()用來實現時鍾節拍功能。
將各種函數編寫好以後,裝載入2407 或外部RAM 中,進行成功移植後,即可在此基礎上進行嵌入式系統的軟體開發。
3.2 智能控制器軟體設計
智能控制器系統軟體設計主要有兩部分:主程序和中斷程序,中斷程序包括定時器采樣中斷、延時保護處理中斷和通訊中斷,其中定時器中斷優先順序高於通訊中斷,以保證定時採集數據並進行相關處理。
軟體採用了匯編語言和高級語言混合編制而成,按功能可分為兩類:一類是執行軟體,完成各種實質性的功能,如測量、計算、顯示等;另一類是監控軟體,採用了模塊化設計技術,便於系統功能擴展和提高程序的可靠性、可維護性,為實現智能控制器的測量、保護、監控和通信等功能,設計了一種多任務操作系統。
主程序流程如圖3 所示。其中主要功能如液晶顯示、保護演算法、濾波演算法、有效值計算、通信的發送和接收、鍵盤輸入設置參數等,由於實時性要求不高,用主循環依次實現。對於實時性要求較高的程序,比如A/D 采樣轉換程序和瞬動保護判斷程序,採用了匯編語言編程,這樣可以加快相關代碼運行的速度,提高系統運行的效率。利用DSP 的A/D 轉換器,每隔1 ms 采樣1 次,完全可以滿足實時性要求,定時采樣中斷程序流程如圖4所示。

智能控制器通過定時采樣中斷和計算獲取主線路的信號,比較是否達到或超過短路瞬時整定值、短延時整定值、過載長延時整定值,作出相應的分斷命令
3.3 上位監控軟體
設計中,智能斷路器與上位機之間的通訊採用多主方式,即網路上任一節點均可在任意時刻主動地向網路上其他節點發送信息,目的是使智能節點不僅能響應上位機進行數據傳輸,而且能夠定時或在智能節點出現異常時能夠及時主動地向上位機傳送相關信息。上位機採用VB 編程實現了以下功能:實時接收智能斷路器上傳的數據, 包括正常情況下的定時發送和異常情況下的實時發送;隨時讀取下位智能斷路器的數據,即工作人員可從上位監控機上根據需要隨時向下位智能節點發送遠程幀,索取相關數據;具有在線遠程設置相關參數及遠程式控制制斷路器的分、合閘。即實現「四遙」功能。
4 試驗和總結
設計的樣機在企業試驗站進行了現場調試、試驗,如保護特性的測試、上位機和控制器之間的通信以及液晶顯示、測量等,做了大量的運行試驗,取得很好的結果。試驗表明:設計的
智能控制器實現了測量、保護、通信和監控等功能,實時性好,指標達到預期要求。
本文的創新點在於:基於DSP 的新型智能控制器,不僅運行可靠,實時性強,精度高,電磁兼容性好,而且由於採用了us/OS-II 嵌入式實時操作系統,提高了DSP 的運行效率和控制器的可靠性。同時,本文也為us/OS-IIus/OS-II 嵌入式操作系統在電力系統領域的應用開辟了新的空間。
該樣機已通過驗收,預計每年可產生經濟效益100 萬元。

B. CCS2.2中如何測試代碼運行效率

匯流排式低壓斷路器新型智能控制器的研製

引言
智能斷路器是一種將計算機技術、數字處理技術和信息技術引入傳統開關設備中發展起來的新一代開關電器。智能斷路器的控制器是實現智能操作的核心部件,其基本任務是通過對電網參數的採集和處理,給出相應的控制信息。此外,智能控制器通過現場匯流排可以和計算機連接,實現斷路器間的聯網通信以及進行遠程監控管理。近年來,由於嵌入式系統的使用越來越成熟,其中us/OS-II 嵌入式操作系統由於源代碼公開化,內核體積小,可移植性好等原因,受到了廣泛的應用。本文採用了TI 公司的DSP 晶元TMS320LF2407A 作為嵌入式系統硬體,設計了低壓斷路器的智能控制器,同時,將us/OS-II 嵌入式操作系統移植到DSP 晶元中,提高了系統的運行效率和可靠性。現場試驗表明,該控制器可靠性高,試驗結果達到預期的設計要求,具有廣闊的應用前景。
1 us/OS-II 嵌入式操作系統
嵌入式系統是被內部計算機控制並執行專用功能的設備或系統,操作系統以及應用軟體都集成於計算機硬體系統之中,即應用軟體和系統硬體一體化,嵌入式系統具有軟體代碼少,高度自動化,響應速度快等特點,特別適合於要求實時性高和多任務處理的情況。
us/OS-II 嵌入式操作系統是一個完整的、源代碼公開的、可移植的、固化的、可裁剪的佔先式實時多任務內核,它是一種不可剝奪型內核,在任務調度時須預先設定任務的優先順序。us/
OS-II 包括以下幾個部分:內核管理、任務管理、時間管理、事件控制塊、信號量管理、郵箱管理等。
us/OS-II 中創建的任務有5 種狀態,分別是:睡眠態、等待態、就緒態、運行態、中斷服務態。us/OS-II 是佔先式內核,每個任務都要設置優先順序,優先順序最高的任務可以先進入CPU 運行,其它任務只能先在就緒狀態中等待。us/OS-II 最多可以創建多達64 個任務(實際可以使用的是56 個,因為前4 個和後4 個任務優先順序被保留做系統升級用)。
2 嵌入式系統的硬體設計
2.1 智能控制器總體結構及工作原理
智能控制器硬體系統的總體結構如圖1 所示。該控制器的主要任務是採集電網的電流和電壓信號,經過信號采樣電路處理後,使信號變換成DSP 的標准輸入電壓0 到3.3V,DSP 通過對採集信號的分析比較,做出正確的判斷,發出動作指令,從而實現線路的過載、短路、接地等故障的保護,並通過Profibus 匯流排發送和接收監控計算機的相關數據,實現遠程監控管理。系統主要有DSP 及其外圍電路、A/D 信號採集與處理電路,液晶顯示電路,電源,脫扣電路等部分構成。DSP 的外圍電路主要包括晶振、濾波迴路、片外RAM 和一些門電路。
2.2 TMS320LF2407A 晶元及其開發環境CCS2.2 簡介
TMS320LF2407A 是基於控制應用而設計的,它將高性能的DSP 內核和豐富的微控制器外設集成於單片中,從而成為傳統的微控制器的理想替代。TMS320LF2407A 控制器的外設包括:
事件管理器、網路介面、A/D 通道模數轉換、SPI 串列外設介面、SCI 串列通信介面、通用雙向I/O 引腳。CCS2.2 是CCS 系列中的最新版本,有很多既方便又強大的功能。包括:支持同時載入多個工程文件;加強了編譯器功能,對語法的檢查更加嚴格;通過建立庫工程,支持編譯函數文件成為庫文件等。
2.3 信號採集電路
本設計採集的信號是四路電流和三路電壓信號,電壓和電流信號都是經過互感器形成的二次側感應電壓。經濾波隔離放大之後形成適合A/D 轉換的電壓范圍,7 路信號經處理後送到
多路電子開關。由於DSP 本身具有A/D 轉換器,所以只需通過DSP 控制電子開關選通所需的各路信號,即可完成對多路信號的採集。
DSP 的A/D 轉換精度為2-10,完全能夠滿足實時採集和高精度要求。設計中利用定時中斷方式進行采樣,要求每1ms 就在3 路電壓和4 路電流信號上各採集一點。
2.4 Profibus-DP匯流排介面模塊
在Profibus-DP匯流排通信過程中,主站循地讀取從站的輸入信息並周期地向從站發送輸出信息。同時,數據的通信是通過主站和從站的監控功能進行監控的。
本系統選用了5I系列單片機DPC932AI來實現Profibus匯流排通信。由於單片機LPC932AI上安裝有增強型Profibus匯流排通信。由於單片機通過通過軟體來模擬Profibus現聲場匯流排協
議。LPC932AI指令執行時間只需167ms,增強型的UART波特率可以使數據在Profibus-DP匯流排傳輸中高達500Kb/s。它允許高述度周期性的數據通信,因此特別適用十對時間要求苛刻的場合。
Profibu-DP介面模塊見圖2,電路主要由三部分組成:模擬匯流排協議處理微控制器LPC932AI、高速光電耦合器6N137和RS485收發器SP3485。
了增強Profibus-DP 匯流排節點的抗干擾能力,LPC932A1的TXD 和RXD 並不是直接與RS-485 收發器SP3485 的TXD和RXD 相連,而是通過高速光電耦合器6N137 後與SP3485 相連,這樣能很好地實現匯流排上各Profibus-DP 節點間的電氣隔離。其中光耦部分電路所採用的2 個電源VCC 和VPP 必須完全隔離,雖然增加了節點的復雜性,但是卻提高了節點的穩定性和安全性。連接至SP3485 上A 引腳的上拉電阻和連接至B引腳的下拉電阻用於保證無連接時的SP3485 晶元處於空閑狀態,提供網路失效保護,以提高RS-485 節點與網路的可靠性。

3 嵌入式系統的軟體設計
3.1 us/OS-II 在2407 上的移植us/OS-II 在2407 實現移植是嵌入式系統軟體設計的關鍵所在, 根據嵌入式實時系統的實際需要, 對OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C 文件進行編寫,對OS_CFG.H 配置的正確設定,如對最低優先順序OS_LOWEST_PRIO、最多任務控制塊OS_MAX_EVENTS、最多任務數OS_MAX_TASKS 進行設置,對需要使用的功能進行選擇置位。
OSStartHighRdy()控制最高優先順序任務的運行,OSCtxSw()用來實現中斷服務子程序、陷阱或異常處理程序的任務切換,OSTickISR()用來實現時鍾節拍功能。
將各種函數編寫好以後,裝載入2407 或外部RAM 中,進行成功移植後,即可在此基礎上進行嵌入式系統的軟體開發。
3.2 智能控制器軟體設計
智能控制器系統軟體設計主要有兩部分:主程序和中斷程序,中斷程序包括定時器采樣中斷、延時保護處理中斷和通訊中斷,其中定時器中斷優先順序高於通訊中斷,以保證定時採集數據並進行相關處理。
軟體採用了匯編語言和高級語言混合編制而成,按功能可分為兩類:一類是執行軟體,完成各種實質性的功能,如測量、計算、顯示等;另一類是監控軟體,採用了模塊化設計技術,便於系統功能擴展和提高程序的可靠性、可維護性,為實現智能控制器的測量、保護、監控和通信等功能,設計了一種多任務操作系統。
主程序流程如圖3 所示。其中主要功能如液晶顯示、保護演算法、濾波演算法、有效值計算、通信的發送和接收、鍵盤輸入設置參數等,由於實時性要求不高,用主循環依次實現。對於實時性要求較高的程序,比如A/D 采樣轉換程序和瞬動保護判斷程序,採用了匯編語言編程,這樣可以加快相關代碼運行的速度,提高系統運行的效率。利用DSP 的A/D 轉換器,每隔1 ms 采樣1 次,完全可以滿足實時性要求,定時采樣中斷程序流程如圖4所示。

智能控制器通過定時采樣中斷和計算獲取主線路的信號,比較是否達到或超過短路瞬時整定值、短延時整定值、過載長延時整定值,作出相應的分斷命令。
3.3 上位監控軟體
設計中,智能斷路器與上位機之間的通訊採用多主方式,即網路上任一節點均可在任意時刻主動地向網路上其他節點發送信息,目的是使智能節點不僅能響應上位機進行數據傳輸,而且能夠定時或在智能節點出現異常時能夠及時主動地向上位機傳送相關信息。上位機採用VB 編程實現了以下功能:實時接收智能斷路器上傳的數據, 包括正常情況下的定時發送和異常情況下的實時發送;隨時讀取下位智能斷路器的數據,即工作人員可從上位監控機上根據需要隨時向下位智能節點發送遠程幀,索取相關數據;具有在線遠程設置相關參數及遠程式控制制斷路器的分、合閘。即實現「四遙」功能。
4 試驗和總結
設計的樣機在企業試驗站進行了現場調試、試驗,如保護特性的測試、上位機和控制器之間的通信以及液晶顯示、測量等,做了大量的運行試驗,取得很好的結果。試驗表明:設計的
智能控制器實現了測量、保護、通信和監控等功能,實時性好,指標達到預期要求。
本文的創新點在於:基於DSP 的新型智能控制器,不僅運行可靠,實時性強,精度高,電磁兼容性好,而且由於採用了us/OS-II 嵌入式實時操作系統,提高了DSP 的運行效率和控制器的可靠性。同時,本文也為us/OS-IIus/OS-II 嵌入式操作系統在電力系統領域的應用開辟了新的空間。
該樣機已通過驗收,預計每年可產生經濟效益100 萬元。

C. 編程器是用來干什麼的

在硬體上,通用編程器的管腳驅動採用具有各種功能的通用結構,只需更新軟體就能支持新的器件,具有很好的靈活性,滿足目前和未來的器件需要。 通常通用編程器鎖緊座的每一個管腳可以用作時鍾信號、數據匯流排、地址匯流排、控制匯流排、地線、電源線、VCCQ電壓、VPP編程電壓、管腳接觸不良測量專用匯流排等等。驅動電壓可以從1.8V-25.0V,起碼分256級可調。通用編程器另外一個重要特點是具有管腳接觸不良檢測功能。平時鎖緊座處於懸空狀態,放入任何IC都不會因為原有的電壓造成短路或者燒壞IC。當進行編程等操作時,通用編程器首先採用獨特的專用匯流排,利用微弱的信號檢測管腳接觸狀況。只有接觸良好才施加所需電壓,並且判斷器件的ID代碼,只有ID代碼正確後才進行編程操作;如果接觸不良,立刻連續圖形顯示接觸不良狀況(UP-48系列產品特有的功能),直到接觸良好才進行操作。 在圖形顯示器件接觸不良的時候,可以形象的看到器件每一個管腳的接觸狀況。特別是器件有一些管腳處於接觸良好與接觸不良之間的狀態,如果不用連續的圖形顯示,例如僅僅一次的數字顯示,是不能很好地發現問題的,UP-48遇到這種情況,與管腳相應的圖形會不斷閃爍,並提示「接觸不良」字樣。與普通非通用編程器相比,通用編程器具有功能升級方便、適配器通用、速度快等優點。同時通用編程器特有的管腳接觸不良檢測功能,有效防止了因為器件放反、部分管腳短路、接觸不良等原因所造成的損失。

D. vpp源碼分析(2) - 入口函數

我們使用: cmake3 --build /mnt/vdb1/vpp/build-root/build-vpp_debug-native/vpp
編譯了 vpp
在次之前執行了 make install-ext-deps ,DPDK各種庫文件已經安裝,模塊已經安裝到了內核,
現在我們要分析一下入口函數。

進入目錄:/mnt/vdb1/vpp/build-root/build-vpp_debug-native/vpp

nm -al bin/vpp 生成符號表,帶源文件地址。
objmp -j .text -Sl bin/vpp --prefix-addresses > debug.info 反匯編,匯編和C語言混合。

上面生成以備後用。
調試使用cgdb.

[root@devel-ng-exporter-225 vpp]# pwd
/mnt/vdb1/vpp/build-root/build-vpp_debug-native/vpp
[root@devel-ng-exporter-225 vpp]# cgdb bin/vpp

/usr/bin/vpp -c /etc/vpp/startup.conf
我們先看一下用戶態程序的參數傳遞規則:

上面程序很精簡,並不復雜得到下面的結果:

設置main程序親和性,main_core默認為1,可在文件中配置。

關於/etc/vpp/startup.conf中參數和使用配置參考: https://fdio-vpp.readthedocs.io/en/latest/gettingstarted/users/configuring/startup.html

設置main程序的親和性:

272│ /* Set up the plugin message ID allocator right now... */
273├> vl_msg_api_set_first_available_msg_id (VL_MSG_FIRST_AVAILABLE);

上面完成:

E. 斐訊n1開機卡在android

GXL:BL1:9ac50e:bb16dc;FEAT:BDFC31BC:0;POC:3;RCY:0;EMMC:0;READ:0;0.0;0.0;CHK:0;

TE: 257051

BL2 Built : 11:58:42, May 27 2017.

gxl gc3c9a84 - xiaobo.gu@droid05

set vdd cpu_a to 1120 mv

set vdd cpu_b to 1050 mv

set vddee to 1000 mv

Board ID = 4

CPU clk: 1200MHz

DQS-corr enabled

DDR scramble enabled

DDR3 chl: Rank0+1 [url=home.php?mod=space&uid=162986]@[/url] 912MHz - PASS

Rank0: 1024MB(auto)-2T-13

Rank1: 1024MB(auto)-2T-13

DataBus test pass!

AddrBus test pass!

-s

Load fip header from eMMC, src: 0x0000c200, des: 0x01400000, size: 0x00004000

aml log : R2048 check pass!

New fip structure!

Load bl30 from eMMC, src: 0x00010200, des: 0x01700000, size: 0x0000d600

aml log : R2048 check pass!

Load bl31 from eMMC, src: 0x00020200, des: 0x01700000, size: 0x0002c600

aml log : R2048 check pass!

Load bl33 from eMMC, src: 0x00050200, des: 0x01700000, size: 0x00053400

aml log : R2048 check pass!

NOTICE: BL3-1: v1.0(release):a625749

NOTICE: BL3-1: Built : 11:25:15, Aug 25 2017

[BL31]: GXL CPU setup!

NOTICE: BL31: BL33 decompress pass

mpu_config_enable:ok

[Image: gxl_v1.1.3243-377db0f 2017-09-07 11:28:58 qiufang.dai@droid07]

OPS=0x04

8d 85 8 c5 d3 cb 99 9e 8c aa b0 61 [0.845055 Inits done]

secure task start!

high task start!

low task start!

ERROR: Error initializing runtime service opteed_fast

U-Boot 2015.01-00010-gfe36fb9 (Mar 02 2018 - 19:00:28)

DRAM: 2 GiB

Relocation Offset is: 76ed9000

register usb cfg[0][1] = 0000000077f5d330

[CANVAS]canvas init

vpu: error: vpu: check dts: FDT_ERR_BADMAGIC, load default parameters

vpu: clk_level = 7

vpu: set clk: 666667000Hz, readback: 666660000Hz(0x300)

vpu: vpu_clk_gate_init_off

vpp: vpp_init

MMC: aml_priv->desc_buf = 0x0000000073ed9640

aml_priv->desc_buf = 0x0000000073edb960

SDIO Port B: 0, SDIO Port C: 1

emmc/sd response timeout, cmd8, status=0x1ff2800

emmc/sd response timeout, cmd55, status=0x1ff2800

init_part() 293: PART_TYPE_AML

[mmc_init] mmc init success

dtb magic 71b104da

aml log : R2048 check pass!

Amlogic multi-dtb tool

Multi dtb detected

Multi dtb tool version: v2 .

Support 2 dtbs.

aml_dt soc: gxl platform: p230 variant: 2g

dtb 0 soc: gxl plat: p230 vari: 1g

dtb 1 soc: gxl plat: p230 vari: 2g

Find match dtb: 1

start dts,buffer=0000000073ede1b0,dt_addr=0000000073ee91b0

Amlogic multi-dtb tool

Multi dtb detected

Multi dtb tool version: v2 .

Support 2 dtbs.

aml_dt soc: gxl platform: p230 variant: 2g

dtb 0 soc: gxl plat: p230 vari: 1g

dtb 1 soc: gxl plat: p230 vari: 2g

Find match dtb: 1

parts: 10

00: logo 0000000002000000 1

01: recovery 0000000002000000 1

02: rsv 0000000000800000 1

03: tee 0000000000800000 1

04: crypt 0000000002000000 1

05: misc 0000000002000000 1

06: boot 0000000002000000 1

07: system 0000000050000000 1

08: cache 0000000020000000 2

09: data ffffffffffffffff 4

init_part() 293: PART_TYPE_AML

eMMC/TSD partition table have been checked OK!

check pattern success

mmc env offset: 0x27400000

In: serial

Out: serial

Err: serial

reboot_mode=cold_boot

hpd_state=1

[1080p60hz] is invalid for cvbs.

set hdmitx VIC = 16

config HPLL = 2970000

HPLL: 0xc000027b

config HPLL done

j = 4 vid_clk_div = 1

hdmitx: set enc for VIC: 16

HDMITX-DWC addr=0x10004006 rd_data=0x40

Error: HDMITX-DWC exp_data=0xff mask=0x9f

rx version is 2.0 div=10

hdmtix: set audio

hdmitx phy setting done

[store]To run cmd[emmc dtb_read 0x1000000 0x40000]

_verify_dtb_checksum()-917: calc 96094b61, store 96094b61

_verify_dtb_checksum()-917: calc 96094b61, store 96094b61

dtb_read()-1039: total valid 2

dtb_read()-1106: do nothing

aml log : R2048 check pass!

Amlogic multi-dtb tool

Multi dtb detected

Multi dtb tool version: v2 .

Support 2 dtbs.

aml_dt soc: gxl platform: p230 variant: 2g

dtb 0 soc: gxl plat: p230 vari: 1g

dtb 1 soc: gxl plat: p230 vari: 2g

Find match dtb: 1

vpp: vpp_pq_load pq val error !!!

Net: Phy 0 not found

dwmac.c9410000amlkey_init() enter!

[EFUSE_MSG]keynum is 4

[BL31]: tee size: 0

Start read misc partition datas!

info->attemp_times = 0

info->active_slot = 0

info->slot_info[0].bootable = 1

info->slot_info[0].online = 1

info->slot_info[1].bootable = 0

info->slot_info[1].online = 0

info->attemp_times = 0

attemp_times = 0

active slot = 0

wipe_data=successful

wipe_cache=successful

upgrade_step=2

[OSD]load fb addr from dts

[OSD]fb_addr for logo: 0x7f851000

[OSD]load fb addr from dts

[OSD]fb_addr for logo: 0x7f851000

[CANVAS]addr=0x7f851000 width=3840, height=2160

amlkey_init() enter!

amlkey_init() 71: already init!

[EFUSE_MSG]keynum is 4

[BL31]: tee size: 0

[BL31]: tee size: 0

[BL31]: tee size: 0

[BL31]: tee size: 0

[BL31]: tee size: 0

[KM]Error:f[key_manage_query_size]L507:key[deviceid] not programed yet

gpio: pin GPIOAO_2 (gpio 102) value is 1

InUsbBurn

noSof

Hit Enter or space or Ctrl+C key to stop autoboot -- : 0

[imgread]szTimeStamp[2018030720035817]

[imgread]secureKernelImgSz=0xd88800

aml log : R-2048 check pass!

aml log : R2048 check pass!

aml log : R2048 check pass!

ee_gate_off ...

mmc env offset: 0x27400000

Writing to MMC(1)... done

## Booting Android Image at 0x01080000 ...

reloc_addr =73f5e400

done

Kernel command line: buildvariant=user

load dtb from 0x1000000 ......

Amlogic multi-dtb tool

Single dtb detected

Uncompressing Kernel Image ... OK

kernel loaded at 0x01080000, end = 0x021d4598

Loading Ramdisk to 73894000, end 73ec7000 ... OK

Loading Device Tree to 000000001fff2000, end 000000001ffff6b8 ... OK

fdt_instaboot: no instaboot image

Starting kernel ...

uboot time: 3883528 us

[ 0.000000@0] Initializing cgroup subsys cpu

[ 0.000000@0] Initializing cgroup subsys cpuacct

[ 0.000000@0] linux version 3.14.29-00007-gff93835 (jenkins@slave2) (gcc version 4.9.3 (Ubuntu/Linaro 4.9.3-13ubuntu2) ) #1 SMP PREEMPT Wed Mar 7 19:32:34 CST 2018

[ 0.000000@0] CPU: AArch64 Processor [410fd034] revision 4

[ 0.000000@0] no prop version_code

[ 0.000000@0] bootconsole [earlycon0] enabled

[ 0.000000@0] Reserved memory: incorrect alignment of CMA region

[ 0.000000@0] [amvecm] pq string error !!!

[ 0.187655@0] genirq: Setting trigger mode 8 for irq 241 failed (gic_set_type+0x0/0xbc)

[ 0.190157@0] genirq: Setting trigger mode 8 for irq 242 failed (gic_set_type+0x0/0xbc)

[ 0.198344@0] genirq: Setting trigger mode 8 for irq 241 failed (gic_set_type+0x0/0xbc)

[ 0.206249@0] genirq: Setting trigger mode 8 for irq 242 failed (gic_set_type+0x0/0xbc)

domain-0 init dvfs: 4

[ 0.228385@0] tv_vout: chrdev devno 266338304 for disp

[ 0.242559@0] 1507 node need 400ms

[ 0.927350@0] Initramfs unpacking failed: junk in compressed archive

[ 1.020166@1] mtdoops: mtd device (mtddev=name/number) must be supplied

[ 1.150815@1] amlogic-new-usb3 d0078080.usb3phy: This phy has no usb port

[ 1.157031@1] ATVR driver - init called!

[ 1.166026@0] get_storage_dev return 1

[ 1.305368@1] DI-di_probe: get flag_cma error.

[ 1.307366@1] PPMGRDRV: err: ppmgr_driver_probe called

efuse_pw_en: 0x7

WARNING! efuse bits is disabled

Enable A53 JTAG to AO

[ 1.338469@1] cectx aocec: no hdmirx reg resource

[ 1.338498@1] cectx aocec: no hhi reg resource

[ 1.557834@1] aml_snd_m8_card aml_m8_snd.47: ASoC: no source widget found for LOUTL

[ 1.559838@1] aml_snd_m8_card aml_m8_snd.47: ASoC: Failed to add route LOUTL -> direct -> Ext Spk

[ 1.568717@1] aml_snd_m8_card aml_m8_snd.47: ASoC: no source widget found for LOUTR

[ 1.576247@1] aml_snd_m8_card aml_m8_snd.47: ASoC: Failed to add route LOUTR -> direct -> Ext Spk

相關資源:adb工具+USB調試驅動.zip_usb調試驅動-其它工具類資源-CSDN文庫
點擊閱讀全文
打開CSDN,閱讀體驗更佳

參與評論 請先 登錄 後發表或查看評論
智能家居-斐訊N1安裝篇_ITPaint的博客
2、 開啟ADB調試 N1 用 HDMI 連顯示器,正常開機後用滑鼠點擊斐訊 N1 官方固件的那個版本號 4 次,出現 【ADB調試開啟】的字樣即可,如下圖 3、選擇2,N1降級 4、輸入 .\fastboot.exe reboot 重啟設備 二、刷入官改 1、安裝USB燒...
斐訊N1救磚指南!值得收藏_ITPaint的博客_n1救磚
一、准備工作 1、拆除底部四個螺,在膠墊下面 2、下載刷機工具USB_Burning_Tool 3、 二、刷機流程 1、打開刷機工具導入N1官改固件包,等待載入完成 2、去除 擦除flash 擦除bootloader 兩個勾選。 3、連接USB雙公線,短接如下圖兩個...
斐訊n1卡在android,斐訊N1,看本地高清電影請務必刷coreelec
斐訊N1,看本地高清電影請務必刷coreelec2019-10-11 18:38:5149點贊461收藏94評論kodi很多人都知道也在使用,但是很多朋友並不清楚coreelec下的kodi,和安卓盒子上的kodi到底有什麼區別。以至於很多買了n1的朋友,覺得安卓上面的kodi也一般般。簡單地說:coreelec是一個linux系統,約等於你買了一台電腦,安裝了操作系統,上面只運行kodi,kod...
繼續訪問
斐訊N1變磚終於有救了,使用ddbr恢復官改系統救磚方法
斐訊 N1 使用 ddbr 恢復官改系統 ddbr 官改鏡像下載: 鏈接: https://pan..com/s/1IRPeEeyrdcGyAaaMDfo5kw 提取碼: c388 首先按照步驟製作一個能夠從 U 盤正常啟動的 arm­bian 系統,進入後系統後執行指令 ddbr 首先輸入 b(backup),在進度條開始後即可 Ctrl+C 取消。這樣可以獲取到 ddbr 備份的文件的名稱(不同版本的 Arm­bian 備份出來的包名有不同) 打開 winscp 用 sftp 加你的 ssh
繼續訪問

斐訊N1 – 完美刷機Armbian教程_Jeans Liu的博客
為了讓斐訊N1的各個硬體可以被armbian正常調度,所以需要給斐訊N1適配一套dtb文件。 dtb文件需要隨著內核編譯,所以不同armbian內核版本必須使用配套的dtb文件。 目前斐訊N1的dtb文件已經被armbian收錄到官方源碼庫里,但是使用的時候linux負載會顯...
N1刷Android TV,貧民種草指北 篇二:N1盒子:不談刷機,只談使用!_眠子子 ...
最後,不推薦連滑鼠,藍牙滑鼠成本高。有線麻煩;手機app控制,電視盒子系統聽說可以下載斐訊遙控控制(未測試成功),coreelec可以通過skbu for kodi控制(實測ok,使用也還ok),手機和N1處於同一區域網,打開app自動連接。操作比較全如下圖。
HP伺服器放電後進不了系統,遇到奇怪的問題,armbian系統 reboot之後 卡在開機界面 進不去系統 斷電重啟正常...
GXL:BL1:9ac50e:bb16dc;FEAT:BDFC31BC:0;POC:3;RCY:0;EMMC:0;READ:0;0.0;0.0;CHK:0;TE: 483967BL2 Built : 11:58:42, May 27 2017.gxl gc3c9a84 - xiaobo.gu@droid05set vdd cpu_a to 1120 mvset vdd cpu_b to 1050 ...
繼續訪問
arm linux開機第一屏,小白求助大神T1刷機提示成功,但開機卡在斐訊白屏界面。...
本帖最後由 taczgk 於 2020-5-28 10:42 編輯請大神幫幫忙,我的斐訊T1盒子原來用的YYF系統,刷了W大3.0和3.5系統都是開機卡在斐訊界面,刷YYF系統就卡在安卓機器人界面,打勾救磚模式都提示錯誤:[0x00101004]擦除bootloader/USB限流/設備識別/命令結果返回錯誤,不打勾的話,刷機提示刷機成功,電腦也可以識別,刷完就卡在開機界面,無法聯網無法ADB,求...
繼續訪問
斐訊 N1 降級、刷機及 Armbian 安裝 [2019.7.23]
最前 最近撿垃圾不斷,之前購買了斐訊遺產 K2P(真香,最近刷了 OpenWrt)、T1(刷了電視盒子)和蝸牛星際(刷了黑群暉),最近又撿了台斐訊 N1,主要用於做一些簡單的爬蟲和 Adguard Home 服務。其實原先有過一台樹莓派 3B,但是 emmmm 吃灰了一年,然後二手賣了。雖然近期樹莓派 4 發布了,性能有較大提升,但由於價格的原因,還是 N1 香。刷機過程由於已有的幾篇文章有些內容...
繼續訪問

手機開機卡在android畫面,手機一直停在開機畫面怎麼解決【圖文】
手機我相信人們不會不知道,這幾年手機的發展速度非常地快,不知道大家平時使用手機的過程之中出現一些故障沒有,相信大多數的用戶是碰到過的,但是我相信大多數的手機用戶是不會解決碰到的故障的。大家平時遇到最對的故障是什麼呢?手機開機後一直停在開機界面這種情況相信大家都經歷過吧!今天小編就教教大家如何解決這種故障。手機開機後一直停在開機界面怎麼辦top1:長按電源鍵12S左右重啟手機手機在執行系統升級,刷機...
繼續訪問
最新發布 PHICOMM(斐訊)N1盒子 - recovery模式救磚卡登錄頁LOGO卡1%卡4%卡26%
PHICOMM(斐訊)N1盒子recovery模式救磚卡登錄頁LOGO卡1%卡4%卡26% 卡1%:需要先刷入T1_1.3T47_mod_by_webpad_v3_20180419_2.img救磚包,再重新刷 卡4%:USB供電不足。使用台式機或USB加5V(如帶供電的USB分線器) 卡26%:換不卡的包,如RUSH的包...
繼續訪問
Initramfs unpacking failed:junk in compressed archive
使用kvm創建自定義鏡像後重裝雲主機啟動報錯如下: 解決辦法: 重做鏡像,內存原來的2047MB改成了1024MB,其實也不知道對不對,反正做了好幾遍最後一次好了。
繼續訪問

機頂盒ttl無法輸入_請教大神,機頂盒接TTL進不了uboot模式
本帖最後由 cgl4134 於 2019-12-24 00:13 編輯更新一下... 自己剛開始折騰機頂盒,好多地方都搞不太懂.. 正在學習中..這個uboot 跟刷機包有關系,換了個潛龍的線刷包,就可以進uboot了,,不過現在uboot好像讓我搞壞了, uboot模式下, usb_update system 會失敗..歡迎其他小白交流學習----------------------------...
繼續訪問
關於解決 inittramfs unpacking failed:Decoding failed 報錯
解決辦法 vi /etc/initramfs-tools/initramfs.conf 更改COMPRESS=lz4以COMPRESS=gzip 保存更改 sudo update-initramfs -u
繼續訪問
armbian 斐訊n1_記錄一下斐訊N1盒子刷Armbian的各種坑
最近搞了一個斐訊N1盒子,准備拿來刷Armbian,也就是linux。armbian使用了AArch64架構,也就是說,是armv8,安裝nodejs時注意下載armv8的版本。斐訊N1盒子自帶的系統是安卓系統,版本是V2.2,刷機主要參考的教程在這里:https://www.uselys.com/archives/85.html第一步,需要將盒子的系統版本降級到V2.19,方便後面刷入系統。首先...
繼續訪問
HDMI相關
HDMI相關基礎4.4 與 9.0 差異AVMUTE 的使用hdcp異常檢查 HDCP 交互:檢查 ksv(視頻加密密鑰):HDCP 的內部檢測:顯示模式分析查看是否已連接電視機查看當前顯示模式更改當前顯示解析度查看 EDID 信息查看顯示設備的 EDID 信息查看電視機支持的最佳解析度Android 系統對 HDMI 輸出制式的設置1. 查看當前輸出制式的節點命令:2. 輸出制式在 Framework 層的代碼位置:主要介面說明最優解析度、顏色空間、色深的配置使用 HDMI Bist 模式驗證 HDMI
繼續訪問
斐訊n1刷鴻蒙系統,【總結】在N1上面成功刷入armbian並啟動的步驟
本帖最後由 ruojiner 於 2018-6-25 00:08 編輯用的是Armbian_5.44_S9xxx_Debian_stretch_3.14.29_server_20180601.img.xz這個鏡像。TIM圖片20180624230645.png (48.41 KB, 下載次數: 398)2018-6-24 23:22 上傳TIM圖片20180624230657.png (18.02...
繼續訪問

Linux學習筆記—驅動篇(一)
註:以下驅動只是均以GEC6818開發板為例進行撰寫 要想寫驅動我們得先了解什麼是u-boot 一、什麼是u-boot ? Boot,全稱 Universal Boot Loader,是遵循GPL條款的開放源碼項目。U-Boot的作用是系統引導。U-Boot從FADSROM、8xxROM、PPCBOOT逐步發展演化而來。其源碼目錄、編譯形式與Linux內核很相似,事實上,不少U-Boot源碼就是...
繼續訪問

linux initramfs啟動原理
當linux選擇支持initramfs方式啟動,並且在initramfs source file中選擇了要打包的rootfs路徑以後,則會嘗試以initramfs方式啟動。initramfs方式會對rootfs進行壓縮,和linux kernel打包在同一個鏡像文件中。然後系統載入的時候uboot會把整個鏡像文件都載入到內存中。以該種方式載入的rootfs,是沒辦法修改flash中rootfs的數...
繼續訪問

n1盒子救磚_斐訊N1盒子刷機救磚教程
https://codess.cc/archives/108.html自從斐訊0元購的車翻了之後,咸魚上的斐訊產品也非常多,從路由器到空氣凈化器再到礦機。前幾天我在撕逼魚收了兩個斐訊N1盒子,這東西原來是挖礦的,礦場坍塌倒閉之後,礦老闆們大量甩賣礦機,有的甚至是全新未拆...大概70塊左右包郵的價格,配置一點也不低,比市面上絕大多數的電視盒子的配置都高。最重要的是,它能解碼4K! 解碼真4K! 單...
繼續訪問
Kernel啟動時間優化
1、問題描述 Linux的內核用的是3.14版本。UI層跑的是類似Qt的系統。目前Kernel從啟動到init進程大概需要3.5秒時間,另外到載入U盤需要7.5秒左右時間。 由於Bootloader執行過程很快,所以不是本次需要優化的目標。 系統原始的Kernel啟動部分Log如下: 15:29:01.552: [ 0.000000]Linux version 3.14.19 (g
繼續訪問
熱門推薦 N1救磚總結帖
一、正常降級刷固件的教程在恩山論壇蠻多的就不多贅述了 正常刷機教程-來自恩山 二、變磚原因: 1.刷錯T1等非N1的固件 2.刷機過程中由於各種原因斷開了USB連接線(我就是手欠用的USB-Hub連接沒有固定好) 三、變磚現象 四、救磚方法 ①有用焊接使用TTL直刷的,這種成本高,要求也高,還麻煩,暫不考慮,有興趣去恩山看下帖子就好 ②我抄作業學到的: 需要的軟體:USB_Burning_To...
繼續訪問

斐訊n1開機卡在android
斐訊n1卡在android

F. 學生科研單片機需要哪些硬體哦

1. VCC(40):電源+5V。

2. VSS(20):接地,也就是GND。

3. XTL1(19)和XTL2(18):振盪電路。

單片機是一種時序電路,必須有脈沖信號才能工作,在它的內部有一個時鍾產生電路,有兩種振盪方式,一種是內部振盪方式,只要接上兩個電容和一個晶振即可;另一種是外部振盪方式,採用外部振盪方式時,需在XTL2 上加外部時鍾信號(詳細的內容將在以後的課程中專門介紹)。

4. PSEN(29):片外ROM 選通信號,低電平有效。

5. ALE/PROG(30):地址鎖存信號輸出端/EPROM 編程脈沖輸入端。

至於它們的作用我們暫時不去管它,等以後學到相關的知識時再來研究它。這也許就是本教程區別於其他教材的最大特點----先實踐後理論,盡量用實驗結果來總結理論知識,因為單片機是一種通用的產品,它的功能設計是為了滿足大多數使用者的要求,換句話說,不同的使用者只會使用其相關的功能,幾乎不可能把全部的功能都用起來,因此我們完全不必象學習其他電子技術那樣,把單片機的全部知識都搞懂了再去開發產品。這話前面好象說過了!

6. RST/VPD(9):復位信號輸入端/備用電源輸入端。

什麼是復位信號,為什麼要加復位信號?當然也暫時不去管它。

7. EA/VPP(31):內/外部ROM 選擇端。

在30、9 腳的功能上不知大家注意沒有,都有一個/,什麼意思呢?這是引腳的第二功能,也就是說,該引腳既可以作前面的功能,也可以作後面的功能,至於它是如何工作的,我們暫時也別去研究它。

8. P0 口(39-32):雙向I/O 口。

9. P1 口(1-8):准雙向通用I/0 口。

10. P2 口(21-28):准雙向I/0 口。

11. P3 口(10-17):多用途口。

I/O 就是英文IN/OUT 的縮寫,這些引腳的功能想必大家也都明白了,(就是輸入/輸出的意思),這32 個I/O 口就是留給我們作連接外圍電路用的,那麼它們之間有些什麼不同呢?這個問題稍微有點復雜,我們將在以後的課程中專門來學習。現在我們先來往下看:

二.單片機的電路連接和開發過程

看附圖,這就是我們做實驗用的電路圖,想必大家都能看得懂吧。接下來就讓我們通過一個實驗來看看單片機是如何工作的?我們的實驗是讓一個LED 燈亮起來,亮哪一個?這就隨便你了,比如我們就讓LED1 亮起來吧,仔細看一下電路圖,LED1 接在什麼地方呢?接在單片機的P1.0 的引腳(也就是1腳)上,那麼按照該電路圖的連接方法,當1 腳為高電平時,LED1 是不亮的;只有當1 腳為低電平時,LED1 才會亮起來,怎樣才能讓1 腳由高電平變為低電平呢?我們讓人做事,就必須對她說一聲,也就是發布命令,想讓單片機工作,也得發布命令,不過在計算機中那叫指令,我們要讓1 腳變為低電平的指令是CLR P1.0(讓1 腳變為高電平的指令是SETB P1.0),這就是我們通常所說的源代碼,(這是我們開發產品的第一步—源代碼編輯);怎麼做呢?我們首先得打開實驗軟體,屏幕出現一個瀏覽器的軟體窗口,點擊左邊的擴展實驗,選中實驗16—自動溫度控制器,再點擊工具欄里的調試按鈕,彈出一個記事本對話框,寫入CLR P1.0;(?分號必須在英文狀態下輸入),輸入完畢後選擇文件→保存即可;

那麼單片機能讀懂這條指令嗎?當然不能,接下來我們還有一件事情要做,就是把這句指令翻譯成單片機能讀懂的東西,單片機能讀懂什麼呢?它其實只懂一樣--就是數字,因此,我們就把CLR P1.0 翻譯成C2H,90H,至於為什麼要翻譯成這樣,這當然是INTEL 公司規定好的,我們就不需要去研究它了。這個過程我們叫作編譯,(這是我們開發產品的第二步),那麼指令是怎麼編譯過來的呢?這就得靠專業的軟體了,我們做實驗使用的軟體就有此功能,只要點擊工具欄上的編譯按鈕,稍等片刻即出現一個編譯信息窗口,如果編譯通過就會有編譯完成,結果如下:0 個警告,0 個錯誤的編譯信息,如果編譯錯誤則會出現編譯錯誤的信息,並提示錯誤的行號;編譯完了之後通常要進行程序模擬(這是第三步),當然我們的實驗程序很簡單是不需要模擬的;接下來怎麼才能把編譯通過的指令寫入單片機中呢?這通常需要藉助於一種硬體工具,叫編程器(也叫燒錄器),不過我們的實驗板採用的是具有串列下載功能的單片機,所以您只要直接點擊快捷工具欄上的下載按鈕,程序就進入了實驗板(這是第四步—編程)。

自此就完成了單片機開發的全過程。

全部工作結束後,我們看到了什麼?接P1.0(1 腳)的LED1 亮了起來;改變源代碼,變成SETB P1.0;

進行編譯,下載,看看結果是不是LED1 不亮了。怎麼樣,不難吧!!!

最後讓我們來思考一個問題,當我們用編程器把編譯後的指令寫入單片機時,單片機就開始執行這條指令,那麼這條指令就一定在單片機內部的某個地方,它究竟在哪裡呢?單片機的內部結構又是怎麼樣的呢?這將是我們第三課要討論的內容—單片機的內部結構(一)??半導體存儲器。

G. AT89C51和AT89S51的區別

AT89C51是一種帶4K位元組閃爍可編程可擦除只讀存儲器(FPEROM—)的低電壓,高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K位元組閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除100次。該器件採用ATMEL高密度非易失存儲器製造技術製造,與工業標準的MCS-51指令集和輸出管腳相兼容。由於將多功能8位CPU和閃爍存儲器組合在單個晶元中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。外形及引腳排列如圖所示

[編輯本段]主要特性:

·與MCS-51兼容

·4K位元組可編程閃爍存儲器

·壽命:1000寫/擦循環

·數據保留時間:10年

·全靜態工作:0Hz-24MHz

·三級程序存儲器鎖定

·128×8位內部RAM

·32可編程I/O線

·兩個16位定時器/計數器

·5個中斷源

·可編程串列通道

·低功耗的閑置和掉電模式

·片內振盪器和時鍾電路

管腳說明:

VCC:供電電壓。

GND:接地。

P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用於外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。

P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1後,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由於內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。

P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫「1」時,其管腳被內部上拉電阻拉高,且作為輸入。並因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由於內部上拉的緣故。P2口當用於外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址「1」時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。

P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入「1」後,它們被內部上拉為高電平,並用作輸入。作為輸入,由於外部下拉為低電平,P3口將輸出電流(ILL)這是由於上拉的緣故。

P3口也可作為AT89C51的一些特殊功能口,如下表所示:

口管腳備選功能

P3.0RXD(串列輸入口)

P3.1TXD(串列輸出口)

P3.2/INT0(外部中斷0)

P3.3/INT1(外部中斷1)

P3.4T0(記時器0外部輸入)

P3.5T1(記時器1外部輸入)

P3.6/WR(外部數據存儲器寫選通)

P3.7/RD(外部數據存儲器讀選通)

P3口同時為閃爍編程和編程校驗接收一些控制信號。

RST:復位輸入。當振盪器復位器件時,要保持RST腳兩個機器周期的高電平時間。

ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用於鎖存地址的地位位元組。在FLASH編程期間,此引腳用於輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振盪器頻率的1/6。因此它可用作對外部輸出的脈沖或用於定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。

/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。

/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用於施加12V編程電源(VPP)。

XTAL1:反向振盪放大器的輸入及內部時鍾工作電路的輸入。

XTAL2:來自反向振盪器的輸出。

振盪器特性:

XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內振盪器。石晶振盪和陶瓷振盪均可採用。如採用外部時鍾源驅動器件,XTAL2應不接。有餘輸入至內部時鍾信號要通過一個二分頻觸發器,因此對外部時鍾信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。

晶元擦除:

整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,並保持ALE管腳處於低電平10ms來完成。在晶元擦操作中,代碼陣列全被寫「1」且在任何非空存儲位元組被重復編程以前,該操作必須被執行。

此外,AT89C51設有穩態邏輯,可以在低到零頻率的條件下靜態邏輯,支持兩種軟體可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數器,串口和中斷系統仍在工作。在掉電模式下,保存RAM的內容並且凍結振盪器,禁止所用其他晶元功能,直到下一個硬體復位為止。

串口通訊

單片機的結構和特殊寄存器,這是你編寫軟體的關鍵。至於串口通信需要用到那些特殊功能寄存器呢,它們是SCON,TCON,TMOD,SCON等,各代表什麼含義呢?

SBUF數據緩沖寄存器這是一個可以直接定址的串列口專用寄存器。有朋友這樣問起過「為何在串列口收發中,都只是使用到同一個寄存器SBUF?而不是收發各用一個寄存器。」實際上SBUF包含了兩個獨立的寄存器,一個是發送寄存,另一個是接收寄存器,但它們都共同使用同一個定址地址-99H。CPU在讀SBUF時會指到接收寄存器,在寫時會指到發送寄存器,而且接收寄存器是雙緩沖寄存器,這樣可以避免接收中斷沒有及時的被響應,數據沒有被取走,下一幀數據已到來,而造成的數據重疊問題。發送器則不需要用到雙緩沖,一般情況下我們在寫發送程序時也不必用到發送中斷去外理發送數據。操作SBUF寄存器的方法則很簡單,只要把這個99H地址用關鍵字sfr定義為一個變數就可以對其進行讀寫操作了,如sfrSBUF=0x99;當然你也可以用其它的名稱。通常在標準的reg51.h或at89x51.h等頭文件中已對其做了定義,只要用#include引用就可以了。

SCON串列口控制寄存器通常在晶元或設備中為了監視或控制介面狀態,都會引用到介面控制寄存器。SCON就是51晶元的串列口控制寄存器。它的定址地址是98H,是一個可以位定址的寄存器,作用就是監視和控制51晶元串列口的工作狀態。51晶元的串口可以工作在幾個不同的工作模式下,其工作模式的設置就是使用SCON寄存器。它的各個位的具體定義如下:

SM0SM1SM2RENTB8RB8TIRI

SM0、SM1為串列口工作模式設置位,這樣兩位可以對應進行四種模式的設置。串列口工作模式設置。

SM0SM1模式功能波特率

000同步移位寄存器fosc/12

0118位UART可變

1029位UARTfosc/32或fosc/64

1139位UART可變

在這里只說明最常用的模式1,其它的模式也就一一略過,有興趣的朋友可以找相關的硬體資料查看。表中的fosc代表振盪器的頻率,也就是晶振的頻率。UART為(UniversalAsynchronousReceiver)的英文縮寫。

SM2在模式2、模式3中為多處理機通信使能位。在模式0中要求該位為0。

REM為允許接收位,REM置1時串口允許接收,置0時禁止接收。REM是由軟體置位或清零。如果在一個電路中接收和發送引腳P3.0,P3.1都和上位機相連,在軟體上有串口中斷處理程序,當要求在處理某個子程序時不允許串口被上位機來的控制字元產生中斷,那麼可以在這個子程序的開始處加入REM=0來禁止接收,在子程序結束處加入REM=1再次打開串口接收。大家也可以用上面的實際源碼加入REM=0來進行實驗。

TB8發送數據位8,在模式2和3是要發送的第9位。該位可以用軟體根據需要置位或清除,通常這位在通信協議中做奇偶位,在多處理機通信中這一位則用於表示是地址幀還是數據幀。

RB8接收數據位8,在模式2和3是已接收數據的第9位。該位可能是奇偶位,地址/數據標識位。在模式0中,RB8為保留位沒有被使用。在模式1中,當SM2=0,RB8是已接收數據的停止位。

TI發送中斷標識位。在模式0,發送完第8位數據時,由硬體置位。其它模式中則是在發送停止位之初,由硬體置位。TI置位後,申請中斷,CPU響應中斷後,發送下一幀數據。在任何模式下,TI都必須由軟體來清除,也就是說在數據寫入到SBUF後,硬體發送數據,中斷響應(如中斷打開),這時TI=1,表明發送已完成,TI不會由硬體清除,所以這時必須用軟體對其清零。

RI接收中斷標識位。在模式0,接收第8位結束時,由硬體置位。其它模式中則是在接收停止位的半中間,由硬體置位。RI=1,申請中斷,要求CPU取走數據。但在模式1中,SM2=1時,當未收到有效的停止位,則不會對RI置位。同樣RI也必須要靠軟體清除。常用的串口模式1是傳輸10個位的,1位起始位為0,8位數據位,低位在先,1位停止位為1。它的波特率是可變的,其速率是取決於定時器1或定時器2的定時值(溢出速率)。AT89C51和AT89C2051等51系列晶元只有兩個定時器,定時器0和定時器1,而定時器2是89C52系列晶元才有的。

波特率在使用串口做通訊時,一個很重要的參數就是波特率,只有上下位機的波特率一樣時才可以進行正常通訊。波特率是指串列埠每秒內可以傳輸的波特位數。有一些初學的朋友認為波特率是指每秒傳輸的位元組數,如標准9600會被誤認為每秒種可以傳送9600個位元組,而實際上它是指每秒可以傳送9600個二進位,而一個位元組要8個二進位,如用串口模式1來傳輸那麼加上起始位和停止位,每個數據位元組就要佔用10個二進位,9600波特率用模式1傳輸時,每秒傳輸的位元組數是9600÷10=960位元組。51晶元的串口工作模式0的波特率是固定的,為fosc/12,以一個12M的晶振來計算,那麼它的波特率可以達到1M。模式2的波特率是固定在fosc/64或fosc/32,具體用那一種就取決於PCON寄存器中的SMOD位,如SMOD為0,波特率為focs/64,SMOD為1,波特率為focs/32。模式1和模式3的波特率是可變的,取決於定時器1或2(52晶元)的溢出速率。那麼我們怎麼去計算這兩個模

式的波特率設置時相關的寄存器的值呢?可以用以下的公式去計算。

波特率=(2SMOD÷32)×定時器1溢出速率

上式中如設置了PCON寄存器中的SMOD位為1時就可以把波特率提升2倍。通常會使用定時器1工作在定時器工作模式2下,這時定時值中的TL1做為計數,TH1做為自動重裝值,這個定時模式下,定時器溢出後,TH1的值會自動裝載到TL1,再次開始計數,這樣可以不用軟體去干預,使得定時更准確。在這個定時模式2下定時器1溢出速率的計算公式如下:

溢出速率=(計數速率)/(256-TH1)

上式中的「計數速率」與所使用的晶體振盪器頻率有關,在51晶元中定時器啟動後會在每一個機器周期使定時寄存器TH的值增加一,一個機器周期等於十二個振盪周期,所以可以得知51晶元的計數速率為晶體振盪器頻率的1/12,一個12M的晶振用在51晶元上,那麼51的計數速率就為1M。通常用11.0592M晶體是為了得到標準的無誤差的波特率,那麼為何呢?計算一下就知道了。如我們要得到9600的波特率,晶振為11.0592M和12M,定時器1為模式2,SMOD設為1,分別看看那所要求的TH1為何值。代入公式:

11.0592M

9600=(2÷32)×((11.0592M/12)/(256-TH1))

TH1=250

12M

9600=(2÷32)×((12M/12)/(256-TH1))

TH1≈249.49

上面的計算可以看出使用12M晶體的時候計算出來的TH1不為整數,而TH1的值只能取整數,這樣它就會有一定的誤差存在不能產生精確的9600波特率。當然一定的誤差是可以在使用中被接受的,就算使用11.0592M的晶體振盪器也會因晶體本身所存在的誤差使波特率產生誤差,但晶體本身的誤差對波特率的影響是十分之小的,可以忽略不計。

AT89S51是一個低功耗,高性能CMOS8位單片機,片內含4kBytesISP(In-systemprogrammable)的可反復擦寫1000次的Flash只讀程序存儲器,器件採用ATMEL公司的高密度、非易失性存儲技術製造,兼容標准MCS-51指令系統及80C51引腳結構,晶元內集成了通用8位中央處理器和ISPFlash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統提供高性價比的解決方案。

AT89S51具有如下特點:40個引腳,4kBytesFlash片內程序存儲器,128bytes的隨機存取數據存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優先順序2層中斷嵌套中斷,2個16位可編程定時計數器,2個全雙工串列通信口,看門狗(WDT)電路,片內時鍾振盪器。

此外,AT89S51設計和配置了振盪頻率可為0Hz並可通過軟體設置省電模式。空閑模式下,CPU暫停工作,而RAM定時計數器,串列口,外中斷系統可繼續工作,掉電模式凍結振盪器而保存RAM的數據,停止晶元其它功能直至外中斷激活或硬體復位。同時該晶元還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產品的需求。

1.主要特性:

•8031CPU與MCS-51兼容

•4K位元組可編程FLASH存儲器(壽命:1000寫/擦循環)

•全靜態工作:0Hz-24KHz

•三級程序存儲器保密鎖定

•128*8位內部RAM

•32條可編程I/O線

•兩個16位定時器/計數器

•6個中斷源

•可編程串列通道

•低功耗的閑置和掉電模式

•片內振盪器和時鍾電路

2.管腳說明:

VCC:供電電壓。

GND:接地。

P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用於外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。

P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1後,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由於內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。

P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫「1」時,其管腳被內部上拉電阻拉高,且作為輸入。並因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由於內部上拉的緣故。P2口當用於外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址「1」時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。

P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入「1」後,它們被內部上拉為高電平,並用作輸入。作為輸入,由於外部下拉為低電平,P3口將輸出電流(ILL)這是由於上拉的緣故。

P3.0RXD(串列輸入口)

P3.1TXD(串列輸出口)

P3.2/INT0(外部中斷0)

P3.3/INT1(外部中斷1)

P3.4T0(記時器0外部輸入)

P3.5T1(記時器1外部輸入)

P3.6/WR(外部數據存儲器寫選通)

P3.7/RD(外部數據存儲器讀選通)

P3口同時為閃爍編程和編程校驗接收一些控制信號。

I/O口作為輸入口時有兩種工作方式即所謂的讀埠與讀引腳讀埠時實際上並不從外部讀入數據而是把埠鎖存器的內容讀入到內部匯流排經過某種運算或變換後再寫回到埠鎖存器只有讀埠時才真正地把外部的數據讀入到內部匯流排上面圖中的兩個三角形表示的就是輸入緩沖器CPU將根據不同的指令分別發出讀埠或讀引腳信號以完成不同的操作這是由硬體自動完成的不需要我們操心1然後再實行讀引腳操作否則就可能讀入出錯為什麼看上面的圖如果不對埠置1埠鎖存器原來的狀態有可能為0Q端為0Q^為1加到場效應管柵極的信號為1該場效應管就導通對地呈現低阻抗,此時即使引腳上輸入的信號為1也會因埠的低阻抗而使信號變低使得外加的1信號讀入後不一定是1若先執行置1操作則可以使場效應管截止引腳信號直接加到三態緩沖器中實現正確的讀入由於在輸入操作時還必須附加一個准備動作所以這類I/O口被稱為准雙向口89C51的P0/P1/P2/P3口作為輸入時都是准雙向口接下來讓我們再看另一個問題從圖中可以看出這四個埠還有一個差別除了P1口外P0P2P3口都還有其他的功能

RST:復位輸入。當振盪器復位器件時,要保持RST腳兩個機器周期的高電平時間。

ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用於鎖存地址的地位位元組。在FLASH編程期間,此引腳用於輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振盪器頻率的1/6。因此它可用作對外部輸出的脈沖或用於定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。

/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。

/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用於施加12V編程電源(VPP)。

XTAL1:反向振盪放大器的輸入及內部時鍾工作電路的輸入。

XTAL2:來自反向振盪器的輸出。

閱讀全文

與vpp源碼編譯相關的資料

熱點內容
麗水四軸加工中心編程 瀏覽:689
國產系統怎麼解壓 瀏覽:552
戰雙程序員 瀏覽:483
him觸摸編程軟體 瀏覽:931
植物大戰僵屍存檔怎麼轉移安卓 瀏覽:852
java棧的元素 瀏覽:737
程序員與籃球事件 瀏覽:675
app反編譯不完整 瀏覽:788
電腦上的文件夾怎麼調整 瀏覽:7
伺服器無響應是什麼原因呀 瀏覽:984
wd文檔里的app怎麼製作 瀏覽:513
電腦里的文件夾沒有了一般能恢復嗎 瀏覽:418
哪裡有配加密鑰匙的 瀏覽:210
伺服器開不了機怎麼把數據弄出來 瀏覽:958
gif動態圖片怎麼壓縮 瀏覽:521
黑猴子棒球壓縮文件解壓密碼 瀏覽:631
如何讓app適應不同的手機屏幕大小 瀏覽:10
蘋果手機如何給安卓手機分享軟體 瀏覽:761
蘋果電腦怎麼運行騰訊雲伺服器 瀏覽:59
明日之後沙石堡命令助手 瀏覽:261