最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

1.3單片機(jī)和Linux都想學(xué)_換個(gè)兩全的方法學(xué)習(xí)單片機(jī)

2020-08-10 20:51 作者:韋東山  | 我要投稿


來源:百問網(wǎng)_嵌入式Linux wiki_jz2440 新1期視頻維基教程 (視頻文字版)

作者:韋東山

本文字?jǐn)?shù):2653,閱讀時(shí)長:3分鐘

本節(jié)教你如何學(xué)習(xí)單片機(jī),如何選擇合適的開發(fā)板開發(fā)工具

現(xiàn)在我們知道單片機(jī)是要學(xué)習(xí)的,那么怎么去學(xué)習(xí)單片機(jī)?在上一課我們說不要使用老一套的方法學(xué)習(xí),實(shí)際上是指的兩個(gè)問題。

第一:選擇什么開發(fā)板;

第二:使用什么開發(fā)工具;

我們學(xué)習(xí)單片機(jī)的目的是干嘛?目的是為后續(xù)嵌入式Linux學(xué)習(xí)服務(wù)。 在這條學(xué)習(xí)線路上:

單片機(jī)->bootloader->Linux系統(tǒng)/驅(qū)動(dòng)->APP(QT) 可以使用同一套開發(fā)板。

我們選擇開發(fā)板的原則是:資料豐富。

Chapter1 lesson3 001.png

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

  • 有S3C2440、S3C6410、S5PV210、Exynos4412;

  • 然后是德州儀器 (TI)的,TI開始不開放資料,現(xiàn)在逐漸公開了,有AM437X、AM335X;

  • 然后是飛思卡爾(freescale),有iMX6;

  • 還有其它國產(chǎn)芯片:全志、瑞芯微;

我們用百度進(jìn)行搜索,看哪個(gè)資料最豐富。結(jié)果如下:

Chapter1 lesson3 002.png

再在搜索關(guān)鍵詞中加入“教程”后,S3C2440的搜索結(jié)果比AM335X更多,因此S3C2440的資料仍是最多的,TI的營銷更好,當(dāng)然,TI作為工控板,其用戶也是很多的。

所以,從教程的豐富程度來看,S3C2440為首選開發(fā)板;

我們后面會(huì)考慮使用TI的芯片重新錄制一套視頻,但需要2-3年的功夫,所以,現(xiàn)在還是使用S3C2440吧。

現(xiàn)在普遍有個(gè)錯(cuò)誤觀點(diǎn):S3C2440過時(shí)了,它還是ARM9內(nèi)核,現(xiàn)在Cortex-A7、 Cortex-A8、 Cortex-A9、 Cortex-A15都出來了,它的性能太差了。 性能差沒錯(cuò),但它是否過時(shí)了呢?

那要看學(xué)到的知識(shí)是否過時(shí)。

我們首先來看看一個(gè)芯片是怎么組成的,里面有CPU、外設(shè)串口、I2C、SPI、LCD等。

Chapter1 lesson3 003.png

我們寫程序的時(shí)候,是去操作這些模塊的寄存器,訪問這些模塊,并不是去操作CPU。 等你工作的時(shí)候,你使用不同的芯片,那么差別在于這些模塊,這些硬件的操作,差別不在CPU操作,你寫程序的時(shí)候,根本不涉及CPU的內(nèi)部機(jī)制。

不同芯片的差別:在于外設(shè)操作,不在于CPU,寫程序幾乎不涉及CPU,只有涉及中斷時(shí),才會(huì)跟CPU的機(jī)制有點(diǎn)關(guān)系,但是不同CPU的架構(gòu)差異很小,并且我們后面開發(fā)Linux驅(qū)動(dòng)時(shí),內(nèi)核已經(jīng)幫我們做好了這些處理,根本不需要去關(guān)心。

從上一課我們知道,驅(qū)動(dòng)=軟件框架+硬件操作。這個(gè)軟件框架對于所有的芯片都是一樣的,因?yàn)槎际怯肔inux內(nèi)核。 而這個(gè)硬件操作,你在2440上掌握了串口操作,I2C操作、SPI操作,掌握了這些硬件的語言,你換一種芯片,是完全類似的。

Chapter1 lesson3 004.png

