OSTaskCreate()
鍑芥暟鍘熷瀷錛欼NT8U OSTaskCreate(void(*task)(void *pd),void *pdata,OS_STK *ptos,INT8U prio)
璋冪敤鑰咃細浠誨姟鎴栬呮槸鍒濆鍖栦唬鐮併?br style="line-height: 22px" />浣滅敤錛氬緩绔嬩竴涓柊浠誨姟錛屼換鍔$殑寤虹珛鍙互鍦ㄥ涓換鍔$幆澧冨惎鍔ㄤ箣鍓嶏紝涔熷彲浠ュ湪姝e湪榪愯鐨勪換鍔′腑寤虹珛錛屼腑鏂鐞嗙▼搴忎腑涓嶈兘寤虹珛浠誨姟錛屼竴涓換鍔″繀欏諱負鏃犻檺寰幆緇撴瀯錛屼笖涓嶈兘鏈夎繑鍥炵偣銆傛棤璁虹敤鎴風▼搴忎腑鏄惁浜х敓涓柇錛屽湪鍒濆鍖栦換鍔″爢鏍堟椂錛屽爢鏍堢殑緇撴瀯蹇呴』涓庡鐞嗗櫒涓柇鍚庡瘎瀛樺櫒鍏ユ爤鐨勯『搴忕粨鏋勭浉鍚屻?/span>
璇ュ嚱鏁拌繑鍥炰竴涓?浣嶇殑鏁村艦鏁幫紝璋冪敤璇ュ嚱鏁伴渶瑕佸洓涓弬鏁幫細
a 絎竴涓弬鏁幫細task鏄竴涓寚鍚戜換鍔′唬鐮佺殑鎸囬拡錛屼篃灝辨槸鐢ㄦ埛浠g爜鐨勯鍦板潃錛屽鉤甯鎬嬌鐢ㄤ腑鎴戜滑鎶婅嚜宸卞垱寤虹殑浠誨姟鐨勫悕瀛椾綔涓鴻繖涓弬鏁板嵆鍙?br style="line-height: 22px" />b 絎簩涓弬鏁幫細pdata鎸囧悜涓涓暟鎹粨鏋勶紝璇ョ粨鏋勭敤鏉ュ湪寤虹珛浠誨姟鏃跺悜浠誨姟浼犻掑弬鏁般?br style="line-height: 22px" />c 絎笁涓弬鏁幫細ptos鏄寚鍚戜換鍔″爢鏍堟爤欏剁殑鎸囬拡錛屼竴鑸妸鍒涘緩鐨勪換鍔$殑鍫嗘爤鏁扮粍棣栧湴鍧璧嬬粰瀹冦?br style="line-height: 22px" />浠誨姟鍫嗘爤鐢ㄦ潵淇濆瓨灞閮ㄥ彉閲忥紝鍑芥暟鍙傛暟錛岃繑鍥炲湴鍧浠ュ強浠誨姟琚腑鏂椂澶勭悊鍣ㄥ瘎瀛樺櫒鐨勫唴瀹癸紝浠誨姟鍫嗘爤鐨勫ぇ灝忓喅瀹氫簬浠誨姟鐨勯渶瑕佷互鍙婇璁$殑涓柇宓屽灞傛暟銆傝綆楀爢鏍堢殑澶у皬闇瑕佺煡閬撲換鍔$殑灞閮ㄥ彉閲忔墍鍗犵殑絀洪棿錛屽彲鑳戒駭鐢熷祵濂楄皟鐢ㄧ殑鍑芥暟錛屽強涓柇宓屽鎵闇鐨勭┖闂達紝濡傛灉鍒濆鍖栧父閲廜S_STK_GROWTH璁句負1錛屽爢鏍堣璁句負浠庡唴瀛橀珮鍦板潃鍚戜綆鍦板潃澧為暱錛屾鏃秔tos搴旇鎸囧悜浠誨姟鍫嗘爤絀洪棿鐨勬渶楂樺湴鍧錛屽弽涔嬶紝濡傛灉OS_STK_GROWTH璁句負0錛屽爢鏍堝皢浠庡唴瀛樼殑浣庡湴鍧鍚戦珮鍦板潃澧為暱銆?br style="line-height: 22px" />d 絎洓涓弬鏁幫細prio鏄換鍔$殑浼樺厛綰с傛瘡涓換鍔″繀欏繪湁涓涓敮涓鐨勪紭鍏堢駭浣滀負鏍囪瘑錛屾暟瀛楄秺灝忥紝浼樺厛綰ц秺楂樸?/p>
榪斿洖鍊鹼細
OSTaskCreate()鐨勮繑鍥炲間負涓嬭堪涔嬩竴錛?br style="line-height: 22px" /># OS_NO_ERR: 鍑芥暟璋冪敤鎴愬姛銆?br style="line-height: 22px" /># OS_PRIO_EXIST:鍏鋒湁璇ヤ紭鍏堢駭鐨勪換鍔″凡緇忓瓨鍦ㄣ?br style="line-height: 22px" /># OS_PRIO_INVALID: 鍙傛暟鎸囧畾鐨勪紭鍏堢駭澶т簬OS_LOWEST_PRIO
# OS_NO_MORE_TCB: 緋葷粺涓病鏈塐S_TCB鍙互鍒嗛厤緇欎換鍔′簡銆?/p>
娉ㄦ剰錛?br style="line-height: 22px" />1 浠諱綍鍫嗘爤蹇呴』澹版槑涓篛S_STK綾誨瀷銆?br style="line-height: 22px" />2 鍦ㄤ換鍔′腑蹇呴』璋冪敤uCOS鎻愪緵鐨勪笅榪拌繃紼嬩箣涓錛氬歡鏃剁瓑寰咃紝浠誨姟鎸傝搗錛岀瓑寰呬簨浠跺彂鐢燂紙絳夊緟淇″彿閲忥紝娑堟伅閭錛屾秷鎭槦鍒楋級錛屼互渚垮叾浠栦換鍔¤兘寰楀埌cpu銆?br style="line-height: 22px" />3 紼嬪簭涓笉鑳戒嬌鐢ㄤ紭鍏堢駭0錛?錛?錛?錛屼互鍙奜S_LOWEST_PRIO-3錛孫S_LOWEST_PRIO-2錛孫S_LOWEST_PRIO-1錛?/p>
OS_LOWEST_PRIO,榪欎簺浼樺厛綰х郴緇熶繚鐣欙紝鍏朵綑鐨?6涓紭鍏堢駭鎻愪緵緇欏簲鐢ㄧ▼搴忋?/p>
鑼冧緥錛?br style="line-height: 22px" />鏈緥涓紝浼犻掔粰浠誨姟Task1()鐨勫弬鏁皃data涓嶄嬌鐢紝鎵浠ユ寚閽坧data琚涓篘ULLL錛屾敞鎰忓埌紼嬪簭涓瀹氬爢鏍堝悜浣庡湴鍧澧為暱錛屼紶閫掔殑鏍堥《鎸囬拡涓洪珮鍦板潃&Task1[1023],濡傛灉鍦ㄤ綘鐨勭▼搴忎腑璁懼畾鍫嗘爤鍚戦珮鍦板潃澧為暱錛屽垯浼犻掔殑鏍堥《鎸囬拡搴旇涓?amp;Task1Stk[0]銆?br style="line-height: 22px" />OS_STK Task1Stk[1024];
void main(void)
{
NT8U err;
...
OSInit();//鍒濆鍖杣COS-II
....
OSTaskCreate(Task1,(void *)0,&Task1Stk[1023],25);
...
OSStart();//鍚姩澶氫換鍔$幆澧?br style="line-height: 22px" />}
void Task1(void *pdata)
{
pdata=pdata;
for(;;)
{
...... //浠誨姟浠g爜
}
}
涓嶯and Flash瀵瑰簲鐨勬槸鍙︿竴縐岶lash錛歂or Flash錛屽叾瀵瑰簲鐨勭壒鐐規槸錛?br />“NorFlash鐨勭壒鐐規槸鑺墖鍐呮墽琛?XIP,eXecute In Place)錛岃繖鏍峰簲鐢ㄧ▼搴忓彲浠ョ洿鎺ュ湪flash闂瓨鍐呰繍琛岋紝涓嶅繀鍐嶆妸浠g爜璇誨埌緋葷粺RAM涓傚uboot涓殑ro孌靛彲浠ョ洿鎺ュ湪NorFlash涓婅繍琛岋紝鍙渶瑕佹妸rw鍜寊i孌墊嫹璐濆埌RAM涓繍琛屽嵆鍙?”
鑰岀浉搴斿湴錛孨and Flash姣旇緝鐗規畩錛?br />“NandFlash鍣ㄤ歡浣跨敤澶嶆潅鐨処/O鍙f潵涓茶鍦板瓨鍙栨暟鎹紝8涓紩鑴氱敤鏉ヤ紶閫佹帶鍒躲佸湴鍧鍜屾暟鎹俊鎭傜敱浜庢椂搴忚緝涓哄鏉傦紝鎵浠ヤ竴鑸珻PU鏈濂介泦鎴怤AND鎺у埗鍣ㄣ傚彟澶栫敱浜嶯andFlash娌℃湁鎸傛帴鍦ㄥ湴鍧鎬葷嚎涓婏紝鎵浠ュ鏋滄兂鐢∟andFlash浣滀負緋葷粺鐨勫惎鍔ㄧ洏錛屽氨闇瑕丆PU鍏峰鐗規畩鐨勫姛鑳斤紝濡俿3c2410鍦ㄨ閫夋嫨涓篘andFlash鍚姩鏂瑰紡鏃朵細鍦ㄤ笂鐢墊椂鑷姩璇誨彇NandFlash鐨?k鏁版嵁鍒板湴鍧0鐨凷RAM涓傚鏋淐PU涓嶅叿澶囪繖縐嶇壒孌婂姛鑳斤紝鐢ㄦ埛涓嶈兘鐩存帴榪愯NandFlash涓婄殑浠g爜錛岄偅鍙互閲囧彇鍏朵粬鏂瑰紡錛屾瘮濡傚ソ澶氫嬌鐢∟andFlash鐨勫紑鍙戞澘闄や簡浣跨敤NandFlash浠ュ錛岃繕鐢ㄤ笂浜嗕竴鍧楀皬鐨凬orFlash鏉ヨ繍琛屽惎鍔ㄤ唬鐮併?#8221;
鑷充簬錛屼負浠涔圢and Flash涓嶈兘榪涜XIP鐨勫師鍥狅紝涓昏鏄敱浜庣墿鐞嗕笂鐨勭‖浠墮檺鍒訛紝
鍦ㄨ鍙朏lash鏃跺欙紝瀹規槗鍑虹幇“浣嶇炕杞紙bit convert錛?#8221;錛?br />“鍦‵lash鐨勪綅緲昏漿錛堜竴涓猙it浣嶅彂鐢熺炕杞級鐜拌薄涓婏紝NAND鐨勫嚭鐜板嚑鐜囪姣擭orFlash澶у緱澶氥傝繖涓棶棰樺湪Flash瀛樺偍鍏抽敭鏂囦歡鏃舵槸鑷村懡鐨勶紝鎵浠ュ湪浣跨敤NandFlash鏃跺緩璁悓鏃朵嬌鐢‥DC/ECC絳夋牎楠岀畻娉曘?”
浣嗘槸錛屽鏋滆兘淇濊瘉涓嶅嚭閿欙紝涔熻繕鏄彲浠ヨ繘琛孹IP錛屽彲浠ュ湪鍏朵笂鎵ц浠g爜鐨勶細
“鎵璋揦IP,灝辨槸CODE鏄湪FLASH涓婄洿鎺ヨ繍琛? NANDFLASH鍙槸涓嶉傚悎鍋歑IP,浣嗗茍涓嶆槸涓嶈兘鍋歑IP.
瑕佷竴孌礐ODE鑳藉姝g‘鐨勮繍琛?瑕佷繚璇佸畠鐨凜ODE鏄繛緇殑,姝g‘鐨?
鐢變簬涓浜涚數姘旂壒鎬х殑鍘熷洜,NOR FLASH鑳藉鍋氬埌榪欎竴鐐?涓嶅瓨鍦ㄥ潖閬撴垨鍧忓潡,鎵浠ヨ兘澶熷仛XIP.
鑰屽浜嶯AND FLASH, 瀹冨彧淇濊瘉瀹冪殑BLOCK 0鏄ソ鐨?鍏朵粬鐨勫潡騫朵笉淇濊瘉,铏界劧鍑洪敊鐨勫嚑鐜囨瘮杈冧綆,浣嗚繕鏄湁鍑洪敊鐨勫彲鑳?鎵浠ODE鍙兘鏃犳硶榪炵畫姝g‘鍦版墽琛?
浣嗗彧瑕佷綘鏈夐澶栫殑淇濋殰鎺柦,姣斿璇村湪鎵цCODE涔嬪墠鍘誨仛涓嬈CC鏍¢獙,鏉ョ‘淇滳ODE鏄繛緇紜殑.閭d綘涔熷彲浠ュ仛XIP. 浜嬪疄涓婃垜灝辨鍦ㄨ繖涔堝仛,鑰屼笖涔熻瘉鏄庢槸鎴愬姛鐨? ”