·É˼¿¨¶ûµ¥Æ¬»ú±à³Ì ÏÂÔØ±¾ÎÄ

//.stackstart,

SSTACK,

//.stackend,

PAGED_RAM,

DEFAULT_RAM

INTO RAM;

DISTRIBUTE DISTRIBUTE_INTO

ROM_4000, PAGE_FE, PAGE_FC, PAGE_FB, PAGE_FA, PAGE_F9, PAGE_F8;

CONST_DISTRIBUTE DISTRIBUTE_INTO

ROM_4000, PAGE_FE, PAGE_FC, PAGE_FB, PAGE_FA, PAGE_F9, PAGE_F8;

DATA_DISTRIBUTE DISTRIBUTE_INTO

RAM;

//.vectors INTO OSVECTORS;

END

ENTRIES

//_vectab OsBuildNumber _OsOrtiStackStart _OsOrtiStart

END

STACKSIZE 0x100

VECTOR 0 _Startup

//VECTOR 0 Entry

//INIT Entry

1 .prm Îļþ×é³É½á¹¹

°´Ëùº¬µÄÐÅÏ¢µÄ²»Í¬.prmÎļþÓÐÁù¸ö×é³É²¿·Ö¹¹³É£¬ÕâÀï½öÌÖÂÛºÍÄÚ´æ¿Õ¼äÓ³Éä¹ØÏµ½ôÃܵÄÈý¸ö²¿·Ö£¬ÆäËûµÄ²»×öÌÖÂÛ¡£

¡¤ SEGMENTS ¡­ END

¶¨ÒåºÍ»®·ÖоƬËùÓпÉÓõÄÄÚ´æ×ÊÔ´£¬°üÀ¨³ÌÐò¿Õ¼äºÍÊý¾Ý¿Õ¼ä¡£Ò»°ãÎÒÃǽ«³ÌÐò¿Õ¼ä¶¨Òå³ÉROM£¬°ÑÊý¾Ý¿Õ¼ä¶¨Òå³ÉRAM£¬µ«ÕâЩÃû×Ö¶¼²»ÊÇ

ϵͳ±£ÁôµÄ¹Ø¼ü´Ê£¬¿ÉÒÔÓÉÓû§ËæÒâÐ޸ġ£Óû§Ò²¿ÉÒÔ°ÑÄÚ´æ¿Õ¼ä°´µØÖ·ºÍÊôÐÔËæÒâ·Ö¸î³É´óС²»Í¬µÄ¿é£¬Ã¿¿é¿ÉÒÔ×ÔÓÉÃüÃû¡£ÀýÈçͬÑùÊÇRAM£¬

¿ÉÒÔʹÓò»Í¬µÄÊôÐÔ£¬Ê¹ÆäÓи´Î»ºó±äÁ¿ÇåÁãºÍ²»ÇåÁãÖ®·Ö¡£

¹ØÓÚÄÚ´æ»®·ÖµÄ¾ßÌå·½·¨ÔÚºóÃæÏê½â¡£

¡¤ PLACEMENT ¡­ END

½«Ö¸ÅÉÔ´³ÌÐòÖÐËù¶¨ÒåµÄ¸÷ÖֶΣ¬ÈçÊý¾Ý¶ÎDATA_SEG¡¢CONST_SEGºÍ´úÂë¶ÎCODE_SEG ±»¾ßÌå·ÅÖõ½ÄÄÒ»¸öÄÚ´æ¿éÖС£ËüÊǽ«Ô´³ÌÐòÖе͍

ÒåÃèÊöºÍʵ¼ÊÎïÀíÄÚ´æ¹Ò¹³µÄÇÅÁº¡£

¡¤ STACKSIZE

¶¨Òåϵͳ¶ÑÕ»³¤¶È£¬Æäºó¸ø³öµÄ³¤¶È×Ö½ÚÊý¿ÉÒÔ¸ù¾Ýʵ¼ÊÓ¦ÓÃÐèÒª½øÐÐÐ޸ġ£¶ÑÕ»µÄʵ¼Ê¶¨Î»È¡¾öÓÚRAMÄÚ´æµÄ»®·ÖºÍʹÓÃÇé¿ö¡£Ä¬ÈϵÄÇé¿öÏ£¬

¶ÑÕ»·ÅÔÚRAMÇøÓòµÄÆðʼ²¿·Ö¡£µ±È»£¬¶ÑÕ»µÄ¶¨Òå²»Ö»ÓÐÕâÖÖ·½Ê½£¬»¹¿ÉÒÔʹÓÃSTACKTOP¹Ø¼ü×Ö¡£ºóÃæ½«ÏêϸÌÖÂÛ¡£

2 ÄÚ´æ»®·ÖµÄ¾ßÌ巽ʽ

