❶ 要學習嵌入式,現在需要學習哪些基本課程
嵌入式方向很多,這是現在最流行的這個方向。
由於很多人總問這個問題,所以這里做一個總結供大家參考。這里必須先說明,以下的步驟都是針對linux系統
的,並不面向WinCE。也許你會注意到,現在做嵌入式的人中,做linux研究的人遠比做WinCE的人多,很多產家
提供的資料也是以linux為主。我一直很難理解,其實WinCE的界面比linux的界面好看多了,使用起來也很方便
,更為重要的是,WinCE的開發和Windows下的開發基本一樣,學起來簡單得多,但是學linux或者使用linux做嵌
入式的人就是遠比WinCE多。在和很多工作的人交流時我了解到,他們公司從沒考慮使用WinCE,因為成本高,都
是使用linux進行開發。我讀研究生的的實驗室中也沒有使用WinCE的,大都研究linux,也有少部分項目使用
vxwork,但是就沒有聽說過使用WinCE的,原因就是開源!當然現在WinCE6.0聽說也開源,不過在成本和資源上
linux已經有了無人能擋的優勢。與此相對應的是,越來越多的電子廠商已經開始使用linux開發產品。舉個例子
,Google近期開發的智能手機操作系統Android其實就是使用linux-2.6.23內核進行改進得到的。
第一,學習基本的裸機編程。
對於學硬體的人而言,必須先對硬體的基本使用方法有感性的認識,更必須深刻認識該硬體的控制方式,如
果一開始就學linux系統、學移植那麼只會馬上就陷入一個很深的漩渦。我在剛剛開始學ARM的時候是選擇ARM7(
主意是當時ARM9還很貴),學ARM7的時候還是保持著學51單片機的思維,使用ADS去編程,第一個實驗就是控制
led。學過一段時間ARM的人都會笑這樣很笨,實際上也不是,我倒是覺得有這個過程會好很多,因為無論做多復
雜的系統最終都會落實到這些最底層的硬體控制,因此對這些硬體的控制有了感性的認識就好很多了學習裸機的
編程的同時要好好理解這個硬體的構架、控制原理,這些我稱他為理解硬體。所謂的理解硬體就是說,理解這個
硬體是怎麼組織這么多資源的,這些資源又是怎麼由cpu、由編程進行控制的。比如說,s3c2410中有AD轉換器,
有GPIO(通用IO口),還有nandflash控制器,這些東西都有一些寄存器來控制,這些寄存器都有一個地址,那
么這些地址是什麼意思?又怎麼通過寄存器來控制這些外圍設備的運轉?還有,norflash內部的每一個單元在這
個晶元的內存中都有一個相應的地址單元,那麼這些地址與剛剛說的寄存器地址又有什麼關系?他們是一樣的嗎
?而與norflash相對應的nandflash內部的儲存單元並不是線性排放的,那麼s3c2410怎麼將nandflash的地址映
射在內存空間上進行使用?或者簡單地說應該怎麼用nandflash?再有,使用ADS進對ARM9行編程時都需要使用到
一個初始化的匯編文件,這個文件究竟有什麼用?他裡面的代碼是什麼意思?不要這個可以嗎?諸如此類都是對
硬體的理解,理解了這些東西就對硬體有很深的理解了,這對以後更深一步的學習將有很大的幫助,如果跳過這
一步,我相信越往後學越會覺得迷茫,越覺得這寫東西深不可測。因為,你的根基沒打好。不過先聲明一下,本
人並沒有使用ADS對ARM9進行編程,我是學完ARM7後直接就使用ARM9學linux系統的,因此涉及使用ADS對ARM9進
行編程的問題我很難回答^_^,自己去研究研究吧。
對於這部分不久將提供一份教程,這個教程中的常式並不是我為我們所代理的板子寫的,是我在我們學院實
驗室拿的,英培特為他們自己的實驗箱寫的,不過很有借鑒意義,可以作為一份有價值的參考。
第二,使用linux系統進行一些基本的實驗。
在買一套板子的時候一般會提供一些linux的試驗常式,好好做一段時間這個吧,這個過程也是很有意義的
,也是為進一步的學習積累感性認識,你能想像一個從沒有使用過linux系統的人能學好linux的編程嗎?好好按
照手冊上的常式做一做裡面的實驗,雖然有點娃娃學走路,有點弱智,但是我想很多高手都會經歷這個過程。
在這方面我們深藍科技目前沒有計劃提供相應的常式,主要是開發板的提供商會提供很豐富的常式,我們
不做重復工作,只提供他們沒有的、最有價值的東西給大家。
第三,研究完整的linux系統的的運行過程。
所謂完整的linux系統包括哪些部分呢?
三部分:bootloader、linux kernel(linux內核)、rootfile(根文件系統)。
那麼這3部分是怎麼相互協作來構成這個系統的呢?各自有什麼用呢?三者有什麼聯系?怎麼聯系?系統的
執行流程又是怎麼樣的呢?搞清楚這個問題你對整個系統的運行就很清楚了,對於下一步製作這個linux系統就
打下了另一個重要的根基。介紹這方面的資料網上可以挖掘到幾噸,自己好好研究吧。
第四,開始做系統移植。
上面說到完整的linux有3部分,而且你也知道了他們之間的關系和作用,那麼現在你要做的便是自己動手學
會製作這些東西。
當然我不可能叫你編寫這些代碼,這不實現。事實上這個3者都能在網下載到相應的源代碼,但是這個源代
碼不可能下載編譯後就能在你的系統上運行,需要很多的修改,直到他能運行在你的板子上,這個修改的過程就
叫移植。在進行移植的過程中你要學的東西很多,要懂的相關知識也很多,等你完成了這個過程你會發現你已經
算是一個初出茅廬的高手了。
在這個過程中如果你很有研究精神的話你必然會想到看源代碼。很多書介紹你怎麼閱讀linux源代碼,我不
提倡無目的地去看linux源代碼,用許三多的話說,這沒有意義。等你在做移植的時候你覺得你必須去看源代碼
時再去找基本好書看看,這里我推薦一本好書倪繼利的《linux內核的分析與編程》,這是一本針對linux-
2.6.11內核的書,說得很深,建議先提高自己的C語言編程水平再去看。
至於每個部分的移植網上也可以找到好多噸的資料,自己研究研究吧,不過要提醒的是,很多介紹自己經驗
的東西都或多或少有所保留,你按照他說的去做總有一些問題,但是他不會告訴你怎麼解決,這時就要靠自己,
如果自己都靠不住就找我一起研究研究吧,我也不能保證能解決你的問題,因為我未必遇到過你的問題,不過我
相信能給你一點建議,也許有助你解決問題。
這一步的最終目的是,從源代碼的官方主頁上(都是外國的,悲哀)下載標準的源代碼包,然後進行修改,
最終運行在板子上。
盜用阿基米德的一句話:「給我一根網線,我能將linux搞定」。
第五,研究linux驅動程序的編寫。
移植系統並不是最終的目的,最終的目的是開發產品,做項目,這些都要進行驅動程序的開發。
Linux的驅動程序可以說是五花八門,linux2.4和linux2.6的編寫有相當大的區別,就是同為linux2.6但是
不同版本間的驅動程序也有區別,因此編寫linux的驅動程序變都不是那麼容易的事情,對於最新版本的驅動程
序的編寫甚至還沒有足夠的參考資料。那麼我的建議就是使用、移植一個不算很新的版本內核,這樣到時學驅動
的編程就有足夠的資料了。這部分的推薦書籍可以參考另一篇文章《推薦幾本學習嵌入式linux的書籍》。
第六,研究應用程序的編寫。
做作品做項目除了編寫驅動程序,最後還要編寫應用程序。現在的趨勢是圖形應用程序的開發,而圖形應用
程序中用得最多的還是qt/e函數庫。我一直就使用這個函數庫來開發自己的應用程序,不過我希望你能使用國產
的MiniGUI函數庫。盜用周傑倫的廣告詞就是「支持國產,支持MiniGUI」。MiniGUI的編程比較相似Windows下的
VC編程,比較容易上手,效果應該說是相當不錯的,我曾使用過來開發ARM7的程序。不過MiniGUI最大的不好就
是沒有像qtopia這樣的圖形操作平台,這大大限制了他的推廣,我曾經幻想過與北京飛漫公司(就是MiniGUI的
版權擁有者)合作使用MiniGUI函數庫開發像qtopia這樣的圖形操作平台,不過由於水平有限這只能是幻想了,
呵呵。完成這一步你基本就學完了嵌入式linux的全部內容了。
還有一個小小的經驗想和大家分享。我在學習嵌入式linux的過程中很少問人,客觀原因是身邊的老師、同
學師兄都沒有這方面的高手,主觀原因是我不喜歡問人,喜歡自己研究解決問題。這樣做有個好處,就是可以提
高自己解決問題的能力,因為做這些東西總有很多問題你難以理解,別人也沒有這方面的經驗,也不是所有問題
都有人給你答案,這時必須要自己解決問題,這樣,個人的解決問題能力就顯得非常關鍵了。因此我的建議就是
一般的問題到網上搜索一下,確實找不到答案了就問問高手,還是不行了就自己去研究,不要一味去等別人幫你
解決問題。記住,問題是學習的最好機會。另外筆者推薦你可以用嵌視科技qs-pte9
❷ 怎麼在51單片機中讀取文件 如何在Keil C51使用fopen函數 也就是如何在C51中編寫 能打開文件程序
首先,Keil中根本沒有fopen函數,你可以打開keil的所有頭文件看看。
其次,用單片機來讀取文件是需要文件系統(比如FAT)來支持的,你不能「想當然」的認為計算機上的標准C函數中有文件打開函數,所以單片機中也有。更何況是51單片機!
像51單片機一般直接使用二進制存儲,這樣最簡單快捷,文件存儲反而成本高,速度慢,不適合使用。所以你可以用ROM來保存這個文本文件的內容,然後單片機讀取ROM。
❸ 計算機三級的內容是什麼
計算機三級考試大綱全集
一、計算機等級考試三級資料庫技術考試大綱
基本要求
1.掌握計算機系統和計算機軟體的基本概念、計算機網路的基本知識和應用知識、信息安全的基本概念。
2.掌握數據結構與演算法的基本知識並能熟練的應用。
3.掌握並能熟練運用操作系統的基本知識。
4.掌握資料庫的基本概念,深入理解關系數據模型、關系數據理論和關系資料庫系統,掌握關系數據語言。
5.掌握資料庫設計方法,具有資料庫設計能力。了解資料庫技術發展。
6.掌握計算機操作,並具有C語言編程,開發資料庫應用(含上機調試)的能力。
考試內容
一、基礎知識
1.計算機系統的組成和應用領域。
2.計算機軟體的基礎知識。
3.計算機網路的基礎知識和應用知識。
4.信息安全的基本概念。
二、數據結構與演算法
1.數據結構、演算法的基本概念。
2.線性表的定義、存儲和運算。
3.樹形結構的定義、存儲和運算。
4.排序的基本概念和排序方法。
5.檢索的基本概念和檢索演算法。
三、操作系統
1.操作系統的基本概念、主要功能和分類。
2.進程、線程、進程間的通信的基本概念。
3.存儲管理、文件管理、設備管理的主要技術。
4.典型操作系統的應用。
四、資料庫系統的基本原理
1.資料庫的基本概念,資料庫系統的組成。
2.數據模型概念和主要的數據模型。
3.關系數據模型的基本概念,關系操作和關系代數。
4.結構化查詢語言SQL。
5.事務管理、並發控制、故障恢復的基本概念。
五、資料庫設計和資料庫應用
1.關系資料庫的規范化理論。
2.資料庫設計的目標、內容和方法。
3.資料庫應用開發工具。
4.資料庫技術發展。
六、上機操作
1.掌握計算機基本操作。
2.掌握C語言程序設計基本技術、編程和調試。
3.掌握與考試內容相關的知識的上機應用。
考試方式
一、筆試:120分鍾
二、上機考試:60分鍾
二、等級考試(三級信息管理技術)考試大綱
基本要求
⒈具有計算機及其應用的基礎知識。
⒉熟悉計算機操作系統、軟體工程和資料庫的原理及其應用。
⒊具有計算機體系結構、系統組成和性能評價的基礎及應用知識。
⒋具有計算機網路和通信的基礎知識。
⒌具有計算機應用項目開發的分析、設計和組織實施的基本能力。
⒍具有計算機應用系統安全和保密性知識。
考試內容
一、計算機系統組成及工作原理
⒈計算機系統組成:
⑴計算機的發展。
⑵計算機的分類及應用。
⑶計算機硬體結構。
⑷主要部件功能。
⑸計算機軟體的功能與分類。
⑹系統軟體與應用軟體。
⒉計算機工作原理:
⑴計算機中數的表示。
⑵運算器。
⑶控制器。
⑷存儲器。
⑸輸入與輸出系統。
⒊計算機的主要性能:
⑴計算機系統性能指標。
⑵處理機指標。
⑶存儲容量能力。
⑷I/O匯流排能力。
⑸系統通信能力。
⑹聯機事務處理能力。
⑺軟體支持。
二、數據結構與演算法
⒈基本概念:
⑴數據結構的基本概念。
⑵演算法的描述與分析。
⒉線性表:
⑴線性表的邏輯結構。
⑵線性表的順序存儲結構。
⑶線性表的鏈式存儲結構。
⒊數組:
⑴數組的定義與運算。
⑵數組的順序存儲結構。
⑶矩陣的壓縮存儲。
⒋棧與隊列:
⑴棧的定義和運算。
⑵棧的存儲結構。
⑶隊列的定義和運算。
⑷鏈隊列與循環隊列。
⒌串:
⑴串及其操作。
⑵串的存儲結構。
⒍樹和二叉樹:
⑴樹的定義。
⑵二叉樹的定義及性質。
⑶二叉樹與樹的轉換。
⑷二叉樹的存儲。
⑸遍歷二叉樹與線索二叉樹。
⒎圖:
⑴圖及其存儲結構。
⑵圖的遍歷。
⑶圖的連通性。
⑷有向無環圖。
⑸最短路徑。
⑹拓撲排序。
⒏查找:
⑴線性表查找。
⑵樹形結構與查找。
⑶散列查找。
⒐排序:
⑴插入排序。
⑵交換排序。
⑶選擇排序。
⑷歸並排序。
⑸基數排序。
10.組織:
⑴順序文件。
⑵索引文件。
⑶散列文件。
三、離散數學
⒈數理邏輯:
⑴命題及其符號化。
⑵命題公式及其分類。
⑶命題邏輯等值演算。
⑷範式。
⑸命題邏輯推理理論。
⑹謂詞與量詞。
⑺謂詞公式與解釋。
⑻謂詞公式的分類。
⑼謂詞邏輯等值演算與前束範式。
(10)謂詞邏輯推理理論。
⒉集合論:
⑴集合及其表示。
⑵集合的運算。
⑶有序對與笛卡爾積。
⑷關系及其表示法。
⑸關系的運算。
⑹關系的性質。
⑺關系的閉包。
⑻復合關系與逆關系。
⑼等價關系與偏序關系。
(10)函數及其性質。
(11)反函數與復合函數。
⒊代數系統:
⑴代數運算及其性質。
⑵同態與同構。
⑶半群與群。
⑷子群與陪集。
⑸正規子群與商群。
⑹循環群與置換群。
⑺環與域。
⑻格與布爾代數。
⒋圖論:
⑴無向圖與有向圖。
⑵路、迴路與圖的連通性。
⑶圖的矩陣表示。
⑷最短路徑與關鍵路徑。
⑸二部圖。
⑹歐拉圖與哈密爾頓圖。
⑺平面圖。
⑻樹與生成樹。
⑼根樹及其應用。
四、操作系統
⒈操作系統的基本概念:
⑴操作系統的功能。
⑵操作系統的基本類型。
⑶操作系統的組成。
⑷操作系統的介面。
⒉進程管理:
⑴進程、線程與進程管理。
⑵進程式控制制。
⑶進程調度。
⑷進程通信。
⑸死鎖。
⒊作業管理:
⑴作業與作業管理。
⑵作業狀態及其轉換。
⑶作業調度。
⑷作業控制。
⒋存儲管理:
⑴存儲與存儲管理。
⑵虛擬存儲原理。
⑶頁式存儲。
⑷段式存儲。
⑸段頁式存儲。
⑹局部性原理與工作集概念。
⒌文件管理:
⑴文件與文件管理。
⑵文件的分類。
⑶文件結構與存取方式。
⑷文件目錄結構。
⑸文件存儲管理。
⑹文件存取控制。
⑺文件的使用。
⒍設備管理:
⑴設備與設備分類。
⑵輸入輸出控制方式。
⑶中斷技術。
⑷通道技術。
(5)緩沖技術.
⑹設備分配技術與SPOOLING系統。
⑺磁碟調度。
⑻設備管理。
⒎一種典型操作系統(DOS/Unix/Windows)的使用:
⑴DOS的特點與使用。
⑵UNIX的特點與使用。
⑶Windows的特點與使用。
三|計算機等級考試(三級PC技術)考試大綱
基本要求
1.具有計算機及其應用的基礎知識。
2.熟悉80X86微處理器的結構、原理及其宏匯編語言程序設計。
3.掌握個人計算機的工作原理及邏輯組成和物理結構。
4.掌握Windows操作系統的主要功能、原理、配置及其維護管理。
5.熟悉個人計算機常用的外部設備的性能、原理及結構。
考試內容
一、計算機應用的基礎知識
1.計算機技術的發展,計算機信息處理的特點,計算機分類,PC機的組成與性能評測。
2.數值信息在計算機內的表示:整數的表示和運算,實數(浮點數)的表示和運算。
3.文字信息與文本在計算機內的表示:西文字元編碼字元集(Unicode)。
4.多媒體技術基礎:數字聲音的類型,波形聲音與合成聲音,圖像、圖形的特點與區別,圖像、圖形和視頻信息在計算機內的表示
5.計算機網路的基礎知識:計算機網路的功能、分類和組成。數據通信的基本原理,網路體系結構與TCP/IP協議,網際網路與IP地址,計算機區域網初步。
二、微處理器與匯編語言程序設計
1.微處理器的一般結構:寄存器組,寄存器管理,匯流排時序,工作模式以及類型提供配置。
2.Pentium微處理器的功能與結構:內部結構及工作原理,寄存器組,工作模式及存儲器管理,中斷管理,匯流排時序。
3.80X86系列微處理器指令系統:指令格式與編碼,定址方式,指令系統。
4.80X86宏匯編語言的數據、表達式和偽指令語句。
5.80X86宏匯編語言的程序設計:順序、分支及循環程序設計,子程序設計,ROBBIOS中斷調用和DOS提供功能調用。
三、PC機組成原理與介面技術
1.PC機的邏輯組成與物理結構:主板與晶元組,超級I/O晶元,主板BIOS等。
2.系統匯流排的功能與工作原理,ISA匯流排和PCI局部匯流排。
3.主存儲器的組成與工作原理:ROM和RAM,內存條與主存儲器工作原理,Cache存儲器。
4.輸入輸出控制:I/O定址方式與I/O埠地址,程序控制I/O方式,中斷控制I/O方式。DMAI/O控制方式。
5.外設介面:串列介面,並行介面,SCSI介面和IEEE-1394。
四、Windows操作系統的功能與原理
1.操作系統的功能,類型和Windows98體系結構,Windows API與DLL的基本概念。
2.Windows的處理機管理:Windows虛擬機,Windows虛擬機管理程序,Windows的進程調度技術。
3.Windows的存儲管理:Windows的內存結構與管理,Windows的虛擬內尋。
4.Windows的文件管理:Windows的文件系統結構,磁碟的存儲結構,FAT16與FAT32。
5.Windows的設備管理:虛擬設備驅動程序,通用驅動程序與小型驅動程序,即插即用與配置管理,電源管理,列印子系統等。
6.Windows的網路通信功能:Windows的網路組件,遠程網路通信,分布式組件對象模型DCOM,Windows中的Internet組件。
7.Windows的多媒體功能:Windows對多媒體文件與設備的支持,Windows的多媒體組件,Windows的媒體播放器。
8.Windows的配置、管理與維護:安裝與啟動,注冊表,系統配置與管理,系統性能監視和優化,故障診斷。
9.PC機的安全與病毒防範:計算機安全的一般概念,PC機病毒及其防範。
五、PC機的常用外圍設備
1.輸入設備:鍵盤、滑鼠器、筆輸入設備、掃描儀、數碼相機,聲音輸入設備及MIDI輸入設備。
2.輸出設備:CRT顯示其、液晶顯示器與顯示控制卡,針式列印機、激光印字機與噴墨列印機;繪圖儀;MIDI音樂合成、3D環繞聲生成與音箱;視頻輸出設備。
3.外存儲器:軟盤存儲器;硬碟存儲器的組成、原理與性能指標,活動硬碟,磁碟陣列;磁帶存儲器;光碟存儲器的原理與分類,CD-ROM、CD-R、CD-RW、DVD光碟存儲器。
4.PC機連網設備:Modem,ISDN與PC機的接入,ADSL接入,有線電視網與Cable Modem,區域網組網設備(乙太網卡與集線器),無線接入技術。
六、上機操作
1.掌握計算機基本操作。
2.熟練掌握80X86宏匯編語言程序設計的基本技術、編程和調試。
3.掌握與考試內容相關的上機應用。
考試方式
一、筆試:120分鍾
二、上機考試:60分鍾
❹ 單片機怎樣在SD卡中形成TXT文檔
同上,需要文件系統的支持,推薦一個好用的 znFAT,支持FAT16/32,有文件系統的話不只是txt,任何類型文件都行,還可以對文件刪除,讀取,修改等~還有可以新建文件夾,很多子目錄。。。。如果是單片機玩的話,在調試的時候請把SD卡格式化一下,注意要把最小扇區改成512(位元組),還得找個內存起碼1KB的單片機吧~我自己在測試znFAT的時候用的是Atmega32,讀的速度在幾十K,寫的話比較慢了,因為是匯流排模擬的,建議採用硬體SPI對SD卡操作,這樣加上文件系統後速度不會太慢了,當然再怎麼也不能和電腦比:-)
裡面提供很多例子,包括最底層的SD卡扇區讀寫,到SD卡文件系統讀寫。他的資料都是以51單片機為基礎編寫的。只需更改底層操作函數,大概是Sd卡的讀位元組和寫位元組就可以很輕松的完成任何mcu的移植了。mcu內存大點哦!
下面是資料代碼的下載地址:請把中文也復制進去
http://www.znmcu.cn/soft.asp?BigClassName=源碼資料下載
❺ 51單片機ram不夠用,怎麼優化程序
1.肯定的,嵌套越多,要壓棧保存的信息就越多,佔用的RAM就越多了,對51來說,最多就是CPU內256位元組的RAM。
2.是的。
3.沒用過這晶元……我用的最多的是AVR
4因為你定義了一個pagebuf[512],512位元組啊!51單片機的data撐死才256位元組(還沒算壓棧保存數據需要的RAM),所以編譯器自動將這個數組放在了XDATA中。
❻ 怎麼用51單片機在SD卡中用SPI模式寫出txt文件
那要用到FAT文件系統,光這個就夠你看的了。
傳統51跑不起來的,光是RAM就不夠,SD卡一個扇區就512個位元組。
如果用大RAM的51可以,比如C8051F之類,先實現底層的驅動,然後移植文件系統,比如FATFS,用他的f_write就可以了。
FATFS的資料比較多,先了解一下大概,其餘的自己去找:
http://blog.csdn.net/laorenshen/archive/2010/04/13/5480499.aspx
雖然那個FAT文件系統不是必須要學的,因為這個FATFS都幫你做了,但你還是有點心理准備為好,這東西沒點編程、單片機的經驗不是那麼好做的。