雙核單片機之初體驗

發(fā)布時(shí)間:2011-10-25 09:48    發(fā)布者:絕對好文
關(guān)鍵詞: 單片機 , 雙核
作者:戴上舉 daishangju@163.com

不經(jīng)意間,“酷睿雙核”已經(jīng)成為電腦CPU性能達標的代名詞,雙核從字面意思理解就是里面有兩個(gè)CPU的核,原來(lái)一臺電腦只有一個(gè)CPU核處理事情,如果用了雙核CPU,就有兩個(gè)CPU核來(lái)處理事情,這樣速度和效能會(huì )更高。

這樣在一般人眼里,雙核儼然代表了先進(jìn)的技術(shù)和先進(jìn)的性能,當然同時(shí)也代表著(zhù)先進(jìn)的價(jià)格,不信可以去回顧一下市場(chǎng)價(jià)格,同一時(shí)期雙核電腦CPU要比單核的價(jià)格高不少。

從性能和價(jià)格上電腦CPU和單片機是沒(méi)有可比性,如果說(shuō)電腦CPU是大佬,那么單片機就是大佬馬仔的馬仔的馬仔的馬仔的馬仔。既然雙核電腦CPU性能比單核的要強大不少,作為和電腦CPU八百年前祖上是一家的單片機,如果也用雙核技術(shù),想必性能也會(huì )提升不少。

理論上講設計出雙核單片機完全沒(méi)有問(wèn)題,只是單片機要求價(jià)格便宜,要是設計出一款雙核單片機,假設性能可以提升一倍,但價(jià)格也要上升許多,恐怕不會(huì )有多少人可以用。

在我的潛意識里,一直都認為雙核單片機是一種相對昂貴的產(chǎn)品,應該沒(méi)有機會(huì )和現在大量?jì)r(jià)格不超過(guò)人民幣1塊錢(qián)的普通單片機進(jìn)行競爭,直到去年底接觸到臺灣應廣科技的一款雙核單片機,才徹底改變了我這種認識。

在介紹這種雙核單片機之前,讓我們一起了解一下目前市場(chǎng)上價(jià)格不超過(guò)人民幣1塊錢(qián)的一些單片機,這些單片機的具體性能參數不做介紹,這里只列舉大致參考價(jià)格(可能存在少許偏差)。

義隆 EM78P153 市場(chǎng)參考價(jià)0.7~0.8元
飛凌 兼容版153 市場(chǎng)參考價(jià)0.55~0.6元
博巨興 兼容版153 市場(chǎng)參考價(jià)0.45~0.55元
麥肯、佑華等公司性能相當型號 市場(chǎng)參考價(jià) 0.6~0.7元

在讓我們來(lái)看一下這款單片機的一些性能參數:

內置2個(gè)FPPA處理單元
1k Word OTP 程序存儲器
64 Bytes RAM 數據存儲器
包含跳轉指令在內的絕大多數指令為單周期指令
支持位操作
支持硬件延時(shí)和等待指令 *注1 *注2
13條雙向IO口+1條輸入口
3通道8位A/D轉換器
IO支持VDD/2電壓驅動(dòng)LCD
內部低速RC、內部高速RC、外部振蕩器、外部RC、外部時(shí)鐘可選
休眠電流<1uA
工作電壓 2.5~5.5V
工作溫度 -40~105攝氏度

(*注1:該單片機支持delay 100指令,該指令為延時(shí)等待100+1個(gè)周期)
(*注2:該單片機支持wait1 pa.0指令,該指令為當pa.0為高時(shí)才執行下一條指令)

以我個(gè)人的經(jīng)驗,現在市面上的單片機,如果想找出一款支持PWM、ADC、UART中任意一種功能的型號,價(jià)格一般都超過(guò)人民幣1塊錢(qián),而且一般都只支持其中的一到兩種,除非是價(jià)格達到2~3元的型號。而如果選用前面列舉參數的單片機,本身硬件已經(jīng)直接支持ADC,而且還可以通過(guò)軟件在不影響主程序的前提下實(shí)現高速PWM和UART功能。