ÓÉSEGMENTS¿ªÊ¼µ½ENDΪֹ£¬Öмä¿ÉÒÔÌí¼ÓÈÎÒâ¶àÐÐÄÚ´æ»®·ÖµÄ¶¨Ò壬ÿһÐÐÓ÷ֺŽáβ¡£¶¨ÒåÐеÄÓï·¨ÐÍʽΪ£º

[¿éÃû] = [ÊôÐÔ1] [ÊôÐÔ2] £¬¡­ £¬[ÊôÐÔn] [ÆðʼµØÖ·] TO [½áÊøµØÖ·];

ÆäÖУ¬

¡¤ ¡°¿éÃû¡±µÄ¶¨ÒåºÍCÓïÑÔ±äÁ¿¶¨ÒåÏàͬ£¬ÊÇÒÔÓ¢ÎÄ×Öĸ¿ªÍ·µÄÒ»¸ö×Ö·û´®£¬Óû§¿ÉÒÔ×Ô¼ºÈÎÒⶨÒå¿éÃû¡£

¡¤ ¡°ÊôÐÔ¡±Óû§ÊDz»ÄÜ×Ô¼º¶¨ÒåµÄ£¬ÒòΪÊôÐÔÃûÖ¸¶¨ÁËÉÏÃæËù˵µÄ¡°¿éÃû¡±Ëù¶ÔÓ¦µÄ²»Í¬µÄÄÚ´æÀàÐͺͷÃÎÊ·½Ê½£¬¶ø²»Í¬ÎïÀíÄÚ´æµÄÀàÐͺͷÃÎÊ·½Ê½ÊÇÒ»

¶¨µÄ¡£

¶ÔÓÚ¡°ÊôÐÔ1¡±£¬Codewarrior 5.0ÖпÉÒÔÓÐÈýÖÖ²»Í¬µÄÀàÐÍ£¬¶ÔÓÚÖ»¶ÁµÄFlash-ROMÇøÊôÐÔÒ»¶¨ÊÇREAD_ONLY£¬¶ÔÓڿɶÁдµÄRAMÇøÊôÐÔ¿ÉÒÔÊÇ

READ_WRITE£¬Ò²¿ÉÒÔÊÇNO_INIT¡£ËüÃÇÁ½ÕߵĹؼüÇø±ðÊÇANSI-CµÄ³õʼ»¯´úÂë»á°Ñ¶¨Î»ÔÚREAD_WRITE¿éÖеÄËùÓÐÈ«¾ÖºÍ¾²Ì¬±äÁ¿×Ô¶¯ÇåÁ㣬

¶øNO_INIT¿éÖеıäÁ¿½«²»»á±»×Ô¶¯ÇåÁã¡£µ±È»Ö»ÊǸ´Î»Ê±²»ÇåÁ㣬µôµçʱ»¹ÊÇÇåÁãµÄ£¬µ«ÊǶÔÓÚµ¥Æ¬»úϵͳ£¬±äÁ¿ÔÚ¸´Î»Ê±²»±»×Ô¶¯ÇåÁãÕâÒ»

ÌØÐÔÓÐʱÊǺܹؼüµÄ£¬ÔÚijЩӦÓÃÖÐÓÐÌØÊâµÄÓÃ;¡£

¶ÔÓÚ¡°ÊôÐÔ2 ¡­ ÊôÐÔn¡±£¬¸ù¾ÝÉÏÃæ¸ø³öµÄ.prmµÄ·¶ÀýÎļþ¿ÉÒÔ¿´³öÀ´£¬¿ÉÄܵÄÐÎʽÓС°DATA_FAR¡±¡¢¡°DATA_NEAR¡±¡¢¡°IBCC_FAR¡±¡¢¡°IBCC_NEAR¡±

ËÄÖÖÀàÐÍ¡£ÆäÖУ¬¡°DATA_FAR¡±ºÍ¡°DATA_NEAR¡±Ïà¶ÔÓ¦£¬µ±ÄÚ´æÇøÓò°üº¬±äÁ¿»òÕßÊdz£Á¿Ê±£¨Í¨³£ÊÇRAM¡¢FlashºÍEEPROM£©£¬±ØÐëÖ¸Ã÷ÉÏÃæ

Á½ÖÖÊôÐÔÖеÄÒ»ÖÖ£¬ÓÉÓÚÉæ¼°µ½ÄÚ´æµÄ·ÖÒ³£¬¿ÉÒÔÕâÑùÀí½â£º¡°DATA_FAR¡±ÊôÐÔÖ¸¶¨µÄÄÚ´æ¿éΪ¿ÉÒÔ±£´æÊý¾ÝµÄ·Ç¹Ì¶¨Ò³£¬¶ø¡°DATA_NEAR¡±ÊôÐÔ

