stm32學習方法

很多新手都問過嵌入式系統學習方法,好的學習方法可以事半功倍,學習嵌入式系統,掌握了好的學習方法,自然可以水到渠成。創客學院的老師就通過本篇文章就來說說嵌入式系統學習方法,新手必看

第一,學習基本的裸機編程

對于學硬件的人而言,必須先對硬件的基本使用方法有感性的認識,更必須深刻認識該硬件的控制方式,如果一開始就學linux系統、學移植那么只會馬上就陷入一個很深的漩渦。剛剛開始學ARM的時候選擇ARM9,從底層的硬件控制著手,因為無論做多復雜的系統終都會落實到底層的硬件控制,因此對這些硬件的控制有了感性的認識就會好很多

學習裸機的編程的同時要好好理解這個硬件的構架、控制原理,這些我稱他為理解硬件。所謂的理解硬件就是說,理解這個硬件是怎么組織這么多資源的,這些資源又是怎么由cpu、由編程進行控制的。比如說,s3c2410中有AD轉換器,有GPIO(通用IO口),還有nandflash控制器,這些東西都有一些寄存器來控制,這些寄存器都有一個地址,那么這些地址是什么意思?又怎么通過寄存器來控制這些外圍設備的運轉?

還有,norflash內部的每一個單元在這個芯片的內存中都有一個相應的地址單元,那么這些地址與剛剛說的寄存器地址又有什么關系?他們是一樣的嗎?而與norflash相對應的nandflash內部的儲存單元并不是線性排放的,那么s3c2410怎么將nandflash的地址映射在內存空間上進行使用?或者簡單地說應該怎么用nandflash?再有,使用ADS進對ARM9行編程時都需要使用到一個初始化的匯編文件,這個文件究竟有什么用?他里面的代碼是什么意思?不要這個可以嗎?

諸如此類都是對硬件的理解,理解了這些東西就對硬件有很深的理解了,這對以后更深一步的學習將有很大的幫助,如果跳過這一步,越往后學越會覺得迷茫,越覺得這寫東西深不可測。因為,你的根基沒打好。

第二,使用linux系統進行一些基本的實驗

在買一套板子的時候一般會提供一些linux的試驗例程,好好做一段時間這個吧,這個過程也是很有意義的,也是為進一步的學習積累感性認識,你能想象一個從沒有使用過linux系統的人能學好linux的編程嗎?好好按照手冊上的例程做一做里面的實驗,雖然有點娃娃學走路,有點弱智,但是很多高手都會經歷這個過程。

第三,研究完整的linux系統的的運行過程

所謂完整的linux系統包括哪些部分呢?

主要分為三部分:bootloader、linuxkernel(linux內核)、rootfile(根文件系統)。

那么這3部分是怎么相互協作來構成這個系統的呢?各自有什么用呢?三者有什么聯系?怎么聯系?系統的執行流程又是怎么樣的呢?搞清楚這個問題你對整個系統的運行就很清楚了,對于下一步制作這個linux系統就打下了另一個重要的根基。

第四,開始做系統移植

上面說到完整的linux有3部分,而且你也知道了他們之間的關系和作用,那么現在你要做的便是自己動手學會制作這些東西。

當然不可能叫你編寫這些代碼,這不實現。事實上這個3者都能在網下載到相應的源代碼,但是這個源代碼不可能下載編譯后就能在你的系統上運行,需要很多的修改,直到他能運行在你的板子上,這個修改的過程就叫移植。在進行移植的過程中你要學的東西很多,要懂的相關知識也很多,等你完成了這個過程你會發現你已經算是一個初出茅廬的高手了。

在這個過程中如果你很有研究精神的話你必然會想到看源代碼。很多書介紹你怎么閱讀linux源代碼,我不提倡無目的地去看linux源代碼,這沒有意義。等你在做移植的時候你覺得你必須去看源代碼時再去找基本好書看看,這里我推薦一本好書倪繼利的《linux內核的分析與編程》,這是一本針對linux-2.6.11內核的書,說得很深,建議先提高自己的C語言編程水平再去看。

