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

📄 s3c4510.c

📁 liunx下通过jtag烧写flash的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>#include "s3c4510.h"#include <asm/io.h>extern int lpt_address;int pin[] ={    1,  // UARXD1_IN    0,  // nUADSR0_OUT    1,  // UATXD0_OUT    1,  // nUADTR0_IN    1,  // UARXD0_IN    0,  // SDA_OUT    1,  // SDA_IN    0,  // SCL_OUT    1,  // SCL_IN    0,  // P_17_ENB    0,  // P_17_OUT    0,  // P_17_IN    0,  // P_16_ENB    0,  // P_16_OUT    0,  // P_16_IN    0,  // P_15_ENB    0,  // P_15_OUT    0,  // P_15_IN    0,  // P_14_ENB    0,  // P_14_OUT    0,  // P_14_IN    0,  // P_13_ENB    0,  // P_13_OUT    0,  // P_13_IN    0,  // P_12_ENB    0,  // P_12_OUT    0,  // P_12_IN    0,  // P_11_ENB    0,  // P_11_OUT    0,  // P_11_IN    0,  // P_10_ENB    0,  // P_10_OUT    0,  // P_10_IN    0,  // P_9_ENB    0,  // P_9_OUT    0,  // P_9_IN    0,  // P_8_ENB    0,  // P_8_OUT    0,  // P_8_IN    0,  // P_7_ENB    0,  // P_7_OUT    0,  // P_7_IN    0,  // P_6_ENB    0,  // P_6_OUT    0,  // P_6_IN    0,  // P_5_ENB    0,  // P_5_OUT    0,  // P_5_IN    0,  // P_4_ENB    0,  // P_4_OUT    0,  // P_4_IN    0,  // P_3_ENB    0,  // P_3_OUT    0,  // P_3_IN    0,  // P_2_ENB    0,  // P_2_OUT    0,  // P_2_IN    0,  // P_1_ENB    0,  // P_1_OUT    0,  // P_1_IN    0,  // P_0_ENB    0,  // P_0_OUT    0,  // P_0_IN    0,  // D_31_OUT    0,  // D_31_IN    0,  // D_30_OUT    0,  // D_30_IN    0,  // D_29_OUT    0,  // D_29_IN    0,  // D_28_OUT    0,  // D_28_IN    0,  // D_27_OUT    0,  // D_27_IN    0,  // D_26_OUT    0,  // D_26_IN    0,  // D_25_OUT    0,  // D_25_IN    0,  // D_24_OUT    0,  // D_24_IN    0,  // D_23_OUT    0,  // D_23_IN    0,  // D_22_OUT    0,  // D_22_IN    0,  // D_21_OUT    0,  // D_21_IN    0,  // D_20_OUT    0,  // D_20_IN    0,  // D_19_OUT    0,  // D_19_IN    0,  // D_18_OUT    0,  // D_18_IN    0,  // D_17_OUT    0,  // D_17_IN    0,  // D_16_OUT    0,  // D_16_IN    0,  // D_15_OUT    0,  // D_15_IN    0,  // D_14_OUT    0,  // D_14_IN    0,  // D_13_OUT    0,  // D_13_IN    0,  // D_12_OUT    0,  // D_12_IN    0,  // D_11_OUT    0,  // D_11_IN    0,  // D_10_OUT    0,  // D_10_IN    0,  // D_9_OUT    0,  // D_9_IN    0,  // D_8_OUT    0,  // D_8_IN    0,  // D_7_OUT    0,  // D_7_IN    0,  // D_6_OUT    0,  // D_6_IN    0,  // D_5_OUT    0,  // D_5_IN    0,  // D_4_OUT    0,  // D_4_IN    0,  // D_3_OUT    0,  // D_3_IN    0,  // D_2_OUT    0,  // D_2_IN    0,  // D_1_OUT    0,  // D_1_IN    0,  // D_0_OUT    0,  // D_0_IN    1,  // D_OUT_ENB    0,  // A_21_OUT    0,  // A_20_OUT    0,  // A_19_OUT    0,  // A_18_OUT    0,  // A_17_OUT    0,  // A_16_OUT    0,  // A_15_OUT    0,  // A_14_OUT    0,  // A_13_OUT    0,  // A_12_OUT    0,  // A_11_OUT    0,  // A_10_OUT    0,  // A_9_OUT    0,  // A_8_OUT    0,  // A_7_OUT    0,  // A_6_OUT    0,  // A_5_OUT    0,  // A_4_OUT    0,  // A_3_OUT    0,  // A_2_OUT    0,  // A_1_OUT    0,  // A_0_OUT    0,  // ExtMACK_OUT    0,  // ExtMREQ_IN    1,  // nWBE_3_OUT    1,  // nWBE_2_OUT    1,  // nWBE_1_OUT    1,  // nWBE_0_OUT    1,  // nDWE_OUT    1,  // nCAS_3_OUT    1,  // nCAS_2_OUT    1,  // nCAS_1_OUT    1,  // nCAS_0_OUT    1,  // nRAS_3_OUT    1,  // nRAS_2_OUT    1,  // nRAS_1_OUT    1,  // nRAS_0_OUT    1,  // nRCS_5_OUT    1,  // nRCS_4_OUT    1,  // nRCS_3_OUT    1,  // nRCS_2_OUT    1,  // nRCS_1_OUT    0,  // CLKSEL_IN    0,  // nRESET_IN    0,  // MCLK_IN    0,  // MCLKO_OUT    0,  // CLKOEN_IN    1,  // nRCS_0_OUT    1,  // B0SIZE_1_IN    1,  // B0SIZE_0_IN    1,  // nOE_OUT    1,  // nEWAIT_IN    1,  // nECS_3_OUT    1,  // nECS_2_OUT    1,  // nECS_1_OUT    1,  // nECS_0_OUT    0,  // DIS_BUS    1,  // UCLK_IN    1,  // TMODE_IN    0,  // MDC_OUT    1,  // LITTLE_IN    0,  // MDIO_OE    0,  // MDIO_OUT    0,  // MDIO_IN    0,  // TX_EN_TXEN_10M_OUT    0,  // TX_CLK_TXCLK_10M_OUT    0,  // TX_ERR_PCOMP_10M_OUT    0,  // TXD3_OUT    0,  // TXD2_OUT    0,  // TXD1_LOOP10_OUT    0,  // TXD0_TXD_10M_OUT    1,  // COL_COL_10M_IN    1,  // RX_CLK_RXCLK_10M_IN    1,  // RX_ERR_IN    1,  // RXD3_IN    1,  // RXD2_IN    1,  // RXD1_IN    1,  // RXD0_RXD_10M_IN    1,  // RX_DV_LINK10_IN    1,  // CRS_CRS_10M_IN    0,  // TXCBEN    0,  // TXCB_OUT    1,  // TXCB_IN    0,  // nSYNCB_OUT    1,  // RXCB_IN    1,  // nDCDB_IN    1,  // nCTSB_IN    0,  // TXDB_OUT    0,  // nRTSB_OUT    1,  // RXDB_IN    0,  // nDTRB_OUT    0,  // TXCAEN    0,  // TXCA_OUT    1,  // TXCA_IN    0,  // nSYNCA_OUT    1,  // RXCA_IN    1,  // nDCDA_IN    1,  // nCTSA_IN    0,  // TXDA_OUT    0,  // nRTSA_OUT    1,  // RXDA_IN    0,  // nDTRA_OUT    0,  // nUADSR1_OUT    0,  // UATXD1_OUT    1   // nUADTR1_IN};/*----------------------------------------------------------------	 * brief : 	get the access permition * author:	dailzh * param:	port------the parallel addr * retval:	-1--------error 			0---------succeed * modify history:		2003-12-3		Guo Jian 		first version-----------------------------------------------------------------*/int io_access_on( unsigned int port ){    if( ioperm( port, 3, 1 ) ) {        perror( "ioperm()" );        return -1;    }        if( ioperm( 0x80, 1, 1 ) ) {        perror( "ioperm()" );        return -1;    }        return 0;}/*----------------------------------------------------------------	 * brief : 	release the access permition * author:	dailzh * param:	port------the parallel addr * retval:	none * modify history:		2003-12-3		Guo Jian 		first version-----------------------------------------------------------------*/void io_access_off( unsigned int port ){    ioperm( port, 3, 0 );    ioperm( 0x80, 1, 0 );        return;}/*----------------------------------------------------------------	 * brief : 	get the valid parallel addr * author:	dailzh * param:	none * retval:	-1--------no parallel 			>0-------the parallel addr * modify history:		2003-12-3		Guo Jian 		first version-----------------------------------------------------------------*/int test_port( void ){	//try lpt1	if( !io_access_on( LPT1 ) ) {		OUTB( LPT1, 0x55 );		if( INB(LPT1) == 0x55 )			return LPT1;	    io_access_off( LPT1 );	}		//try lpt2	if( !io_access_on( LPT2 ) ) {		OUTB( LPT2, 0x55 );        if( INB( LPT2 ) == 0x55 )        	return LPT2;	    io_access_off( LPT2 );	}	//try lpt3	if( !io_access_on( LPT3 ) ) {		OUTB( LPT3, 0x55 );        if( INB( LPT3 ) == 0x55 )        	return LPT3;	    io_access_off( LPT3 );	}	return -1;}/*----------------------------------------------------------------	 * brief : 	JTAG low level operation funtion * author:	dailzh * param:	tdi-------JTAG input data 			tms-------JTAG mode 			rp--------read from JTAP or ignor * retval:	data read from JTAG * hardware connection output pin ( drive by LPT ) LPT D3      Pin 4  and TCK (bit 2 lptaddress ) LPT D2      Pin 5  and TDI (bit 3 lptaddress )

⌨️ 快捷键说明

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