上圖為該雙核單片機的內部構架示意圖,從圖可見(jiàn)該單片機內部有兩個(gè)核,分別為FPP0和FPP1,每個(gè)核自己有獨立的程序指針(PC)、堆棧指針(SP)、累加器(ACC)和狀態(tài)寄存器(CF)。設計原理并不復雜,是讓這兩個(gè)核共享系統時(shí)鐘,第一個(gè)系統時(shí)鐘周期執行FPP0程序,第二個(gè)系統時(shí)鐘周期執行FPP1程序,依次間隔往復,這樣就可以讓兩個(gè)核各自運行自己的程序。

兩個(gè)核都可以訪(fǎng)問(wèn)控制RAM和特殊功能寄存器,因為在一個(gè)系統周期內只有一個(gè)核在工作,所以不會(huì )出現兩個(gè)核同時(shí)寫(xiě)某個(gè)RAM或寄存器的狀況。為了讓大家更清晰地理解這個(gè)雙核單片機的工作機理,下面我以問(wèn)答的方式對部分特性進(jìn)行說(shuō)明。

1. 兩個(gè)核的程序放在什么地方?如何執行?

樣例代碼:
地址    指令
0x000   goto main0
0x001   goto main1
...
main0:
...
main1:
...
回答:?jiǎn)纹瑱C上電后FPP0的程序指針指向0x000,FPP1的程序指針指向0x001,但是單片機系統只啟動(dòng)FPP0,FPP0跳轉到main0開(kāi)始執行該位置的代碼,FPP1需要在main0代碼設置相應控制寄存器位才能啟動(dòng)。
系統上電只啟動(dòng)FPP0是為了便于程序統一初始化各特殊功能寄存器,如果在FPP0和FPP1中都分別進(jìn)行初始化,很有可能造成系統配置混亂。

2. 如果我在main1中使用跳轉指令跳轉到main0中,會(huì )有什么后果?

goto main0
goto main1
...
main0:
...
main0_loop:
...
goto main0_loop
...
main1:
...
goto main0    //***這里跳轉到main0中***//
...
回答:編譯器會(huì )報警出錯,所以后果就是代碼錯誤無(wú)法通過(guò)編譯,需要刪除該代碼。

3. 會(huì )不會(huì )出現兩個(gè)核同時(shí)寫(xiě)某個(gè)RAM變量而導致寫(xiě)失敗的情況?

回答:每個(gè)系統時(shí)鐘周期只有一個(gè)核會(huì )工作,所以不會(huì )出現兩個(gè)核在同一時(shí)刻寫(xiě)同一地址的情況。

4. 既然FPP1需要FPP0的程序來(lái)啟動(dòng),那不啟動(dòng)FPP1時(shí)是不是FPP0運行速度會(huì )增快一倍呢?

回答:?jiǎn)?dòng)FPP1與不啟動(dòng)FPP1不影響FPP0的運行速度,FPP0的速度總是系統時(shí)鐘的一半,這個(gè)是由系統硬件自動(dòng)進(jìn)行分配的,不啟動(dòng)FPP1的影響是在屬于FPP1的那一半時(shí)間單片機沒(méi)有執行代碼。

5. 應廣雙核單片機支持中斷嗎?

回答:應廣雙核單片機支持中斷,中斷源和其它普通單片機沒(méi)有太多差異,象常見(jiàn)的外部中斷、定時(shí)中斷、ADC中斷都支持,使用上也和其它普通單片機沒(méi)有區別。

要留意的是應廣雙核單片機的中斷程序只能由FPP0使用,所有的中斷源共用一個(gè)中斷入口,需要用戶(hù)通過(guò)中斷標志位判斷中斷類(lèi)型。另外該單片機支持中斷嵌套,需要用戶(hù)自己對累加器和狀態(tài)寄存器進(jìn)行壓棧和彈棧操作。

