查看: 13938|回复: 232
|
嵌入式系統初探
[复制链接]
|
|
发表于 22-1-2009 10:56 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 27-2-2009 09:35 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 4-2-2009 11:20 PM
|
显示全部楼层
data mining好用阿。。。
还蛮好玩的。。。
其中一个我学ai的原因。但是没有教,可惜呀可惜。但是最后还是自修了 |
|
|
|
|
|
|
|
发表于 20-1-2009 11:37 PM
|
显示全部楼层
|
|
|
|
|
|
|
前言
隨著消費性電子產品例如手持式電子產品,包括手機,PDA Phone, Smart Phone, GPS日益普及,乃至資訊家電,數碼家庭的概念逐漸地落實,嵌入式系統
(Embedded System)也逐漸成為企業界及學術界的明星。
雖然嵌入式系統的應用漸廣,需求也大增,但一直以來,仍然僅止於企業開發的重點,而學術界至今仍未把嵌入式系統視為必修,而有興趣學習者,往往不得其門而入。其主要的原因在於學習的門檻高,所需的花費也高。
想像一下,假設各位想在個人電腦上寫一個能印出 “Hello World!”的Java程式,各位可能會先準備Java Virtual Machine, JavaCompiler。可能到Sun的Website下載Java SDK,也可能準備JBuilder來撰寫,編譯,執行。
但如果各位要在ARM平台執行一個自己撰寫的能印出 “Hello Embedded System!”的程式,卻沒有這麼方便,我們至少要先安裝交叉編譯器 (Cross-Compiler),也可能需要撰寫Makefile, 然後Build程式,然後用特定的燒寫工具 (Flash and Debug tool)例如ICE 把這支程式載到ARM微處理機的板子上執行。
原以為開機以後,就會在LCD上印出Hello Embedded System! 結果系統卻是一動也不動,在硬體重啟(Reset)後發現畫面上什麼也沒有。
原來,在嵌入式系統,沒有人為你對整個開機環境初始化,一切從上電以後,ARM CPU開始執行第一個指令開始,都要由我們自行開發,撰寫開機的引導程式,對一些重要的硬體(件)初始化完畢,才能載入系統核心,然後才有檔案系統(filesystem),讓我們寫好的程式能在其上執行。
本文將以連載的方式,分享筆者的一點心得,將從硬體上電以後,嵌入式平台處理器執行第一個指令開始,引領初學者一窺嵌入式系統的殿堂。
[ 本帖最后由 詩魂 于 21-1-2009 08:50 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 20-1-2009 11:53 PM
|
显示全部楼层
在開始認識嵌入式系統以前,讓我們先了解何謂Memorymapping 及I/Omapping。我們都知道,跟處理器相連的主要硬體有二,一為記憶體,另一為週邊硬體(Peripheral)。週邊硬體泛指一些記憶體以外的特殊硬體裝置,例如序列埠 (SerialPort)。
那麼,處理器是如何找到這些硬體裝置,然後對它們做存取(訪問)的動作呢?沒錯,就是透過位址。若把記憶體和週邊都放在相同的位址空間,這種方式稱為Memory-mapped。這種系統的特點就是可以透過存取記憶體的指令來存取週邊。ARM就是屬於這種。
相反地,如果記憶體和週邊分屬在不同的位址空間,這種方式稱為I/O-mapped。X86處理器就屬於這種。 |
|
|
|
|
|
|
|
楼主 |
发表于 21-1-2009 12:22 AM
|
显示全部楼层
回到之前的例子。如果各位要在ARM平台執行一個自己撰寫的能印出 “Hello Embedded System!”的程式,需要哪些環境呢?我們可能需要呼叫函式(functioncall),那至少,CPU的SP(Stack Pointer)暫存器(Register)要已經ready,隨此之外,還有許多程式需要用到的暫存器,例如狀態暫存器,PC暫存器等都需已經初始化完畢,然後再對CPU其他功能也做初始化(initialization),然後還要初始化那些應用程式會用到的硬體,最後載入系統核心,這樣才能讓我們的應用程式能夠正確地執行。
是誰來做啟動的動作,初始化硬體,並載入核心呢? 答案是Bootloader。或許我們比較熟悉的是PC的啟動程序。在PC中,也是有所謂的Bootloader來引導開機,只不過它是由BIOS和硬碟(Hard disk)的MBR的Bootloader,例如我們熟悉的LILO,GRUB所組成。主板上電以後,BIOS會開始做自我檢查及分配資源,然後把位於MBR的Bootloader給載到隨機存取記憶體(RAM),並將控制權轉移給Bootloader。
這時Bootloader要做什麼呢? 他的主要任務就是將系統的核心映像檔 (kernelimage file) 載入到RAM,若是Linuxkernel可能需先解壓縮,再載到RAM執行,然後跳到kernel的入口,開始了系統的操作環境。
然而在嵌入式系統,其整個引導開始,以及載入作業系統的工作都由Bootloader來完成。以ARM為例,主板在供電以後,是由0x0開始執行,通常,我們會把Bootloader放到這個位址。
好想睡了,改天再來檢查有沒有寫錯並繼續
|
|
|
|
|
|
|
|
发表于 21-1-2009 12:50 AM
|
显示全部楼层
很不错的分享。值得夸奖 :-)
很多人(当然我是指从事与IT技术相关职业的,并不强求老百姓也去明白)使用OS都没有这方面的概念,尤其是boot process到底是怎么回事。
最近和朋友在搞着一些robotic的东东,希望能从你这里偷师偷师。
加油! |
|
|
|
|
|
|
|
发表于 31-1-2009 12:23 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 31-1-2009 12:22 AM
|
显示全部楼层
原帖由 atchek 于 30-1-2009 09:16 PM 发表
你的AI 要做什么的?
其实我的目的是要他在陆地上跑先才下水
自动平衡啊,防撞啦, 。。。很多啦 |
|
|
|
|
|
|
|
楼主 |
发表于 21-1-2009 08:50 PM
|
显示全部楼层
剛把標題改得比較有文化一點 |
|
|
|
|
|
|
|
楼主 |
发表于 21-1-2009 08:55 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 21-1-2009 09:02 PM
|
显示全部楼层
原帖由 詩魂 于 2009/1/21 08:55 PM 发表
reikyv 兄您好,
沒辦法,這些東西,教科書裡不教,既便是IT的學生或寫application program的engineer,
也不見得會特地去了解這些內容,因為考試不會考,工作也沒用到
Hi :-)
我是说OS的boot process.... 当然,embedded system不是普通教科书里会教的。。。 :-) |
|
|
|
|
|
|
|
发表于 28-1-2009 11:15 AM
|
显示全部楼层
回复 18# chingjun 的帖子
其实可以用SERIAL PORT PROGRAMMING
比较简单。 |
|
|
|
|
|
|
|
发表于 22-1-2009 02:30 PM
|
显示全部楼层
原帖由 reikyv 于 21-1-2009 12:50 AM 发表
很不错的分享。值得夸奖 :-)
很多人(当然我是指从事与IT技术相关职业的,并不强求老百姓也去明白)使用OS都没有这方面的概念,尤其是boot process到底是怎么回事。
最近和朋友在搞着一些robotic的东东,希望能从 ...
酱你也应该分享一下, 大家互惠互利 |
|
|
|
|
|
|
|
发表于 22-1-2009 03:21 PM
|
显示全部楼层
原帖由 晨天 于 2009/1/22 02:30 PM 发表
酱你也应该分享一下, 大家互惠互利
那么你要跟我分享什么? |
|
|
|
|
|
|
|
发表于 23-1-2009 02:28 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 23-1-2009 09:45 AM
|
显示全部楼层
原帖由 reikyv 于 23-1-2009 02:28 AM 发表
如果你是要我分享关于 robotic的。
抱歉,那个project十划都没有一撇,我们还在讨论中。
初步概念是做一个迷你的robotic arm。一些零件已经买了,图也画了,但是却没有人会programming IC。。。
如果你有兴趣 ...
可以分享一下吗?
你打算用SOLARIS 来建立你的ROBOTIC ARM?
[ 本帖最后由 atchek 于 23-1-2009 09:47 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 23-1-2009 03:52 PM
|
显示全部楼层
原帖由 atchek 于 2009/1/23 09:45 AM 发表
可以分享一下吗?
你打算用SOLARIS 来建立你的ROBOTIC ARM?
Solaris?不是。那个是另外一个project。
Robotic arm的基本结构(例如摩多,工业用的,朋友从外国购入。至于外壳则自己亲手做,基本上很粗糙)已经有了也接好了。
现在的问题是在电板和IC的programming。我们没有人有Electronic的background。所以要自己研究如何program IC。
那个robotic arm就像是工业用的那种,可以上下左右移动,然后夹东西。不过是迷你型的。
就只能说那么多。
至于Solaris,是我要用到它的kernel virtualization的技术。所以才会想学。当然还有它的ZFS,Dtrace等。
听说ZFS会port去Linux,而OSX好像snow leopard就会有了。
难道atchek对robotic有兴趣? |
|
|
|
|
|
|
|
发表于 23-1-2009 04:31 PM
|
显示全部楼层
有兴趣玩ROBOTIC
想过用ATOM + WIFI + WEBCAM + WHEEL 来建立一个 有视像功能的 遥控车。
但没时间研究。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|