⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucode.c

📁 这是单板上DPRAM的驱动程序
💻 C
字号:
#include "board.h"
#include <icontrol/pda8xx.h>
#include <string.h>
#include "ucode.h"
/*  I2C/SPI-parameter-relocating microcode */
unsigned long ucodeArray1[0x74] = 
{ 0x7fffefd9, 0x3ffd0000, 0x7ffb49f7, 0x7ff90000, 
  0x5fefadf7, 0x5f89adf7, 0x5fefaff7, 0x5f89aff7, 
  0x3a9cfbc8, 0xe7c0edf0, 0x77c1e1bb, 0xf4dc7f1d, 
  0xabad932f, 0x4e08fdcf, 0x6e0faff8, 0x7ccf76cf, 
  0xfd1ff9cf, 0xabf88dc6, 0xab5679f7, 0xb0937383, 
  0xdfce79f7, 0xb091e6bb, 0xe5bbe74f, 0xb3fa6f0f, 
  0x6ffb76ce, 0xee0df9cf, 0x2bfbefef, 0xcfeef9cf, 
  0x76cead24, 0x90b2df9a, 0x7fddd0bf, 0x4bf847fd, 
  0x7ccf76ce, 0xcfef7e1f, 0x7f1d7dfd, 0xf0b6ef71, 
  0x7fc177c1, 0xfbc86079, 0xe722fbc8, 0x5fffdfff, 
  0x5fb2fffb, 0xfbc8f3c8, 0x94a67f01, 0x7f1d5f39, 
  0xafe85f5e, 0xffdfdf96, 0xcb9faf7d, 0x5fc1afed, 
  0x8c1c5fc1, 0xafdd5fc3, 0xdf9a7efd, 0xb0b25fb2, 
  0xfffeabad, 0x5fb2fffe, 0x5fce600b, 0xe6bb600b, 
  0x5fcedfc6, 0x27fbefdf, 0x5fc8cfde, 0x3a9ce7c0, 
  0xedf0f3c8, 0x7f0154cd, 0x7f1d2d3d, 0x363a7570, 
  0x7e0af1ce, 0x37ef2e68, 0x7fee10ec, 0xadf8efde, 
  0xcfeae52f, 0x7d0fe12b, 0xf1ce5f65, 0x7e0a4df8, 
  0xcfea5f72, 0x7d0befee, 0xcfea5f74, 0xe522efde,  
  0x5f74cfda, 0x0b627385, 0xdf627e0a, 0x30d8145b, 
  0xbffff3c8, 0x5fffdfff, 0xa7f85f5e, 0xbffe7f7d, 
  0x10d31450, 0x5f36bfff, 0xaf785f5e, 0xbffda7f8, 
  0x5f36bffe, 0x77fd30c0, 0x4e08fdcf, 0xe5ff6e0f, 
  0xaff87e1f, 0x7e0ffd1f, 0xf1cf5f1b, 0xabf80d5e, 
  0x5f5effef, 0x79f730a2, 0xafdd5f34, 0x47f85f34, 
  0xafed7fdd, 0x50b24978, 0x47fd7f1d, 0x7dfd70ad, 
  0xef717ec1, 0x6ba47f01, 0x2d267efd, 0x30de5f5e, 
  0xfffd5f5e, 0xffef5f5e, 0xffdf0ca0, 0xafed0a9e, 
  0xafdd0c3a, 0x5f3aafbd, 0x7fbdb082, 0x5f8247f8
  };

unsigned long ucodeArray2[0x1d] = 
{ 0x3e303430, 0x34343737, 0xabf7bf9b, 0x994b4fbd,  
  0xbd599493, 0x349fff37, 0xfb9b177d, 0xd9936956,  
  0xbbfdd697, 0xbdd2fd11, 0x31db9bb3, 0x63139637,  
  0x93733693, 0x193137f7, 0x331737af, 0x7bb9b999,  
  0xbb197957, 0x7fdfd3d5, 0x73b773f7, 0x37933b99,  
  0x1d115316, 0x99315315, 0x31694bf4, 0xfbdbd359,  
  0x31497353, 0x76956d69, 0x7b9d9693, 0x13131979,  
  0x79376935
  };
/*Ucode=1,Spi microcode enable,
  Ucode=2,I2c microcode enable,
  Ucode=3,Spi/I2c microcode enable,*/
int LoadMicroCode(unsigned short Ucode)
{
	PDA *immr = (PDA *) (GetIMMR() & 0xffff0000);
	unsigned long *targetptr;
	unsigned int i;

	SPLX(immr->cp_rccr &=0xfffc;)    /* Unlock microcode area */

	/* Copy first block of microcode to lowest block of DPRAM */
	targetptr = (unsigned long *)( ((char*)immr)+0x2000 );
	for(i=0; i<(0x74); i++) *(targetptr++) = ucodeArray1[i];

	/* Copy second block of microcode to microcode  block of DPRAM */	
	targetptr = (unsigned long *) ( ((char*)immr)+0x2f00);
    for(i=0; i<(0x1d); i++) *(targetptr++) = ucodeArray2[i];
	
	/* Activate the microcode per the instructions in the microcode manual*/ 
	SPLX(immr->cp_rccr &=0xfffc;)

	switch (Ucode)
	{
	case 1:
    	immr->cp_rctr1=0x802a;   /*  only relocating the SPI parameters */
        immr->cp_rctr2=0x8028;
        break;
	case 2:
	 	immr->cp_rctr3 = 0x802e;   /*  only relocating the I2C parameters */
    	immr->cp_rctr4 = 0x802c;
	    break;
	case 3:
		immr->cp_rctr1=0x802a;  
        immr->cp_rctr2=0x8028;
		immr->cp_rctr3 = 0x802e;
    	immr->cp_rctr4 = 0x802c;
        break;
    default:
		return UCODEPARA_INVAILD;
		break;
	}
	SPLX(immr->cp_rccr &=0xfffc;)
	SPLX(immr->cp_rccr |=0x0001;)
	return UCODEOK;						   
}	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -