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

📄 arcmsr_spec.txt

📁 linux 内核源代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
*********************************************************************************                            ARECA FIRMWARE SPEC*********************************************************************************	Usage of IOP331 adapter**	(All In/Out is in IOP331's view)**	1. Message 0 --> InitThread message and return code**	2. Doorbell is used for RS-232 emulation**		inDoorBell :    bit0 -- data in ready**			(DRIVER DATA WRITE OK)**				bit1 -- data out has been read**			(DRIVER DATA READ OK)**		outDooeBell:    bit0 -- data out ready**			(IOP331 DATA WRITE OK)**				bit1 -- data in has been read**			(IOP331 DATA READ OK)**	3. Index Memory Usage**	offset 0xf00 : for RS232 out (request buffer)**	offset 0xe00 : for RS232 in  (scratch buffer)**	offset 0xa00 : for inbound message code message_rwbuffer**			(driver send to IOP331)**	offset 0xa00 : for outbound message code message_rwbuffer**			(IOP331 send to driver)**	4. RS-232 emulation**		Currently 128 byte buffer is used**			1st uint32_t : Data length (1--124)**			Byte 4--127  : Max 124 bytes of data**	5. PostQ**	All SCSI Command must be sent through postQ:**	(inbound queue port)	Request frame must be 32 bytes aligned**	#bit27--bit31 => flag for post ccb**	#bit0--bit26  => real address (bit27--bit31) of post arcmsr_cdb**		bit31 :**			0 : 256 bytes frame**			1 : 512 bytes frame**		bit30 :**			0 : normal request**			1 : BIOS request**		bit29 : reserved**		bit28 : reserved**		bit27 : reserved**  ---------------------------------------------------------------------------**	(outbount queue port)	Request reply**	#bit27--bit31**		=> flag for reply**	#bit0--bit26**		=> real address (bit27--bit31) of reply arcmsr_cdb**			bit31 : must be 0 (for this type of reply)**			bit30 : reserved for BIOS handshake**			bit29 : reserved**			bit28 :**			0 : no error, ignore AdapStatus/DevStatus/SenseData**			1 : Error, error code in AdapStatus/DevStatus/SenseData**			bit27 : reserved**	6. BIOS request**		All BIOS request is the same with request from PostQ**		Except :**			Request frame is sent from configuration space**		offset: 0x78 : Request Frame (bit30 == 1)**		offset: 0x18 : writeonly to generate**					IRQ to IOP331**		Completion of request:**			(bit30 == 0, bit28==err flag)**	7. Definition of SGL entry (structure)**	8. Message1 Out - Diag Status Code (????)**	9. Message0 message code :**		0x00 : NOP**		0x01 : Get Config**		->offset 0xa00 :for outbound message code message_rwbuffer**		(IOP331 send to driver)**		Signature             0x87974060(4)**		Request len           0x00000200(4)**		numbers of queue      0x00000100(4)**		SDRAM Size            0x00000100(4)-->256 MB**		IDE Channels          0x00000008(4)**		vendor                40 bytes char**		model                  8 bytes char**		FirmVer               16 bytes char**		Device Map            16 bytes char**		FirmwareVersion DWORD <== Added for checking of**						new firmware capability**		0x02 : Set Config**		->offset 0xa00 :for inbound message code message_rwbuffer**		(driver send to IOP331)**		Signature             0x87974063(4)**		UPPER32 of Request Frame  (4)-->Driver Only**		0x03 : Reset (Abort all queued Command)**		0x04 : Stop Background Activity**		0x05 : Flush Cache**		0x06 : Start Background Activity**			(re-start if background is halted)**		0x07 : Check If Host Command Pending**			(Novell May Need This Function)**		0x08 : Set controller time**		->offset 0xa00 : for inbound message code message_rwbuffer**		(driver to IOP331)**		byte 0 : 0xaa <-- signature**		byte 1 : 0x55 <-- signature**		byte 2 : year (04)**		byte 3 : month (1..12)**		byte 4 : date (1..31)**		byte 5 : hour (0..23)**		byte 6 : minute (0..59)**		byte 7 : second (0..59)****************************************************************************************************************************************************************      	RS-232 Interface for Areca Raid Controller**      The low level command interface is exclusive with VT100 terminal**  --------------------------------------------------------------------**      1. Sequence of command execution**  --------------------------------------------------------------------**    	(A) Header : 3 bytes sequence (0x5E, 0x01, 0x61)**    	(B) Command block : variable length of data including length,**    		command code, data and checksum byte**    	(C) Return data : variable length of data**  --------------------------------------------------------------------**    2. Command block**  --------------------------------------------------------------------**    	(A) 1st byte : command block length (low byte)**    	(B) 2nd byte : command block length (high byte)**                note ..command block length shouldn't > 2040 bytes,**    		length excludes these two bytes**    	(C) 3rd byte : command code**    	(D) 4th and following bytes : variable length data bytes**    		depends on command code**    	(E) last byte : checksum byte (sum of 1st byte until last data byte)**  --------------------------------------------------------------------**    3. Command code and associated data**  --------------------------------------------------------------------**    	The following are command code defined in raid controller Command**    	code 0x10--0x1? are used for system level management,**    	no password checking is needed and should be implemented in separate**    	well controlled utility and not for end user access.**    	Command code 0x20--0x?? always check the password,**    	password must be entered to enable these command.**    	enum**    	{**    		GUI_SET_SERIAL=0x10,**    		GUI_SET_VENDOR,**    		GUI_SET_MODEL,**    		GUI_IDENTIFY,**    		GUI_CHECK_PASSWORD,**    		GUI_LOGOUT,**    		GUI_HTTP,**    		GUI_SET_ETHERNET_ADDR,**    		GUI_SET_LOGO,**    		GUI_POLL_EVENT,**    		GUI_GET_EVENT,**    		GUI_GET_HW_MONITOR,**    		//    GUI_QUICK_CREATE=0x20, (function removed)**    		GUI_GET_INFO_R=0x20,**    		GUI_GET_INFO_V,**    		GUI_GET_INFO_P,**    		GUI_GET_INFO_S,**    		GUI_CLEAR_EVENT,**    		GUI_MUTE_BEEPER=0x30,**    		GUI_BEEPER_SETTING,**    		GUI_SET_PASSWORD,**    		GUI_HOST_INTERFACE_MODE,**    		GUI_REBUILD_PRIORITY,**    		GUI_MAX_ATA_MODE,**    		GUI_RESET_CONTROLLER,**    		GUI_COM_PORT_SETTING,**    		GUI_NO_OPERATION,**    		GUI_DHCP_IP,**    		GUI_CREATE_PASS_THROUGH=0x40,**    		GUI_MODIFY_PASS_THROUGH,**    		GUI_DELETE_PASS_THROUGH,**    		GUI_IDENTIFY_DEVICE,**    		GUI_CREATE_RAIDSET=0x50,**    		GUI_DELETE_RAIDSET,**    		GUI_EXPAND_RAIDSET,**    		GUI_ACTIVATE_RAIDSET,**    		GUI_CREATE_HOT_SPARE,**    		GUI_DELETE_HOT_SPARE,**    		GUI_CREATE_VOLUME=0x60,**    		GUI_MODIFY_VOLUME,**    		GUI_DELETE_VOLUME,**    		GUI_START_CHECK_VOLUME,**    		GUI_STOP_CHECK_VOLUME**    	};**    Command description :**    	GUI_SET_SERIAL : Set the controller serial#**    		byte 0,1        : length**    		byte 2          : command code 0x10**    		byte 3          : password length (should be 0x0f)**    		byte 4-0x13     : should be "ArEcATecHnoLogY"**    		byte 0x14--0x23 : Serial number string (must be 16 bytes)**      GUI_SET_VENDOR : Set vendor string for the controller**    		byte 0,1        : length**    		byte 2          : command code 0x11**    		byte 3          : password length (should be 0x08)**    		byte 4-0x13     : should be "ArEcAvAr"**    		byte 0x14--0x3B : vendor string (must be 40 bytes)**      GUI_SET_MODEL : Set the model name of the controller**    		byte 0,1        : length**    		byte 2          : command code 0x12**    		byte 3          : password length (should be 0x08)**    		byte 4-0x13     : should be "ArEcAvAr"**    		byte 0x14--0x1B : model string (must be 8 bytes)**      GUI_IDENTIFY : Identify device**    		byte 0,1        : length**    		byte 2          : command code 0x13**    		                  return "Areca RAID Subsystem "**      GUI_CHECK_PASSWORD : Verify password**    		byte 0,1        : length**    		byte 2          : command code 0x14**    		byte 3          : password length**    		byte 4-0x??     : user password to be checked**      GUI_LOGOUT : Logout GUI (force password checking on next command)**    		byte 0,1        : length**    		byte 2          : command code 0x15**      GUI_HTTP : HTTP interface (reserved for Http proxy service)(0x16)****      GUI_SET_ETHERNET_ADDR : Set the ethernet MAC address**    		byte 0,1        : length**    		byte 2          : command code 0x17**    		byte 3          : password length (should be 0x08)**    		byte 4-0x13     : should be "ArEcAvAr"**    		byte 0x14--0x19 : Ethernet MAC address (must be 6 bytes)**      GUI_SET_LOGO : Set logo in HTTP**    		byte 0,1        : length**    		byte 2          : command code 0x18**    		byte 3          : Page# (0/1/2/3) (0xff --> clear OEM logo)**    		byte 4/5/6/7    : 0x55/0xaa/0xa5/0x5a**    		byte 8          : TITLE.JPG data (each page must be 2000 bytes)**    		                  note page0 1st 2 byte must be**    					actual length of the JPG file**      GUI_POLL_EVENT : Poll If Event Log Changed**    		byte 0,1        : length**    		byte 2          : command code 0x19**      GUI_GET_EVENT : Read Event**    		byte 0,1        : length**    		byte 2          : command code 0x1a**    		byte 3          : Event Page (0:1st page/1/2/3:last page)**      GUI_GET_HW_MONITOR : Get HW monitor data**    		byte 0,1        : length**    		byte 2 			: command code 0x1b**    		byte 3 			: # of FANs(example 2)**    		byte 4 			: # of Voltage sensor(example 3)**    		byte 5 			: # of temperature sensor(example 2)**    		byte 6 			: # of power**    		byte 7/8        : Fan#0 (RPM)**    		byte 9/10       : Fan#1**    		byte 11/12 		: Voltage#0 original value in *1000**    		byte 13/14 		: Voltage#0 value**    		byte 15/16 		: Voltage#1 org**    		byte 17/18 		: Voltage#1**    		byte 19/20 		: Voltage#2 org**    		byte 21/22 		: Voltage#2**    		byte 23 		: Temp#0**    		byte 24 		: Temp#1**    		byte 25 		: Power indicator (bit0 : power#0,**    						 bit1 : power#1)**    		byte 26 		: UPS indicator**      GUI_QUICK_CREATE : Quick create raid/volume set**    	    byte 0,1        : length**    	    byte 2          : command code 0x20**    	    byte 3/4/5/6    : raw capacity**    	    byte 7 			: raid level**    	    byte 8 			: stripe size**    	    byte 9 			: spare**    	    byte 10/11/12/13: device mask (the devices to create raid/volume)**    		This function is removed, application like**    		to implement quick create function**    	need to use GUI_CREATE_RAIDSET and GUI_CREATE_VOLUMESET function.**      GUI_GET_INFO_R : Get Raid Set Information**    		byte 0,1        : length**    		byte 2          : command code 0x20**    		byte 3          : raidset#**    	typedef struct sGUI_RAIDSET**    	{**    		BYTE grsRaidSetName[16];**    		DWORD grsCapacity;**    		DWORD grsCapacityX;**    		DWORD grsFailMask;**    		BYTE grsDevArray[32];**    		BYTE grsMemberDevices;**    		BYTE grsNewMemberDevices;**    		BYTE grsRaidState;**    		BYTE grsVolumes;**    		BYTE grsVolumeList[16];**    		BYTE grsRes1;**    		BYTE grsRes2;**    		BYTE grsRes3;**    		BYTE grsFreeSegments;**    		DWORD grsRawStripes[8];**    		DWORD grsRes4;**    		DWORD grsRes5; //     Total to 128 bytes

⌨️ 快捷键说明

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