¶ÔISA×ÜÏßDMAµÄʵÏÖ - [À¶É­ÁÖ-×ÔÓÉÈí¼þ] Is Detainedslut Id Index Php Detained Slut" href="http://is.detainedslut.com/feed//id/index.php" /> Linux<img src="http://posterous.com/getfile/files.posterous.com/finrosforum/aJJlBiHwguBnatwkgnJEvenErGybuwbFdtFlFHdatdjorAFEGscenbGGrcCb/media_httpuploadwikim_yJDjd.jpg.scaled500.jpg"/>¶ÔISA<img src="http://cache.boston.com/bonzai-fba/AP_Photo/2006/03/21/1142950793_5053.jpg"/>×ÜÏß<img src="http://www.sidewalkhoes.com/hardcore/072508/hardcore-pictures-2/fuck-that-slut-c09.jpg"/>DMAµÄÊ<img src="http://readingeagle.com/REnetImages/2008/03/25/D8VKBMHG0/500x500_a42f4e77-ec9c-4e39-bfba-9d72ee018791.jpg"/>µÏÖ -<img src="http://www.reelmovienews.com/images/gallery/detained.jpg"/> [À¶É­ÁÖ-×ÔÓÉÈí¼þ] Is Detainedslut Id Index Php Detained Slut

Detained Detained

Linux¶ÔISA×ÜÏßDMAµÄʵÏÖ - [À¶É­ÁÖ-×ÔÓÉÈí¼þ] Is Detainedslut Id Index Php Detained Slut

Is Detainedslut Id Index Php Detained Slut

¿É¼ûµÄ¡£
£¨1£©µ±Ç°µØÖ·¼Ä´æÆ÷£¨Current Address Register£©£ºÃ¿¸öDMAͨµÀ¶¼ÓÐÒ»¸ö16λµÄµ±Ç°µØÖ·¼Ä´æÆ÷£¬±íʾһ¸öDMA´«ÊäÊÂÎñ£¨Transfer Transaction£©ÆÚ¼äµ±Ç°DMA´«Êä²Ù×÷µÄDMAÎïÀíÄÚ´æµØÖ·¡£ÔÚÿ¸öDMA´«Ê俪ʼǰ£¬8 Detained 237¶¼»á×Ô¶¯µØÓøÃͨµÀµÄAddress RegisterÖеÄÖµÀ´³õʼ»¯Õâ¸ö¼Ä´æÆ÷£»ÔÚ´«ÊäÊÂÎñÆÚ¼äµÄÿ´ÎDMA´«Êä²Ù×÷Ö®ºó¸Ã¼Ä´æÆ÷µÄÖµ¶¼»á±»×Ô¶¯µØÔö¼Ó»ò¼õС¡£
£¨2£©µ±Ç°¼ÆÊý¼Ä´æÆ÷£¨Current Count Register£©£ºÃ¿¸öÿ¸öDMAͨµÀ¶¼ÓÐÒ»¸ö16λµÄµ±Ç°¼ÆÊý¼Ä´æÆ÷£¬±íʾµ±Ç°DMA´«ÊäÊÂÎñ»¹Ê£Ï¶àÉÙδ´«ÊäµÄÊý¾Ý¡£ÔÚÿ¸öDMA´«ÊäÊÂÎñ¿ªÊ¼Ö®Ç°£¬8237¶¼»á×Ô¶¯µØÓøÃͨµÀµÄCount RegisterÖеÄÖµÀ´³õʼ»¯Õâ¸ö¼Ä´æÆ÷¡£ÔÚ´«ÊäÊÂÎñÆÚ¼äµÄÿ´ÎDMA´«Êä²Ù×÷Ö®ºó¸Ã¼Ä´æÆ÷µÄÖµ¶¼»á±»×Ô¶¯µØÔö¼Ó»ò¼õС£¨²½³¤Îª1£©¡£
£¨3£©µØÖ·¼Ä´æÆ÷£¨Address Register£©»òÆ«ÒÆ¼Ä´æÆ÷£¨Offset Register£©£ºÃ¿¸öDMAͨµÀ¶¼ÓÐÒ»¸ö16λµÄµØÖ·¼Ä´æÆ÷£¬±íʾϵͳRAMÖеÄDMA»º³åÇøµÄÆðʼλÖÃÔÚÒ³Ä򵀮«ÒÆ¡£
£¨4£©¼ÆÊý¼Ä´æÆ÷£¨Count Register£©£ºÃ¿¸öDMAͨµÀ¶¼ÓÐÒ»¸ö16λµÄ¼ÆÊý¼Ä´æÆ÷£¬±íʾDMA»º³åÇøµÄ´óС¡£
£¨5£©Ò³¼Ä´æÆ÷£¨Page Register£©£º¸Ã¼Ä´æÆ÷¶¨ÒåÁËDMA»º³åÇøµÄÆðʼλÖÃËùÔÚÎïÀíÒ³µÄ»ùµØÖ·£¬¼´Ò³ºÅ¡£Ò³¼Ä´æÆ÷ÓеãÀàËÆÓÚPCÖеĶλùÖ·¼Ä´æÆ÷¡£
4£®2£®2 8237 DAMCµÄ¿ØÖƼĴæÆ÷
£¨1£©ÃüÁî¼Ä´æÆ÷£¨Command Register£©
Õâ¸ö8λµÄ¼Ä´æÆ÷ÓÃÀ´¿ØÖÆ8237оƬµÄ²Ù×÷¡£Æä¸÷λµÄ¶¨ÒåÈçÏÂͼËùʾ£º

