我們在學習stm32到一定階段可能會了解操作系統,然后便有這種問題產生,下面我就來粗略說說“操作系統與裸機的區別,以及stm32能運行什么操作系統,能運行linux系統嗎”等問題。
操作系統與裸機的區別
裸機運行的程序代碼,一般由一個main函數中的while死循環和各種中斷服務程序組成,平時CPU執行while循環中的代碼,出現其他事件時,跳轉到中斷服務程序進行處理,沒有多任務、線程的概念。
而引入操作系統后,程序執行時可以把一個應用程序分割為多個任務,每個任務完成一部分工作,并且每個任務都可以寫成死循環。操作系統根據任務的優先級,通過調度器是CPU分時執行各個任務,保證每個任務都能夠得到運行。若調度方法優良,則可使個任務看起來是并行執行的,減少了CPU的空閑時間,提高了CPU的利用率。由操作系統的任務管理衍生出相應的CPU管理、內存管理,它們分別負責分配任務對CPU的占有權和管理任務所占有的內存空間。在linux操作系統中,還具有文件管理、I/O設備管理的功能。
stm32能運行什么操作系統,能運行linux系統嗎?
首先操作系統有兩種:一種是用MMU(Memory
Managenent Unit ,即存儲管理單元)的,另一種是不用MMU的。
用MMU的是Windows、 MacOS、 Linux 、Android;
不用MMU的是FreeRTOS 、VxWorks 、 ucLinux、uc/OS.
其次CPU也有有兩種 :帶MMU的和不帶MMU的。
帶MMU的有 Cortex-A、ARM9 、ARM11系列。不帶MMU的有 Cortex-M系列
而我們知道STM32是 Cortex-M3系列的…所以目前還不可能運行Linux操作系統,但是stm32可以運行uc/OS、ucLinux、FreeRTOS 、VxWorks等操作系統。其中uc/OS操作系統是開源代碼,且小巧而嚴謹,具有很高的實時性,可以作為學習linux等高級操作系統的基礎,實際項目中也經常使用uc/OS開發。