6. 應廣雙核單片機采用什么語(yǔ)言編程?好不好掌握?

回答:應廣雙核單片機IDE編譯環(huán)境支持匯編和Mini C,非常容易上手,可以說(shuō)是目前單片機IDE編譯環(huán)境最好掌握的。

就是經(jīng)驗豐富的工程師,不少單片機開(kāi)發(fā)工具拿到手后都需要提供個(gè)相對完整的工程樣例才能開(kāi)始編程,有的單片機甚至寫(xiě)完代碼后工程師都還不會(huì )自己創(chuàng )建新工程。應廣提供的IDE開(kāi)發(fā)環(huán)境完全是智能傻瓜式,根本不需要任何樣例代碼,拿著(zhù)datasheet就可以開(kāi)始編程。

應廣雙核單片機總共有90余條匯編指令,IDE編譯器支持匯編和基本C語(yǔ)句混合編程,而且IDE編譯器會(huì )自動(dòng)識別,不象其它編譯器需要使用偽指令進(jìn)行標示,我們可以通過(guò)一些簡(jiǎn)單例子來(lái)感受其編程的便捷性。

代碼樣例1

.romadr 0x000  //這一句也可以去掉,沒(méi)有這一句編譯器會(huì )自動(dòng)從0地址開(kāi)始放代碼,是同樣結果
goto main0
goto main1
.romadr 0x010
...
main0:
...
main0_loop:  //這里是用匯編實(shí)現FPP0主循環(huán)
...
goto main0_loop
...
main1:
...
while(1)  //這里是用基本C語(yǔ)句實(shí)現循環(huán)
{
...
}

代碼樣例2

word word_data //定義一個(gè)WORD變量
byte byte_data  //定義一個(gè)字節變量
bit bit_data //定義一個(gè)位變量
...
set1 bit_data  //用匯編指令設置該位變量為1
set1 byte_data.5  //用匯編指令將該字節變量的bit5設為1,不需要在變量中進(jìn)行位定義
bit_data = 0  //用C基本語(yǔ)法將位變量清0
byte_data = 0 //用C基本語(yǔ)法將字節變量清0
mov a,0x12  //用匯編將WORD變量賦值0x3412
mov lb@word_data,a
mov a,0x34
mov hb@word_data,a
word_data = 0x5678  //用C基本語(yǔ)法將WORD變量賦值0x5678
pa = 0b111_101_00  //用二進(jìn)制對pa口進(jìn)行設置,注意可以自由添加下劃線(xiàn)做分隔標示符
pb =  0b11110000 //
...
word_data = 0  //C基本語(yǔ)句和匯編可以任意組合
byte_data = 100
while(byte_data)
{
  word_data++
  byte_data--
  mov a,byte_data
  mov pa,a
}

要留意的是對于分號(;)編譯器當做注釋符,所以使用C語(yǔ)句時(shí)不能用分號,這樣for(;;)循環(huán)就無(wú)法使用。另外編譯器對部分C語(yǔ)法支持有限,建議只用最基本的C指令。

7. 應廣雙核單片機開(kāi)發(fā)環(huán)境復雜嗎?是否支持在線(xiàn)編程?

回答:應廣雙核單片機的開(kāi)發(fā)環(huán)境非常精簡(jiǎn),IDE編譯器和燒錄軟件的安裝文件大小總共不到7M,安裝后就編譯和燒錄兩個(gè)文件。

編譯器自帶樣例工程,并可用指定IO口自動(dòng)生成軟件模擬的UART/SPI/I2C等代碼。

目前應廣單片機均為OTP類(lèi)型,需要專(zhuān)門(mén)的仿真器進(jìn)行調試,然后用專(zhuān)門(mén)的燒錄器進(jìn)行燒寫(xiě)。仿真器和燒錄器都是免驅動(dòng)USB接口,插上電腦即可使用。

