¥È¥Ã¥× °ìÍ÷ ¸¡º÷ ¥Ø¥ë¥× RSS ¥í¥°¥¤¥ó

XMOS ¤Î XS1-G4 ¤Ç¤¢¤½¤Ö¤ÎÊѹ¹ÅÀ

  • Äɲ䵤줿¹Ô¤Ï¤³¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
  • ºï½ü¤µ¤ì¤¿¹Ô¤Ï¤³¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
{{category ÅŻҹ©ºî}}

!!!XMOS ¤Î XS1-G4 ¤Ç¤¢¤½¤Ö

!!¥Æ¥¹¥È´ðÈÄ XC-1 ¤ÇÍ·¤ó¤Çµ¤¤¬¤Ä¤¤¤¿¤³¤È¤Î¥á¥â¤ò½ñ¤¤¤Æ¤¤¤­¤Þ¤¹¡£

*XC-1 ¤Ï XMOS Semiconductor¼Ò ¤Î XS1-G ¤Îɾ²Á´ðÈĤǤ¹¡£

*Design Wave Magazine ¤Î 2009/3,4 ¹çÊ»¹æ¤Ë XS1-G ¤Ë¤Ä¤¤¤Æ¤ÎÆý¸µ­»ö¡Ê²¼µ­»²¹Í¡Ë¤¬ºÜ¤Ã¤Æ¤¤¤Þ¤¹¡£

http://www.cqpub.co.jp/dwm/Contents/0136/dwm013600710.pdf

!!!XC ¸À¸ì¤ò»È¤Ã¤¿ XS1-G4 ¤Î¶ñÂÎŪ¤Ê»È¤¤Êý

¡¡¤¤¤¯¤Ä¤«¤Î Tutorial ¤Ç¤âÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢¤¤¤Þ¤Þ¤Ç XMOS ¥µ¥¤¥ÈÆâ¤Ç¸«¤Ä¤±¤¿Ãæ¤Ç¤¤¤Þ¤Î¤È¤³¤í°ìÈÖÂηϤÀ¤Ã¤Æ¡¢Æ±´ü¡¢¥·¥ê¥¢¥é¥¤¥º¡¢¥Ç¥·¥ê¥¢¥é¥¤¥º¡¢timed I/O ¤ÎÀâÌÀ¤¬¤µ¤ì¤Æ¤¤¤ë¤Î¤Ï¡¢ XMOS ¥È¥Ã¥×¤«¤é¡¢Support > Documentation > Software Tools ¤Î¥Ú¡¼¥¸¤Ë¤¢¤ë¡¢XC-XS1 User Manual (Preview) (2009/02/19) ¤Ç¤·¤¿¡£

¡ú¸½ºß¡¢¾åµ­¤Î PDF ¤Ï¡¢Programming XC on XCore XS1 Devices ¤È¤¤¤¦Ì¾Á°¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£Support > Documentation > Design Tools ¤Î¤È¤³¤í¤Ë¥Ú¡¼¥¸¹½À®¤¬ÊѤï¤ê¤Þ¤·¤¿¡£

!!!¤Ê¤ó¤«LED¤Î¥Ý¡¼¥È¤¬»ñÎÁ(XC1 Board Layout and Port Map)¤È°ã¤¦µ¤¤¬..... (¸Å¤¤¾ðÊó)

¡¡2009/3 ¸½ºß¤ÎXC-1¤Ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤ë¤ß¤¿¤¤¤Ç¤¹¤è¡£
¡¡Äɵ­¡§¿·¤·¤¤»ñÎÁ¤Ç¤ÏÄûÀµ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢Tutorial ¤Ï¤Õ¤ë¤¤ÀâÌÀ¤Î¤Þ¤Þ¤Îʪ¤â¤¢¤ëÌÏÍÍ¡£

 out port cled0 = XS1_PORT_4C; /* 12,1,2,3 */
 out port cled1 = XS1_PORT_4A; /* 4,5,6,7 */
 out port cled2 = XS1_PORT_4B; /* 8,9,10,11 */


