VxWorks 6.9 BSP 移植:正点原子领航者7020串口/网口/时钟3处关键配置修改
2026/7/10 6:06:31 网站建设 项目流程

VxWorks 6.9 BSP 移植:正点原子领航者7020关键硬件适配实战

1. 开发环境与BSP基础配置

在开始VxWorks 6.9 BSP移植前,需要确保开发环境正确搭建。正点原子领航者7020开发板基于Xilinx Zynq-7020 SoC,其双核ARM Cortex-A9处理器与VxWorks 6.9有良好的兼容性。以下是环境准备要点:

  • 工具链版本

    • Wind River Workbench 3.3
    • Xilinx Vivado 2018.3(匹配领航者7020的硬件设计)
    • VxWorks 6.9 BSP开发包
  • 硬件连接检查

    • 确保开发板通过USB转串口连接至主机
    • 网线连接至开发板ENET0接口
    • SD卡已格式化为FAT32文件系统

创建基础BSP包的步骤如下:

# 进入VxWorks安装目录 cd /path/to/vxworks-6.9/target/config # 复制参考BSP模板 cp -r xlnx_zynq7k xlnx_zynq7020

2. 串口配置修改

领航者7020开发板的默认调试串口为UART0,而Xilinx官方BSP默认使用UART1。需要修改以下文件中的相关定义:

hwconf.c关键修改点

// 中断向量定义修改 { INT_VEC_UART1, 120 } → { INT_VEC_UART0, 120 } // 设备资源表修改 { "zynqSioDev", 0, VXB_BUSID_PLB, 0, zynqSioDev1Num, zynqSioDev1Resources } → { "zynqSioDev", 0, VXB_BUSID_PLB, 0, zynqSioDev0Num, zynqSioDev0Resources }

时钟配置同步更新(在xlnx_zynq7k.h中):

#define ZYNQ7K_UART_CLK (100000000) /* 匹配领航者7020的UART时钟频率 */

注意:修改后需重新编译BSP和bootloader,通过串口终端验证输出是否正常。

3. 网络PHY地址配置

领航者7020开发板使用的PHY芯片地址为1,与Xilinx官方开发板不同。这是导致网络不通的常见原因,需重点修改:

hwconf.c中的Gem控制器配置

LOCAL struct hcfResource zynqGemDevResources[] = { { "regBase", HCF_RES_INT, {(void *)ZYNQ7K_GEM0_BASE} }, { "phyAddr", HCF_RES_INT, {(void *)1} }, // 原值通常为0 ... };

bootline参数同步调整(config.h中):

#define DEFAULT_BOOT_LINE \ "gem(0,0)host:vxWorks h=192.168.1.119 e=192.168.1.142:fffffe00 \ g=192.168.155.1 u=z7 pw=z7 f=0x0 tn=xlnx_zynq7k"

参数说明表:

参数说明示例值
hTFTP服务器IP192.168.1.119
e开发板IP及MAC192.168.1.142:fffffe00
g网关IP192.168.155.1
u/pwFTP登录凭证z7/z7

4. 外设时钟系统适配

领航者7020开发板的时钟树配置需要通过Vivado工程确认。在xlnx_zynq7k.h中更新以下时钟定义:

/* 时钟配置对照表 */ #define ZYNQ7K_OSCCLK0 (25000000) /* 系统基准时钟25MHz */ #define ZYNQ7K_ETHERNET_CLK (125000000) /* 以太网时钟125MHz */ #define ZYNQ7K_UART_CLK (100000000) /* UART时钟100MHz */ #define ZYNQ7K_SDHC_CLK (100000000) /* SD卡控制器时钟 */

关键验证步骤:

  1. 在Vivado Block Design中确认时钟配置
  2. 导出硬件描述文件至SDK
  3. 比对时钟生成模块的输出频率
  4. 更新BSP中的宏定义

5. 存储设备启动选项

根据启动介质的不同,需要配置对应的宏定义:

SD卡启动配置(config.h中):

#define INCLUDE_BOOT_FILESYSTEMS #define DRV_STORAGE_SDHC #define INCLUDE_DOSFS // 启用FAT文件系统支持 #define INCLUDE_DOSFS_FAT // FAT32支持

QSPI Flash启动配置

#define INCLUDE_FLASH // 启用Flash驱动 #define INCLUDE_SST25VF016B // 匹配领航者板载Flash型号

存储设备性能对比:

存储类型读取速度写入速度典型用途
SDHC20MB/s15MB/s内核映像
QSPI5MB/s0.5MB/sBootloader
NAND30MB/s25MB/s数据存储

6. 中断控制器配置优化

Zynq-7020的GIC中断控制器需要针对VxWorks进行特定优化:

// hwconf.c中的中断优先级配置 LOCAL const struct intrCtlrPriority gicPriority[] = { { INT_VEC_UART0, 120 }, // 串口中断优先级 { INT_VEC_GEM0, 110 }, // 以太网中断优先级 { INT_VEC_SDIO, 100 } // SD卡中断优先级 }; // 中断触发类型配置 LOCAL const struct intrCtlrTrigger gicTrigger[] = { { INT_VEC_UART0, VXB_INTR_TRIG_LEVEL }, { INT_VEC_GEM0, VXB_INTR_TRIG_EDGE } };

提示:中断优先级数值越小优先级越高,建议将关键外设(如网络)设置为较高优先级

7. 编译与调试技巧

完成BSP修改后,通过Workbench进行编译时需要特别注意:

  1. bootloader编译选项

    CFLAGS += -DCPU=CORTEX_A9 -DTOOL_FAMILY=gnu -DTOOL=gnu
  2. 内核映像生成命令

    vxprj build -project xlnx_zynq7020 -bootrom
  3. 常见问题排查

    • 若串口无输出:检查UART0引脚复用配置
    • 网络不通:使用示波器检测PHY芯片的MDIO信号
    • 启动失败:确认BOOT.bin文件结构正确

调试工具推荐组合:

  • J-Link调试器(用于底层调试)
  • Wind River System Viewer(实时系统状态监控)
  • Tera Term(串口终端日志捕获)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询