8. 應廣雙核單片機價(jià)格貴嗎?和其它普通單片機相比最大優(yōu)勢是什么?

回答:應廣雙核單片機價(jià)格不但不貴,而且可以說(shuō)相當便宜。前面我有介紹部分其它品牌單片機市場(chǎng)參考價(jià),這里我不能很詳細的透露應廣的價(jià)格,但可以很明確的告訴大家,應廣的價(jià)格和上述單片機比非常有競爭力。

和其它普通單片機相比,在我看來(lái)最大優(yōu)勢是用硬件在一個(gè)簡(jiǎn)單的單片機上實(shí)現了類(lèi)似多任務(wù)操作系統的功能,在一些需要處理多個(gè)實(shí)時(shí)性比較強的事件時(shí)會(huì )非常簡(jiǎn)單。除了雙核單片機,應廣還有四核和八核的型號,價(jià)格約為雙核的2~3倍。

9. 應廣雙核單片機性能穩定嗎?抗干擾能力怎么樣?

回答:我的回答肯定是性能穩定,抗干擾能力強。

客觀(guān)的說(shuō)個(gè)說(shuō)法需要大量用戶(hù)的實(shí)際產(chǎn)品應用作為輔證,應廣科技是臺灣近幾年才升起的一家公司,和松翰與義隆有一定技術(shù)淵源,從技術(shù)上講不會(huì )弱于這兩家,而且已經(jīng)有相當數量的出貨量,從客戶(hù)反饋看在穩定性和抗干擾能力方面都不錯,比較典型的用戶(hù)是用到HW公司產(chǎn)品的風(fēng)扇控制上。

10. 能否通過(guò)一些應用實(shí)例來(lái)讓大家了解應廣雙核單片機針對某些應用場(chǎng)合的便捷性?

例1:目前價(jià)格低于0.2美元的單片機大都不帶UART(串口)硬件,如果用一款低價(jià)單片機開(kāi)發(fā)需要支持串口通訊的產(chǎn)品,只能是用IO口軟件模擬串口。

用IO口軟件模擬串口的代碼并不復雜,但如果單片機還要處理其它事情,就會(huì )遇到麻煩。假定通訊速率是9600,這樣每個(gè)位寬大約為104us。

一種方法是直接在主程序中循環(huán)完成通訊,這樣當有數據收發(fā)的時(shí)候就無(wú)法處理其它事情,每個(gè)字節會(huì )占用超過(guò)1ms的時(shí)間,數據越多,占用的時(shí)間越長(cháng),對于數據發(fā)送處理還好,數據接收就會(huì )很麻煩,理論上需要程序每52us去查看一次IO狀態(tài)才行,這樣的程序只要簡(jiǎn)單一想就知道編寫(xiě)起來(lái)不是一件簡(jiǎn)單的事情。

另一種方法是用中斷,這種處理方法比循環(huán)的要簡(jiǎn)便一些,但要做到同時(shí)收發(fā)和兼顧處理其它事情,同樣也不是一件簡(jiǎn)單的事情。
對于普通單片機如果只處理串口數據收發(fā),不做其它事情,不管程序循環(huán)還是中斷方式,程序相對都不會(huì )太過(guò)復雜,上面只所以復雜是需要同時(shí)處理其它的事情。

使用應廣雙核單片機就可以很好的解決這個(gè)問(wèn)題,首先價(jià)格上不會(huì )超過(guò)0.2美元;其次代碼會(huì )相對簡(jiǎn)單,一個(gè)內核處理主程序,一個(gè)內核專(zhuān)門(mén)負責串口通訊,兩者都會(huì )有很好的實(shí)時(shí)性。

例2:處理38K紅外遙控碼。