Ö¸¶¨µÄÄÚ´æ¿éΪ¿ÉÒÔ±£´æÊý¾ÝµÄ¹Ì¶¨Ò³£»Í¬Àí¡°IBCC_FAR¡±ºÍ¡°IBCC_NEAR¡±Ïà¶ÔÓ¦£¬µ±ÄÚ´æÇøÓò°üº¬´úÂëʱ£¨FlashºÍEEPROM£©£¬±ØÐëÖ¸Ã÷ÉÏÃæ

Á½ÖÖÊôÐÔÖеÄÒ»ÖÖ£¬¡°IBCC_FAR¡±ÊôÐÔÖ¸¶¨µÄÄÚ´æ¿éΪ¿ÉÒÔ±£´æ´úÂëµÄ·Ç¹Ì¶¨Ò³£¬¶ø¡°IBCC_NEAR¡±ÊôÐÔÖ¸¶¨µÄÄÚ´æ¿éΪ¿ÉÒÔ±£´æ´úÂëµÄ¹Ì¶¨Ò³

ÌÖÂÛµ½ÕâÀϸÐĵĶÁÕßÒѾ­·¢ÏÖ£¬ÔÚÉÏÃæµÄ.prmÎļþ·¶ÀýÖУ¬RAMµÄÊôÐÔÓС°DATA_FAR¡±ºÍ¡°DATA_NEAR¡±Á½ÖÖ£¬FlashµÄÊôÐÔÖÐÒ²ÊÇËÄÖÖ¶¼ÓУ¬

µ«ÊÇEEPROMÖÐÈ´Ö»ÓС°DATA_FAR¡±ºÍ¡°IBCC_FAR¡±Á½ÖÖ£¬ÕâÕýºÃÑéÖ¤ÁËÉÏһƪÎÄÕ£¨·É˼¿¨¶û16λµ¥Æ¬»úµÄ×ÊÔ´ÅäÖã©ÖÐËùÌáµ½µÄ£¬RAM¡¢Flash

Öж¼Óй̶¨Ò³£¬µ«ÊÇEEPROMÖÐÈ«²¿ÊǷǹ̶¨Ò³¡£

¡¤ ÆðʼµØÖ·ºÍ½áÊøµØÖ·¾ö¶¨ÁËÒ»ÄÚ´æ¿éµÄÎïÀíλÖ㬶ÔÓڹ̶¨Ò³£¬ÓÃ4λ16½øÖÆÊý±íʾ£¬¶ø¶ÔÓڷǹ̶¨Ò³£¬ÔòÓÃ6λ16½øÖƱíʾ£¬¶à³öÀ´µÄÁ½Î»

ÆäʵÊǼĴæÆ÷EPAGE¡¢RPAGE»òPPAGEµÄÖµ£¬¿É¼û£¬¶ÔÓÚ·ÖÒ³µÄ×ÊÔ´£¬ÊÇͨ¹ý¼Ä´æÆ÷£¨EPAGE¡¢RPAGE»òPPAGE£©ºÍ16λµÄµØÖ·×ÜÏßµÄ×éºÏ

À´½øÐÐѰַµÄ¡£

¡°TO¡±ÊÇϵͳ±£ÁôµÄ¹Ø¼ü×Ö£¬±ØÐë´óд¡£

ÏÂÃæ£¬¸ù¾ÝÉÏÃæ·¶ÀýÌṩµÄÄÚÈÝ£¬¾Ù¼¸¸öÀý×Ó£º

Àý1 RAM = READ_WRITE DATA_NEAR 0x2000 TO 0x3FFF;

ÉÏÃæÕâ¾ä»°µÄÒâ˼ÊÇ£º·ÖÅä0x2000-0x3FFFµÄÇøÓòµÄ¿éÃûΪ¡°RAM¡±£¨µ±È»¿ÉÒÔ¶¨Òå±ðµÄÃû³Æ£©£¬ÓÉÉÏһƪÎÄÕ¶øÖª£¬ÕâÒ»ÇøÓòµÄÎïÀíÄÚ´æµÄÐÔÖÊΪ

RAM£¬ÊôÐÔÓ¦¸ÃΪ¡°READ_WRITE¡±£¬²¢ÇÒÕâÒ»ÇøÓòÖеÄÁ½Ò³¶¼Îª¹Ì¶¨Ò³£¬ËùÒÔΪ¡°DATA_NEAR¡±¡£

Àý2 ½«8K×Ö½ÚRAMµÄºóÃæ4K×Ö½Ú¶¨Òå³É·Ç×Ô¶¯ÇåÁãµÄÊý¾Ý±£ÁôÇø£¬ÔòÓ¦Èç϶¨Ò壺

SEGMENTS

¡­¡­

RAM = READ_WRITE DATA_NEAR 0x2000 TO 0x2FFF;

RAM_NO_INIT = NO_INIT DATA_NEAR 0x3000 TO 0x3FFF;

¡­¡­