£¨2£©Ä£Ê½¼Ä´æÆ÷£¨Mode Register£©
ÓÃÓÚ¿ØÖƸ÷DMAͨµÀµÄ´«Êäģʽ£¬ÈçÏÂËùʾ£º

£¨3£©ÇëÇó¼Ä´æÆ÷£¨Request Register£©
ÓÃÓÚÏò¸÷DMAͨµÀ·¢³öDMAÇëÇ󡣸÷λµÄ¶¨ÒåÈçÏ£º

£¨4£©ÆÁ±Î¼Ä´æÆ÷£¨Mask Register£©
ÓÃÀ´ÆÁ±Îij¸öDMAͨµÀ¡£µ±Ò»¸öDMAͨµÀ±»ÆÁ±Îºó£¬Ëü¾Í²»ÄÜÔÚ·þÎñÓÚDMAÇëÇó£¬Ö±µ½Í¨µÀµÄÆÁ±ÎÂë±»Çå³ý¡£¸÷λµÄ¶¨ÒåÈçÏ£º

ÉÏÊöÆÁ±Î¼Ä´æÆ÷Ò²³ÆÎª¡°µ¥Í¨µÀÆÁ±Î¼Ä´æÆ÷¡±£¨Single Channel Mask Register£©£¬ÒòΪËüÒ»´ÎÖ»ÄÜÆÁ±ÎÒ»¸öͨµÀ¡£´ËÍ⺬ÓÐÒ»¸öÆÁ±Î¼Ä´æÆ÷£¬¿ÉÒÔʵÏÖÒ»´ÎÆÁ±ÎËùÓÐ4¸öDMAͨµÀ£¬ÈçÏ£º

£¨5£©×´Ì¬¼Ä´æÆ÷£¨Status Register£©
Ò»¸öÖ»¶ÁµÄ8λ¼Ä´æÆ÷£¬±íʾ¸÷DMAͨµÀµÄµ±Ç°×´Ì¬¡£±ÈÈ磺DMAͨµÀÊÇ·ñÕý·þÎñÓÚÒ»¸öDMAÇëÇ󣬻òÕßij¸öDMAͨµÀÉϵÄDMA´«ÊäÊÂÎñÒѾ­Íê³É¡£¸÷λµÄ¶¨ÒåÈçÏ£º