!!!¤Ê¤ó¤«ÀФ¬Ç®¤¤¤ó¤¹¤±¤É......

¡¡»È¤ï¤Ê¤¤¥³¥¢¤ä¥ê¥ó¥¯¤Î¥Ñ¥ï¡¼¤òÀ©¸æ¤Ç¤­¤ë¤è¤¦¤Ç¤¹¡£
¡¡½Ðŵ¡§xlinkers forum http://www.xlinkers.org/node/65
¡¡¡¡¡¡¡¡¤Î {{ref Power.c}} ¤è¤ê¡£

 //	setRegVal(processor,psctl,reg,val);
 setRegVal(0, 0, 7, 128);	// CPU 0 - Low power link mode (Reg 7)
 setRegVal(1, 1, 6, 128);	// CPU 1 - Low power mode (Reg 6)         
 setRegVal(2, 1, 6, 128);	// CPU 2 - Low power mode (Reg 6)
 setRegVal(3, 1, 6, 128);	// CPU 3 - Low power mode (Reg 6)

¡¡¤³¤Î¤Ø¤ó¤Î¤³¤È¤Ï¡¢XMOS ¥µ¥¤¥È¤Î Support > Documentation > Silicon ¤Ë¤¢¤ë¡¢"XS1 System Specification (2009/01/27)" ¤È¤¤¤¦»ñÎÁ¤Î  3.6¾Ï(¥³¥Þ¥ó¥É¤Îȯ¹ÔÊýË¡)¡¢4.2¾Ï¡¢4.3¾Ï(¥ì¥¸¥¹¥¿¤ÎÆâÍÆ)¤Ëµ­½Ò¤¬¤¢¤ê¤Þ¤¹¡£

!!!³°ÉÕ¤± SPI ROM ¤«¤é¥Ö¡¼¥È¤·¤¿¤¤
!!!³°ÉÕ¤± SPI ROM ¤«¤é¥Ö¡¼¥È¤·¤¿¤¤(XC-1,¸Å¤¤¾ðÊó)

¢¨XMOS ¤«¤é SPI ROM ¤¬¤Ä¤¤¤¿¥Ð¡¼¥¸¥ç¥ó¡¢XC-1A ¤¬½Ð¤Þ¤·¤¿(2009/12)

¡¡¥Õ¥¡¡¼¥à¥¦¥§¥¢¥Ð¡¼¥¸¥ç¥ó 1.1 °Ê¹ß¤Ç¤Ï¡¢¥Ö¡¼¥È¡ÊUSB Àܳ¡Ë»þ¤Ë B ¥Ü¥¿¥ó¤ò²¡²¼¤¹¤ë¤È¡¢SPI ¥Ö¡¼¥È¤¹¤ë¤È¤¤¤¦µ­½Ò¤¬¤¢¤ê¤Þ¤¹¡£

¡¡¥Õ¥¡¡¼¥à¥¦¥§¥¢¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢1.1 °Ê¹ß¤Î¥Õ¥¡¡¼¥à¥¦¥§¥¢¤Ç¤¢¤ì¤Ð¡¢USB Àܳľ¸å¡¢¥Ç¥âµ¯Æ°Á°¤ËÅÀÅô¤¹¤ë LED ¤ÇȽÊ̤Ǥ­¤Þ¤¹¡£(²¼µ­¤ÏXC-1 Development Kit Addendum ¤«¤é°úÍÑ)

 You can check the firmware version installed when you connect the XC-1 to the
 USB cable. The button LEDs light up to indicate the major version number and the
 clock LEDs indicate the minor number. For example, version 1.1 is identified when
 Button A LED and Clock LED 1 light up. If no LEDs light up the firmware is
 version 1.0.

¡¡SPI FLASH ¥á¥â¥ê¤ÎÀܳÊýË¡¡¢¥×¥í¥°¥é¥à¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¢Á°½Ò¤ÎXS1 System Specification¤ÎÂ裲¾Ï¤Ë¤«¤«¤ì¤Æ¤¤¤Þ¤¹¡£

