Skip to main content

Serial Bus Design for MPC860 Processor under VxWorks with Modern Comparison

·657 words·4 mins
VxWorks MPC860 PowerPC SCC SMC 16C554 Watchdog Embedded Systems Serial Communication QorIQ
Table of Contents

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

Related

Building an MVB Monitoring and Early-Warning Terminal with VxWorks and FPGA
·1436 words·7 mins
VxWorks FPGA MVB Rail Transit Train Communication Network Industrial Cybersecurity Embedded Systems PowerPC Real-Time Systems
VxWorks Serial Communication Design and Implementation Guide
·558 words·3 mins
VxWorks Serial Communication Embedded Systems RTOS Device-Drivers UART BSP Real-Time
Build Self-Booting VxWorks Images with Archive Libraries (.a)
·602 words·3 mins
VxWorks RTOS Embedded Systems U-Boot BSP Static Linking Archive Library Tornado PowerPC