38K紅外遙控碼是頻率38K占空比為1:2的方波,如果單片機硬件不支持IR接口,就需要單片機能連續輸出寬度約為9us和18us的高低電平。如果要單片機輸出這種周期持續穩定的方波,在發(fā)碼期間基本上不能使用中斷,象東芝碼一次發(fā)碼時(shí)間大約需要60ms,這樣就會(huì )嚴重影響程序的計時(shí)等功能。

紅外碼的接收相對要好一些,每個(gè)碼都有幾百微秒的時(shí)間,采用中斷完全可以實(shí)現解碼,唯一麻煩的是紅外碼通常都是數據包,而且數據包中間還包含一些特殊格式,不象串口所有的字節碼都是固定格式,這樣需要程序按照特定流程才能解碼,無(wú)法象串口一樣只要一個(gè)字節的接收程序就可以完成所有數據的接收,所以紅外的接收解碼程序會(huì )比較長(cháng),中間如果夾入其它事情處理就會(huì )變得很復雜。
以我個(gè)人的經(jīng)驗,普通單片機完成紅外遙控碼的處理,大約需要2~3天時(shí)間,最終效果不會(huì )太好,但如果使用應廣雙核單片機,半天即可完成,代碼數量要少許多,效果則是更理想。

例3:一個(gè)用應廣雙核單片機做的紅外遮擋開(kāi)光(反射式)全部代碼。

IR_SW equ pb.1
IR_INPUT equ pa.0
IR_OUTPUT equ pa.6


byte ir_new
byte ir_old
byte ir_enable
byte i
byte ir_new1
byte ir_new2
byte ir_new3

  goto main0
goto main1

//----------------FPPA0-------------------
main0:
.ADJUST_OTP_IHRCR 8MIPS  // IHRC/2 = 8MIPS, WatchDog Disable, RAM 0,1 temporary be used

sp = 0x30

disgint
inten = 0

mov a,0b000_11_111 //disable timer
mov t16m,a

set1 pbc.1
set0 IR_SW

set0 pac.0
set1 pac.6
set0 IR_OUTPUT

delay 200

ir_new = 0
ir_old = 0
ir_enable = 0

mov a,0
mov intrq,a


set1 fppen.1 //eanble FPPA1

ir_enable = 1
i = 20
while(i)
{
  delay 200
  i--
}

if(IR_INPUT)
{
  ir_old = 1
}
else
{
  ir_old = 0
}

ir_enable = 0
i = 5
while(i)
{
  delay 200
  i--
}

clkmd.1 = 1 //enable watch dog


main0_loop:
wdreset
call check_ir

if(ir_new != ir_old)
{
  if(ir_new != 1)
  {
   tog IR_SW
  }
  ir_old = ir_new
}

i = 100
while(i)
{
  delay 200
  i--
}
goto main0_loop

check_ir:
ir_enable = 1
i = 20
while(i)
{
  delay 200
  i--
}

if(IR_INPUT)
{
  ir_new1 = 1
}
else
{
  ir_new1 = 0
}

i = 5
while(i)
{
  delay 200
  i--
}

if(IR_INPUT)
{
  ir_new2 = 1
}
else
{
  ir_new2 = 0
}

i = 5
while(i)
{
  delay 200
  i--
}

if(IR_INPUT)
{
  ir_new3 = 1
}
else
{
  ir_new3 = 0
}

if((ir_new1 == ir_new2) && (ir_new2 == ir_new3))
{
  ir_new = ir_new1
}
else
{
  ir_new = ir_old
}

ir_enable = 0
i = 20
while(i)
{
  delay 200
  i--
}
ret

//----------------FPPA1-------------------
main1:
sp = 0x38
delay 200
main1_loop: //output 38k IR signal
if(ir_enable)
{
  set1 IR_OUTPUT
  delay 33
  set0 IR_OUTPUT
  delay 67
}
else
{
  set0 IR_OUTPUT
  delay 10
}
goto main1_loop



11. 應廣雙核單片機存在哪些不足?