¡¡SPI FLASH(ROM) ¤È¤¤¤Ã¤Æ¤â¤¤¤í¤¤¤í¤¢¤ê¤Þ¤¹¡£XMOS ¤Î¹ë²ÚÈǤΤۤ¦¤Î¥­¥Ã¥È¡¢XDK ¤Ç¤Ï EPCS1(Altera ¤Î FPGA ¥³¥ó¥Õ¥£¥°¥ì¡¼¥·¥ç¥óÍÑ) ¤¬»È¤ï¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤Ï³Î¼Â¤Ë»È¤¨¤½¤¦¤Ç¤¹¡£

¡¡Â¾¤Ë¤â Xlinkers ¥Õ¥©¡¼¥é¥à¤ò¸«¤Æ¤¤¤ë¤È¡¢AT25F512 ¤ä M25PE10 ¤Ê¤É¤Î̾Á°¤¬½Ð¤Æ¤­¤Þ¤¹¡£¥Ç¡¼¥¿¥·¡¼¥È¤ò¸«¤ë¤È¡¢¤¿¤·¤«¤Ë¥³¥Þ¥ó¥É¤Ï¸ß´¹¤Ã¤Ý¤¤¤Ç¤¹¡£


¡¡¤È¤ê¤¢¤¨¤º¡¢°ÂÁ´¥Ñ¥¤¤Î EPCS1 ¤ò Digikey ¤Ç¹ØÆþ¤·¤Æ¡¢½ñ¤­¹þ¤ß¡¢SPI ¥Ö¡¼¥È¤·¤Æ¤ß¤Þ¤·¤¿¡£

¡¡¡ú¿·¤·¤¯½Ð¤¿XC-2 Ethernet ¥­¥Ã¥È¤Ç¤Ï¡¢Atmel ¤Î AT25DF041A ¤¬»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï EPCS1 ¤è¤ê¤â°Â¤¤¾å¤Ë¡¢ÍÆÎ̤âÂ礭¤¤(4MBit)¤Ç¤¹¤Î¤Ç¡¢¤³¤ì¤«¤éÇ㤦¤Ê¤é¤³¤Á¤é¤Ç¤·¤ç¤¦¤«¡£

¡¡SPI FLASH ¤Ø¤Î½ñ¤­¹þ¤ß¥Ä¡¼¥ë¤Ç¤¹¤¬¡¢Desktop Tools 9.2.0 ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤È¡¢xflash.exe ¤Ê¤ë¥³¥Þ¥ó¥É¤¬°ì½ï¤Ë¤Ä¤¤¤Æ¤­¤Þ¤¹¡£¥³¥ì¤ò»È¤¦¤È¡¢Æñ¤·¤¤¤³¤È¤ò¹Í¤¨¤º¤ËÀܳ¤¹¤ë¤È¡¢¤½¤Î¤Þ¤Þ XC-1 ¤ò FLASH ¥é¥¤¥¿¤È¤·¤Æ»È¤¨¤Þ¤¹¡£

¡¡¼ÂÂÎÇÛÀþ¿Þ¡ÊÅŸ»¤Î¥Ñ¥¹¥³¥ó(104)¤È nCS ¤Î¥×¥ë¥¢¥Ã¥×¤¬½ñ¤¤¤Æ¤Ê¤¤¤Ç¤¹¡£¥×¥ë¥¢¥Ã¥×¤Ï¤Ê¤¯¤Æ¤âÆ°¤­¤Þ¤·¤¿¡Ë¡£
{{ref_image XC1_EPCS1.jpg}}

