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

📄 usb.lis

📁 用ST92163开发的鼠标
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 774 0103 26       		.byte	38
 775 0104 00CE     		.word	JOY_StringProduct
 776              	
 777              		.section .text
 779              	
 780              		.desc	GetStringDescriptor, near
 781              		.proc	GetStringDescriptor
 782              	GetStringDescriptor:
 304:../src/usb.c  **** 
 305:../src/usb.c  **** #define LENGTH_STRING_DESCRIPTOR	4
 306:../src/usb.c  **** static const BYTE Comm_StringDescriptor[ LENGTH_STRING_DESCRIPTOR] = {
 307:../src/usb.c  **** 	LENGTH_STRING_DESCRIPTOR,
 308:../src/usb.c  **** 	0x03,
 309:../src/usb.c  **** 	0x09,
 310:../src/usb.c  **** 	0x04		/* LangID = 0x0409: U.S. English */
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 18


 311:../src/usb.c  **** };
 312:../src/usb.c  **** 
 313:../src/usb.c  **** #define LENGTH_STRING_VENDOR	16
 314:../src/usb.c  **** static const BYTE StringVendor[ LENGTH_STRING_VENDOR] = {
 315:../src/usb.c  **** 	LENGTH_STRING_VENDOR,			/* Size of manufaturer string */
 316:../src/usb.c  **** 	0x03,		/* bDescriptorType = String descriptor */
 317:../src/usb.c  **** 	/* Manufacturer: "Fanatec" */
 318:../src/usb.c  **** 	'F', 0, 'a', 0, 'n', 0, 'a', 0, 't', 0, 'e', 0, 'c', 0
 319:../src/usb.c  **** };
 320:../src/usb.c  **** 
 321:../src/usb.c  **** #define HUB_LENGTH_STRING_PRODUCT	28
 322:../src/usb.c  **** static const BYTE HUB_StringProduct[ HUB_LENGTH_STRING_PRODUCT] = {
 323:../src/usb.c  **** 	HUB_LENGTH_STRING_PRODUCT,
 324:../src/usb.c  **** 	0x03,
 325:../src/usb.c  **** 	/* Product name: "GameBoard Hub" */
 326:../src/usb.c  **** 	'G', 0, 'a', 0, 'm', 0, 'e', 0, 'b', 0, 'o', 0, 'a', 0, 'r', 0, 'd', 0, ' ', 0,
 327:../src/usb.c  **** 	'H', 0, 'u', 0, 'b', 0
 328:../src/usb.c  **** } ;
 329:../src/usb.c  **** 
 330:../src/usb.c  **** #define KBD_LENGTH_STRING_PRODUCT	38
 331:../src/usb.c  **** static const BYTE KBD_StringProduct[ KBD_LENGTH_STRING_PRODUCT] = {
 332:../src/usb.c  **** 	KBD_LENGTH_STRING_PRODUCT,
 333:../src/usb.c  **** 	0x03,
 334:../src/usb.c  **** 	/* Product name: "GameBoard Keyboard" */
 335:../src/usb.c  **** 	'G', 0, 'a', 0, 'm', 0, 'e', 0, 'B', 0, 'o', 0, 'a', 0, 'r', 0, 'd', 0, ' ', 0,
 336:../src/usb.c  **** 	'K', 0, 'e', 0, 'y', 0, 'b', 0, 'o', 0, 'a', 0, 'r', 0, 'd', 0
 337:../src/usb.c  **** } ;
 338:../src/usb.c  **** 
 339:../src/usb.c  **** #define MS_LENGTH_STRING_PRODUCT	32
 340:../src/usb.c  **** static const BYTE MOUSE_StringProduct[ MS_LENGTH_STRING_PRODUCT] = {
 341:../src/usb.c  **** 	MS_LENGTH_STRING_PRODUCT,
 342:../src/usb.c  **** 	0x03,
 343:../src/usb.c  **** 	/* Product name: "GameBoard Mouse" */
 344:../src/usb.c  **** 	'G', 0, 'a', 0, 'm', 0, 'e', 0, 'B', 0, 'o', 0, 'a', 0, 'r', 0, 'd', 0, ' ', 0,
 345:../src/usb.c  **** 	'M', 0, 'o', 0, 'u', 0, 's', 0, 'e', 0
 346:../src/usb.c  **** } ;
 347:../src/usb.c  **** 
 348:../src/usb.c  **** #define JOY_LENGTH_STRING_PRODUCT	38
 349:../src/usb.c  **** static const BYTE JOY_StringProduct[ JOY_LENGTH_STRING_PRODUCT] = {
 350:../src/usb.c  **** 	JOY_LENGTH_STRING_PRODUCT,
 351:../src/usb.c  **** 	0x03,
 352:../src/usb.c  **** 	/* Product name: "GameBoard Joystick" */
 353:../src/usb.c  **** 	'G', 0, 'a', 0, 'm', 0, 'e', 0, 'B', 0, 'o', 0, 'a', 0, 'r', 0, 'd', 0, ' ', 0,
 354:../src/usb.c  **** 	'J', 0, 'o', 0, 'y', 0, 's', 0, 't', 0, 'i', 0, 'c', 0, 'k', 0
 355:../src/usb.c  **** } ;
 356:../src/usb.c  **** 
 357:../src/usb.c  **** static const struct {
 358:../src/usb.c  **** 	BYTE	size ;
 359:../src/usb.c  **** 	const BYTE	*string ;
 360:../src/usb.c  **** }	UsbString[] = {
 361:../src/usb.c  **** 	{ sizeof Comm_StringDescriptor, Comm_StringDescriptor},
 362:../src/usb.c  **** 	{ sizeof StringVendor, StringVendor},
 363:../src/usb.c  **** 	{ sizeof HUB_StringProduct, HUB_StringProduct},
 364:../src/usb.c  **** 	{ sizeof KBD_StringProduct, KBD_StringProduct},
 365:../src/usb.c  **** 	{ sizeof MOUSE_StringProduct, MOUSE_StringProduct},
 366:../src/usb.c  **** 	{ sizeof JOY_StringProduct, JOY_StringProduct}
 367:../src/usb.c  **** } ;
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 19


 368:../src/usb.c  **** 
 369:../src/usb.c  **** static BYTE GetStringDescriptor( void)
 370:../src/usb.c  **** {
 784              	.LMM73:
 371:../src/usb.c  **** 	BYTE val ;
 786              	.LBB4:
 787              	.LMM74:
 372:../src/usb.c  **** 	
 373:../src/usb.c  **** 	val = CurRxBuffer[ USB_wValue] ;
 789 0113 E2F00000 		ldw  	rr0,dpr:pof(@CurRxBuffer)
 790 0117 7FF102D3 		ld  	r3,2(rr0)
 791              	.LMM75:
 374:../src/usb.c  **** 	if( val < (sizeof UsbString / sizeof UsbString[ 0]))
 793 011b 95D305   		cp   	r3,#5
 794 011e 3B03     		jxule	.L26
 795              	.LMM76:
 375:../src/usb.c  **** 	{
 376:../src/usb.c  **** 		data_size[ CurDevice] = UsbString[ val].size ;
 377:../src/usb.c  **** 		data_ptr = (BYTE *)UsbString[ val].string ;
 378:../src/usb.c  **** 		return control_read() ;
 379:../src/usb.c  **** 	}
 380:../src/usb.c  **** 	else
 381:../src/usb.c  **** 	{
 382:../src/usb.c  **** 		return TX_STALL ;
 797 0120 1C01     		ld  	r1,#1
 798 0122 46       		ret
 799              	.L26:
 800              	.LMM77:
 802 0123 C4F10000 		ld   	r1,dpr:pof(@CurDevice)
 803 0127 0C00     		ld   	r0,#0
 804 0129 2C03     		ld  	r2,#3
 805 012b 58D3     		ld  	r5,r3
 806 012d 4F42     		mul  	rr4,r2
 807 012f 7FF400F4 		ld  	r4,dpr:pof(@UsbString)(rr4)
 807      D4
 808 0134 26F00000 		ld  	dpr:pof(@data_size)(rr0),r4
 808      D4
 809              	.LMM78:
 811 0139 78D3     		ld  	r7,r3
 812 013b 4F62     		mul  	rr6,r2
 813 013d 86F600F5 		ldw  	rr6,dpr:pof(@UsbString+1)(rr6)
 813      D6
 814 0142 E2F70000 		ldw  	dpr:pof(@data_ptr),rr6
 815              	.LMM79:
 817 0146 D200E2   		call 	@control_read   
 818              	.LMM80:
 383:../src/usb.c  **** 	}
 384:../src/usb.c  **** }
 820              	.LBE4:
 821 0149 46       		ret 
 822              		.endproc
 826              	.Lscope3:
 829              	
 830              		.desc	get_descriptor, near
 831              		.proc	get_descriptor
 832              	get_descriptor:
 385:../src/usb.c  **** 
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 20


 386:../src/usb.c  **** static BYTE get_descriptor( void)
 387:../src/usb.c  **** {
 834 014a D4DFF7   		link	rr14,#8
 835 014d 74DC     		pushw	rr12
 836 014f 74DA     		pushw	rr10
 837 0151 74D8     		pushw	rr8
 838              	.LMM82:
 388:../src/usb.c  **** 	switch( CurRxBuffer[ USB_wValueHi])
 840 0153 E2F00000 		ldw  	rr0,dpr:pof(@CurRxBuffer)
 841 0157 7FF103D3 		ld 	r3,3(rr0)
 842 015b 2C00     		ld 	r2,#0
 843 015d CFD2     		decw 	rr2
 844 015f E302     		ldw  	rr0,rr2
 845 0161 97D10021 		cpw  	rr0,#33
 846 0165 BD0293   		jxugt	.L36
 847 0168 4E00     		addw 	rr0,rr0
 848 016a EE       		spm
 849 016b 86F00173 		ldw  	rr0,sof(.L37)(rr0)
 849      D0
 850 0170 FE       		sdm
 851 0171 D4D0     		jp   	(rr0)
 852              	.L37:
 853              	$start_switch_table_37:
 854 0173 01B7     		.word sof(.L31)
 855 0175 01F0     		.word sof(.L32)
 856 0177 0228     		.word sof(.L33)
 857 0179 0293     		.word sof(.L36)
 858 017b 0293     		.word sof(.L36)
 859 017d 0293     		.word sof(.L36)
 860 017f 0293     		.word sof(.L36)
 861 0181 0293     		.word sof(.L36)
 862 0183 0293     		.word sof(.L36)
 863 0185 0293     		.word sof(.L36)
 864 0187 0293     		.word sof(.L36)
 865 0189 0293     		.word sof(.L36)
 866 018b 0293     		.word sof(.L36)
 867 018d 0293     		.word sof(.L36)
 868 018f 0293     		.word sof(.L36)
 869 0191 0293     		.word sof(.L36)
 870 0193 0293     		.word sof(.L36)
 871 0195 0293     		.word sof(.L36)
 872 0197 0293     		.word sof(.L36)
 873 0199 0293     		.word sof(.L36)
 874 019b 0293     		.word sof(.L36)
 875 019d 0293     		.word sof(.L36)
 876 019f 0293     		.word sof(.L36)
 877 01a1 0293     		.word sof(.L36)
 878 01a3 0293     		.word sof(.L36)
 879 01a5 0293     		.word sof(.L36)
 880 01a7 0293     		.word sof(.L36)
 881 01a9 0293     		.word sof(.L36)
 882 01ab 0293     		.word sof(.L36)
 883 01ad 0293     		.word sof(.L36)
 884 01af 0293     		.word sof(.L36)
 885 01b1 0293     		.word sof(.L36)
 886 01b3 022D     		.word sof(.L34)
 887 01b5 0259     		.word sof(.L35)
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 21


 888              	$end_switch_table_37:
 889              	.L31:
 890              	.LMM83:
 389:../src/usb.c  **** 	{
 390:../src/usb.c  **** 		case 0x01:	/* USB_DEVICE */
 391:../src/usb.c  **** 			data_size[ CurDevice] = UsbDeviceDesc[ CurDevice].size ;
 892 01b7 C4F10000 		ld   	r1,dpr:pof(@CurDevice)
 893 01bb 0C00     		ld   	r0,#0
 894 01bd C4F30000 		ld  	r3,dpr:pof(@CurDevice)
 895 01c1 26FFFBD3 		ld  	-5(rr14),r3
 896 01c5 86FFFAD6 		ldw  	rr6,-6(rr14)
 897 01c9 2C03     		ld  	r2,#3
 898 01cb 4F62     		mul  	rr6,r2
 899 01cd 86FFFAD7 		ldw  	-6(rr14),rr6
 900 01d1 7FF60012 		ld  	r3,dpr:pof(@UsbDeviceDesc)(rr6)
 900      D3
 901 01d6 26F00000 		ld  	dpr:pof(@data_size)(rr0),r3
 901      D3
 902              	.LMM84:
 392:../src/usb.c  **** 			data_ptr = (BYTE *) UsbDeviceDesc[ CurDevice].desc ;
 904 01db C4FB0000 		ld  	r11,dpr:pof(@CurDevice)
 905 01df 4FA2     		mul  	rr10,r2
 906 01e1 86FA0013 		ldw  	rr10,dpr:pof(@UsbDeviceDesc+1)(rr10)
 906      DA
 907 01e6 E2FB0000 		ldw  	dpr:pof(@data_ptr),rr10
 908              	.LMM85:
 393:../src/usb.c  **** 			return control_read() ;
 910 01ea D200E2   		call 	@control_read   
 911 01ed 8D0295   		jxt  	.L38
 912              	.L32:
 913              	.LMM86:
 394:../src/usb.c  **** 			break ;
 395:../src/usb.c  **** 		case 2:	/* USB_CONFIGURATION */
 396:../src/usb.c  **** 			data_size[ CurDevice] = UsbConfigDesc[ CurDevice].size ;
 915 01f0 C4F10000 		ld   	r1,dpr:pof(@CurDevice)
 916 01f4 0C00     		ld   	r0,#0
 917 01f6 C4F40000 		ld  	r4,dpr:pof(@CurDevice)
 918 01fa 26FFF9D4 		ld  	-7(rr14),r4
 919 01fe 86FFF8D6 		ldw  	rr6,-8(rr14)
 920 0202 2C03     		ld  	r2,#3
 921 0204 4F62     		mul  	rr6,r2
 922 0206 86FFF8D7 		ldw  	-8(rr14),rr6
 923 020a 7FF60037 		ld  	r3,dpr:pof(@UsbConfigDesc)(rr6)
 923      D3
 924 020f 26F00000 		ld  	dpr:pof(@data_size)(rr0),r3
 924      D3
 925              	.LMM87:
 397:../src/usb.c  **** 			data_ptr = (BYTE *) UsbConfigDesc[ CurDevice].desc ;
 927 0214 C4FD0000 		ld  	r13,dpr:pof(@CurDevice)
 928 0218 4FC2     		mul  	rr12,r2
 929 021a 86FC0038 		ldw  	rr12,dpr:pof(@UsbConfigDesc+1)(rr12)
 929      DC
 930 021f E2FD0000 		ldw  	dpr:pof(@data_ptr),rr12
 931              	.LMM88:
 398:../src/usb.c  **** 			return control_read() ;
 933 0223 D200E2   		call 	@control_read   
 934 0226 8B6D     		jxt  	.L38
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 22


 935              	.L33:
 936              	.LMM89:
 399:../src/usb.c  **** 			break ;
 400:../src/usb.c  **** 		case 3:	/* USB_STRING */
 401:../src/usb.c  **** 			return GetStringDescriptor() ;
 938 0228 D20113   		call 	@GetStringDescriptor   
 939 022b 8B68     		jxt  	.L38
 940              	.L34:
 941              	.LMM90:
 402:../src/usb.c  **** 			break ;
 403:../src/usb.c  **** 		case 0x21:	/* USB_HID (useless for HUB)*/
 404:../src/usb.c  **** 			data_size[ CurDevice] = 9 ;
 943 022d C4F10000 		ld   	r1,dpr:pof(@CurDevice)
 944 0231 0C00     		ld   	r0,#0
 945 0233 4C09     		ld  	r4,#9
 946 0235 26F00000 		ld  	dpr:pof(@data_size)(rr0),r4
 946      D4
 947              	.LMM91:
 405:../src/usb.c  **** 			data_ptr = (BYTE *) &UsbConfigDesc[ CurDevice].desc[ 18] ;
 949 023a 0C03     		ld  	r0,#3
 950 023c C4F60000 		ld  	r6,dpr:pof(@CurDevice)
 951 0240 26FFFFD6 		ld  	-1(rr14),r6
 952 0244 86FFFED2 		ldw  	rr2,-2(rr14)
 953 0248 4F20     		mul  	rr2,r0
 954 024a 86FFFED3 		ldw  	-2(rr14),rr2
 955 024e 86F20038 		ldw  	rr6,dpr:pof(@UsbConfigDesc+1)(rr2)
 955      D6
 956 0253 47D70012 		addw 	rr6,#18
 957              	.LMM92:
 406:../src/usb.c  **** 			return control_read() ;
 959 0257 8B31     		jxt  	.L39
 960              	.L35:
 961              	.LMM93:
 407:../src/usb.c  **** 			break ;
 408:../src/usb.c  **** 		case 0x22:	/* USB_REPORT */
 409:../src/usb.c  **** //			data_size = sizeof hid_report_descriptor ;
 410:../src/usb.c  **** //			data_ptr = hid_report_descriptor ;
 411:../src/usb.c  **** //			control_read() ;
 412:../src/usb.c  **** 			data_size[ CurDevice] = UsbReportDesc[ CurDevice].size ;
 963 0259 C4F10000 		ld   	r1,dpr:pof(@CurDevice)
 964 025d 0C00     		ld   	r0,#0
 965 025f C4F90000 		ld  	r9,dpr:pof(@CurDevice)
 966 0263 7C03     		ld  	r7,#3
 967 0265 4F87     		mul  	rr8,r7
 968 0267 7FF8004C 		ld  	r8,dpr:pof(@UsbReportDesc)(rr8)
 968      D8
 969 026c 26F00000 		ld  	dpr:pof(@data_size)(rr0),r8
 969      D8
 970              	.LMM94:
 413:../src/usb.c  **** 			data_ptr = (BYTE *) UsbReportDesc[ CurDevice].desc ;
 972 0271 C4F20000 		ld  	r2,dpr:pof(@CurDevice)
 973 0275 26FFFDD2 		ld  	-3(rr14),r2
 974 0279 86FFFCD6 		ldw  	rr6,-4(rr14)
 975 027d 2C03     		ld  	r2,#3
 976 027f 4F62     		mul  	rr6,r2
 977 0281 86FFFCD7 		ldw  	-4(rr14),rr6
 978 0285 86F6004D 		ldw  	rr6,dpr:pof(@UsbReportDesc+1)(rr6)
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001896.s 			page 23


 978      D6
 979              	.L39:
 980 028a E2F70000 		ldw  	dpr:pof(@data_ptr),rr6
 981              	.LMM95:
 414:../src/usb.c  **** 			return control_read() ;
 983 028e D200E2   		call 	@control_read   
 984 0291 8B02     		jxt  	.L38
 985              	.L36:
 986              	.LMM96:
 415:../src/usb.c  **** 			break ;
 416:../src/usb.c  **** //		case 0x23: /* USB_PHYSICAL */
 417:../src/usb.c  **** //			send_stall() ;
 418:../src/usb.c  **** //			break ;
 419:../src/usb.c  **** 		default:
 420:../src/usb.c  **** 			return TX_STALL ;
 988 0293 1C01     		ld  	r1,#1
 989              	.L38:

⌨️ 快捷键说明

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