回答:到目前為止已經(jīng)上市的所有型號最低工作電壓為2.5V,這個(gè)電壓值有點(diǎn)高,不適合電池供電的產(chǎn)品,如果能做到2.2V會(huì )更具競爭力。了解到的信息是應廣科技有計劃推出更低工作電壓的版本。

編譯工具存在一些不足,對C語(yǔ)言的支持并不是很理想,仿真時(shí)選擇3.3V工作電壓容易產(chǎn)生低電壓復位(此時(shí)需要保證工作電壓大于3.3V)。對于有經(jīng)驗的工程師這點(diǎn)不是關(guān)鍵問(wèn)題,開(kāi)發(fā)過(guò)程可以繞過(guò)這些不足。

部分型號的ADC精度略微偏低,但可滿(mǎn)足大部分場(chǎng)合的應用需求。

某些功能上存在個(gè)別瑕疵,不過(guò)應廣科技在其網(wǎng)頁(yè)上已經(jīng)將這些瑕疵全部列舉出來(lái),并提出了相應解決方法。這一點(diǎn)比其它公司要做得好,其它公司往往是用到最后才發(fā)現有這樣那樣的問(wèn)題,還有可能是無(wú)法解決的問(wèn)題,讓用戶(hù)進(jìn)退兩難。

12. 應廣科技對客戶(hù)的技術(shù)支持是否及時(shí)?

回答:應廣科技作為一家成立時(shí)間不長(cháng)的公司,非常重視客戶(hù)服務(wù),無(wú)論大小客戶(hù),只要你在使用應廣科技的產(chǎn)品進(jìn)行開(kāi)發(fā),所有技術(shù)問(wèn)題都有專(zhuān)人進(jìn)行回復,通常會(huì )在第二個(gè)工作日回復電子郵件。

13. 應廣的雙核單片機保密性怎樣?花多少錢(qián)可以解密?

回答:相較其它臺系單片機,應廣有著(zhù)良好的保密性,目前市場(chǎng)上暫無(wú)提供針對應廣單片機的解密服務(wù)。

14. 如果我想用應廣的單片機開(kāi)發(fā)產(chǎn)品?什么地方可以買(mǎi)到芯片和開(kāi)發(fā)工具?

回答:這個(gè)需要聯(lián)系當地的代理商,如果不知道代理商可以直接聯(lián)系應廣科技進(jìn)行咨詢(xún),應廣科技網(wǎng)址www.padauk.com.tw
我這里不提供應廣單片機裸片,但可以根據客戶(hù)需求用應廣雙核單片機完成產(chǎn)品開(kāi)發(fā),并且不收開(kāi)發(fā)費。

15. 哪些產(chǎn)品適合選用應廣的單片機?

回答:這個(gè)問(wèn)題有點(diǎn)不好回答,其實(shí)蠻多場(chǎng)合都挺適合的,可以這么說(shuō),相信你一旦使用過(guò)應廣的產(chǎn)品,就會(huì )喜歡上它。
在我看來(lái),用義隆153做有點(diǎn)難,用松翰和合泰單片機做有點(diǎn)貴,這類(lèi)產(chǎn)品最適合應廣的單片機;當然,那種帶有通訊等實(shí)時(shí)性強功能的低成本方案應廣更是不二選擇。
本文地址:http://selenalain.com/thread-78102-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
chamcham 發(fā)表于 2011-11-1 14:25:41
赤裸裸的廣告 ~    這種所謂的"雙核"真的很山寨, 為了省個(gè)UART的面積專(zhuān)門(mén)用一個(gè)核來(lái)跑串行通訊, 犧牲了一半的性能不說(shuō), 還大大增加了功耗, 因為沒(méi)有數據的時(shí)候那個(gè)核是在空轉的 !
hhuibox 發(fā)表于 2011-11-2 15:20:17
參考一下
sunyf0220 發(fā)表于 2011-11-4 12:42:18
感覺(jué)意義不是很大呀!
100home 發(fā)表于 2011-11-6 11:29:49
好朋友!
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页