¡¡¾åµ­¤Î¤è¤¦¤ËÀܳ¤·¡¢xflash ¤ò»È¤Ã¤Æ½ñ¤­¹þ¤à¤È¡¢°Ê²¼¤Î¤è¤¦¤Ê¥á¥Ã¥»¡¼¥¸¤ò½Ð¤·¤Æ½ñ¤­¹þ¤ß¤¬¤Ç¤­¤Þ¤·¤¿¡£


 C:\Program Files\Xmos\DesktopTools\9.2.0>xflash  c:\work\xc1\tut1\Debug\tut1.xe
 Building flash images...
 Programmer started
 Erase sectors:
  3...
  Programming page at address:
   0x000800...
 SPI flash programming completed successfully.
 
 C:\Program Files\Xmos\DesktopTools\9.2.0>

¡¡¤Þ¤¿¡¢SPI ROM ¤ò¼ÂÁõ¤»¤º¤Ë(XC-1 ¤ÏÀܳ¾õÂÖ)¼Â¹Ô¤¹¤ë¤È¡¢°Ê²¼¤Î¤è¤¦¤Ë½Ð¤Þ¤·¤¿¡£

 C:\Program Files\Xmos\DesktopTools\9.2.0>xflash  c:\work\xc1\tut1\Debug\tut1.xe
 Building flash images...
 Programmer started
 Failed to initialize access to SPI flash.
 Error: F03013 Failed to complete flash programming.

¡¡¤µ¤Æ¡¢SPI ¤Ë½ñ¤­¹þ¤á¤¿¤ï¤±¤Ç¤¹¤¬¡¢B ¥Ü¥¿¥ó¤ò²¡¤·¤Ê¤¬¤é USB ¤òÁÞ¤¹¤È¡¢¤¿¤·¤«¤Ë½ñ¤­¹þ¤ó¤À¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬µ¯Æ°.....¤¹¤ë¤Ï¤º¤¬¡¢¤¹¤ë¤È¤­¤È¤·¤Ê¤¤¤È¤­¤¬¤¢¤ê¤Þ¤¹¡£

¡¡¤¤¤í¤¤¤íÄ´¤Ù¤Æ¤¤¤ë¤È¡¢Core0 ¤Î¤ß¤Î .xe ¤Ïµ¯Æ°¤¹¤ë¤Î¤Ç¤¹¤¬¡¢Ê£¿ô¤Î¥³¥¢¤ò»È¤¦ .xe ¤Ï SPI ¤Ë½ñ¤­¹þ¤á¤ë¤â¤Î¤Î¡¢B ¥Ü¥¿¥ó¤Ç¤Ïµ¯Æ°¤·¤Þ¤»¤ó¡£

¡¡xlinkers ¤Çʹ¤¤¤Æ¸«¤¿½ê¡¢

 To boot multicore from flash, you need to move resistor R11 onto R12. 
 This will set the other cores to boot from flash.

¡¡¡©¡©¡©R11¡©¡©¡©R12 ¤½¤ó¤Ê¥ì¥¸¥¹¥¿¤¢¤Ã¤¿¤Ã¤±¡©
¡¡¤È¿ôʬ¹Í¤¨¤Æ¡¢²óÏ©¿Þ¤Î R11 ¤È R12 (Äñ¹³=resistor!=registor ¤À!)
¤È¤¤¤¦¤³¤È¤Ëµ¤¤Å¤­¡¢Áá® R11¡ÊSS XC0 BS0=H ¤Ç¥Ö¡¼¥È¼ïÊÌ JTAG) ¤ò R12 (SS XC0 BS0=L ¤Ç¥Ö¡¼¥È¼ïÊÌ SPI) ¤ËÊѹ¹¡£

 ¡ú¤³¤ÎÊѹ¹(R11->R12)¤Î¤¢¤È¡¢²¿ÅÙ¤«¥Ç¥Ð¥Ã¥°¤ò¤ä¤Ã¤Æ¤ß¤Æ¡¢
 ¥Þ¥ë¥Á¥³¥¢¥¢¥×¥ê¤È¤½¤¦¤Ç¤Ê¤¤¥¢¥×¥ê¤Ç¡¢xrun ¤ä IDE ¤«¤é¤Î¥Ç¥Ð¥Ã¥°¤¬
 Æ°ºî¤·¤¿¤ê¤·¤Ê¤«¤Ã¤¿¤ê¡¢¤È¤¤¤¦¤³¤È¤¬¤¢¤ê¤Þ¤·¤¿¡£
 ¤Ê¤Î¤Ç¡¢¸½ºß¤Ï¡¢¥¹¥¤¥Ã¥Á¤ò¤Ä¤±¤Æ¡¢SS XC0 BS0=L/H ¤òÀÚ¤êÂؤ¨
 ¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£

 ¡úxrun ¼ºÇÔ,¥Ç¥Ð¥Ã¥°¥â¡¼¥É¤ËÆþ¤ì¤Ê¤¤¸½¾Ý¤¬½Ð¤ë¾ì¹ç¤Ë¤Ï¡¢
 ɬ¤º USB Àܳ»þ¤Ë A ¥Ü¥¿¥ó²¡²¼¡Ê¥×¥í¥°¥é¥à¥â¡¼¥É¡Ë¤Ç A ¥Ü¥¿¥óÏƤÎ
 LED ¤Î 3 ²óÅÀÌǤò³Îǧ¤¹¤ë¤è¤¦¤Ë¤¹¤ë¤È¤¦¤Þ¤¯¤¤¤¯¤è¤¦¤Ç¤¹¡£

