2009年3月3日 星期二

(參考書籍)嵌入式系統開發之道:菜鳥成長日誌與專案經理的私房菜


  • 作者:邱毅凌
  • 出版社:悅知文化
  • 出版日期:2010年08月31日
  • 語言:繁體中文
  • ISBN:9789866348518
  • 裝訂:平裝
這本書非常適合對於想踏入32bit嵌入式系統或是SoC開發的初學者閱讀,書中介紹菜鳥與老鳥的對話,也是非常的寫實,顯見作者在業界的觀察入微,書中的對話,我真的是心有戚戚焉.....

2009年3月2日 星期一

Embedded Linux系統(1-2)_使用Toolchains set 環境變數

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu9.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
2. Setup Toolchains:
(1). 下載〝bashrc.tgz〞,使用〝Terminal〞輸入〝tar zxvf bashrc.tgz〞解壓縮.
下載路徑:http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/bashrc/bashrc.tgz
(2). 將檔案夾內的兩個檔案複製到使用者目錄下.
注意:〝nds32le-linux-V0〞為N1213_43U1H cors OS 編譯工具; 〝nds32le-elf-V0〞為N1213_43U1H cors Non OS 編譯工具.


注意:
開啟〝nds32le-linux-V0〞與〝nds32le-elf-V0〞需修改程式的路徑,〝export ANDESIGHT_ROOT=/home/使用者名稱/Andestech/AndeSight133/〞.

注意:使用"#"號注解掉下列不需要的參數.
# For encoding settings
#export LANG=en_US
#export LC_CTYPE=iso_8859_1
#export LC_ALL=POSIX
#export CHARSET=iso8859-1

(3). 指定Toolchains,使用〝Terminal〞輸入〝source bashrc.nds32le-elf-V0〞,指定Non OS編譯路徑. (4). 測試Toolchains路徑, 輸入〝which nds32le-elf-gcc〞,之後makefie就可以正確指向Toolchains編譯路徑.



2009年3月1日 星期日

Embedded Linux系統(1-1)_Setup開發環境

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu9.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
備註:安裝完成後建議不要中文化,這樣在使用"Terminal"時,才不會有要輸入中文的問題.
2. 安裝AndeSight v1.3.3 for Linux版:
(1). 將光碟送至光碟機,開啟檔案〝Disk1->InstData->VM->AndeSight133.sh〞,使用滑鼠點選並選擇〝Run in Terminal〞執行. (2). 按〝Next〞. (3). 按〝Next〞. (4). 選擇〝Full〞,按〝Next〞.(5). 按〝Install〞.
注意:磁碟剩餘容量最小要有6GB. (6). 開始安裝. (7). 安裝完成,要求執行〝ICEman.sh〞,按〝Done〞. (8). 開啟〝Teminal〞,開啟〝Andestech/AndeSight133/ice〞,輸入〝./ICEman.sh〞執行.(9). 安裝完成.


嵌入式系統架構基礎概念

常見嵌入式系統所使用的CPU可分:
1. 精簡指令集(RISC,Reduced Instruction Set Computing 的縮寫),32~64bit,如ARM(英商),MIPS(美商),ARC(ARC原為英商,2009/11被記憶體IP廠商,美商Virage Logic收購,之後Virage Logic於2010/6又被美商Synopsys收購),Andes(台商),這四家是以IP(矽智財授權)方式販售.
RISC這種設計思路對指令數目和定址方式都做了精簡,使其實現更容易,指令並行執行程度更好,編譯器的效率更高.一般都使用於智慧型手機,機上盒,PDA,數位電視,MP3,光碟播放機等手持式系統.

RISC架構CPU還包含IBM PowerPC core與瑞薩電子(日本)SuperH core,不過PowerPC架構目前並沒有什麼進展,中國內地的蘇州國芯的C*Core就是使用PowerPC架構,做成IC販賣,而瑞薩電子的CPU雖然是自行設計,不過並不販售IP,而是像Intel一樣做成IC販售.

FPGA設計大廠XILINX搭配自己FPGA一同出貨的PicoBlaze32,不過可能是推廣的不太好,XILINX目前都是主打搭配ARM.
FPGA設計大廠ALTERA搭配自己FPGA一同出貨的Nios II core.
FPGA設計大廠Lattice搭配自己FPGA一同出貨的LatticeMico32.

2. 複雜指令集(CISC,Complex Instruction Set Computer 或是 一般稱為X86架構) ,32~64bit,如Intel(美商),AMD(美商),VIA(台商),這三家是以IC方式販售.
每個指令可執行若干低階操作,諸如從記憶體讀取,儲存,和計算操作,全部集於單一指令之中.一般都使用於桌上型電腦,筆記型電腦,伺服器,工業電腦,博弈機台.

3. Intel 8051,8bit,如Atmel,NXP,Winbond,SyncMOS(族煩不及備載)…
8051因為年代久遠,Intel在此的專利權已經過期,很多廠商都有在生產,且也有其原始碼,所以可以在市面上看到很多修改過的特殊8051,像是增加IIC,SPI介面,加快CPU頻率等.

4. Microchip PIC,8~16bit,但是Microchip 之後推出的32bit CPU 是使用MIPS core.

學習嵌入式系統一開始最重要的就是選擇CPU,需依照自己所要開發產品的特性做選擇,RISC架構比CISC來的省電,所以手持式的系統都會使用RISC架構的CPU.

各家所設計的CPU架構不同,ISA(Instruction Set Architecture)指令集當然也就不同,說簡單點就是撰寫組合語言的指令不一樣,不過如果程式都是使用C語言撰寫,只要使用你所選擇CPU廠商所提供的編譯器(toolchains)重新編譯過,就可以在該廠商的CPU上執行程式.

嵌入式系統程式可分為OS(作業系統)與Non OS(不使用作業系統):1. OS: 再OS上執行程式,目前常見到Embedded OS有Windows CE, MicroC/OS II,Embedded Linux.
手機所使用的OS也算是Embedded OS,如Symbian,Windows Mobile,Palm OS,Linux(Android).

2. Non OS: 就是不再OS執行程式,直接撰寫程式對CPU內暫存器做讀寫動作.

我想撰寫8051程式的工程師因該是最了解Non OS,但是也是這一點讓許多撰寫8051程式的工程師,當要升級使用32bit CPU需使用到OS時最頭痛的一個門檻.因為通常使用8051幾乎是不需要用到OS,當然32bit CPU (如果不需使用MMU,Memory management unit)當然也可以當作32bit MCU使用,但是時代的進步許多產品設計越來越複雜,所以很多產品幾乎都要是用到Embedded OS.

嵌入式系統DSP(Digital Signal Processing)處理器:CEVA與VeriSilicon是DSP IP的授權廠商,DSP也是CPU的一種,不過一般的CPU不管是CISC或是RISC都偏重於控制,而DSP偏重於運算,所以當所設計的嵌入式系統需要類比/數位間的數學運算與轉換,可以在設計的SoC內加入DSP,設計成異質雙核心的SoC.

開放原始碼的RISC CPU:
SPARC(可擴充處理器架構,Scalable Processor ARChitecture),原本屬與昇陽(Sun)開發,但是甲骨文(Oracle)於2010年成功收購昇陽(Sun)後,SPARC Core智財權目前屬於甲骨文(Oracle),不過在2005~2007年時昇陽(Sun)堆出OpenSPARC計畫,將部分CPU開放原始碼.

OpenRISC是由OpenCores組織所提供的,是以GPL協議的開放源代碼的RISC架構CPU.