微控制器和Linux都想學 換個兩全的方法學習微控制器

2022-04-29 10:54:08 字數 2547 閱讀 2004

本節教你如何學習微控制器,如何選擇合適的開發板開發工具

現在我們知道微控制器是要學習的,那麼怎麼去學習微控制器?在上一課我們說不要使用老一套的方法學習,實際上是指的兩個問題。

第一:選擇什麼開發板;

第二:使用什麼開發工具;

我們學習微控制器的目的是幹嘛?目的是為後續嵌入式linux學習服務。 

在這條學習線路上:

我們選擇開發板的原則是:資料豐富

開發板首推三星(samsung)系列的,資料最開放, 

* 有s3c2440、s3c6410、s5pv210、exynos4412; 

* 然後是德州儀器(ti)的,ti開始不開放資料,現在逐漸公開了,有am437x、am335x; 

* 然後是飛思卡爾(freescale),有imx6; 

* 還有其它國產晶元:全志瑞芯微

所以,從教程的豐富程度來看,s3c2440為首選開發板

現在普遍有個錯誤觀點:s3c2440過時了,它還是arm9核心,現在cortex-a7、 cortex-a8、 cortex-a9、 cortex-a15都出來了,它的效能太差了。 

效能差沒錯,但它是否過時了呢?

那要看學到的知識是否過時。

我們首先來看看乙個晶元是怎麼組成的,裡面有cpu、外設串列埠、i2c、spi、lcd等。

我們寫程式的時候,是去操作這些模組的暫存器,訪問這些模組,並不是去操作cpu。 

等你工作的時候,你使用不同的晶元,那麼差別在於這些模組,這些硬體的操作,差別不在cpu操作,你寫程式的時候,根本不涉及cpu的內部機制。

**不同晶元的差別: 

在於外設操作,不在於cpu,寫程式幾乎不涉及cpu,只有涉及中斷時,才會跟cpu的機制有點關係,但是不同cpu的架構差異很小,並且我們後面開發linux驅動時,核心已經幫我們做好了這些處理,根本不需要去關心。**

從上一課我們知道,驅動=軟體框架+硬體操作。這個軟體框架對於所有的晶元都是一樣的,因為都是用linux核心。 

而這個硬體操作,你在2440上掌握了串列埠操作,i2c操作、spi操作,掌握了這些硬體的語言,你換一種晶元,是完全類似的。

我假設你選擇了2440開發板,那麼怎麼使用2440開發板來學習微控制器的開發呢?又使用什麼開發工具呢? 

以前在windows開發的時候,我們使用ads、keil、mdk等,你直接寫個main()函式,所有的細節都幫你實現了,誰來呼叫main()函式,有他幫你做了。這main()所生成出來的**,怎麼放入到記憶體裡面,這工具也幫你做了,我們基本上只需要寫main()函式,只需要寫c語言就行了。但是這裡掩蓋了太多的技術細節,你看看我們官網->學習路線 的這篇文章,裡面有個比較:

① windows下的微控制器學習,深度不夠

② 基於arm+linux裸機學習,可以學得更深,並且更貼合後續的linux學習。

如果我們基於arm+linux,不使用這些windows工具,你可以學得更深,並且微控制器的大全bootloader,他就是arm+linux開發的,他並不使用windows下的工具。 

你基於arm+linux學裸板、學微控制器,你可以學得更多,因為我們一切都從零開始的。我們既管理這些**,也可以知道晶元上電的時候做了什麼事情,知道程式自己怎麼把自己讀到記憶體,且知道怎麼去規劃記憶體,知道怎麼**重定位……

我說的這些概念,你可能聽都沒聽過,這是因為windows下這些好用的工具把這些統統都給遮蔽了。 

我們使用arm+linux進行裸板開發,一旦掌握了arm+linux開發這套機制,再回過頭去看這些windows工具、看stm32的話,你只需要幾分鐘就可以搞定。 

並且你可以無縫進入後續的學習,因為你已經熟練掌握了linux的操作環境,後面的bootloader是在linux下開發的,後面的linux驅動也是在linux下開發的。

所以我們怎麼去學習微控制器的開發呢?

使用s3c2440開發板,在linux環境(ubuntu)下使用arm-linux-gcc工具來編譯程式。

你編寫**的時候,可以使用windows下各種好用的工具,文字工具等,但編譯的時候,使用arm-linux-gcc來編譯

Linux 微控制器

說明 at89s52晶元用usbasp連線電腦,stc89c52用usb轉串列埠線連線電腦,以下預設你的c語言源程式沒有錯誤。步驟 1 sdcc c sdcc是微控制器程式編譯器,debian系可sudo apt get install sdcc 2 makebin p ihx bin 因為即將使用...

keil和微控制器

如何在keil上除錯程式,微控制器匯程式設計序的高效率,如何估計程式所用ram的大小。將系統移植到微控制器上需要考慮的諸多問題,如重入性,堆疊分配,外存使用,中斷操作等。比如串列埠操作,當多個任務需要使用串列埠時,需要各任務互斥使用串列埠傳送資料。各任務可以通過訊號量機制 互斥使用串列埠傳送接收緩衝...

微控制器學習筆記 微控制器學習方法和步驟

學習微控制器的動機不外乎有四種 一是為興趣愛好而學,二是為專業而學 三是為飯碗而學 四是在工作中被逼而學。不管是哪種動機,因主修專業的不同以及電子基礎的深淺不同,對於不同的人可能採用不同的學習方法,根據筆者的親身學習經驗和教授徒弟學習的感受,提出筆者的學習方法和步驟。目錄 第一步 基礎理論知識學習 ...