¡¡¤·¤«¤·¡¢XC-1 ñÆȤǥ֡¼¥È¤¹¤ë¤Ë¤Ï¡¢¤Þ¤À¤¤¤¯¤Ä¤«¤ÎÊɤ¬¤¢¤ê¤Þ¤¹¡£

¡¡¤¿¤á¤·¤Ë·ÈÂÓ½¼ÅÅÍѤΡ¢+5V ÅŸ»¤À¤±¤­¤Æ¤¤¤ë¡¢¡Ö¥Ë¥» USB¡×¤ò¤Ä¤Ê¤¤¤Ç¤ß¤Þ¤·¤¿¤¬¡¢µ¯Æ°¤·¤Þ¤»¤ó¤Ç¤·¤¿¡£

¡¡XC-1 ¤Î²óÏ©¿Þ¤ò¤ß¤ë¤È¡¢USB ¥Ð¥¹¥Ñ¥ï¡¼¤Î¥¹¥¤¥Ã¥Á¥ó¥°¤¬ FTDI ¤Î USB-Serial&JTAG ¤ÎÀФǹԤï¤ì¤Æ¤¤¤ë(Q4)¤Î¤Ç¡¢Ã±½ã¤Ë USB ¤Î¤È¤³¤í¤«¤é 5V ¤òÆþ¤ì¤ë¤À¤±¤Ç¤ÏÂÌÌܤǡ¢FTDI ¤ÎÀФ¬¥Û¥¹¥È¤È¤Î¥ê¥ó¥¯¤ò³ÎΩ¤·¤Ê¤¤¤ÈÅŸ»¤¬¶¡µë¤µ¤ì¤Ê¤¤¤è¤¦¤Ç¤¹¡£

¡¡¤Þ¤¿¡¢Q12 ¤¬ FTDI ¤ÎÀФˤĤʤ¬¤Ã¤Æ¤¤¤Æ¡¢¤³¤ì¤¬¥ê¥»¥Ã¥È¥é¥¤¥ó¤ò°ú¤ÃÄ¥¤Ã¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£¤Ê¤Î¤Ç¡¢¤³¤Î¤Ø¤ó¤â¤Ê¤ó¤È¤«¤·¤Ê¤¤¤È¥Ø¥Ã¥À¤«¤é 5V Æþ¤ì¤Æ¤âÆ°¤«¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£

