前言,
在228我回去高雄,參加了高雄科學園區所辨的徵才。但我志不在參加這個,而是在看那些大廠們(好像也沒幾家,只有一家鴻海)未來需要什麼人材,關於我這一方面的未來趨勢及發展。
行動裝置的需求(系統平台win 'linux,圖形driver QT'GTK等),雲端,big data(machine learn) 及跨平台語言(HTML5)。在接下來,換成校園徵才活動。希望自己有時間能去參加更希望有機會跟業界的人接觸好讓自己準備。
=========================
之前,自己一直在想要"如何將OO導入嵌入系統",本來是想要去研究QT'GTK ,因為它們也是由C語言寫成OO的架構。但,果然自己沒個底的話,大腦果然自己去delelte 這個。
回去時候,重翻了書本。看到相關的內容這裡我整理一下,並希望自己能將它螎入我的東西裡。
//my_object.h
//attribute
struct my_object
{
//所有類別都有的屬性,用來記錄該類別的基本屬性
//這個屬性必須是所有類別屬性的第一個,用來做polymorphism
OBJECT base;
//public attribute
int public_att1;
int public_att2;
//私有屬性
int private_att1;
int private_att2;
};
//define new data type
typedef MY_OBJECT my_object
//類別屬性,class or static attribut,全域
extern int my_obj_class_attr1;
extern int my_obj_class_attr2;
//公用方法(public method)宣告
//function name必須明確指出那個物件
//其傳入參數為讓物件的指標
//contructor
//C中沒有同名函式,用下列代替
int my_obj_constructor_1(MY_OBJ* theobj,int parameter1);
void my_obj_constructor_2(MY_OBJ* theobj);
//de constructor
void my_obj_desconstructor(MY_OBJ* theobj);
//一般方法宣告
void my_obj_public_method1(MY_OBJ* theobj);
//======================================
//my_object.c
#include "my_obj.h"
//定義屬性及方法
int my_obj_class_attr1=0;
int my_obj_class_attr2=0;
//private method, static function
staic void my_obj_private_method(MY_OBJ* theobj)
{
//operator theobj 的所有(含私有)屬性/方法
...
}
staic void my_obj_private_metho2d(MY_OBJ* theobj)
{
//operator theobj 的所有(含私有)屬性/方法
theobj->public_attr1=0;
theobj->private_attr2=0;
my_obj_private_method(theobj);
}
//public method
void my_obj_public_method1(MY_OBJ* theobj)
{
//可operator theobj的所有屬性方法
...
}
int my_obj_getattr_method1(MY_OBJ* theobj)
{
//用來對外窗口
return theobj->private_att1;
}
//=================
//instance
//實作,main.c
#include "my_obj.h"
void other_function(void)
{
MY_OBJ A;
MY_OBJ B;
int result;
//call constructor
result = my_obj_constructor_1(&A,1);
my_obj_constructor_2(&B);
//在外部可operator public attaribute and method
A.public_att1 =0;
//invocation
my_obj_public_method1(&A);
//deconstructor
my_obj_desconstructor(&A);
}
//message passing
//base_class.h
#define BASE_OBJ_VALID_FLAGE 0XABCDEF
struct base_class
{
//private attribute
//是否為合法class(assign BASE_OBJ_VALID_FLAGE)
int valid_obj_flag;
//為每個類別編號,以此得知傳入為那個物件
int object_type;
char obj_name[5];
};
typedef OBJECT base_class
char* base_obj_get_object_name(OBJET* theobj);
int base_obj_check_invalue_flag(OBJECT *theobj);
int base_obj_get_object_type(OBJET* theobj);
//base_class.c
public method define
//傳入是否為合法
int base_obj_check_invalue_flag(OBJECT *theobj)
{
if(theobj->valid_obj_flag= BASE_OBJ_VALID_FLAGE)
return true;
else
return false;
}
//取得物件的型別
int base_obj_get_object_type(OBJET* theobj)
{
if(base_obj_check_invalue_flag(theobj))
return theobj->object_type;
else
return 0;
}
//取得物件名稱
char* base_obj_get_object_name(OBJET* theobj)
{
if(base_obj_check_invalue_flag(theobj))
return theobj->object_name;
else
return 0;
}
//printf the object attribut
void show_object_info(OBJECT *theobj)
{
if(base_obj_check_invalue_flag(theobj)==false)
return;//not vaild object
switch(base_obj_get_object_type(theobj))
{
case OBJ_TYPE_1:
break;
case OBJ_TYPE_2:
break;
case OBJ_TYPE_3:
break;
default:
break;
}
//show the name
printf("%s",base_obj_get_object_name(theobj));
}
//test.c
void main()
{
OBJECT_TYPE_1 A;
//...contructuor
//轉成基本類別,任一類別中第一個attribut都是基本類別
show_object_info((OBJECT*)&A);
}
//===================
//繼
//suport class
struct parent_obj
{
OBJECT base;
int papa_attr1;
int papa_attr2;
...
};
typefdef PAPA_OBJ struct parent_obj;
//父類別的公用方法
void papa_public_method1(PAPA_OBJ* theobj);
//sub class define
struct child_obj
{
PAPA_OBJ papa; //inhinernet
int child_attr1;
int child_attr2;
....
};
typedef CHILD_OBJ struct child_obj;
//public child method
void child_public_metho(CHILD_OBJ *papa);
//==============
//test.c
void test(void)
{
CHILD_OBJ child;
PARA_OBJ* pParentObj;
//操作子物件attribute/method
child.child_attr2=1;
child_public_method1(&child);
//轉換
pParentObj =(PAPA_OBJ*)child;
//operator parent method/attribute
pParentObj->papa_attr1 =2;
papa_public_method2(&pParentObj);
//the same
child.papa.papa_attr1=1;
papa_public_method1((PAPA_OBJ*)(&child));
}
//polymorphism
//sub class 2 define
struct child_obj2
{
PAPA_OBJ papa; //inhinernet
int child2_attr1;
int child2_attr2;
....
};
typedef CHILD_OBJ2 struct child_obj2;
//sub class 2 public method
void child2_public_method1(CHILD_OBJ* papa);
//polymorphism 可處理多種類別的函式,但傳入是suport class
int papa_obj_polymorphism_method(OBJECT* kind_of_papa_obj)
{
//是否為有效物件
if(base_obj_check_invalue_flag(theobj))
return false;
switch(base_obj_get_object_type(theobj))
{
case OBJ_TYPE_PAPA:
papa_public_method1((PAPA_OBJ*)kind_of_papa_obj);
break;
case OBJ_TYPE_1:
child_public_method1((CHILD_OBJ*)kind_of_papa_obj);
break;
case OBJ_TYPE_2:
child2_public_method1((CHILD_OBJ2*)kind_of_papa_obj);
break;
default:
return false;
break;
}
return true;
}
//test program
void test(void)
{
PAPA_OBJ A;
CHILD_OBJ B;
//CONSTRUCTOR
//polymorphism,
papa_obj_polymorphism_method((OBJECT*)(&A));
papa_obj_polymorphism_method((OBJECT*)(&B));
}
2014年4月11日 星期五
2014年4月4日 星期五
無線網路-WDS與中繼
之前,有介紹如何擴展家裡無線範圍的內容。
"DD-WRT Repeater Bridge Mode 讓無線訊號範圍更廣"
因為家裡中華電信有來更換線路及提升頻寛,所以有換了router VDSL2 P870HA
並在我不知情下,把它買下即開啓無線功能。所以我也就把原本的Tenda 309R
拿掉。
目前,家裡的網路環境如下:
Rounter A: P870HA (router + AP)
Rounter B: WL-520GC(Repeater,中繼站)
Rounter C: Tenda 309R(用來當AP,現在不用了。本來是想要用來代替Rounter B)
多了一台,且用Router B所刷的FW,有時不是太隱定,所以我改用另一台。
首先,有三個方式來增加其範圍
1.WDS
因為在Tenda 309R中,沒有中繼模式。而它裡面有WDS,所以我今天會介紹這個。 (雖然試了但事實上是行不通的),因為"會認晶片廠商等等除了相廠牌相同機型才可以互連 , 說白點就是同品種同種族同語言"
2.中繼模式
請參照
"DD-WRT Repeater Bridge Mode 讓無線訊號範圍更廣"
3.AP Clinet
和中繼模式相同 , 但是無法無限延伸
WDS:
中繼:
最後,講一下我對WDS的測試結果。
本來是試著將二個router的channel設成一致(在WDS設定中有要指定這項)
而它所造成的結果
1.沒設channel時
Tenda 309R可以連線,但馬上又斷了
2.在二邊設好channel
可以稱個30秒左右,但仍然無法正確定動作。
http://roilyoko.pixnet.net/blog/post/30704470
"DD-WRT Repeater Bridge Mode 讓無線訊號範圍更廣"
因為家裡中華電信有來更換線路及提升頻寛,所以有換了router VDSL2 P870HA
並在我不知情下,把它買下即開啓無線功能。所以我也就把原本的Tenda 309R
拿掉。
目前,家裡的網路環境如下:
Rounter A: P870HA (router + AP)
Rounter B: WL-520GC(Repeater,中繼站)
Rounter C: Tenda 309R(用來當AP,現在不用了。本來是想要用來代替Rounter B)
多了一台,且用Router B所刷的FW,有時不是太隱定,所以我改用另一台。
首先,有三個方式來增加其範圍
1.WDS
因為在Tenda 309R中,沒有中繼模式。而它裡面有WDS,所以我今天會介紹這個。 (雖然試了但事實上是行不通的),因為"會認晶片廠商等等除了相廠牌相同機型才可以互連 , 說白點就是同品種同種族同語言"
2.中繼模式
請參照
"DD-WRT Repeater Bridge Mode 讓無線訊號範圍更廣"
3.AP Clinet
和中繼模式相同 , 但是無法無限延伸
WDS:
中繼:
最後,講一下我對WDS的測試結果。
本來是試著將二個router的channel設成一致(在WDS設定中有要指定這項)
而它所造成的結果
1.沒設channel時
Tenda 309R可以連線,但馬上又斷了
2.在二邊設好channel
可以稱個30秒左右,但仍然無法正確定動作。
http://roilyoko.pixnet.net/blog/post/30704470
2013年8月30日 星期五
USB不能做什麼
1.介面限制;傳送距離、P2P及Broadcasting.
對於開發者的挑戰
有傳輸協定的複雜度、OS對應用的支援;取得Vendor ID.
複雜度,一個usb device需要回應命令及介面上事件的處理。控制器晶片對韌体的支援不相同。而在裝置的設計和程式需要知道usb傳輸協定是如何在介面上交換資料.在pc host中的application 無須知底層硬体介面協定.driver仍需知其usb傳輸協定.
usb是個分享式介面,有其規制的傳輸介面,os不允許AP直接存取usb device.
OS支援;
需內建device class driver.
Vendor ID: 需要向usb if取得Vendor ID and product ID.
術語(terminology);
機能(function);
一個裝置可以有一或多個機能。host可讀取device descriptor and interface descriptor來獲得裝置所有的功能.描述表格descriptor包含裝置的相關資料結構。
device;
實体產品。host 會對各個device給一個唯一的位址。而對於compound device(hub +device)分別個有一個。composite device則共有一個介面位址。
port;
可以被定址的位置.
主機的作業;
1.介面限制;傳送距離、P2P及Broadcasting.
對於開發者的挑戰
有傳輸協定的複雜度、OS對應用的支援;取得Vendor ID.
複雜度,一個usb device需要回應命令及介面上事件的處理。控制器晶片對韌体的支援不相同。而在裝置的設計和程式需要知道usb傳輸協定是如何在介面上交換資料.在pc host中的application 無須知底層硬体介面協定.driver仍需知其usb傳輸協定.
usb是個分享式介面,有其規制的傳輸介面,os不允許AP直接存取usb device.
OS支援;
需內建device class driver.
Vendor ID: 需要向usb if取得Vendor ID and product ID.
術語(terminology);
機能(function);
一個裝置可以有一或多個機能。host可讀取device descriptor and interface descriptor來獲得裝置所有的功能.描述表格descriptor包含裝置的相關資料結構。
device;
實体產品。host 會對各個device給一個唯一的位址。而對於compound device(hub +device)分別個有一個。composite device則共有一個介面位址。
port;
可以被定址的位置.
主機的作業;
- 偵測device;列舉,enumeration. 決定其傳送速度、位址並送出額外的資訊.
- 管理資料流;因為可能有多個device同時傳收資料故主機需分配其顏宽。而usb2只有半雙工;而usb 3為全雙工.
- 錯誤檢驗;由裝置送來的資料可由host來檢驗.
- 電源提供及管理.
- 與裝置交換資料.
- 針對晶片偵測通信;位址檢查後,去做回應.
- 對標準命令回應;
- 錯誤檢查
- 電源管理
- 與主機交換資料.
MintyBoost! - Small battery-powered USB charger
MintyBoost! - Small battery-powered USB charger
--------------------------------------
However, there's one thing about 9V's that I've learned (from lots of bad experiences). One is that they don't have a lot of amp-hours: that is, how much current (amps) they can provide and for how long (hours). A duracell 9V provides -about- 500mAh over its lifetime. That's 500 mA (or .5A) for one hour or 100mA for 5 hours. That number is somewhat idealized but its a good starting point.
--------------------------------
雖然你也可以使用一個9伏的電池加上一個7805來做.
但是,我有一件對於9伏的電池的事,必須要講.
一是它(9V)並沒有很多的amp-hours.它是指一個電池可以在一個小時內,提供多少電流
(假設一個電池,它是500mAh .它就是指500mA for on hour or 100mA for 5 hours.)
這是一個好的問題開端
--------------------------------
Another problem is that they don't like to supply a lot of current, because they have high internal resistance (~2ohms), but basically that just means that if you want a lot of current (say to resuscitate a drained device) the 9V wont provide all 500mAh, but maybe more like 400. (Say you're drawing 250mA, then .25A*2ohm = 0.5V lost to internal resistance. For more info on 9V, read the duracell datasheet )
--------------------------------
另一個問題,就是它們.並不能真正地去提供這麼多的電流出來.
**因為它(9V)電池內部,有較高的內阻(~2ohoms) ,基本上它就是指,若你想要很多的電流時,
那個9V電池並不會真正地提供500mAh,大約400左右.
(且因為內阻的關係,假使你要250mAh時,你會損失.2.5 X 2 =0.5 ,在內阻上)
--------------------------------
Another problem with the 9V+7805 scheme is that a 7805 is a linear regulator. That means if you want 100mA at 5V (basically, USB power) then you're taking 100mA at 9V and then losing the 4V*100mA = 400mW (.4W) difference as heat.
----------------------------------------
因一個主要的問題是, 當使用9V電池加上7805的組合時,因為7805是個線性的regulator.
而其"linear regulator"就是指說 : 若你想要100mA 5V的電源時,對於電池來說是提供了
100mA 及 9V給 7805. 而你會損失9-5 *100mA=.4W
----------------------------------------
As the battery wears down to 7V the heat loss goes down to (7-5V)*100mA=.2W but you're still getting bad efficiency. At best the efficiency is 72% (5V/7V) and at worst its 55% (5V/9V) That means you're losing about a third of the battery power to heat!
----------------------------------------
若其電池為7伏特電壓時,它仍然會有7-5 *100=0.2W的損失.
故得到最好效率為 5/7=72% ; 5/9 =55% .
----------------------------------------
I'll also throw out that the 7805 itself has a quiescent current of about 5mA so you're always losing 5% (5mA/100mA) efficiency just for regulation! (& that's at least since if you're trickle charging the battery at 50mA then the 5mA quiescent is 10%)
-------------------------------------
而其7805本身中又有大約5mA的 quiescent current .所以你在轉換電壓時,會有5%(5/100)的
損失.
-------------------------------------
OK so basically the 7805+9V solution works but the efficiency is startlingly low, say 60% or so, and provides only 300mAh at 5V.
(故,若以7805+9V的解決方法,是可以work的.但其效率是很低的.大約只有60%)
----------------------------------
跟據經驗,我認為AA 2號電池是比較好的.因為不但便宜'功率高,低內阻.及容易取得.
以其功率比較時,
一個9V 伏電池 : 9 * 500mA=4.5W ;
而二個 AA電池可以提供 2*1.5*300mA=9W
有大楖二倍的功率產生.但有一個主要問題是 2個AA電池只有3V伏的電壓值.
但我們的輸出,是需要5V.伏特電壓.當你使用9伏的電池做為source你可以使用linear regulator
進行轉換.但有3伏特時,不可以用此方法.故我們需改以使用boost regulator
---------------------------------
設計目的:
為了設計對手機及其它的設備進行充電.
設計楖論:
參考資料:
Boost_converter
http://en.wikipedia.org/wiki/Boost_converter
原始網頁
http://www.instructables.com/id/MintyBoost!---Small-battery-powered-USB-charger/step4/The-Process-Enclosure-selection/
--------------------------------------
However, there's one thing about 9V's that I've learned (from lots of bad experiences). One is that they don't have a lot of amp-hours: that is, how much current (amps) they can provide and for how long (hours). A duracell 9V provides -about- 500mAh over its lifetime. That's 500 mA (or .5A) for one hour or 100mA for 5 hours. That number is somewhat idealized but its a good starting point.
--------------------------------
雖然你也可以使用一個9伏的電池加上一個7805來做.
但是,我有一件對於9伏的電池的事,必須要講.
一是它(9V)並沒有很多的amp-hours.它是指一個電池可以在一個小時內,提供多少電流
(假設一個電池,它是500mAh .它就是指500mA for on hour or 100mA for 5 hours.)
這是一個好的問題開端
--------------------------------
Another problem is that they don't like to supply a lot of current, because they have high internal resistance (~2ohms), but basically that just means that if you want a lot of current (say to resuscitate a drained device) the 9V wont provide all 500mAh, but maybe more like 400. (Say you're drawing 250mA, then .25A*2ohm = 0.5V lost to internal resistance. For more info on 9V, read the duracell datasheet )
--------------------------------
另一個問題,就是它們.並不能真正地去提供這麼多的電流出來.
**因為它(9V)電池內部,有較高的內阻(~2ohoms) ,基本上它就是指,若你想要很多的電流時,
那個9V電池並不會真正地提供500mAh,大約400左右.
(且因為內阻的關係,假使你要250mAh時,你會損失.2.5 X 2 =0.5 ,在內阻上)
--------------------------------
Another problem with the 9V+7805 scheme is that a 7805 is a linear regulator. That means if you want 100mA at 5V (basically, USB power) then you're taking 100mA at 9V and then losing the 4V*100mA = 400mW (.4W) difference as heat.
----------------------------------------
因一個主要的問題是, 當使用9V電池加上7805的組合時,因為7805是個線性的regulator.
而其"linear regulator"就是指說 : 若你想要100mA 5V的電源時,對於電池來說是提供了
100mA 及 9V給 7805. 而你會損失9-5 *100mA=.4W
----------------------------------------
As the battery wears down to 7V the heat loss goes down to (7-5V)*100mA=.2W but you're still getting bad efficiency. At best the efficiency is 72% (5V/7V) and at worst its 55% (5V/9V) That means you're losing about a third of the battery power to heat!
----------------------------------------
若其電池為7伏特電壓時,它仍然會有7-5 *100=0.2W的損失.
故得到最好效率為 5/7=72% ; 5/9 =55% .
----------------------------------------
I'll also throw out that the 7805 itself has a quiescent current of about 5mA so you're always losing 5% (5mA/100mA) efficiency just for regulation! (& that's at least since if you're trickle charging the battery at 50mA then the 5mA quiescent is 10%)
-------------------------------------
而其7805本身中又有大約5mA的 quiescent current .所以你在轉換電壓時,會有5%(5/100)的
損失.
-------------------------------------
OK so basically the 7805+9V solution works but the efficiency is startlingly low, say 60% or so, and provides only 300mAh at 5V.
(故,若以7805+9V的解決方法,是可以work的.但其效率是很低的.大約只有60%)
step 3The Process: Engineering a better solution
From experience, I know that AA's are great. They are cheap, have lots of power, very low internal resistance and are easily available everywhere. Whereas a 9V has 500mAh (for a total of 9*500 = 4.5Wh power) two AA's have 3000mAh each for a total of 2 * 1.5V * 3000mAh = 9Wh, about twice as much power. The only problem is that 2xAA's provide 3V and what we need is 5V. With a 9V battery we can use a linear regulator because 5V < 9V but, sadly, we cant use a linear regulator to turn 3V into 5V. Instead we will need to use a boost regulator (also known as a DC/DC switching/step-up regulator)----------------------------------
跟據經驗,我認為AA 2號電池是比較好的.因為不但便宜'功率高,低內阻.及容易取得.
以其功率比較時,
一個9V 伏電池 : 9 * 500mA=4.5W ;
而二個 AA電池可以提供 2*1.5*300mA=9W
有大楖二倍的功率產生.但有一個主要問題是 2個AA電池只有3V伏的電壓值.
但我們的輸出,是需要5V.伏特電壓.當你使用9伏的電池做為source你可以使用linear regulator
進行轉換.但有3伏特時,不可以用此方法.故我們需改以使用boost regulator
---------------------------------
設計目的:
為了設計對手機及其它的設備進行充電.
設計楖論:
參考資料:
Boost_converter
http://en.wikipedia.org/wiki/Boost_converter
原始網頁
http://www.instructables.com/id/MintyBoost!---Small-battery-powered-USB-charger/step4/The-Process-Enclosure-selection/
介紹 使用CoWare Virtual Platform Analyzer
前言:
因為目的我所擁有的資源.
及未來還是未知,
故不能花錢在購買其它的產品了.
(AVR mk-II,silicon lab C8051,示波器
故我會先以ARM為主
---------------------------------
CoWare Virtual Platform Analyzer
特性
ps:
在找資料時,找到一個是在搜尋日本方面的
看起來,延不錯的
http://ci.nii.ac.jp/
國立情報學研究所/論文情報
因為目的我所擁有的資源.
及未來還是未知,
故不能花錢在購買其它的產品了.
(AVR mk-II,silicon lab C8051,示波器
故我會先以ARM為主
---------------------------------
CoWare Virtual Platform Analyzer
特性
Hardware/Software Integration and Testing...Without Hardware
- Faster edit-compile-debug cycles through more controllability, more observability and more determinism
- // 可以經由更多的可控制,更多的觀看,及更多的設定等來逹到較快速的debug周期
- Near or faster than real time execution
- // 近似於真實的操作
- Non intrusive, multicore debugging and analysis environment
- // 可以進行非侵入,多工下debugging and analysis environment
- Integration of existing commercial, open source or proprietary software development tools
- // 可以整合現有的商業性,開放式或是其它的software開發工具
- Integration of external applications such as realistic user interfaces and environment models
- //整合其它的應用程式,像是 realistic 使用者介面及 environment models
- Immediate availability worldwide--you can send a virtual hardware platform as an e-mail attachment
- 可以經由網路,來傳送一個virtual hardware platform.而不用再去寄送一個硬体裝置
- Your hardware supplier using CoWare technology to deliver a virtual platform that meets your needs.
- CoWare Professional Services team who can deliver years of expertise in creation and deployment of virtual platforms.
- A modeling group within the software team itself. CoWare C/C++-based modeling language makes it a natural fit for software developers to understand the technology.
ps:
在找資料時,找到一個是在搜尋日本方面的
看起來,延不錯的
http://ci.nii.ac.jp/
國立情報學研究所/論文情報
關於嵌入式系統
關於嵌入式系統教學的建議
(2003 年全國單片機學會年會發言材料)
首先聲明,這個建議僅針對電類非計算機專業的本科生、研究生,如電子工程、機電一體化、自動
化等相關專業。對於計算機專業的本科生、研究生,如果要涉及嵌入式系統教學,本建議應該也有一定
的參考價值,但有一些東西就不適合了。
針對這些專業一個有趣的現象就是這些學生畢業之後不能立即投入到實際的應用開發工作之中,產生了嚴
重的「供過於求」 ,很多電子類專業的大學生畢業之後的出路只有改行。而事實上很多企業卻在感歎人才難求,逼不
得已只好自己培養。這些學生都是過五關斬六將殺入高等學府的,本身素質都不低,卻年復一年重複此現象,
只能說明我國的高等教育體制 「生產」 的這一類人才與用人單位的需求脫節, 「生產」 出來的人才只是 「半
成品」 。
單片機與嵌入式系統應用技術是一門實戰性很強的學科,離開了實踐就如無源之水。其實,包括我們業界知名的
很多專家在內, 幾乎所有成才的開發工程師都是一邊學習、 一邊實踐幹出來, 很少有真正的專家是通過課堂教出來的。
大家可以到市場上調查一下,還買得到新的 8279、8255 嗎?已經過去這麼多年了,學生還在學習那些已經很早就淘
汰了的器件,一個大學本科生讀了四年大學連一個可靠的復位電路都設計不好,如果說要從可靠性設計出發來設計產
品就更無從談起。由此可以看出,我們的教材與教法違背了這門學科成才的規律,我們的大學一定要徹底地改變觀念
要盡快地從「教育型」的陰影中走出來迅速地轉向「研究型」培養人才的正確軌道上來。
可喜的是,很多高校在人才的培養上進行了很多有益的探索,也取得了可喜的成績。可以預見,對
於工科院校來說,如果培養的人才能夠很快勝任工作,其畢業生必然很搶手,進而使更多的學生願意報
考,學校就可以挑選素質更好的學生培養,也更容易獲得資金、政策的支持,使學校良性發展,最終使
學校受益。
本人作為一個畢業僅幾年,自認為還有一點成就的電子工程專業的學生,想就本人膚淺的認識,針
對於電類非計算機專業的本科生、研究生關於嵌入式系方面的教學提幾點不成熟的建議,希望在座的各
位老師批評指正。
一、 實踐、實踐再實踐
談到學習不得不談到人們的思想與觀念,這是人才成長與成功的源泉!超前的思想意識、正確的觀念、良好的心
態加上正確的學習方法就可以達到「不用揚鞭自奮蹄」的嶄新境界。所謂教書育人這些根本的根本卻常常容易被人所
忽視,好像這是政治老師的責任,其實不然!我們應該將思想和方法教育放在首位充分調動學習者的積極性化被動為
主動。效果最好的教學方法就是在實驗室裡上課,老師一邊講解理論,學生一邊在計算機上操作和驗證老師講解的內
容加深理解,每個學生人手一套開發實驗板,一個學期下來至少可以做到考試這門課程不用複習,畢業之後對開發流
程和集成開發環境可以達到爛熟於心的程度。
對於與嵌入式系統的教學尤其如此。
我記得中國古代戰國時的趙國有一個人叫趙括,他是名將趙奢的兒子。他年輕時熟讀兵法,善於談兵,連父親也
難不倒他。後來趙王中秦王反間計,讓趙括代替廉頗為趙將。在長平之戰中,趙括只知根據兵書作戰,不知靈活處理,
後被秦軍射死,部下40萬人全部被俘。這就是著名的故事: 「紙上談兵」 。
打仗是一門實踐性很強的學問,同時理論也在不斷的發展,一個人必須經過實踐的才能學會打仗。而嵌入式系統
應用技術也是一門實戰性很強的學科,理論也在不斷的發展當中,沒有實踐,縱使能過「誇誇其談」 ,也只是「紙上
談兵」而已,不能帶來實際的利益,企業也不需要這種人。
在高校有很多方法讓學生參與實踐,如電子設計大賽、課外興趣小組、參與老師的項目開發、自己
在外接項目開發等。不過這些只能針對少部分學生,只能使少部分學生受益而已。真正針對大本分學生
的實踐場合還是在實驗室。目前只有正規的實驗課(包括課程設計等實踐課程)能夠使所有學生參與實
踐,讓學生對實驗感興趣,是實驗課需要解決的問題。這就需要實驗室的建設貼近實際、並有一定的挑
戰性和一定的趣味性,讓學生完成試驗後有成就感和滿足感。
二、 選擇合適的實驗設備
目前針對電類非計算機專業的學生來說,他們畢業後面臨的嵌入式開發主要集中於 8 位單片機的開
發。在 8 位單片機市場上以 80C51 為核心的單片機占主導地位。因此,順應市場的需要,我們應當選擇
一款以 80C51 為核心的實驗儀建立實驗室。
在這個範圍我們有很多選擇,它們各有各的優勢。在這裡我僅介紹一種,它就是 DP-51 單片機仿真
實驗儀。
DP-51單片機仿真實驗儀是基於Keil C51集成開發環境下的DP系列實驗儀之一,是一種功能強大的單片機應用
技術學習、調試、開發工具。基於此已經出版《增強型80C51單片機速成與實戰》 、 《PDIUSBD12 USB固件編程及驅動
開發》等書,還有一本《嵌入式實時操作系統 Small RTOS51 原理及應用》也即將出版。其最新資料可以到
www.zlgmcu.com上下載。 基於這個實驗仿真儀我們已經做了兩個大學實驗室建設推薦方案: 單片機基礎實驗室建立推
薦方案和單片機嵌入式實時操作系統教學實驗室建立推薦方案。這樣,一套設備可以建立兩個實驗室,充分利用了資
源。關於教學實驗室建立推薦方案大家可以到周立功的網站下載。
DP-51 單片機仿真實驗儀向用戶提供了豐富的外圍器件和設備接口,可使用戶快速掌握單片機技術及其實用接
口技術;同時,DP-51單片機仿真實驗儀具有長期保存用戶應用程序的功能,可以作為實際應用系統設計的原型機,
從而可以大大加快將理論設計投入實際應用的速度。
DP-51單片機仿真實驗儀的主要特點有:
(1) CPU為PHILIPS P87C52X2普通型8位OTP單片機,與之完全兼容的Flash單片機型號是P89C52X2,可工
作於6 Clock模式下,雙DPTR,內置3個定時器,採用11.0592 MHz的晶振頻率;
(2) 擴展512KB Flash為程序存貯器,128KB SRAM為數據存貯器,採用分頁尋址技術;
(3) 擴展I
2
C接口的實時時鐘芯片PCF8563T、E2
PROM芯片CAT24WC02,並提供
完整的模擬I
2
C彙編和C51源程序軟件包,可以幫助開發人員快速使用I
2
C器件,避免做不必要的重複開發工作;
(4) 擴展RS232接口可直接與計算機進行通訊,提供完整的動態鏈接庫軟件包及其
源碼完全公開程序範例,可以幫助開發人員快速使用RS232,避免做不必要的重複開發工作;
(5) 擴展PDIUSBD12 USB接口,提供完整的單片機固件程序、上位機驅動程序
源碼及其完整的軟件包和應用範例,即便開發人員沒有掌握USB1.1協議,同樣也能在現有的產品上增加USB功能;
(6) 擴展1個光電隔離、DC-DC隔離供電的CAN接口,提供完整的BasicCAN軟
件包並可直接連接現場總線;
(7) 採用動態掃瞄方式連接8個按鍵、4位8段數碼管、8個LED;
(8) 連接1個無源蜂鳴器,可用於輸出音樂、訊響信號;
(9) 預留1個LCD字符液晶顯示的標準接口,可連接各種型號的字符液晶顯示屏;
(10) CPU信號全部引出,並增加5個設定地址的片選輸出信號,可以用於調試具
體的應用系統;
(11) 內置MON51軟件接口,可與Keil C51聯機,提供單步、斷點、連續等多種
調試;
(12) 提供所有外圍電路的原理圖、彙編程序、C51程序,使用戶迅速掌握各種設
計方法;
(13) 可選配件:DS1602 16X2字符型LCD液晶顯示器,A/D、D/A轉換板,步進
電機、伺服電機控制板,語音模塊,DB9-OPEN5轉換器。
教學要立足於現在,但也要適當的超前。目前 8 位機越來越走向低端應用,而 32 位機的應用即將
到來,這主要是由兩方面的因素引起,一個因素是需求推動,另一個因素是技術進步拉動。
目前,隨著人們的生活水平的提高,人民對生活質量的追求也逐步提高。因此,人們對智能產品的需求增加了,
且對智能產品要求提高了。並隨著網絡的發展,越來越多的產品需要具有聯網功能。這一切需要智能產品具有一個更
強勁的「芯」 ,這是 8 位機很難做到的。同時,由於要生產這樣的產品,對生產線的要求也同樣提高了,這也需要一
個更強勁的「芯」 。同時,對於產品研發的企業來說,有時產品上市的時間很重要,有時上市時間落後於競爭對手就
意味著市場的丟失,但同時質量也要有起碼的保證。這樣,要求開發者盡量減少重複勞動,建立開發平台是一個很好
的產品開發戰略思想且具有現實意義,但8位系統的可憐資源對建立開發平台十分不利,用32位系統就好多了。
在個人電腦行業有著名的「摩爾定律」 ,它已經主宰個人電腦行業很多年了。在嵌入系統領域雖然「摩爾定律」
沒有那麼明顯,但技術的進步已經使32位系統不再高高在上,32位微控制器的價格已經不比8位機高多少,有些系
統使用32位機其整體成本甚至比用8位機還要低。這樣,使用32位系統就沒有技術和成本的障礙了。
目前,在32位市場上,ARM扮演著8位市場上8051的角色,學習32位嵌入式應用首選ARM。但目前市場
上 ARM 的實驗儀還很混亂,很多已經偏移學習 ARM 的初衷。在這裡我介紹一下適合初學者的學習板
EasyARM2104,畢竟大多數老師也是初學者,首先要老師學會,才可以教學生。
EasyARM2104開發實驗板是一款簡單的32位ARM單片機實驗板,採用的是PHILIPS的ARM7TDMI-S 核單
片機LPC2104,具有JTAG調試,ISP編程等功能。板上提供了一些鍵盤、LED、RS232等常用功能部件,幫助用戶
學習32位單片機從簡單的開始,一步一步的過渡到32位ARM嵌入式系統開發領域。
LPC2106/2105/2104具有128K的FLASH(128位接口,速度更高),64K/32K/16K的SRAM,無需擴展存儲器,
使系統更為簡單、可靠;內部具有硬件I
2
C、SPI、PWM等眾多外圍部件,功能更強大;48管腳LQFP封裝,體積更
小;3.3V和1.8V系統電源,內部PLL時鐘調整,功耗更低。
EasyARM2104有非常低廉的價格,又非常適合初學者,性價比極高。其配套圖書《ARM 微控制器基礎與實
戰》一書即將由北航出版社出版,差不多有500頁。它介紹了ARM7TDIM的結構和指令系統,並從彙編開始並過渡
到C最後到一個簡單的嵌入式實時操作系統μC/OS-II,讓讀者一步一步的深入學習嵌入式應用。
EasyARM2104的功能特點:
z 選用PHILIPS的LPC2104,可進行JTAG仿真調試,支持ADS1.2集成開發環境;
z 完全自主設計的軟硬件、擁有自主版權的JTAG仿真技術,用戶使用沒有後顧之憂;
z 板上具有主/從JTAG選擇電路;
z 所有I/O全部引出,可以和用戶的外部電路連接搭配;
z 4個獨立LED、6個獨立鍵盤控制;
z 具有RS232轉換電路,可與上位機進行通訊;
z 具有I
2
C器件、SPI器件接口器件;
z 具有濾波電路,PWM輸出可實DAC轉換功能;
z 板上的功能部件可使用跳線器連接或斷開連接;
z 提供基於PC的人機界面,方便調試實時時鐘、串口通信等功能;
z 提供詳細的使用教材,實驗例程。
z 可進行GPIO的控制實驗,如LED閃爍控制、鍵盤輸入、蜂鳴器控制、模擬SPI等;
z 可進行外部中斷實驗,學習向量中斷控制器(VIC);
z 定時器控制實驗,如定時控制LED、匹配比較輸出等;
z 使用RS232轉換電路,完成UART通訊實驗;
z 使用板內的CAT24WC02,完成I
2
C總線的實驗;
z 使用74HC595芯片,實現SPI接口數據發送、接收實驗;
z 具有PWM輸出測試點及濾波電路,實現PWM輸出、PWM DAC實驗;
z 實時時鐘控制實驗;
z WDT及低功耗控制實驗;
三、 精心選擇教學內容
通過一個實驗儀一般可以設計不止一個教學課程。但對於電類非計算機專業來說,還是以硬件為基
礎的,還是需要從硬件開始,從簡單到複雜,然後軟硬結合,從彙編到 C,最後到簡單的嵌入式操作系
統。
舉一個例子,目前很多 ARM 開發板/學習板給人的印象是: 「學 ARM 必移植 LINUX(或是uCLinux) ,必搞
TCP/IP」 ,其實這是不對的。LINUX(μCLinux) 、TCP/IP均是計算機範疇的東西,與ARM沒有必然的聯繫,它們本
身就是一個十分複雜的體系,一個人要精通任何一種都很困難,又何必與ARM絞在一起,人為增加學習ARM的難
度?而且,如果學習這些不成功,勢必會打擊學習者的積極性。
談到uCLinux,我又想到μC/OS-II。從目前來看,比較適於教學的嵌入式操作系統有μClinux和μC/OS-II。對於這
2 個嵌入式操作系統不同的人有不同的看法,可以說在各種網站的討論社區形成了二大陣容,公說公有理、婆說婆有
理,對於初學者來說莫衷一是、無所適從。其實,它們各有個的適用範圍。μClinux 是現在很最熱門的嵌入式實時操
作系統。μClinux是由Linux移植過來的嵌入式操作系統,Linux是一個通用操作系統,大而全,代碼量巨大,源碼公
開, 對想研究現代操作系統的人很有幫助。 μClinux繼承了Linux很多特點, 適合計算機專業學習。 但Linux(μClinux)
由計算機愛好者共同開發,開發人員複雜。這注定其代碼風格各異、資料良莠不齊,而且沒有人對您有解答的義務。
非計算機專業的人本身對現代操作系統的知識就瞭解不多, 對他們來說,μClinux太難了。而μC/OS-II已經有很多產
品成功使用的案例且得到了美國軍方的認證,北京航空航天大學出版社也出版了配套的專著,國內熟悉這個嵌入式操
作系統的開發人員特別地多,十分容易通過網站上的討論社區得到幫助,更關鍵的是我們很容易通過閱讀源碼達到徹
底掌握嵌入式操作系統的目的。
對於資金緊張的院校來說,Small RTOS51 是另一個選擇,它可以在普通的 80C51 框架的單片機上運
行,一般不需要添加新的實驗設備就可以教學了。它比μC/OS-II更簡單,也有配套圖書,利於教學。
至於普通的硬件實驗、彙編實驗、C 語言實驗的教學內容的選擇,相信在座的老師都比我有經驗,在
這裡就不哆嗦了。
(2003 年全國單片機學會年會發言材料)
首先聲明,這個建議僅針對電類非計算機專業的本科生、研究生,如電子工程、機電一體化、自動
化等相關專業。對於計算機專業的本科生、研究生,如果要涉及嵌入式系統教學,本建議應該也有一定
的參考價值,但有一些東西就不適合了。
針對這些專業一個有趣的現象就是這些學生畢業之後不能立即投入到實際的應用開發工作之中,產生了嚴
重的「供過於求」 ,很多電子類專業的大學生畢業之後的出路只有改行。而事實上很多企業卻在感歎人才難求,逼不
得已只好自己培養。這些學生都是過五關斬六將殺入高等學府的,本身素質都不低,卻年復一年重複此現象,
只能說明我國的高等教育體制 「生產」 的這一類人才與用人單位的需求脫節, 「生產」 出來的人才只是 「半
成品」 。
單片機與嵌入式系統應用技術是一門實戰性很強的學科,離開了實踐就如無源之水。其實,包括我們業界知名的
很多專家在內, 幾乎所有成才的開發工程師都是一邊學習、 一邊實踐幹出來, 很少有真正的專家是通過課堂教出來的。
大家可以到市場上調查一下,還買得到新的 8279、8255 嗎?已經過去這麼多年了,學生還在學習那些已經很早就淘
汰了的器件,一個大學本科生讀了四年大學連一個可靠的復位電路都設計不好,如果說要從可靠性設計出發來設計產
品就更無從談起。由此可以看出,我們的教材與教法違背了這門學科成才的規律,我們的大學一定要徹底地改變觀念
要盡快地從「教育型」的陰影中走出來迅速地轉向「研究型」培養人才的正確軌道上來。
可喜的是,很多高校在人才的培養上進行了很多有益的探索,也取得了可喜的成績。可以預見,對
於工科院校來說,如果培養的人才能夠很快勝任工作,其畢業生必然很搶手,進而使更多的學生願意報
考,學校就可以挑選素質更好的學生培養,也更容易獲得資金、政策的支持,使學校良性發展,最終使
學校受益。
本人作為一個畢業僅幾年,自認為還有一點成就的電子工程專業的學生,想就本人膚淺的認識,針
對於電類非計算機專業的本科生、研究生關於嵌入式系方面的教學提幾點不成熟的建議,希望在座的各
位老師批評指正。
一、 實踐、實踐再實踐
談到學習不得不談到人們的思想與觀念,這是人才成長與成功的源泉!超前的思想意識、正確的觀念、良好的心
態加上正確的學習方法就可以達到「不用揚鞭自奮蹄」的嶄新境界。所謂教書育人這些根本的根本卻常常容易被人所
忽視,好像這是政治老師的責任,其實不然!我們應該將思想和方法教育放在首位充分調動學習者的積極性化被動為
主動。效果最好的教學方法就是在實驗室裡上課,老師一邊講解理論,學生一邊在計算機上操作和驗證老師講解的內
容加深理解,每個學生人手一套開發實驗板,一個學期下來至少可以做到考試這門課程不用複習,畢業之後對開發流
程和集成開發環境可以達到爛熟於心的程度。
對於與嵌入式系統的教學尤其如此。
我記得中國古代戰國時的趙國有一個人叫趙括,他是名將趙奢的兒子。他年輕時熟讀兵法,善於談兵,連父親也
難不倒他。後來趙王中秦王反間計,讓趙括代替廉頗為趙將。在長平之戰中,趙括只知根據兵書作戰,不知靈活處理,
後被秦軍射死,部下40萬人全部被俘。這就是著名的故事: 「紙上談兵」 。
打仗是一門實踐性很強的學問,同時理論也在不斷的發展,一個人必須經過實踐的才能學會打仗。而嵌入式系統
應用技術也是一門實戰性很強的學科,理論也在不斷的發展當中,沒有實踐,縱使能過「誇誇其談」 ,也只是「紙上
談兵」而已,不能帶來實際的利益,企業也不需要這種人。
在高校有很多方法讓學生參與實踐,如電子設計大賽、課外興趣小組、參與老師的項目開發、自己
在外接項目開發等。不過這些只能針對少部分學生,只能使少部分學生受益而已。真正針對大本分學生
的實踐場合還是在實驗室。目前只有正規的實驗課(包括課程設計等實踐課程)能夠使所有學生參與實
踐,讓學生對實驗感興趣,是實驗課需要解決的問題。這就需要實驗室的建設貼近實際、並有一定的挑
戰性和一定的趣味性,讓學生完成試驗後有成就感和滿足感。
二、 選擇合適的實驗設備
目前針對電類非計算機專業的學生來說,他們畢業後面臨的嵌入式開發主要集中於 8 位單片機的開
發。在 8 位單片機市場上以 80C51 為核心的單片機占主導地位。因此,順應市場的需要,我們應當選擇
一款以 80C51 為核心的實驗儀建立實驗室。
在這個範圍我們有很多選擇,它們各有各的優勢。在這裡我僅介紹一種,它就是 DP-51 單片機仿真
實驗儀。
DP-51單片機仿真實驗儀是基於Keil C51集成開發環境下的DP系列實驗儀之一,是一種功能強大的單片機應用
技術學習、調試、開發工具。基於此已經出版《增強型80C51單片機速成與實戰》 、 《PDIUSBD12 USB固件編程及驅動
開發》等書,還有一本《嵌入式實時操作系統 Small RTOS51 原理及應用》也即將出版。其最新資料可以到
www.zlgmcu.com上下載。 基於這個實驗仿真儀我們已經做了兩個大學實驗室建設推薦方案: 單片機基礎實驗室建立推
薦方案和單片機嵌入式實時操作系統教學實驗室建立推薦方案。這樣,一套設備可以建立兩個實驗室,充分利用了資
源。關於教學實驗室建立推薦方案大家可以到周立功的網站下載。
DP-51 單片機仿真實驗儀向用戶提供了豐富的外圍器件和設備接口,可使用戶快速掌握單片機技術及其實用接
口技術;同時,DP-51單片機仿真實驗儀具有長期保存用戶應用程序的功能,可以作為實際應用系統設計的原型機,
從而可以大大加快將理論設計投入實際應用的速度。
DP-51單片機仿真實驗儀的主要特點有:
(1) CPU為PHILIPS P87C52X2普通型8位OTP單片機,與之完全兼容的Flash單片機型號是P89C52X2,可工
作於6 Clock模式下,雙DPTR,內置3個定時器,採用11.0592 MHz的晶振頻率;
(2) 擴展512KB Flash為程序存貯器,128KB SRAM為數據存貯器,採用分頁尋址技術;
(3) 擴展I
2
C接口的實時時鐘芯片PCF8563T、E2
PROM芯片CAT24WC02,並提供
完整的模擬I
2
C彙編和C51源程序軟件包,可以幫助開發人員快速使用I
2
C器件,避免做不必要的重複開發工作;
(4) 擴展RS232接口可直接與計算機進行通訊,提供完整的動態鏈接庫軟件包及其
源碼完全公開程序範例,可以幫助開發人員快速使用RS232,避免做不必要的重複開發工作;
(5) 擴展PDIUSBD12 USB接口,提供完整的單片機固件程序、上位機驅動程序
源碼及其完整的軟件包和應用範例,即便開發人員沒有掌握USB1.1協議,同樣也能在現有的產品上增加USB功能;
(6) 擴展1個光電隔離、DC-DC隔離供電的CAN接口,提供完整的BasicCAN軟
件包並可直接連接現場總線;
(7) 採用動態掃瞄方式連接8個按鍵、4位8段數碼管、8個LED;
(8) 連接1個無源蜂鳴器,可用於輸出音樂、訊響信號;
(9) 預留1個LCD字符液晶顯示的標準接口,可連接各種型號的字符液晶顯示屏;
(10) CPU信號全部引出,並增加5個設定地址的片選輸出信號,可以用於調試具
體的應用系統;
(11) 內置MON51軟件接口,可與Keil C51聯機,提供單步、斷點、連續等多種
調試;
(12) 提供所有外圍電路的原理圖、彙編程序、C51程序,使用戶迅速掌握各種設
計方法;
(13) 可選配件:DS1602 16X2字符型LCD液晶顯示器,A/D、D/A轉換板,步進
電機、伺服電機控制板,語音模塊,DB9-OPEN5轉換器。
教學要立足於現在,但也要適當的超前。目前 8 位機越來越走向低端應用,而 32 位機的應用即將
到來,這主要是由兩方面的因素引起,一個因素是需求推動,另一個因素是技術進步拉動。
目前,隨著人們的生活水平的提高,人民對生活質量的追求也逐步提高。因此,人們對智能產品的需求增加了,
且對智能產品要求提高了。並隨著網絡的發展,越來越多的產品需要具有聯網功能。這一切需要智能產品具有一個更
強勁的「芯」 ,這是 8 位機很難做到的。同時,由於要生產這樣的產品,對生產線的要求也同樣提高了,這也需要一
個更強勁的「芯」 。同時,對於產品研發的企業來說,有時產品上市的時間很重要,有時上市時間落後於競爭對手就
意味著市場的丟失,但同時質量也要有起碼的保證。這樣,要求開發者盡量減少重複勞動,建立開發平台是一個很好
的產品開發戰略思想且具有現實意義,但8位系統的可憐資源對建立開發平台十分不利,用32位系統就好多了。
在個人電腦行業有著名的「摩爾定律」 ,它已經主宰個人電腦行業很多年了。在嵌入系統領域雖然「摩爾定律」
沒有那麼明顯,但技術的進步已經使32位系統不再高高在上,32位微控制器的價格已經不比8位機高多少,有些系
統使用32位機其整體成本甚至比用8位機還要低。這樣,使用32位系統就沒有技術和成本的障礙了。
目前,在32位市場上,ARM扮演著8位市場上8051的角色,學習32位嵌入式應用首選ARM。但目前市場
上 ARM 的實驗儀還很混亂,很多已經偏移學習 ARM 的初衷。在這裡我介紹一下適合初學者的學習板
EasyARM2104,畢竟大多數老師也是初學者,首先要老師學會,才可以教學生。
EasyARM2104開發實驗板是一款簡單的32位ARM單片機實驗板,採用的是PHILIPS的ARM7TDMI-S 核單
片機LPC2104,具有JTAG調試,ISP編程等功能。板上提供了一些鍵盤、LED、RS232等常用功能部件,幫助用戶
學習32位單片機從簡單的開始,一步一步的過渡到32位ARM嵌入式系統開發領域。
LPC2106/2105/2104具有128K的FLASH(128位接口,速度更高),64K/32K/16K的SRAM,無需擴展存儲器,
使系統更為簡單、可靠;內部具有硬件I
2
C、SPI、PWM等眾多外圍部件,功能更強大;48管腳LQFP封裝,體積更
小;3.3V和1.8V系統電源,內部PLL時鐘調整,功耗更低。
EasyARM2104有非常低廉的價格,又非常適合初學者,性價比極高。其配套圖書《ARM 微控制器基礎與實
戰》一書即將由北航出版社出版,差不多有500頁。它介紹了ARM7TDIM的結構和指令系統,並從彙編開始並過渡
到C最後到一個簡單的嵌入式實時操作系統μC/OS-II,讓讀者一步一步的深入學習嵌入式應用。
EasyARM2104的功能特點:
z 選用PHILIPS的LPC2104,可進行JTAG仿真調試,支持ADS1.2集成開發環境;
z 完全自主設計的軟硬件、擁有自主版權的JTAG仿真技術,用戶使用沒有後顧之憂;
z 板上具有主/從JTAG選擇電路;
z 所有I/O全部引出,可以和用戶的外部電路連接搭配;
z 4個獨立LED、6個獨立鍵盤控制;
z 具有RS232轉換電路,可與上位機進行通訊;
z 具有I
2
C器件、SPI器件接口器件;
z 具有濾波電路,PWM輸出可實DAC轉換功能;
z 板上的功能部件可使用跳線器連接或斷開連接;
z 提供基於PC的人機界面,方便調試實時時鐘、串口通信等功能;
z 提供詳細的使用教材,實驗例程。
z 可進行GPIO的控制實驗,如LED閃爍控制、鍵盤輸入、蜂鳴器控制、模擬SPI等;
z 可進行外部中斷實驗,學習向量中斷控制器(VIC);
z 定時器控制實驗,如定時控制LED、匹配比較輸出等;
z 使用RS232轉換電路,完成UART通訊實驗;
z 使用板內的CAT24WC02,完成I
2
C總線的實驗;
z 使用74HC595芯片,實現SPI接口數據發送、接收實驗;
z 具有PWM輸出測試點及濾波電路,實現PWM輸出、PWM DAC實驗;
z 實時時鐘控制實驗;
z WDT及低功耗控制實驗;
三、 精心選擇教學內容
通過一個實驗儀一般可以設計不止一個教學課程。但對於電類非計算機專業來說,還是以硬件為基
礎的,還是需要從硬件開始,從簡單到複雜,然後軟硬結合,從彙編到 C,最後到簡單的嵌入式操作系
統。
舉一個例子,目前很多 ARM 開發板/學習板給人的印象是: 「學 ARM 必移植 LINUX(或是uCLinux) ,必搞
TCP/IP」 ,其實這是不對的。LINUX(μCLinux) 、TCP/IP均是計算機範疇的東西,與ARM沒有必然的聯繫,它們本
身就是一個十分複雜的體系,一個人要精通任何一種都很困難,又何必與ARM絞在一起,人為增加學習ARM的難
度?而且,如果學習這些不成功,勢必會打擊學習者的積極性。
談到uCLinux,我又想到μC/OS-II。從目前來看,比較適於教學的嵌入式操作系統有μClinux和μC/OS-II。對於這
2 個嵌入式操作系統不同的人有不同的看法,可以說在各種網站的討論社區形成了二大陣容,公說公有理、婆說婆有
理,對於初學者來說莫衷一是、無所適從。其實,它們各有個的適用範圍。μClinux 是現在很最熱門的嵌入式實時操
作系統。μClinux是由Linux移植過來的嵌入式操作系統,Linux是一個通用操作系統,大而全,代碼量巨大,源碼公
開, 對想研究現代操作系統的人很有幫助。 μClinux繼承了Linux很多特點, 適合計算機專業學習。 但Linux(μClinux)
由計算機愛好者共同開發,開發人員複雜。這注定其代碼風格各異、資料良莠不齊,而且沒有人對您有解答的義務。
非計算機專業的人本身對現代操作系統的知識就瞭解不多, 對他們來說,μClinux太難了。而μC/OS-II已經有很多產
品成功使用的案例且得到了美國軍方的認證,北京航空航天大學出版社也出版了配套的專著,國內熟悉這個嵌入式操
作系統的開發人員特別地多,十分容易通過網站上的討論社區得到幫助,更關鍵的是我們很容易通過閱讀源碼達到徹
底掌握嵌入式操作系統的目的。
對於資金緊張的院校來說,Small RTOS51 是另一個選擇,它可以在普通的 80C51 框架的單片機上運
行,一般不需要添加新的實驗設備就可以教學了。它比μC/OS-II更簡單,也有配套圖書,利於教學。
至於普通的硬件實驗、彙編實驗、C 語言實驗的教學內容的選擇,相信在座的老師都比我有經驗,在
這裡就不哆嗦了。
2012年11月30日 星期五
ebook(calibre 一: 設定其安裝目錄及database 的位置
二:設定手持閱讀裝置
三:主畫面
正中央的大檢視器會顯示出您目前搜到的書籍(如果您沒有進行搜尋,那就是全部的書籍)。您可以在上方欄位點擊,讓書籍依特定欄位進行排序,以便翻找。此外,要是覺得上方的欄位排序不合己意,又或是太多太亂,也可去【偏好設定】→【加入您自己的欄】項目中進行修改。
書籍詳細資料
書籍詳細資料窗格預設會顯示很多東西。那包括書籍的封面、作者、格式、路徑與註解等等。
要顯示哪些資料,或是改變資料顯示順序,可以在【偏好設定】→【外觀與感覺】→【書籍詳細資料】中進行修改。
不過請稍等一下,在實際匯入之前,強烈建議各位前往【偏好設定】→【將書籍儲存至磁碟】看看。
將非英語字元轉為英語同義字】這項,請斟酌看看要不要取消打勾。若希望中文書的檔名使用中文字,在匯入之前就就得將這個勾勾取消,否則檔名就會轉為拼音。當然如果不在意這個,放著不管也沒關係啦
若是有一堆電子書檔案被散亂地放在不同的子資料夾中,拖曳不方便,則可以改用【加入書籍v】→【從目錄加入書籍……】的按鈕,一次性匯入指定目錄與子目錄下的所有書籍。
若打算匯入的電子書在書庫中已經存在,而使用者又重複匯入,Calibre 預設會跳出警告視窗,問您要不要強行加入它,若選「加入」,則會讓它成為「一本書名重複的新書」-若您對這樣的預設行為不滿,想要用新書更新舊書,又或是不詢問直接行動,則可以去【偏好設定】→【加入書籍】中進行調整。
(若使用【儲存至磁碟】按鈕,也能選擇只匯出特定格式的檔案。)
如果一次選擇了多本書,也可以進行大量匯出
輸出時其,所對應的資料夾名稱及其內容
總之,先讓手持設備與電腦連線(舉例:插上 usb),接著不用進行任何操作。如果 Calibre 能識別該閱讀器,主畫面左下角就會出現您目前的設備名稱(參考圖9)。
您可以選擇想要傳送的書籍,然後按下【傳送到裝置】按鈕。倘若某本書已經傳送過了,在主畫面中會被打勾標示。
手持裝置中現有的書,您可以按【裝置】按鈕進入取得列表。若想將裝置中的書匯入書庫,也可以選擇書本後按右鍵叫出選單,進行匯入操作。
ebook-viewer 還支援使用者樣式表-要是對畫面排版不滿意,只要會一些 CSS 碼,就能將書籍格式輕易重排成自己滿意的樣子
Calibre 最引人注目的特色,恐怕是在各種電子書格式間進行轉檔了。您可以把一本 txt 轉成 epub,或是把 pdf 改造成 mobi,讓書在各種閱讀器中都能被順利讀取!
做法如下:
首先您必須選擇您希望產生的書籍格式(在右上角)。此外如果有必要,您也必須決定書籍的輸入格式(在左上角)。
指定輸入格式等同於規定轉換使用的資料來源,比方說 txt 中不會有隱式超連結,也不會預先儲存目錄結構。原始資料中沒有的東西,Calibre 也很難知道該如何產生它。此外,不同格式的轉檔效果也略有差異,如果您有多個原始格式,可以多嘗試用不同的來源轉檔看看,看哪個最終效果最好。
當然若您的書只有一種格式,就沒得選了。
視窗左側的標籤能讓使用者切換分頁,每個分頁都有大量可供人設定的東西。
元數據
指定書籍的作者、封面、書名等訊息。Calibre 會盡其所能地幫您將這些元數據給事先填好,然而若有什麼欄位不滿意,也可以手動修改、刪除與追加。
外觀感覺
對電子書的顯示參數進行效調。包括設定字型大小、編碼、行高、左右對齊、CSS 等。
啟發式處理
指定讓 Calibre 在轉換時進行某些「猜測」工作。這往往是用在輸入格式的語義表述並不明確,但又想要轉出特定效果的時候。這些功能並不可靠,預設都是停用的,請斟酌使用它們。
頁面設定
只要選擇想要使用的閱讀設備就可以了。
結構偵測
用額外條件來進行章節切分。
目錄頁
設定書籍目錄的產生方式。
搜尋 & 取代
在建立書籍的過程中,自動化地刪改、替換某些文字。
XXX 輸入與 YYY 輸出
用某些格式輸入輸出時,Calibre 會提供一些特別的項目給使用者調整。這些格式特有的選項一律會被獨立出來,放在這邊。
一旦使用者按下面板上的【取回新聞】按鈕,就會跳出圖 13 的選擇框,接著請選出您要的新聞,Calibre 會對該網站提供的新聞進行下載,並全自動地將新聞包裝成電子書,而且還會把今日新聞自動上傳到當前連結的閱讀器中
書庫伺服器
Calibre 可將您的書庫放到網路上,透過網頁介面供人從遠端取用。當然如果您不願意(或受限於法律,不能)與旁人分享您的書庫,您也可以加上密碼
設定方式很簡單:請點【偏好設定】→【透過網路分享】→【啟動伺服器】……這樣就行了。
比較重要的設定還有:
透過電子郵件分享書籍
自建伺服器雖然豪華,不過必須要有固定 IP 與不關機的家庭伺服器才能真正拿來用。不過別擔心,喜歡節能減碳的窮人如我,也可以用電子郵件分享書籍到手持設備中
reference :
三:主畫面
按鈕列:
![]()
各種的主要功能鍵
查找電子書:
A.搜尋器
搜尋列位在按鈕列的正下方,而過濾器則被放在主介面的最左邊位置上。
搜尋列可讓使用者搜索任何書籍的元數據。您可以把字串拋進去撈資料,也可以透過 title:xxx 或 author:yyy 搜索特定的元數據欄位,甚至使用 and、or、not 這類指令進行邏輯查找。
B.過濾器
![]()
過濾器的運作方式和搜尋列相似,只不過您不需要打字。取而代之,點擊某個作者、出版商、格式或自訂標籤,過濾器就會自動將搜索參數拋進搜尋列中。您可以用 Ctrl 或 Shift 鍵,同時指定多個值進行搜尋。
![]()
書籍選擇與書籍資料:
正中央的大檢視器會顯示出您目前搜到的書籍(如果您沒有進行搜尋,那就是全部的書籍)。您可以在上方欄位點擊,讓書籍依特定欄位進行排序,以便翻找。此外,要是覺得上方的欄位排序不合己意,又或是太多太亂,也可去【偏好設定】→【加入您自己的欄】項目中進行修改。
書籍詳細資料
書籍詳細資料窗格預設會顯示很多東西。那包括書籍的封面、作者、格式、路徑與註解等等。
要顯示哪些資料,或是改變資料顯示順序,可以在【偏好設定】→【外觀與感覺】→【書籍詳細資料】中進行修改。
底部狀態列:
匯入與匯出電子書
Calibre 是一款電子書管理軟體。想使用它,第一個步驟當然是得匯入一些電子書啦。不過請稍等一下,在實際匯入之前,強烈建議各位前往【偏好設定】→【將書籍儲存至磁碟】看看。
將非英語字元轉為英語同義字】這項,請斟酌看看要不要取消打勾。若希望中文書的檔名使用中文字,在匯入之前就就得將這個勾勾取消,否則檔名就會轉為拼音。當然如果不在意這個,放著不管也沒關係啦
匯入
要將電子書匯入 Calibre 中,最簡單的方式就是直接將電書檔案拖放到 Calibre 介面上,Calibre 會自動分析電子書的元數據,進度條跑完後就算匯入成功。您也可以一次拖入多本電子書,Calibre 會將所有的電子書都正確匯入。若是有一堆電子書檔案被散亂地放在不同的子資料夾中,拖曳不方便,則可以改用【加入書籍v】→【從目錄加入書籍……】的按鈕,一次性匯入指定目錄與子目錄下的所有書籍。
若打算匯入的電子書在書庫中已經存在,而使用者又重複匯入,Calibre 預設會跳出警告視窗,問您要不要強行加入它,若選「加入」,則會讓它成為「一本書名重複的新書」-若您對這樣的預設行為不滿,想要用新書更新舊書,又或是不詢問直接行動,則可以去【偏好設定】→【加入書籍】中進行調整。
儲存至磁碟
書籍被塞進書庫之後,若想把檔案重新取出來,可以使用【儲存至磁碟】這個按鈕。- 首先選擇要匯出的書籍。
- 按下【儲存至磁碟】。
- 選擇儲存位置。
(若使用【儲存至磁碟】按鈕,也能選擇只匯出特定格式的檔案。)
如果一次選擇了多本書,也可以進行大量匯出
輸出時其,所對應的資料夾名稱及其內容
與手持閱讀器互動
除了「匯出成檔案」後,交給使用者手動處理之外,Calibre 也能直接將電書轉到手持設備上。總之,先讓手持設備與電腦連線(舉例:插上 usb),接著不用進行任何操作。如果 Calibre 能識別該閱讀器,主畫面左下角就會出現您目前的設備名稱(參考圖9)。
您可以選擇想要傳送的書籍,然後按下【傳送到裝置】按鈕。倘若某本書已經傳送過了,在主畫面中會被打勾標示。
手持裝置中現有的書,您可以按【裝置】按鈕進入取得列表。若想將裝置中的書匯入書庫,也可以選擇書本後按右鍵叫出選單,進行匯入操作。
在電腦上瀏覽電子書
一般來說,電子書是專為了手持式閱讀器而設計的,但若真想在自己的電腦上閱讀電子書,Calibre 也能做到ebook-viewer 還支援使用者樣式表-要是對畫面排版不滿意,只要會一些 CSS 碼,就能將書籍格式輕易重排成自己滿意的樣子
替電子書轉換格式
Calibre 最引人注目的特色,恐怕是在各種電子書格式間進行轉檔了。您可以把一本 txt 轉成 epub,或是把 pdf 改造成 mobi,讓書在各種閱讀器中都能被順利讀取!
做法如下:
- 選擇書庫中已有的電子書。
- 點擊【轉換書籍】按鈕。
- 選擇輸入格式與輸出格式。並進行各種細部設定後,按下確定按鈕。
首先您必須選擇您希望產生的書籍格式(在右上角)。此外如果有必要,您也必須決定書籍的輸入格式(在左上角)。
指定輸入格式等同於規定轉換使用的資料來源,比方說 txt 中不會有隱式超連結,也不會預先儲存目錄結構。原始資料中沒有的東西,Calibre 也很難知道該如何產生它。此外,不同格式的轉檔效果也略有差異,如果您有多個原始格式,可以多嘗試用不同的來源轉檔看看,看哪個最終效果最好。
當然若您的書只有一種格式,就沒得選了。
視窗左側的標籤能讓使用者切換分頁,每個分頁都有大量可供人設定的東西。
元數據
指定書籍的作者、封面、書名等訊息。Calibre 會盡其所能地幫您將這些元數據給事先填好,然而若有什麼欄位不滿意,也可以手動修改、刪除與追加。
外觀感覺
對電子書的顯示參數進行效調。包括設定字型大小、編碼、行高、左右對齊、CSS 等。
啟發式處理
指定讓 Calibre 在轉換時進行某些「猜測」工作。這往往是用在輸入格式的語義表述並不明確,但又想要轉出特定效果的時候。這些功能並不可靠,預設都是停用的,請斟酌使用它們。
頁面設定
只要選擇想要使用的閱讀設備就可以了。
結構偵測
用額外條件來進行章節切分。
目錄頁
設定書籍目錄的產生方式。
搜尋 & 取代
在建立書籍的過程中,自動化地刪改、替換某些文字。
XXX 輸入與 YYY 輸出
用某些格式輸入輸出時,Calibre 會提供一些特別的項目給使用者調整。這些格式特有的選項一律會被獨立出來,放在這邊。
網路功能
將新聞製作成電子書
Calibre 可以利用新聞網站的 RSS 製作電子書一旦使用者按下面板上的【取回新聞】按鈕,就會跳出圖 13 的選擇框,接著請選出您要的新聞,Calibre 會對該網站提供的新聞進行下載,並全自動地將新聞包裝成電子書,而且還會把今日新聞自動上傳到當前連結的閱讀器中
遠端分享
不見得是分享給別人,分享給自己的手持設備也沒問題!書庫伺服器
Calibre 可將您的書庫放到網路上,透過網頁介面供人從遠端取用。當然如果您不願意(或受限於法律,不能)與旁人分享您的書庫,您也可以加上密碼
設定方式很簡單:請點【偏好設定】→【透過網路分享】→【啟動伺服器】……這樣就行了。
比較重要的設定還有:
- 如果希望 Calibre 能夠自動啟動伺服器的話,請把「當 calibre 啟動時自動執行伺服器」給打勾。
- 看您想不想要設定帳號密碼,也在這邊設定。
- 請注意預設的連接埠是 8080,您必須要在網址列上明確指定連結埠如 http://127.0.0.1:8080 這樣,才能正確存取它。
透過電子郵件分享書籍
自建伺服器雖然豪華,不過必須要有固定 IP 與不關機的家庭伺服器才能真正拿來用。不過別擔心,喜歡節能減碳的窮人如我,也可以用電子郵件分享書籍到手持設備中
reference :
Calibre-萬用的電子書管理軟體
http://www.openfoundry.org/en/foss-programs/8754-calibre-2012年9月24日 星期一
SVN
檔案庫(Repository)
版控系統中需要有一個存放檔案的地方,這個地方稱為 Repository ,在 Repository 中存放了整個專案的所有版本,Repository 在不同的版控系統中有不同的儲存方式(如檔案、資料庫),Repository 是整個版控最重要的地方,所有使用者都需要從 Repository 取得或更新檔案,因此選擇一個穩定安全的機器來存放 Repository 是必須的,Subversion 可以支援使用http://、https://、file:///、svn://、svn+ssh:// 多種通訊協定。
工作區(WorkSpace)
前文提到檔案庫中存放了所有的版本,但使用的實務上不可能需要全部的版本,因此我們會從檔案庫中取得需要的版本(通常是最新版)複製到自己的硬碟中,而這些存放於本機硬碟的檔案可稱為本機副本(Local copy)存放的地方稱為 Workspace 。
取得檔案(Checkout)
開始一份工作的時候,工作區並不會有任何檔案,這時候就要選擇檔案庫中需要的專案來執行 Checkout ,版控軟體會從檔案庫中複製指定的版本(通常是選擇最新版)到你的工作區形成本機複本,這個本機複本與檔案庫的目錄結構是一樣的,用一個專案的角度來看只有第一次需要使用 Checkout 。
送交檔案(Commit)
當你在工作複本中完成了你的工作(比如寫好一個功能),就需要將你的變動 Commit 到檔案庫中,在 Subversion 中沒有 Commit 之前的異動其他成員都不會知道。(往後文章會提出適當的 Commit 時機)
更新檔案(Update)
在多人使用的環境下,整個檔案庫的檔案是會同時被多人修改的, Subversion 並不會即時抓取這些異動,必須等到您使用了 Update 功能,版控軟體才會將檔案庫和你的差異更新至你的本機複本中,在 Subversion 中預設會檢查使用者在送交檔案之前該檔案有沒有被異動,如果有異動會強迫使用者先執行 Update 。
分支(Branch)
利用分支的功能可以有效隔離主線,當開發程式時想重構、測試寫法、開發新功能,這些可能不會那麼快處理完畢,而且可能會造成現有功能影響的動作都應該在分支下執行,執行完畢確認後再合併主線就可以大幅降低在開發時期對主線的影響,往後對於分支還會再提,現階段只需要記住分支內你隨便玩都不會干擾別人。
合併(Merge)
當兩個使用者修改了同一份檔案,在 Subversion 中是採取「樂觀鎖定」的作法,也就是並不會限制一份檔案只有一個使用者才可以修改,而是在更新檔案的時候才去檢查衝突,假設 工程師 A 異動了檔案中的 1~3 行,而工程師 B 使用者異動了檔案中的 5~10行,工程師 A 先行送交檔案,接者工程師 B 要送交的時候系統會發現版本不同而要求先執行更新檔案,檔案更新的過程中會偵測到兩個版本的異動並無衝突而自動合併(Merge)異動。
衝突(Conflict)
基於以上案例如果工程師 B 異動了 3~10 行,這時候因為同時異動到了第 3 行所以版控軟體無法自動合併,就會發出 Conflict 警告,需要使用者自行解決衝突。(請注意發生衝突後越早解決對系統影響越小)
因為衝突和合併的文字敘述感覺不是那麼容易理解,所以 demo 做了兩張圖來解釋,看圖就應該很清楚了

1.
在See Plans & Pricing中,來進行註冊及申請
2.選擇註冊資料
3.確定資料
4.填寫資料(帳號,為email
5.最後確認
http://tortoisesvn.net/downloads.html
7.checkout(在某一目錄下
8.其檔案庫(Repository) 位置

Subversion visually explained in 30 sec - svn tutorial
http://coding-time.blogspot.tw/2008/04/subversion-visually-explained-in-30sec.html
版控系統中需要有一個存放檔案的地方,這個地方稱為 Repository ,在 Repository 中存放了整個專案的所有版本,Repository 在不同的版控系統中有不同的儲存方式(如檔案、資料庫),Repository 是整個版控最重要的地方,所有使用者都需要從 Repository 取得或更新檔案,因此選擇一個穩定安全的機器來存放 Repository 是必須的,Subversion 可以支援使用http://、https://、file:///、svn://、svn+ssh:// 多種通訊協定。
工作區(WorkSpace)
前文提到檔案庫中存放了所有的版本,但使用的實務上不可能需要全部的版本,因此我們會從檔案庫中取得需要的版本(通常是最新版)複製到自己的硬碟中,而這些存放於本機硬碟的檔案可稱為本機副本(Local copy)存放的地方稱為 Workspace 。
取得檔案(Checkout)
開始一份工作的時候,工作區並不會有任何檔案,這時候就要選擇檔案庫中需要的專案來執行 Checkout ,版控軟體會從檔案庫中複製指定的版本(通常是選擇最新版)到你的工作區形成本機複本,這個本機複本與檔案庫的目錄結構是一樣的,用一個專案的角度來看只有第一次需要使用 Checkout 。
送交檔案(Commit)
當你在工作複本中完成了你的工作(比如寫好一個功能),就需要將你的變動 Commit 到檔案庫中,在 Subversion 中沒有 Commit 之前的異動其他成員都不會知道。(往後文章會提出適當的 Commit 時機)
更新檔案(Update)
在多人使用的環境下,整個檔案庫的檔案是會同時被多人修改的, Subversion 並不會即時抓取這些異動,必須等到您使用了 Update 功能,版控軟體才會將檔案庫和你的差異更新至你的本機複本中,在 Subversion 中預設會檢查使用者在送交檔案之前該檔案有沒有被異動,如果有異動會強迫使用者先執行 Update 。
分支(Branch)
利用分支的功能可以有效隔離主線,當開發程式時想重構、測試寫法、開發新功能,這些可能不會那麼快處理完畢,而且可能會造成現有功能影響的動作都應該在分支下執行,執行完畢確認後再合併主線就可以大幅降低在開發時期對主線的影響,往後對於分支還會再提,現階段只需要記住分支內你隨便玩都不會干擾別人。
合併(Merge)
當兩個使用者修改了同一份檔案,在 Subversion 中是採取「樂觀鎖定」的作法,也就是並不會限制一份檔案只有一個使用者才可以修改,而是在更新檔案的時候才去檢查衝突,假設 工程師 A 異動了檔案中的 1~3 行,而工程師 B 使用者異動了檔案中的 5~10行,工程師 A 先行送交檔案,接者工程師 B 要送交的時候系統會發現版本不同而要求先執行更新檔案,檔案更新的過程中會偵測到兩個版本的異動並無衝突而自動合併(Merge)異動。
衝突(Conflict)
基於以上案例如果工程師 B 異動了 3~10 行,這時候因為同時異動到了第 3 行所以版控軟體無法自動合併,就會發出 Conflict 警告,需要使用者自行解決衝突。(請注意發生衝突後越早解決對系統影響越小)
因為衝突和合併的文字敘述感覺不是那麼容易理解,所以 demo 做了兩張圖來解釋,看圖就應該很清楚了

1.
免費SVN 空間PojectLocker &TortoiesSVN 烏龜SVN使用
http://www.projectlocker.com/在See Plans & Pricing中,來進行註冊及申請
2.選擇註冊資料
3.確定資料
4.填寫資料(帳號,為email
5.最後確認
使用tortoisesvn
6.下載software& setuphttp://tortoisesvn.net/downloads.html
7.checkout(在某一目錄下
8.其檔案庫(Repository) 位置
Subversion visually explained in 30 sec - svn tutorial
http://coding-time.blogspot.tw/2008/04/subversion-visually-explained-in-30sec.html
2012年5月11日 星期五
DD-WRT Repeater Bridge Mode 讓無線訊號範圍更廣
因為,家裡的的網路架構關係(router及電話放在一樓)
所以造成其wireless的訊號,所到很多影響.
即使重買了新的router(Tenda W309R 11N 300Mbps)也無法解決
故利用舊的router(ASUS WL-520GC)來建立bridger,使得其訊號能夠達到三樓
所採用的是"Repeater Bridge"
------------------
2013/10/11
特別注意的有:
1.其brighter 的IP需設為同一primater router的同一網段
2.而bright的wireless physical interface SSID 設為其primater router的(SSID)
3.wireless physical interface network type “G-only”
------------------
1.設備
主分享器(連接路由器):Tenda W309R (192.168.0.1)
中繼分享器(連接主分享器):ASUS WL-520gc (刷 DD-WRT 韌體)(192.168.0.123)
主分享器的 SSID 為 Tenda3DFC10,採用 WPA + ASE 加密模式。
2.步驟
1.以網路線連接PC<--->WL-520gc
設為同網段

2.進入WL-520gc
機器狀態 / 無線網路 / 存取點 & 用戶端設定 / 選址(Site Survey)
SSID則必須設為Master( Tenda W309R )
1.設備
主分享器(連接路由器):Tenda W309R (192.168.0.1)
中繼分享器(連接主分享器):ASUS WL-520gc (刷 DD-WRT 韌體)(192.168.0.123)
主分享器的 SSID 為 Tenda3DFC10,採用 WPA + ASE 加密模式。
2.步驟
1.以網路線連接PC<--->WL-520gc
設為同網段

2.進入WL-520gc
機器狀態 / 無線網路 / 存取點 & 用戶端設定 / 選址(Site Survey)
SSID則必須設為Master( Tenda W309R )
無線網路 / 基本設定 / 檢查無線網路名(SSID)是否已帶入
將 無線模式 切換為「Repeater Bridge」,按儲存設定
Virtual 虛擬介面 / 新增一個虛擬介面,修改 SSID,再次儲存設定 /*1

3.設定其WL-520gc的IP設定

4.
無線網路 / 無線安全 / 設定實體和虛擬介面的加密模式、演算法、金鑰,此兩組設定都必須跟主分享器一模一樣。再次儲存設定 /*2

5.系統安全 / 防火牆 / 將 SPI 防火牆關閉,儲存設定
6.再次確認步驟無誤,按「儲存重啟」,等候分享器重新啟動完成

7.成功連線後PC端的Info
/*1 :
bright的wireless physical interface SSID 設成和primater router的(SSID)一樣
/2:
無線網路 / 無線安全 / 設定實體和虛擬介面的加密模式、演算法、金鑰,此兩組設定都必須跟主分享器一模一樣。再次儲存設定
對rounter一定要設,但對bright則不一定(
/2:
無線網路 / 無線安全 / 設定實體和虛擬介面的加密模式、演算法、金鑰,此兩組設定都必須跟主分享器一模一樣。再次儲存設定
對rounter一定要設,但對bright則不一定(
參考:
DD-WRT] Repeater Bridge (中繼橋接, 同網段)
DD-WRT Repeater Bridge Mode 讓無線訊號範圍更廣
2009年10月13日 星期二
2009年10月8日 星期四
8 bit to 32-bit MCU
PRODUCT HOW-TO: Make the transition from 8- to 32-bit MCU design as painless as possible
對這篇文章.感到興趣.因為我也正在努力地使用32-bit MCU中
現在是個過渡時期,是從8-bit to 32 bit.
雖然現今其系統有:4,8,16,32 bit的.
但可見到的通常也只有8,32 bit MCU
可以見到的是市場也是如此的走向.
像我是以8-bit (8051/52);32-bit(ARM)為主要的考量.
對這篇文章.感到興趣.因為我也正在努力地使用32-bit MCU中
現在是個過渡時期,是從8-bit to 32 bit.
雖然現今其系統有:4,8,16,32 bit的.
但可見到的通常也只有8,32 bit MCU
可以見到的是市場也是如此的走向.
像我是以8-bit (8051/52);32-bit(ARM)為主要的考量.
訂閱:
文章 (Atom)