我最開始接觸的是STM32,之前也沒有接觸過51,記得那會對於電腦的一切都是陌生的,在大一買32開發板的時候還要猶豫好久好久,因爲我看好多人都在說,「學習微控制器要從51開始學起,32太難了」,我覺得我不怕難,接觸接觸就好了嘛。在寒假回家的高鐵路上,下決心買了野火的一套完整的開發板,大概是768元,這對於那會的我來說是一個大數目了。我下決心要學好這個32,可是一直有各種的事情,幾乎就是匆匆的看過,一點兒都不深入。(後來,我才知道,有些人找老師拿着各種各樣的專案去報銷,開發板都是隨便買的,反正學校都有報。。。我倒是覺得花自己的錢心安理得)
其實,我一直糾結題目應該寫微控制器還是嵌入式,很多地方很多人都混着叫,或者把它們等同了,我個人覺得不應該等同。
在以前流行51年代,一開始幾乎都是說51微控制器的,爲什麼?51微控制器其實只有一個簡單系統,一個51晶片就是包含了CPU、RAM(記憶體)、E^2ROM(儲存程序,類似硬碟)、IO引腳等,其他的IIC、PWM、ADC、DAC等等複雜的功能都需要使用51的IO引腳外接其他的驅動晶片來進行拓展(當然後來的51晶片發展起來,有一些也把這些外設給加進晶片裏邊了)
而STM32這種,在官方的稱呼裡是embedded,嵌入的意思,我理解就是,32晶片在一開始設計的時候就把各種的功能外設驅動直接新增到了一整個晶片當中,所以纔有「嵌入」一說。所以,當我學習到8086微機原理的時候,我有點兒詫異,8086晶片需要使用串列埠功能的時候居然還需要外接一個功能晶片,中斷也是。畢竟當年纔剛剛開始的微型計算機的出現,微控制器就是專用版的8086,8086是通用版的,自然也會是沿襲這種設計的。現在就是嵌入式是專用的,PC是通用的啦。
一個晶片系統的啓動過程跟這一個晶片的IP內核緊密相關,每一個型號的晶片都有它自己特定的內核,啓動過程,我簡單的理解就是讓CPU執行一份彙編程式,依照內核設計的要求,完成PC設定(程式計數器)、SP設定(堆疊指針)、系統時鐘設定(對晶振脈衝進行分頻、倍頻)、數據段程式碼段對映(指令、數據的搬移),一系列過程,這是從晶片上電到執行c語言main函數入口的過程,即啓動過程。
另,不同的晶片,內核一般不同,f103是cortex-m3內核,h743是cortex-m7內核,也有一個內核設計了很多個晶片,比如cortex-m3內核設計了f103很多型號的晶片。根據一個內核,對應一個特定的晶片會有屬於 ta 自己的啓動檔案。由於不是專業人員,參考以下幾篇文章,都寫的特別詳細。
STM32第二章-啓動過程詳解
STM32啓動過程–啓動檔案–分析
高手帶你分析STM32 的啓動過程(寫的不錯)