- Äɲ䵤줿¹Ô¤Ï¤³¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
- ºï½ü¤µ¤ì¤¿¹Ô¤Ï
¤³¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
{{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 ¤Ç¤¢¤½¤Ö - ¤½¤Î£²¡ä¡ä