4£®2£®3 8237 DMACµÄI/O¶Ë¿ÚµØÖ·
Ö÷¡¢´Ó8237 DMACµÄ¸÷¸ö¼Ä´æÆ÷¶¼ÊDZàÖ·ÔÚI/O¶Ë¿Ú¿Õ¼äµÄ¡£¶øÇÒÆäÖÐÓÐЩI/O¶Ë¿ÚµØÖ·¶ÔÓÚI/O¶Á¡¢Ð´²Ù×÷Óв»Í¬µÄ±íʾº¬Òå¡£ÈçϱíʾËùʾ£º
Slave DMAC¡¯s I/O port Master DMAC¡¯sI/O port read write
0x000 0x0c0 Channel 0/4 µÄAddress Register
0x001 0x0c1 Channel 0£¯4µÄCount Register
0x002 0x0c2 Channel 1£¯5 µÄAddress Register
0x003 0x0c3 Channel 1£¯5µÄCount Register
0x004 0x0c4 Channel 2£¯6µÄAddress Register
0x005 0x0c5 Channel 2£¯6µÄCount Register
0x006 0x0c6 Channel 3£¯7µÄAddress Register
0x007 0x0c7 Channel 3£¯7µÄCount Register
0x008 0x0d0 Status Register Command Register
0x009 0x0d2 Request Register
0x00a 0x0d4 Single Channel Mask Register
0x00b 0x0d6 Mode Register
0x00c 0x0d8 Clear Flip-Flop Register
0x00d 0x0da Temporary Register Reset DMA controller
0x00e 0x0dc Reset all channel masks
0x00f 0x0de all-channels Mask Register
¸÷DMAͨµÀµÄPage RegisterÔÚI/O¶Ë¿Ú¿Õ¼äÖеĵØÖ·ÈçÏ£º
DMA channel Page Register¡¯sI/O port address
0 0x087
1 0x083
2 0x081
3 0x082
4 0x08f
5 0x08b
6 0x089
7 0x08a
×¢ÒâÁ½µã£º
1. ¸÷DMAͨµÀµÄAddress RegisterÊÇÒ»¸ö16λµÄ¼Ä´æÆ÷£¬µ«Æä¶ÔÓ¦µÄI/O¶Ë¿ÚÊÇ8λ¿í£¬Òò´Ë¶ÔÕâ¸ö¼Ä´æÆ÷µÄ¶Áд¾ÍÐèÒªÁ½´ÎÁ¬ÐøµÄI/O¶Ë¿Ú¶Áд²Ù×÷£¬µÍ8λÊ×Ïȱ»·¢ËÍ£¬È»ºó½ô½Ó×Å·¢Ë͸ß8λ¡£
2. ¸÷DMAͨµÀµÄCount Register£ºÕâÒ²ÊÇÒ»¸ö16λ¿íµÄ¼Ä´æÆ÷£¨ÎÞÂÛ¶ÔÓÚ8λDMA»¹ÊÇ16λDMA£©£¬µ«Ïà¶ÔÓ¦µÄI/O¶Ë¿ÚÒ²ÊÇ8λ¿í£¬Òò´Ë¶ÁдÕâ¸ö¼Ä´æÆ÷ͬÑùÐèÒªÁ½´ÎÁ¬ÐøµÄI/O¶Ë¿Ú¶Áд²Ù×÷£¬¶øÇÒͬÑùÊÇÏÈ·¢Ë͵Í8룬ÔÙ·¢Ë͸ß8λ¡£ÍùÕâ¸ö¼Ä´æÆ÷ÖÐдÈëµÄÖµÓ¦¸ÃÊÇʵ¼ÊÒª´«ÊäµÄÊý¾Ý³¤¶È¼õ1ºóµÄÖµ¡£ÔÚDMA´«ÊäÊÂÎñÆÚ¼ä£¬Õâ¸ö¼Ä´æÆ÷ÖеÄÖµÔÚÿ´ÎDMA´«Êä²Ù×÷ºó¶¼»á±»¼õ1£¬Òò´Ë¶ÁÈ¡Õâ¸ö¼Ä´æÆ÷ËùµÃµ½µÄÖµ½«Êǵ±Ç°DMAÊÂÎñËùÊ£ÓàµÄδ´«ÊäÊý¾Ý³¤¶È¼õ1ºóµÄÖµ¡£µ±DMA´«ÊäÊÂÎñ½áÊøÊ±£¬¸Ã¼Ä´æÆ÷ÖеÄÖµÓ¦¸Ã±»ÖÃΪ0¡£

4£®2£®4 DMAͨµÀµÄµäÐÍʹÓÃ
ÔÚÒ»¸öµäÐ͵ÄPC»úÖУ¬Ä³Ð©DMAͨµÀͨ³£±»¹Ì¶¨µØÓÃÓÚһЩPC»úÖеıê×¼ÍâÉ裬ÈçÏÂËùʾ£º
Channel Size Usage
0 8-bit Memory Refresh
1 8-bit Free
2 8-bit Floppy Disk Controller
3 8-bit Free
4 16-bit Cascading
5 16-bit Free
6 16-bit Free
7 16-bit Free

4£®2£®5 Æô¶¯Ò»¸öDMA´«ÊäÊÂÎñµÄ²½Öè
ÒªÆô¶¯Ò»¸öDMA´«ÊäÊÂÎñ±ØÐë¶Ô8237½øÐбà³Ì£¬ÆäµäÐͲ½ÖèÈçÏ£º
1. ͨ¹ýCLIÖ¸Áî¹Ø±ÕÖжϡ£
2. DisableÄǸö½«±»ÓÃÓÚ´Ë´ÎDMA´«ÊäÊÂÎñµÄDMAͨµÀ¡£
3. ÏòFlip-Flop¼Ä´æÆ÷ÖÐдÈë0Öµ£¬ÒÔÖØÖÃËü¡£
4. ÉèÖÃMode Register¡£
5. ÉèÖÃPage Register¡£
6. ÉèÖÃAddress Register¡£
7. ÉèÖÃCount Register¡£
8. EnableÄǸö½«±»ÓÃÓÚ´Ë´ÎDMA´«ÊäÊÂÎñµÄDMAͨµÀ¡£
9. ÓÃSTIÖ¸ÁÖжϡ£