¡¡¡ÊÄɵ­¡ËXlinkers ¤Ë¤è¤ë¤È¡¢Q4,Q12 ¤òñ½ã¤Ë¼è¤ê½ü¤¯¤À¤±¤Ç³°ÉôÅŸ»»ÅÍͤˤʤë¤è¤¦¤Ç¤¹¡£USB ¤âÆ°ºî¤¹¤ë¤é¤·¤¤¡Ê̤³Îǧ¡Ë¢­
¡¡http://www.xlinkers.org/forum/viewtopic.php?f=4&t=355


!!!X2Port[A-D] ¤Î¥Ø¥Ã¥À¤Ï¤É¤³¤Ë¤Ä¤Ê¤¬¤Ã¤Æ¤ë¤Î¡©

¡¡²óÏ©¿Þ¤ò¸«¤ë¤È¡¢H16,H17,H18,H19 ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¥æ¥Ë¥Ð¡¼¥µ¥ë¥¨¥ê¥¢¤Î X0Dnn ¤ß¤¿¤¤¤Ê¥·¥ë¥¯°õºþ¤¬¤Ê¤¤¤Î¤Ç¡¢°ì½Ö¡©¡©¡©¤È¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡£

¡¡¤É¤³¤«¤Ç¸«¤¿¤è¤¦¤Êµ¤¤¬¤·¤¿¤Î¤Ç¡¢Ãµ¤·¤Æ¤ß¤¿¤é¡¢XC-1 ¤ÎÀ½ÉÊ¥Ú¡¼¥¸¤Î¤ï¤­¤Ë¤¢¤ë XC1 Tutorial(xport1.pdf) ¤ÎºÇ¸å¤ÎÊý¤Î"XC1 Board Layout and Port Map"¤Î core0 ¤Î¥Ý¡¼¥Èɽ(core0 ¤Î LED ¤Î¥Ý¡¼¥È¤¬´Ö°ã¤Ã¤Æ¤ë¤ä¤Ä)¤Î¼¡¤Î¥Ú¡¼¥¸¤ÎFigure 5:XC-1 Block Diagram ¤ÎÃæ¤Ë³ä¤êÅö¤Æ¤¬¤¢¤ê¤Þ¤·¤¿¡£

¡¡H16:X2PortA
¡¡H17:X2PortB
¡¡H18:X2PortC
¡¡H19:X2PortD

¤Î¤è¤¦¤Ç¤¹¡£

¤Þ¤¿¸«¼º¤ï¤Ê¤¤¤è¤¦¤Ë¡¢¥á¥â¤·¤Æ¤ª¤­¤Þ¤¹¡£
LED ¤ÈƱ¤¸¤¯¡¢¤º¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬......

!!! violates variable disjointness rules ¤Ã¤Æ¡©

XC ¸À¸ì¤Ç¤Ï¡¢°Û¤Ê¤ë¥¹¥ì¥Ã¥É¤«¤éƱ¤¸¥á¥â¥ê¤Ø¤Î¥¢¥¯¥»¥¹¤ò¤·¤è¤¦¤È¤¹¤ë¤È¡¢¤³¤Î¥¨¥é¡¼¤Ë¤Ê¤ë¤è¤¦¤Ç¤¹¡£

¤¢¤ó¤Þ¤ê°ÕÌ£¤Î¤Ê¤¤¥³¡¼¥É¤Ç¤¹¤¬¡¢Îã.....

 #include <xs1.h>
 #include <platform.h> 
 
 out port cled0 = XS1_PORT_4C; /* 12,1,2,3 */
 out port cledG = XS1_PORT_1E;
 out port cledR = XS1_PORT_1F;
 
 unsigned share_mem[10] ; /* ¶¦Í­¥á¥â¥ê */
 
 /* ¥¹¥ì¥Ã¥É1 */
 void produce()
 {
 	unsigned a;
 	while(1) {
 		for (a =0;a<10;a++){
 			share_mem[a] = a ; // ¤³¤³¤È
		}
 	}
 }
 
 /* ¥¹¥ì¥Ã¥É2 */
 void consume()
 {
 	unsigned a ;
 	cledG <: 1 ;
 	cledR <: 1 ;
 	while(1){
 		for (a=0;a<10;a++) {
 			cled0 <: share_mem[a] ; // ¤³¤³¤È
 		}
 	}
 }
 
 int main()
 {
 	par { // ¤³¤³¤È¤Ç¡¢Åܤé¤ì¤ë
 		produce() ;
 		consume() ;
 	}
 	return 0;
 }