這一步的終目的是,從源代碼的主頁上(都是外國的,悲哀)下載標準的源代碼包,然后進行修改,終運行在板子上。

第五,研究linux驅動程序的編寫

移植系統并不是終的目的,終的目的是開發產品,做項目,這些都要進行驅動程序的開發。

Linux的驅動程序可以說是五花八門,linux2.4和linux2.6的編寫有相當大的區別,就是同為linux2.6但是不同版本間的驅動程序也有區別,因此編寫linux的驅動程序變都不是那么容易的事情,對于新版本的驅動程序的編寫甚至還沒有足夠的參考資料。那么我的建議就是使用、移植一個不算很新的版本內核,這樣到時學驅動的編程就有足夠的資料了。

第六,研究應用程序的編寫

做作品做項目除了編寫驅動程序,后還要編寫應用程序。現在的趨勢是圖形應用程序的開發,而圖形應用程序中用得多的還是qt/e函數庫。建議使用國產的MiniGUI函數庫。MiniGUI的編程比較相似Windows下的VC編程,比較容易上手,效果應該說是相當不錯的。不過MiniGUI大的不好就是沒有像qtopia這樣的圖形操作平臺,這大大限制了他的推廣,完成這一步你基本就學完了嵌入式linux的全部內容了。

暫時就寫這么多,關于嵌入式系統學習方法,還可以做更深入的探討,新手掌握以上內容大概就不再是新手了。stm32學習方法

?

STM32可以這樣玩
http://www.makeru.com.cn/live/4034_1460.html?s=45051

轉載于:https://www.cnblogs.com/QianD/p/10839388.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449020.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449020.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449020.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

知識點漏缺總結

模塊化 使用模塊化可以給我們帶來以下好處 解決命名沖突 提供復用性 提高代碼可維護性 Proxy Proxy 來替換原本的 Object.defineProperty 來實現數據響應式。 Proxy 是 ES6 中新增的功能,它可以用來自定義對象中的操作。 let p new Proxy(target, handler) 復制代碼…

成功投資的九大要訣

真正的有錢人對金錢持非常嚴肅的態度,即便是拿來投機也要小心睿智,物盡其用。這里的投機并不是指非理性的賭博,而是指為了追求更高收益而采取的市場投資行為。卡西研究所資深分析師Louis James總結了富豪們投機成功的9個秘訣。 秘訣1&#…

《 Docker 技術入門與實戰 》讀書筆記 ( CentOS 安裝 Docker )

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 PS :個人所有讀書筆記只記錄個人想要的內容,很可能原書大量內容沒有納入筆記中... ... 以下全文內容出自書目&…

數據結構:靜態鏈表實現樹的同構

