Kurobox Pro Microcomputer Communication Specifications
From NAS-Central Buffalo - The Linkstation Wiki
m (→Temperature Read) |
m |
||
| (5 intermediate revisions not shown) | |||
| Line 1: | Line 1: | ||
| + | {{Articles|KuroboxPro|Hardware}} | ||
=Contents= | =Contents= | ||
__TOC__ | __TOC__ | ||
| Line 532: | Line 533: | ||
==SW Read== | ==SW Read== | ||
===Command=== | ===Command=== | ||
| - | 0x80 First Operand (read only) | + | {| |
| - | 0×36 Second operand | + | |- |
| + | ||0x80 ||First Operand (read only) | ||
| + | |- | ||
| + | ||0×36 ||Second operand | ||
| + | |} | ||
===Data=== | ===Data=== | ||
| - | bit7-bit4 bit4 bit3 bit2 bit1 | + | {|class=wikitable |
| - | 0 1 F_INIT_SW 1 1 Power SW | + | |- |
| - | + | ||bit7-bit4 ||bit4 ||bit3 ||bit2 ||bit1 ||bit0 | |
| - | + | |- | |
| + | ||0 ||1 ||F_INIT_SW ||1 ||1 ||Power SW | ||
| + | |} | ||
| + | |||
If SW or INITSW is pressed, an interrupt occurs. You can research the cause of an | If SW or INITSW is pressed, an interrupt occurs. You can research the cause of an | ||
| - | interrupt by reading the SW. | + | |
| - | Reading this resistor clears the interrupt. | + | <b>interrupt by reading the SW. |
| + | |||
| + | Reading this resistor clears the interrupt. </b> | ||
| + | |||
*If the SW is released at the point when read is started, the value returns to 1. Therefore, | *If the SW is released at the point when read is started, the value returns to 1. Therefore, | ||
measure the pressed time on the CPU to judge. | measure the pressed time on the CPU to judge. | ||
| - | bit4: Always 1 | + | |
| - | bit3: 0 when INIT_SW is pressed | + | {| |
| - | bit2: Always 1 | + | |- |
| - | bit1: Always 1 | + | ||bit4: ||Always 1 |
| - | bit0: Power_SW 0 when Power_SW is pressed | + | |- |
| + | ||bit3: ||0 when INIT_SW is pressed | ||
| + | |- | ||
| + | ||bit2: ||Always 1 | ||
| + | |- | ||
| + | ||bit1: ||Always 1 | ||
| + | |- | ||
| + | ||bit0: ||Power_SW 0 when Power_SW is pressed | ||
| + | |} | ||
| + | |||
==LED Display== | ==LED Display== | ||
===Command=== | ===Command=== | ||
| - | + | ||
| - | Second operand | + | ====First operand==== |
| - | Switching LED control rights: 0×50 | + | {| |
| - | Switching LED on/off: 0×51 | + | |- |
| - | Flash LED: 0×52 | + | ||0×01 ||First operand 0×80 (read) |
| + | |} | ||
| + | |||
| + | |||
| + | ====Second operand==== | ||
| + | * Switching LED control rights: 0×50 | ||
| + | * Switching LED on/off: 0×51 | ||
| + | * Flash LED: 0×52 | ||
| + | |||
===Data=== | ===Data=== | ||
| - | DATA0 | + | ====DATA0==== |
| - | bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 | + | {|class=wikitable |
| - | 0 0 0 0 LINK DIAG INFO Power | + | |- |
| - | DATA1 | + | ||bit7 ||bit6 ||bit5 ||bit4 ||bit3 ||bit2 ||bit1 ||bit0 |
| - | bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 | + | |- |
| - | 0 0 0 0 0 0 0 0 | + | ||0 ||0 ||0 ||0 ||LINK ||DIAG ||INFO ||Power |
| + | |} | ||
| + | |||
| + | ====DATA1==== | ||
| + | {|class=wikitable | ||
| + | |- | ||
| + | ||bit7 ||bit6 ||bit5 ||bit4 ||bit3 ||bit2 ||bit1 ||bit0 | ||
| + | |- | ||
| + | ||0 ||0 ||0 ||0 ||0 ||0 ||0 ||0 | ||
| + | |} | ||
| + | |||
===Data Meaning=== | ===Data Meaning=== | ||
| - | Control Rights Switching | + | ====Control Rights Switching==== |
| - | + | * 0: LED control performed by microcomputer | |
| - | + | * 1: LED control performed by CPU | |
| - | Switching on/off | + | ====Switching on/off==== |
| - | + | * 0: Switch LED off | |
| - | + | * 1: Light LED | |
| - | Flash Switching | + | ====Flash Switching==== |
| - | + | * 0: Do not flash LED | |
| - | + | * 1: Flash LED | |
| + | |||
==LED brightness== | ==LED brightness== | ||
===Command=== | ===Command=== | ||
| - | 0×00 First operand 0×80 read | + | {| |
| - | + | |- | |
| + | ||0×00 || First operand 0×80 read | ||
| + | |- | ||
| + | ||0x3a ||Second operand | ||
| + | |} | ||
| + | |||
===Data=== | ===Data=== | ||
| - | + | {|class=wikitable | |
| - | 0 LED Illumination | + | |- |
| + | ||bit7 ||bit6 ||bit5 ||bit4 ||bit3 ||bit2 ||bit1 ||bit0 | ||
| + | |- | ||
| + | |colspan=4|0 | ||
| + | |colspan=4 |LED Illumination | ||
| + | |} | ||
===Data Meaning=== | ===Data Meaning=== | ||
| - | LED Illumination | + | ====LED Illumination==== |
Setting possible in the 0-0xf range | Setting possible in the 0-0xf range | ||
| - | 0×0= Off | + | * 0×0 = Off |
| - | 0×f = Maximum illumination | + | * 0×f = Maximum illumination |
==HDD Power control== | ==HDD Power control== | ||
===Command=== | ===Command=== | ||
| - | 0×00 First operand 0×80 (read) | + | {| |
| - | 0X3b Second operand | + | |- |
| + | ||0×00 ||First operand 0×80 (read) | ||
| + | ||0X3b ||Second operand | ||
| + | |} | ||
| + | |||
===Data=== | ===Data=== | ||
| - | + | {|class=wikitable | |
| - | + | |- | |
| - | + | ||bit7 ||bit6 ||bit5 ||bit4 ||bit3 ||bit2 ||bit1 ||bit0 | |
| - | + | |- | |
| - | + | | colspan =4| | |
| - | + | ||0 || 0 ||0 ||HDD | |
| - | + | |} | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| + | =ACK/NACK List= | ||
| + | |||
| + | {|class=wikitable | ||
| + | |- | ||
| + | !| HEX | ||
| + | !| mnemonic | ||
| + | |- | ||
| + | || 0x00 || ACK ||Good | ||
| + | |- | ||
| + | || 0xF1 ||OVER_RUN ||UART physical layer error Physical layer buffer over | ||
| + | |- | ||
| + | ||0xF2 || FRAMING_ERR ||UART physical layer error Physical layer frame error | ||
| + | |- | ||
| + | ||0xF3 ||PARITYERROR ||UART physical layer error Physical layer parity error | ||
| + | |- | ||
| + | ||0xF4 ||Invalid_COM ||Command does not exist | ||
| + | |- | ||
| + | ||0xF5 ||Com_len_err|| Command and data payload values do not correspond | ||
| + | |- | ||
| + | ||0xF6 ||RX_BUFF_OVER|| Payload larger than 32 bytes specified. | ||
| + | |- | ||
| + | ||0xF7 ||DATA_PARITY_ERROR|| Data parity is wrong. | ||
| + | |} | ||
=References= | =References= | ||
* [http://www.kurobox.com/downloads/KuroboxPro/Microcomputer%20Communication%20Specifications.pdf Kurobox Pro microprocessor interface specifications] | * [http://www.kurobox.com/downloads/KuroboxPro/Microcomputer%20Communication%20Specifications.pdf Kurobox Pro microprocessor interface specifications] | ||
Latest revision as of 19:25, 29 August 2007
Contents
Functions
Overview of Functions
Communicates with the main CPU via UART. The main functions are shown below.
- Power SW monitoring
- Initialization SW monitoring
- Power control
- Temperature measurement
- Buzzer control
- Watchdog function (However, watchdog function is disabled on u-boot)
- LAN ACT monitoring
- LED display
- Reset sequence generation
- LED Illumination
UART Communication with Main CPU
Transmission System
UART Basic Settings
- Transmission speed: 38400bps
- Data bit: 8bit
- Parity: Even
- Stop bit: 1 bit or more
Communication with Main CPU
- Basic communication is performed by the transmission of commands, data, and parity.
- When switches etc are pressed, a level interrupt occurs. The interrupt is cleared when reporting to the CPU is completed.
- If many frame errors occur, regulate the guard time on the main CPU.
Protocol
Preamble
The receive buffer is completely cleared by sending FF 35 times.
Main CPU -> Microcomputer
Data Payload 0 Bytes
| 1 | Transfer
direction (BIT7) | Data payload (0) |
| 2 | Command | |
| 3 | Parity 0-(byte1+byte2) |
Data Payload n bytes
| 1 | Transfer
direction (BIT7) | Data payload () |
| 2 | Command | |
| 3 | Data 0 | |
| • • | ||
| n-1 | Data n | |
| n | Parity 0 - Σ(byte 1 to byte n-1) |
Microcomputer -> Main CPU
Responses to commands other than the read command (when data does not exist)
| 1 | 0
(BIT7) | Data payload (1) |
| 2 | Sent command | |
| 3 | ACK | |
| 4 | Parity 0-(byte1+byte2+byte3) |
Response to read command
| 1 | 0
(BIT7) | Data payload (N) |
| 2 | Sent command | |
| 3 | Data 1 | |
| n-1 | Data N | |
| n | Parity 0 - Σ(byte 1 to byte n-1) |
Response when communication error occurs
| 1 | 0
(BIT7) | Data payload (1) |
| 2 | Sent command | |
| 3 | NACK | |
| 4 | Parity 0-(byte1+byte2+byte3) |
ACK/NACK List
| HEX | mnemonic | |
|---|---|---|
| 0x00 | ACK | Good |
| 0xF1 | OVER_RUN | UART physical layer error Physical layer buffer over |
| 0xF2 | FRAMING_ERR | UART physical layer error Physical layer frame error |
| 0xF3 | PARITYERROR | UART physical layer error Physical layer parity error |
| 0xF4 | Invalid_COM | Command does not exist |
| 0xF5 | Com_len_err | Command and data payload values do not correspond |
| 0xF6 | RX_BUFF_OVER | Payload larger than 32 bytes specified. |
| 0xF7 | DATA_PARITY_ERROR | Data parity is wrong. |
Write Command
LED Lighting control etc Command Micro- computer CPU DATA0 DATA1 DATAn(MAX31) PARITY Switch to data transfer phase Switch to command phase Command (OPCODE) ACK Command Command 2nd byte PARITY
Read Command
Temperature read by CPU DATA0 DATA1 DATAn(MAX31) PARITY Command (OPCODE) PARITY Command CPU Micro- computer Switch to data transfer phase Switch to command phase
Interrupt + Read Command
SW Micro- computer DATA0 DATA1 DATAn(MAX31) PARITY Interrupt assert Interrupt negate Switch to data transfer phase Switch to command phase Command (OPCODE) PARITY Command CPU
Command
Command Construction
The command is a 2 byte command.
Write (CPU -> Microcomputer)
| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
| 0 | 0 | Length | |||||
| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
| OPCODE | |||||||
Read (Microcomputer -> CPU)
| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
| 1 | 0 | ||||||
| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
| OPCODE | |||||||
Command List
Commands with no data payload
| Command | Command name | Microcomputer operation | |
|---|---|---|---|
| 1Byte | 2Byte | ||
| FF | --- | NOP | Used in preamble |
| 0x00 | 0x02 | BOOT_START | Boot starts, CPU sends this command at the start. If
this command is not received within 10 seconds after reset, power does not go on. This is displayed during boot. |
| 0x00 | 0x03 | BOOT_END | The boot display is completed, and the device
operates normally. If this command is not received within 5 minutes, power goes off. |
| 0x00 | 0x06 | POFF | Power switches off. |
| 0x00 | 0x0C | SHUT_DOWN_WAIT | SHUT DOWN preparations |
| 0x00 | 0x0D | SHUT_DOWN_WAIT_N | Cancel SHUT DOWN preparations |
| 0x00 | 0x0E | REBOOT | REBOOT (system reset) start |
Data Payload 1 Byte Command
| Command | Command name | Microcomputer operation | |
|---|---|---|---|
| 1Byte | 2Byte | ||
| 0x01 | 0x30 | BZ_ON | Buzzer sounds.Buzzer control, with fine selection of
whether to sound for 1 byte of data |
| -------- | |||
| 0x01 | 0x33 | FANSPEED_CTL | FAN speed can be selected.0 Stopped 3 Maximum
Settings above 3 (only enabled for lower 2 bits) |
| 0x80 | |||
| 0x01 | 0x35 | SYSTEM_WDT | Performs clear and settings for system
watchdog. |
| 0x80 | |||
| 0x37 | TEMP | Obtains the temperature.Receivable data is in Centigrade | |
| 0x80 | |||
| 0x38 | FANSPEED | Obtains fan speed informationDouble the number of FAN revolutions in 3
seconds is displayed. rpm= (obtained data) ×10. | |
| 0x80 | |||
| 0x01 | 0x3a | LED_BRIGHT | Adjusts the brightness of the current LED |
| 0x80 | |||
| 0x01 | 0x3b | HDD_POWER | Controls the HDD power supply |
| 0x80 | |||
| 0x3c | MAIN_STATUS | Obtains the STATUS of the microcomputer | |
| 0x80 | |||
Data Payload 2 Byte Command
| Command | Command name | Microcomputer operation | |
|---|---|---|---|
| 1Byte | 2Byte | ||
| 0x02 | 0x50 | LED_CPU_MCON | Switches LED between main CPU controland microcomputer control. |
| 0x80 | |||
| 0x02 | 0x51 | LED_ON_OFF | Controls whether the LED is on or off |
| 0x80 | |||
| 0x02 | 0x52 | LED_BLINK | Selects the LED for LED flashing display |
| 0x80 | |||
| 0x02 | 0x53 | BZ_FREQ | Buzzer frequency settings |
| 0x80 | |||
| 0x02 | 0x54 | LED_PATTERN | Controls LED flashing |
| 0x80 | |||
Buzzer ON/OFF
Command
| 0×01 | First operand read 0×80 |
| 0×30 | Second operand |
Data
| 0×00 | Stop the sound |
| 0×01 | [Pi-po] |
| 0×02 | [Pi] |
| 0×03 | Continuous sound [Piiiii-] |
| 0×04 | Sounds every 0.3 seconds |
| 0×10 | Repeats sounding for 0.5 seconds then stopping for 0.3 seconds. |
| 0×20 | [Pi-po-pa-po] |
Buzzer pitch
Command
| 0×02 | First operand setting |
| 0×80 | First operand reading of settings. |
| 0×53 | Second operand |
Data 0
Frequency settings lower order
Data 1
Frequency settings upper order
Relationship between sound pitch and frequency
| A | A# | B | C | C# | D | D# | E | F | F# | G | G# |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 55 | 58 | 62 | 65 | 69 | 73 | 78 | 82 | 87 | 92 | 98 | 104 |
| 110 | 117 | 123 | 131 | 139 | 147 | 156 | 165 | 175 | 185 | 196 | 208 |
| 220 | 233 | 247 | 262 | 277 | 294 | 311 | 330 | 349 | 370 | 392 | 415 |
| 440 | 466 | 494 | 523 | 554 | 587 | 622 | 659 | 698 | 740 | 784 | 831 |
| 880 | 932 | 988 | 1047 | 1109 | 1175 | 1245 | 1319 | 1397 | 1480 | 1568 | 1661 |
| 1760 | 1865 | 1976 | 2093 | 2217 | 2349 | 2489 | 2637 | 2794 | 2960 | 3136 | 3322 |
Relationship between values set on microcomputer and sound pitch
| A | A# | B | C | C# | D | D# | E | F | F# | G | G# |
|---|---|---|---|---|---|---|---|---|---|---|---|
| FC04 | F062 | E273 | D60A | C852 | BE8C | B399 | A9D6 | 9F70 | 963D | ||
| 8E0B | 858C | 7F08 | 7746 | 7068 | 6A4A | 6429 | 5EB2 | 5949 | 5475 | 4FB8 | 4B1E |
| 4705 | 430F | 3F42 | 3BA3 | 3868 | 3525 | 323D | 2F59 | 2CC5 | 2A3A | 27DC | 25A6 |
| 2382 | 2187 | 1FA1 | 1DE0 | 1C34 | 1A9E | 191E | 17B5 | 1662 | 151D | 13EE | 12CD |
| 11C1 | 10C3 | 0FD0 | 0EEC | 0E16 | 0D4C | 0C8C | 0BD8 | 0B2F | 0A8E | 09F7 | 0968 |
| 08E0 | 0860 | 07E8 | 0777 | 070C | 06A6 | 0647 | 05EC | 0597 | 0547 | 04FB | 04B4 |
| 3F4 | |||||||||||
| 1FA | |||||||||||
| FD |
System Watchdog
Command
| 0×01 | First operand read 0×80 when setting |
| 0×35 | Second operand |
Data
Set the time until the power goes OFF for forced OFF. You can set up to 255 seconds.
However, setting to 0 will cause the system watchdog to stop and not operate.
If read is performed, the time for the watchdog to operate is displayed.
0×FF – (time to shutdown) = Setting value
Temperature Read
Command
| 0×80 | First Operand (read only) |
| 0×37 | Second operand |
Data
The temperature on the board can be read.
The read data is signed char.
The data is from -55°C to 125°C.
SW Read
Command
| 0x80 | First Operand (read only) |
| 0×36 | Second operand |
Data
| bit7-bit4 | bit4 | bit3 | bit2 | bit1 | bit0 |
| 0 | 1 | F_INIT_SW | 1 | 1 | Power SW |
If SW or INITSW is pressed, an interrupt occurs. You can research the cause of an
interrupt by reading the SW.
Reading this resistor clears the interrupt.
- If the SW is released at the point when read is started, the value returns to 1. Therefore,
measure the pressed time on the CPU to judge.
| bit4: | Always 1 |
| bit3: | 0 when INIT_SW is pressed |
| bit2: | Always 1 |
| bit1: | Always 1 |
| bit0: | Power_SW 0 when Power_SW is pressed |
LED Display
Command
First operand
| 0×01 | First operand 0×80 (read) |
Second operand
- Switching LED control rights: 0×50
- Switching LED on/off: 0×51
- Flash LED: 0×52
Data
DATA0
| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
| 0 | 0 | 0 | 0 | LINK | DIAG | INFO | Power |
DATA1
| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Data Meaning
Control Rights Switching
- 0: LED control performed by microcomputer
- 1: LED control performed by CPU
Switching on/off
- 0: Switch LED off
- 1: Light LED
Flash Switching
- 0: Do not flash LED
- 1: Flash LED
LED brightness
Command
| 0×00 | First operand 0×80 read |
| 0x3a | Second operand |
Data
| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
| 0 | LED Illumination | ||||||
Data Meaning
LED Illumination
Setting possible in the 0-0xf range
- 0×0 = Off
- 0×f = Maximum illumination
HDD Power control
Command
| 0×00 | First operand 0×80 (read) | 0X3b | Second operand |
Data
| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
| 0 | 0 | 0 | HDD | ||||
ACK/NACK List
| HEX | mnemonic | |
|---|---|---|
| 0x00 | ACK | Good |
| 0xF1 | OVER_RUN | UART physical layer error Physical layer buffer over |
| 0xF2 | FRAMING_ERR | UART physical layer error Physical layer frame error |
| 0xF3 | PARITYERROR | UART physical layer error Physical layer parity error |
| 0xF4 | Invalid_COM | Command does not exist |
| 0xF5 | Com_len_err | Command and data payload values do not correspond |
| 0xF6 | RX_BUFF_OVER | Payload larger than 32 bytes specified. |
| 0xF7 | DATA_PARITY_ERROR | Data parity is wrong. |