¡¡¥¹¥ì¥Ã¥É´ÖÄÌ¿®¤Ï¥Á¥ã¥ó¥Í¥ë¤ò»È¤¨¡¢¤È¤¤¤¦¤³¤È¤é¤·¤¤¤Ç¤¹¡£

!!!¤Ç¤â¡¢ÇÛÎó¤È¤«Î¾Êý¤Ç¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¤È¥¤¥ä¤Ê¾ì¹ç

C ¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¾åµ­¤ÎÀ©¸Â¤¬¤Ê¤¤¡Ê¥Á¥§¥Ã¥¯¤¬¤­¤«¤Ê¤¤¡©¡Ë¤è¤¦¤Ç¤¹¡£
¤Ê¤Î¤Ç¡¢¾å¤ÎÇÛÎó¤Î¶¦Í­Éôʬ¤ò C ¤ÇÊÌ¥Õ¥¡¥¤¥ë¤Ë¡¢²¼µ­¤Î¤è¤¦¤Ë½ñ¤¤¤Æ¡¢

 unsigned share_mem[10] ;
 
 int readmem(unsigned addr)
 {
 	return share_mem[addr] ;
 }
 
 void setmem(unsigned addr,unsigned data)
 {
 	share_mem[addr] = data ;
 }

¡¡XC ¦¤Ç¡¢°Ê²¼¤ÎÀë¸À¤ò¤·¤Æ¡¢

 extern unsigned share_mem[10] ;
 extern int readmem(unsigned addr) ;
 extern void setmem(unsigned addr,unsigned data) ;

¡¡¥á¥â¥ê¥¢¥¯¥»¥¹¤ò°Ê²¼¤Î¤è¤¦¤Ë½ñ¤­´¹¤¨¤ë¤È¡¢¤ª¤³¤é¤ì¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

 void produce()
 {
 	unsigned a;
 	while(1) {
 		for (a =0;a<10;a++){
 			setmem(a,a) ; // ¤³¤³¤È
 		}
 	}
 }
 
 void consume()
 {
 	unsigned a ;
 	cledG <: 1 ;
 	cledR <: 1 ;
 	while(1){
 		for (a=0;a<10;a++) {
 			cled0 <: readmem(a) ; // ¤³¤³
 		}
 	}
 }

!!!¥³¥ó¥Ñ¥¤¥ë»þ¤Ë³Æ¥³¥¢¤Î¥ê¥½¡¼¥¹¤Î»ÈÍѾõ¶·¤òÃΤëÊýË¡ (¸Å¤¤¾ðÊó)

¡¡Desktop Tools 9.2.0(Eclipse) ¤Î¾ì¹ç¡¢Project > Properties ¤ÎÃæ¤Î¡¢°Ê²¼¤Î Xmos Mapper ¤Î xcc ¤Î¤È¤³¤í¤Ë "--show-report" ¥ª¥×¥·¥ç¥ó¤ò¤Ä¤±¤ë¡Ê²èÁü»²¾È¡Ë¡£

¡¡¡úËÜÅö¤Ï Mapper ¥Ä¥ê¡¼¤Î Misc ¤Î¤È¤³¤í¤Ë½ñ¤¯¤Î¤¬Àµ¤·¤¤¤è¤¦¤Êµ¤¤¬¤·¤Ê¤¤¤³¤È¤â¤Ê¤¤¤«¤â :-)

{{ref_image showreport.jpg}}

----

XMOS ¤Î XS1-G4 ¤Ç¤¢¤½¤Ö¡¡¡Ã¡¡XMOS ¤Î XS1-G4 ¤Ç¤¢¤½¤Ö - ¤½¤Î£²¡ä¡ä