寫在最前面 按照課程講解的思路來寫,邏輯關系能夠理解清楚了,但是實際運行起來實在是有問題,雖然在PTA上能夠通過。但是我自己看不出問題來,并且,看了一遍又一遍仍然看不出來!(可能自己太笨。。…

中國人為什么學不會英語

英語永遠也學不會! 這種抱怨和哀嘆,大概在中國早已經司空見慣了。于是,有人開始計算學英語是多么大的浪費。 作為過來人,我對此深有體會。記得我當年也有過類似的絕望感。 但是,一位前輩安慰我說:你可以說你永遠掌…

研究人員發現:基于文本的AI模型容易受到改述攻擊

由于自然語言處理(NLP)的進步,越來越多的公司和組織開始利用AI算法來執行與文本相關的任務,例如:過濾垃圾郵件、分析社交媒體帖子和評論、評估簡歷以及檢測假新聞。 但是,真的可以相信這些算法能夠可靠地執…

解決 linux 下安裝 node 報: command not found

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 注意:有時安裝成功后,需要關閉xshell,重新啟動。nvm才會生效。 1. 在 linux 下安裝 node 提示 -bash: node: com…

阿里云官方網站免費套餐怎么搶

阿里云推出包含云服務器 ECS、負載均衡、云數據庫 RDS、云數據庫 Redis 版、云數據庫 Mongodb 版、彈性公網 IP、CDN、對象存儲 OSS、文件存儲 NAS等40核心云產品,6個月免費使用何為免費套餐,其實就是讓你先體驗,覺得好用,易用&am…

1003 我要通過

1003 我要通過! (20 分)“答案正確”是自動判題系統給出的最令人歡喜的回復。本題屬于 PAT 的“答案正確”大派送 —— 只要讀入的字符串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。 得到“答案正確”的條件是: …

在英特爾? 凌動? 處理器上將 OpenGL* 游戲移植到 Android* (第一部分)

將游戲和其他使用大量 3D 圖形的應用從 OpenGL 標準移植到 Google Android 設備(包括構建在英特爾 凌動? 微架構上的設備)存在巨大的機遇,因為基于 OpenGL 的游戲、游戲引擎和其他傳統軟件易于獲得;OpenGL 便于移植;而…

文件系統:使用 yum 安裝軟件包

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 一、yum命令的基本安裝功能 [rootlocalhost ~]# man yum command is one of: * install package1 [package2] [...]: ins…

elasticsearch全局analyzer聲明

2019獨角獸企業重金招聘Python工程師標準>>> 問題 elasticsearch從2.4升級到5.6,elasticsearch.yml配置中有一些analyzer配置拷貝到新版本,啟動報錯 index :analysis :analyzer :lowercase_whitespace :type : customtokenizer : myTokenizer…

Parallels Desktop虛擬機無法關機提示“虛擬機處理器已被操作系統重置”

如果你在使用PD的時候遇到了這樣子的彈窗,恭喜你篇博文可以幫助你,因為我剛剛也遇到了這個問題。如果有幫助可以點一下推薦按鈕。 針對Windows電腦 啟動虛擬機創建快照使用管理員權限運行命令提示符執行powercfg -h off重啟試試成功了再刪除快照即可修改…

linux下安裝 ping 命令

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 使用docker倉庫下載的ubuntu 14.04 鏡像。里面精簡的連 ping 命令都沒有。google 百度都搜索不到ping 命令在哪個包里。 努力找了半天&…

揚尼斯定律:程序員的開發效率每6年提高一倍

我不斷的聽到各種關于“軟件危機”的警言,以及關于軟件開發缺少過程規范的批評。我做編程工作超過15年,我認為這些言論基本上都是錯的:我確信我能在很短的時間里用如今的開發工具復制出15年前一個不錯的程序員開發出的東西。 模仿摩爾定律和…

ApiBoot - ApiBoot Quartz 使用文檔

ApiBoot Quartz ApiBoot內部集成了Quartz,提供了數據庫方式、內存方式的進行任務的存儲,其中數據庫方式提供了分布式集群任務調度,任務自動平滑切換執行節點。 引用ApiBoot Quartz 在pom.xml配置文件內添加,如下配置: …

《算法競賽進階指南》0.4二分

102. 最佳牛圍欄 農夫約翰的農場由N塊田地組成,每塊地里都有一定數量的牛,其數量不會少于1頭,也不會超過2000頭。 約翰希望用圍欄將一部分連續的田地圍起來,并使得圍起來的區域內每塊地包含的牛的數量的平均值達到最大。 圍起區域內至少需要包…

Hibernate 自動創建表

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 在 hibernate.cfg.xml 添加這句話&#xff0c;可以自動生成數據表 : <property name"hibernate.hbm2ddl.auto">upd…

程序員越老越優秀嗎?

Peter Knego 向我們展示了一些有趣的東西&#xff1a; 官方數據&#xff1a;程序員年紀越大越出色、越稀有。他使用StackOverflow的聲譽值和其它幾個指標來印證他的觀點。 他的總結是&#xff1a; 隨著年齡的增加&#xff0c;程序員的數量急劇下降。程序員數量的峰值出現在2…

小程序學習(一):點擊愛心變色 -- 最簡單的事件實現

最近在學習小程序&#xff0c;想通過寫文章來記錄自己的學習歷程&#xff0c;希望能做到每周都寫…… 如何綁定一個事件 微信小程序中&#xff0c;綁定事件要在標簽內寫入這兩段代碼&#xff1a; bindtap"fnActive" data-favourite "{{isLike}}" 復制代碼…