基于FPGA的 powerPC 串口扩展

本人与硬件合作完成ppc405ep 串口扩展,主要负责vxWorks串口驱动的工作。

工具 :tornado 2.2(vxWorks内核的编译), UltraEdit(编写代码), BDI3000(bootrom的烧写)


步骤 :

1,   建立开发环境,如下图所示



2,  搞清vxWorks下串口驱动的架构,如下图示


3, 对于串口的工作原理,已经很清楚这里就不在详细说明了。对vxWorks的驱动架构有了认识后,下来就开始进行驱动。vxWorks中对串口的初始化流程如下所示:


sysHwInit()函数会安装一些外围硬件的驱动。具体的串口中,就是调用sysSerialHwInit()函数来初始化具体串口,我们可将扩展串口的驱动加入此函数中


void ExtendUartHwInit
    (
    void
    )
    {

    UINT   clkDivisor;

    /*
     * Disable and clear serial interrupts in the UIC for both UARTs
     */
     intDisable(INT_LVL_EXT_IRQ_0);   //IRQ

    /*
     * intialize ST16C654 device A descriptors (S0)
     */
    ST16C654ChanA.int_vec = dev54AParas.vector;
    ST16C654ChanA.channelMode = 0;
    ST16C654ChanA.lcr =  UARTA_REG(UART_LCR);
    ST16C654ChanA.data =  UARTA_REG(UART_RDR);
    ST16C654ChanA.brdl = UARTA_REG(UART_BRDL);
    ST16C654ChanA.brdh = UARTA_REG(UART_BRDH);
    ST16C654ChanA.ier =  UARTA_REG(UART_IER);
    ST16C654ChanA.iid =  UARTA_REG(UART_IID);
    ST16C654ChanA.mdc =  UARTA_REG(UART_MDC);
    ST16C654ChanA.lst =  UARTA_REG(UART_LST);
    ST16C654ChanA.msr =  UARTA_REG(UART_MSR);

    ST16C654ChanA.outByte = sysOutByte;
    ST16C654ChanA.inByte  = sysInByte;



    clkDivisor = 12;

     ST16C654ChanA.clkFreq = systemInfo.freqPLLOUTA / clkDivisor;


    /*
     * Reset both devices
     */
    evbNs16550HrdInit(&ST16C654ChanA);

    }




评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值