Serial Bus Design for MPC860 Processor under VxWorks with Modern Comparison
This article presents a detailed serial bus design for the MPC860 (PowerPC860) processor under VxWorks, including native SCC/SMC channels, multi-port expansion using the TI 16C554 UART, and a robust hardware watchdog solution. A comparison with modern Power Architecture designs (QorIQ) is included to highlight evolution in embedded serial communication systems.
🛠MPC860 Communication Capabilities #
The MPC860 integrates a Communication Processor Module (CPM) with:
- 2 SMC channels — supporting UART, SPI, I2C
- 4 SCC channels — high-performance UART/HDLC/Ethernet support
- Built-in Baud Rate Generators
- Dual-Port RAM (DPRAM) for buffer management
- CPM-driven interrupt handling
These features enable scalable and flexible serial communication for aerospace, industrial, and telecom applications.
âš¡ Watchdog Circuit Design for Boot Monitoring #
The MPC860 boot under VxWorks typically takes ~4 seconds, exceeding the 1.6s default of common watchdogs like MAX691. A crystal-derived hardware solution ensures reliable monitoring:
- Crystal oscillator generates base clock
- Frequency divider produces ~6s period square wave
- High phase outputs crystal clock to WDI
- Low phase outputs SCC activity signal to WDI
- Watchdog triggers system reset via PRORESET if activity ceases
Programmable Logic Implementation (Verilog):
module DIV_FREQ (
input 5MHZ,
output reg SWITCH_NODE
);
always @(posedge 5MHZ) begin
// Frequency division logic to create ~6s period
end
always @(SWITCH_NODE) begin
if (SWITCH_NODE == 1'b1)
WDI <= 5MHZ; // Crystal clock during high phase
else
WDI <= SCC_ENABLE; // SCC activity signal during low phase
end
endmodule
This approach provides long-term stability without CPU intervention.
🔧 Native SCC/SMC Software Design in VxWorks #
VxWorks BSP and SIO framework provide structured support for MPC860 serial channels.
Key Data Structure: PPC860SCC_CHAN
#
typedef struct ppc860Scc_chan {
SIO_DRV_FUNCS *pDrvFuncs;
void *getTxArg;
void *putRcvArg;
VINT16 int_vec;
VINT16 channelMode;
int baudRate;
int clockRate;
int bgrNum;
SCC_UART_DEV uart;
} PPC860SCC_CHAN;
SCC3 Hardware Initialization Example #
void SerialScc3HwInit(void) {
PPC860SCC_CHAN ppc860SccChan;
ppc860SccChan.clockRate = 40000000; // 40 MHz
ppc860SccChan.bgrNum = 3; // BRG3
ppc860SccChan.uart.txBufBase = (UINT8*)(MPC860_DPRAM_BASE + TX_BUFFER_SCC3);
ppc860SccChan.uart.rxBufBase = (UINT8*)(MPC860_DPRAM_BASE + RX_BUFFER_SCC3);
ppc860SccChan.uart.pSccReg = (SCC_REG*)MPC860_GSMR_L3(...);
ppc860SccDevInit(&ppc860SccChan);
intConnect(INT_VEC_SCC3, (VOIDFUNCPTR)ppc860SccInt, (int)&ppc860SccChan);
sprintf(devName, "%s%d", "/yCo/", 3);
ttyDevCreate(devName, (SIO_CHAN*)&ppc860SccChan, 512, 512);
}
âš™ Multi-Port Expansion with TI 16C554 #
For systems needing more than six serial ports, the TI 16C554 quad UART is used:
- Connected via MPC860 lower data bus (little-endian)
- CS5 as base chip select, address lines A25/A26 for channel decoding
- Interrupts INTA-INTD mapped to IRQ4-IRQ7
Example Initialization (Channel A):
#define 16554A_BASE_ADDR CS5_BASE_ADDRESS + 0x00
void SerialPort_initA(void) {
UCHAR *addr = (UCHAR*)16554A_BASE_ADDR;
*(addr + 3) = 0x0B; // 8N1, odd parity
*(addr + 2) = 0x87; // FIFO enable
*(addr + 3) = 0x8B; // Baudrate 38400
intEnable(4); // Enable IRQ4
}
Other channels follow similar configuration with offset addresses.
📈 Modern Comparison: QorIQ and Advanced Power Architecture #
Modern Power Architecture processors (e.g., NXP QorIQ) provide:
- Integrated multi-UART modules supporting higher speeds and more channels
- Flexible interrupt routing and DMA-based serial transfers
- Native PCIe and Ethernet connectivity reducing reliance on discrete UART expansion
- Hardware watchdogs integrated in SoC for robust boot monitoring
- Software frameworks (Linux RT, VxWorks, or QNX) for rapid serial port configuration
Key Advantages over MPC860 Design:
| Feature | MPC860 + 16C554 | Modern QorIQ / SoC |
|---|---|---|
| UART Channels | 6 native + 4 per TI chip | 8–16 integrated |
| Expansion Complexity | Discrete hardware & IRQ | On-chip DMA & IRQ mux |
| Watchdog Integration | External MAX691 | On-chip, flexible timers |
| Bus Bandwidth | 32-bit local bus | PCIe/Ethernet high-speed |
| Software Initialization | BSP + SIO framework | RTOS drivers & HAL |
This evolution reduces board complexity, improves reliability, and supports higher throughput.
✅ Conclusion #
The MPC860 provides a solid foundation for multi-channel serial communication under VxWorks, enhanced by TI 16C554 expansion and robust hardware watchdogs. Modern Power Architecture platforms like QorIQ integrate many of these functions on-chip, simplifying design while maintaining reliability and scalability in industrial and aerospace embedded systems.
Design principles from MPC860 remain relevant for engineers handling legacy systems or designing robust serial communication frameworks.
Reference: Serial Bus Design for MPC860 Processor under VxWorks with Modern Comparison