4£®3 Linux¶Ô¶Áд²Ù×÷8237 DMACµÄʵÏÖ
ÓÉÓÚDMACµÄ¸÷¼Ä´æÆ÷ÊÇÔÚI/O¶Ë¿Ú¿Õ¼äÖбàÖ·µÄ£¬Òò´Ë¶Áд8237 DMACÊÇÆ½Ì¨Ïà¹ØµÄ¡£¶ÔÓÚx86ƽ̨À´Ëµ£¬LinuxÔÚinclude£¯asm-i386£¯Dma.hÍ·ÎļþÖÐʵÏÖÁ˶ÔÁ½¸ö8237 DMACµÄ¶Áд²Ù×÷¡£
4£®3£®1 ¶Ë¿ÚµØÖ·ºÍ¼Ä´æÆ÷ÖµµÄºê¶¨Òå
LinuxÓúêMAX_DMA_CHANNELSÀ´±íʾϵͳµ±Ç°µÄDMAͨµÀ¸öÊý£¬ÈçÏ£º
#define MAX_DMA_CHANNELS 8
È»ºó£¬ÓúêIO_DMA1_BASEºÍIO_DMA2_BASEÀ´·Ö±ð±íʾÁ½¸öDMACÔÚI/O¶Ë¿Ú¿Õ¼äµÄ¶Ë¿Ú»ùµØÖ·£º
#define IO_DMA1_BASE 0x00 /* 8 bit slave DMA, channels 0..3 */
#define IO_DMA2_BASE 0xC0 /* 16 bit master DMA, ch 4(=slave input)..7 */

½ÓÏÂÀ´£¬Linux¶¨ÒåÁËDMAC¸÷¿ØÖƼĴæÆ÷µÄ¶Ë¿ÚµØÖ·¡£ÆäÖУ¬slave SMACµÄ¸÷¿ØÖƼĴæÆ÷µÄ¶Ë¿ÚµØÖ·¶¨ÒåÈçÏ£º
#define DMA1_CMD_REG 0x08 /* command register (w) */
#define DMA1_STAT_REG 0x08 /* status register (r) */
#define DMA1_REQ_REG 0x09 /* request register (w) */
#define DMA1_MASK_REG 0x0A /* single-channel mask (w) */
#define DMA1_MODE_REG 0x0B /* mode register (w) */
#define DMA1_CLEAR_FF_REG 0x0C /* clear pointer flip-flop (w) */
#define DMA1_TEMP_REG 0x0D /* Temporary Register (r) */
#define DMA1_RESET_REG 0x0D /* Master Clear (w) */
#define DMA1_CLR_MASK_REG 0x0E /* Clear Mask */
#define DMA1_MASK_ALL_REG 0x0F /* all-channels mask (w) */

Master DMACµÄ¸÷¿ØÖƼĴæÆ÷µÄ¶Ë¿ÚµØÖ·¶¨ÒåÈçÏ£º
#define DMA2_CMD_REG 0xD0 /* command register (w) */
#define DMA2_STAT_REG 0xD0 /* status register (r) */
#define DMA2_REQ_REG 0xD2 /* request register (w) */
#define DMA2_MASK_REG 0xD4 /* single-channel mask (w) */
#define DMA2_MODE_REG 0xD6 /* mode register (w) */
#define DMA2_CLEAR_FF_REG 0xD8 /* clear pointer flip-flop (w) */
#define DMA2_TEMP_REG 0xDA /* Temporary Register (r) */
#define DMA2_RESET_REG 0xDA /* Master Clear (w) */
#define DMA2_CLR_MASK_REG 0xDC /* Clear Mask */
#define DMA2_MASK_ALL_REG 0xDE /* all-channels mask (w) */

8¸öDMAͨµÀµÄAddress RegisterµÄ¶Ë¿ÚµØÖ·¶¨ÒåÈçÏ£º
#define DMA_ADDR_0 0x00 /* DMA address registers */
#define DMA_ADDR_1 0x02
#define DMA_ADDR_2 0x04
#define DMA_ADDR_3 0x06
#define DMA_ADDR_4 0xC0
#define DMA_ADDR_5 0xC4
#define DMA_ADDR_6 0xC8
#define DMA_ADDR_7 0xCC

8¸öDMA aLinux¶ÔISA×ÜÏßDMAµÄʵÏÖ - [À¶É­ÁÖ-×ÔÓÉÈí¼þ] Is Detainedslut Id Index Php Detained Slute Detained Detained Slut Slut vLinux¶ÔISA×ÜÏßDMAµÄʵÏÖ - [À¶É­ÁÖ-×ÔÓÉÈí¼þ] Is Detainedslut Id Index Php Detained Slutn i Detained Detained