我假設(shè)你選擇了2440開發(fā)板,那么怎么使用2440開發(fā)板來學(xué)習(xí)單片機(jī)的開發(fā)呢?又使用什么開發(fā)工具呢? 以前在Windows開發(fā)的時(shí)候,我們使用ADS、Keil、MDK等,你直接寫個(gè)main()函數(shù),所有的細(xì)節(jié)都幫你實(shí)現(xiàn)了,誰來調(diào)用main()函數(shù),有他幫你做了。這main()所生成出來的代碼,怎么放入到內(nèi)存里面,這工具也幫你做了,我們基本上只需要寫main()函數(shù),只需要寫C語言就行了。但是這里掩蓋了太多的技術(shù)細(xì)節(jié),你看看我們[官網(wǎng)->學(xué)習(xí)路線](http://www.100ask.net/a/howtostudy/) 的這篇文章,里面有個(gè)比較:

① Windows下的單片機(jī)學(xué)習(xí),深度不夠

  • Windows下有很好的圖形界面單片機(jī)開發(fā)軟件,比如keil、MDK等。

  • 它們封裝了很多技術(shù)細(xì)節(jié),比如:

  • 你只會(huì)從main函數(shù)開始編寫代碼,卻不知道上電后第1條代碼是怎么執(zhí)行的;

  • 你可以編寫中斷處理函數(shù),但是卻不知道它是怎么被調(diào)用的;

  • 你不知道程序怎么從Flash上被讀入內(nèi)存;

  • 也不知道內(nèi)存是怎么劃分使用的,不知道棧在哪、堆在哪;

  • 當(dāng)你想裁剪程序降低對Flash、內(nèi)存的使用時(shí),你無從下手;

  • 當(dāng)你新建一個(gè)文件時(shí),它被自動(dòng)加入到工程里,但是其中的機(jī)理你完全不懂;

  • 等等等。

② 基于ARM+Linux裸機(jī)學(xué)習(xí),可以學(xué)得更深,并且更貼合后續(xù)的Linux學(xué)習(xí)。

  • 實(shí)際上它就是Linux下的單片機(jī)學(xué)習(xí),只是一切更加原始:所有的代碼需要你自己來編寫;哪些文件加入工程,需要你自己來管理。

  • 在工作中,我們當(dāng)然傾向于使用Windows下更便利的工具,但是在學(xué)習(xí)階段,我們更想學(xué)習(xí)到程序的本質(zhì)。

  • 一切從零編寫代碼、管理代碼,可以讓我們學(xué)習(xí)到更多知識(shí):

  • 你需要了解芯片的上電啟動(dòng)過程,知道第1條代碼如何運(yùn)行;

  • 你需要掌握怎么把程序從Flash上讀入內(nèi)存;

  • 需要理解內(nèi)存怎么規(guī)劃使用,比如棧在哪,堆在哪;

  • 需要理解代碼重定位;

  • 需要知道中斷發(fā)生后,軟硬件怎么保護(hù)現(xiàn)場、跳到中斷入口、調(diào)用中斷程序、恢復(fù)現(xiàn)場;

  • 你會(huì)知道,main函數(shù)不是我們編寫的第1個(gè)函數(shù);

  • 你會(huì)知道,芯片從上電開始,程序是怎么被搬運(yùn)執(zhí)行的;

  • 你會(huì)知道,函數(shù)調(diào)用過程中,參數(shù)是如何傳遞的;

  • 你會(huì)知道,中斷發(fā)生時(shí),每一個(gè)寄存器的值都要小心對待;

  • 等等等。

  • 你掌握了ARM+Linux的裸機(jī)開發(fā),再回去看Windows下的單片機(jī)開發(fā),會(huì)驚呼:怎么那么簡單!并且你會(huì)完全明白這些工具沒有向你展示的技術(shù)細(xì)節(jié)。

如果我們基于ARM+Linux,不使用這些Windows工具,你可以學(xué)得更深,并且單片機(jī)的大全Bootloader,他就是ARM+Linux開發(fā)的,他并不使用Windows下的工具。 你基于ARM+Linux學(xué)裸板、學(xué)單片機(jī),你可以學(xué)得更多,因?yàn)槲覀円磺卸紡牧汩_始的。我們既管理這些代碼,也可以知道芯片上電的時(shí)候做了什么事情,知道程序自己怎么把自己讀到內(nèi)存,且知道怎么去規(guī)劃內(nèi)存,知道怎么代碼重定位……

我說的這些概念,你可能聽都沒聽過,這是因?yàn)閃indows下這些好用的工具把這些統(tǒng)統(tǒng)都給屏蔽了。 我們使用ARM+Linux進(jìn)行裸板開發(fā),一旦掌握了ARM+Linux開發(fā)這套機(jī)制,再回過頭去看這些Windows工具、看STM32的話,你只需要幾分鐘就可以搞定。 并且你可以無縫進(jìn)入后續(xù)的學(xué)習(xí),因?yàn)槟阋呀?jīng)熟練掌握了Linux的操作環(huán)境,后面的Bootloader是在Linux下開發(fā)的,后面的Linux驅(qū)動(dòng)也是在Linux下開發(fā)的。

Chapter1 lesson3 005.png

所以我們怎么去學(xué)習(xí)單片機(jī)的開發(fā)呢?

使用S3C2440開發(fā)板,在Linux環(huán)境(Ubuntu)下使用arm-Linux-gcc工具來編譯程序。

你編寫代碼的時(shí)候,可以使用Windows下各種好用的工具,文本工具等,但便宜的時(shí)候,使用arm-Linux-gcc來編譯。?


1.3單片機(jī)和Linux都想學(xué)_換個(gè)兩全的方法學(xué)習(xí)單片機(jī)的評論 (共 條)

分享到微博請遵守國家法律
丰镇市| 保山市| 吴堡县| 阜康市| 澳门| 平乡县| 双江| 仁寿县| 罗田县| 衡山县| 虹口区| 龙游县| 微山县| 靖安县| 安化县| 光山县| 黄梅县| 南皮县| 泸定县| 沙湾县| 育儿| 沁水县| 岳西县| 宁都县| 罗江县| 防城港市| 历史| 清苑县| 霍林郭勒市| 同心县| 台南县| 四会市| 沐川县| 南华县| 岳普湖县| 沙坪坝区| 南溪县| 临海市| 黄浦区| 龙江县| 固镇县|