1 Star 0 Fork 8

bitxing / e2000-vxworks-6.9.4

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

飞腾E2000开发板描述文档

1.简介

FT-E2000Q 是面向嵌入式应用的高性能处理器,集成2个FTC664核和2个FTC310核。
主要技术特征如下:

  • 兼容ARM v8 64 位指令系统,兼容32 位指令
  • 支持单精度、双精度浮点运算指令
  • 每个FTC664核包含1MB私有L2 Cache
  • 由两个FTC310核组成的Cluster内含256KB共享的L2 Cache
  • 集成1个DDR4/LPDDR4-2400控制器,支持72bit数据
  • 集成6 Lanes PCIE3.0 接口(1X4+2X1/1X2+4X1/6X1)
  • 集成4个1000M以太网控制器
  • 集成3个USB2.0(OTG)和2个USB3.0接口(兼容2.0)
  • 集成1路I2S接口,支持高清音频播放;2路DisplayPort1.4接口
  • 集成2路SATA3.0控制器
  • 集成2个SD控制器
  • 集成常用低速接口:WDT,DMAC,QSPI,Nand,SPI_M,UART,I2C,CAN, GPIO,LocalBus,Timer等等 详细技术指标与功能特征可以参考《飞腾腾珑E2000Q系列处理器数据手册》。

E2000D 1个cluster有2个cpu,共两核。
主要技术特征如下:

  • 兼容ARM v8 64 位指令系统,兼容32 位指令
  • 支持单精度、双精度浮点运算指令
  • L1有32KB,L2有256KB
  • 集成1个DDR4/LPDDR4-2400控制器,支持36bit数据
  • 集成4 Lanes PCIE3.0 接口(4X1)
  • 集成4个1000M以太网控制器
  • 集成3路USB2.0(OTG)和2路USB3.0(兼容2.0)
  • 集成1路I2S接口,支持高清音频播放;1路DisplayPort1.4接口
  • 集成2路SATA3.0控制器
  • 集成2个SD控制器
  • 集成常用低速接口:WDT,DMAC,QSPI,Nand,SPI_M,UART,I2C,CAN, GPIO,LocalBus,Timer等等 详细技术指标与功能特征可以参考《飞腾腾珑E2000D系列处理器数据手册》。

E2000S 1个cluster有1个cpu,单核结构。
主要技术特征如下:

  • 兼容ARM v8 64 位指令系统,兼容32 位指令
  • 支持单精度、双精度浮点运算指令
  • L1有32KB,L2有256KB
  • 集成1个DDR4/LPDDR4-2133控制器,支持36bit数据
  • 集成2 Lanes PCIE3.0 接口(2X1)
  • 集成3个1000M以太网控制器
  • 集成1路USB2.0(Device)和2路USB2.0(OTG)
  • 集成2路DisplayPort1.4接口
  • 集成1路JPEG Encoder模块
  • 集成1个SD控制器
  • 集成常用低速接口:WDT,PWM,QSPI,SPI_M,UART,I2C,I3C,PMBUS, SMBUS,GPIO,oneWire,ADC,Timer等等 详细技术指标与功能特征可以参考《飞腾腾珑E2000S系列处理器数据手册》。

2.VxWorks编译环境搭建

2.1. 更新源码

把本项目的源码按对应位置复制、替换到VxWorks6.9开发环境。(WIND_HOME代表安装根目录)
这些源码分两部分:BSP和库
BSP的路径是:<WIND_HOME>\vxworks-6.9\target\config<BSP-source>
库的根路径是:<WIND_HOME>\vxworks-6.9\target{src,h}\
如果只更新BSP,可以直接用Workbench编译环境进行开发。
如果库的源文件有任何更新,则先编译库,再用Workbench开发。

2.2. 命令行编译库

库的运行模式有两种,SMP(Symmetrical Multi-Processing)和UP(Uni-Processing),简称多核和单核。
开发者首先确定用多核,还是单核模式,再做具体的步骤。
打开CMD命令窗口,设置开发环境:

cd <WIND_HOME>  
wrenv.exe -p vxworks-6.9  
cd <WIND_HOME>\vxworks-6.9\target\src    

(1)编译SMP库:

make CPU=ARMARCH7 TOOL=diab VXBUILD=SMP  

命令结束后,即完成<WIND_HOME>\vxworks-6.9\target\lib_smp\库目录下的文件更新。
(2)编译UP库:

make CPU=ARMARCH7 TOOL=diab   

命令结束后,即完成<WIND_HOME>\vxworks-6.9\target\lib\库目录下的文件更新。

补充说明:
(1)在src下执行make,是编译整个库,花费时间最长。如果只更新了一个子目录,可以 cd 到子目录里,再执行make命令,缩短编译时间。比如:

cd <WIND_HOME>\vxworks-6.9\target\src\arch\arm   
make CPU=ARMARCH7 TOOL=diab VXBUILD=SMP   

(2)清理某个库用clean目标,清理整个库用rclean目标,比如:

make CPU=ARMARCH7 TOOL=diab rclean  //清理整个UP库    
make CPU=ARMARCH7 TOOL=diab         //重新编译整个UP库    

2.3.图形化编译库

以上命令行编译库的方法,可以用Workbench工具的VxWorks Source Build(Kernel Library) Project菜单命令完全替代,简称VSB工程。
只是VSB工程不会修改系统默认库 \vxworks-6.9\target\lib或lib_smp,而是在VSB工程目录下保存新的库文件。新建VxWorks Image Project(简称VIP工程)时,要基于此VSB。
推荐使用图形化编译。

3.VxWorks运行环境搭建

参考板使用uboot启动vxWorks操作系统。用bin格式的镜像,即默认文件名为vxWorks.bin启动操作系统镜像的方法不止一种,有网络、USB盘、SATA硬盘等方式加载,用户选择方便的一种即可。

3.1. 通过tftp网络加载镜像

Workbench集成开发环境编译后,默认生成 vxWorks 镜像文件,是ELF格式的。可以进一步指定生成vxWorks.bin文件镜像,这里称作bin格式。 一般地,这两种格式,uboot都是可以加载运行的。
加载的过程和方法都是一样的,区别仅仅是内存基地址不同。

(1)对于bin格式,取基地址 0x80100000
(2)对于ELF格式,取基地址 0x90100000

uboot命令行里,0x前缀可以省略。

3.1.1 PC端设置 TFTP 服务器

PC机和参考板通过网口相连。在PC机上启动TFTP服务器,以windows系统为例,直接双击<workbench安装目录>\vxworks-6.9\host\x86-win32\bin\Tftpd32.exe
只需要设置 Current Directory 指向vxWorks.bin(或vxWorks)文件所在的路径即可,无其他设置。

3.1.2 参考板设置uboot环境变量

参考板和PC机通过TTL电平的3线UART串口连接。在PC机上打开终端软件(比如超级终端、TeraTerm等),连接此串口,波特率设置为 115200,其他无需设置。上电,在终端软件中停止uboot的自动启动,在uboot提示符中,输入如下命令:

 setenv ipaddr 192.168.3.119    
 setenv serverip 192.168.3.118    
 saveenv

3.1.3 下载和启动操作系统镜像

(1)bin格式镜像:
在uboot里执行命令:

tftpboot  0x80100000  vxWorks.bin    
go 0x80100000    

即可启动vxWorks系统

(2)ELF格式镜像:
在uboot里执行命令:

tftpboot  0x90100000  vxWorks    
bootelf 0x90100000    

即可启动vxWorks系统

(以下命令相同,仅以bin格式为例。用ELF格式时,只需要替换基地址和文件名即可,其他部分相同。)

3.2. 通过文件系统加载镜像

3.2.1. USB盘加载

把vxWorks.bin文件提前拷贝到FAT32格式的USB盘中,再把此盘插入参考板的USB口,上电,执行uboot命令:

   usb start
   fatload usb 0 0x80100000 vxWorks.bin
   go 0x80100000

3.2.2. FAT32硬盘加载

把vxWorks.bin文件提前拷贝到FAT32格式的硬盘中,再把此盘插入参考板的SATA口,上电,执行uboot命令:

   fatload scsi 0:1 0x80100000 vxWorks.bin
   go 0x80100000

3.2.3. EXT4硬盘加载

把vxWorks.bin文件提前拷贝到ext4格式的硬盘中,再把此盘插入参考板的SATA口,上电,执行uboot命令:

   ext4load scsi 0:1 0x80100000 vxWorks.bin  
   go 0x80100000

3.3. 设置板载MMC卡自动启动,避免人工干预

此项设置是把vxworks镜像保存到板载MMC卡里,通过设置环境变量,使得板卡上电后自动运行操作系统。 比较方便的操作是:利用U盘里的vxWorks.bin文件,先手工启动起来,在vxWorks提示符下,把文件拷贝 到MMC卡。尤其是第一次用MMC时,还需要格式化该卡。演示操作如下:

第一步在UBOOT提示符E2000#下操作:
E2000# usb start
E2000# fatload usb 0 0x80100000 vxWorks.bin
E2000# go 0x80100000    启动vxWorks

第二步在vxWorks提示符->下操作:
-> devs
  3 /mmc0:0         确信能发现mmc设备
  
-> ls "/mmc0:0"     如果成功,就不需要格式化。否则需要先格式化

-> dosFsVolFormat("/mmc0:0")    进行格式化...
-> dosFsShow("/mmc0:0")         显示分区信息。

-> cp "/bd0/vxWorks.bin", "/mmc0:0/vxWorks.bin"  把U盘的镜像文件,拷贝到MMC卡里

第三步重启动板子,再次回到E2000#提示符:
E2000# setenv bootcmd "fatload mmc 0 0x80100000 vxWorks.bin; go 0x80100000"
E2000# saveenv

然后就可以下电、上电启动,自动引导系统,启动到vxWorks shell提示符。

在以上步骤中,如果MMC卡已经格式化为FAT分区,拷贝文件到卡上时,也可以在UBOOT下操作,只是拷贝 文件比较繁琐,需要把文件先拷贝到内存,再用fatwrite命令写入MMC卡。而且UBOOT提示符里,数字无论 是否有0x前缀,都是16进制数据,这个需要注意(fatwrite最后参数用16进制数据)。演示操作如下:

第一步在UBOOT提示符E2000#下把文件拷贝到MMC卡:

E2000# usb start
E2000# fatload usb 0 0x80100000 vxWorks.bin
3845168 bytes read in 103 ms (35.6 MiB/s)  
这里显示文件大小是10进制3845168字节,换算成16进制数:0x3AAC30

E2000# fatwrite mmc 0 0x80100000 vxWorks.bin 0x3AAC30
3845168 bytes written in 536 ms (6.8 MiB/s)

E2000# fatls mmc 0
3845168   vxWorks.bin  显示写入成功

第二步设置环境变量:

E2000# setenv bootcmd "fatload mmc 0 0x80100000 vxWorks.bin; go 0x80100000"
E2000# saveenv

然后就可以下电、上电启动,自动引导系统,启动到vxWorks shell提示符。

3.4. 串口配置

四个 PrimeCell UART 串口,默认配置为

Baud Rate   : 115200
Data        : 8 bit
Parity      : None
Stop        : 1 bit
Flow Control: None

组件配置:

#define DRV_SIO_PRIMECELL
#define INCLUDE_SIO
#define INCLUDE_SIO_UTILS

在shell下可以列出四个串口设备文件名:

 -> devs
  drv name
   1 /tyCo/0
   1 /tyCo/1
   1 /tyCo/2
   1 /tyCo/3

应用程序可以使用文件系统接口控制访问这些设备。
例如 ioctl() 可以设置/获取串口波特率。read()/write()可以收发数据。
在本平台上,/tyCo/1作为系统的控制台,不建议修改配置。其他串口可以任意使用。

3.5. 网络和MAC地址

网口是集成的 SOC XGMACs 10/100/1000/10000 MAC.
网口驱动组件:

#define DRV_VXBEND_FTGEM
#define INCLUDE_GENERICPHY

由于芯片集成四个网口,而最终产品不一定全用,需要在config.h里,根据实际硬件重新配置如下几个宏定义:
# define CONFIG_FT_GEM0
# undef CONFIG_FT_GEM1
# undef CONFIG_FT_GEM2
# undef CONFIG_FT_GEM3

需要的网口,用 #define; 不需要的,用 #undef。 由于网口的MDIO总线访问管脚存在多功能复用,一般的,这是由固件自动解复用,到vxWorks系统运行时,已经可用。

如果需要ifconfig, ping 命令,则需要添加组件:

#define INCLUDE_IFCONFIG
#define INCLUDE_PING

网口名字:gem+数字序号

网口MAC地址的获取,优先从寄存器里取值(通常是固件对网口初始化的设置而遗留下来)。
如果发现该值为全00或全FF,认为无效,会设置网口驱动软件默认值00:00:3e:02:02:38。
所有网口的MAC地址不能重复,否则会导致网络不通。

vxWorks的ifconfig命令,不带参数时,可以查看网口信息。
配置IP地址时,可以用如下格式:

 -> ifconfig "gem0 192.168.100.100 up"

网口应用编程,遵循socket标准。可以参考vxWorks安装自带目录com.windriver.ide.doc.wr_net_stack_6.9里的手册。

3.6. CPU 个数

宏 VX_SMP_NUM_CPUS 的值是SMP启动的核的个数。
E2000Q默认取最大值4,E2000D默认取最大值2,E2000S只能取1。
可以在Workbench组件窗口中,修改此宏的值,选择启动的核数。

3.7. CPU ID映射

对于UP版本,只在一个核上运行操作系统,不涉及CPU ID映射。 只有SMP版本时,才需要映射。在sysLib.c里,使用数组cpuIndexMap[]进行物理ID号和逻辑ID号的转换。 物理ID号取自MPIDR(Multiprocessor Affinity Register)寄存器的低24位。 cpuIndexMap[0] 必须 为操作系统启动核(主核)的MPIDR,各个从核的物理ID依次填入cpuIndexMap[]数组后续项。该数组索引 就是逻辑ID。上层函数usrSmpInit唤醒每个逻辑核,就对应cpuIndexMap[]数组所配的每个实际物理核。

3.8. 块设备文件系统

块设备 SD/USB/SATA 等设备,一般需要加载文件系统。
VxWorks 支持两种文件系统 dosFs 和 HRFS. 配置dosFs时,可能需要以下常用组件:

#define INCLUDE_DOSFS
#define INCLUDE_DOSFS_MAIN
#define INCLUDE_DOSFS_CHKDSK
#define INCLUDE_DOSFS_FMT
#define INCLUDE_DOSFS_FAT
#define INCLUDE_DOSFS_SHOW
#define INCLUDE_DOSFS_DIR_VFAT
#define INCLUDE_DOSFS_DIR_FIXED
#define INCLUDE_FS_MONITOR
#define INCLUDE_FS_EVENT_UTIL
#define INCLUDE_ERF
#define INCLUDE_XBD
#define INCLUDE_XBD_BLKDEV
#define INCLUDE_XBD_TRANS
#define INCLUDE_DEVICE_MANAGER
#define INCLUDE_XBD_BLK_DEV
#define INCLUDE_XBD_PART_LIB
#define INCLUDE_DISK_UTIL

块设备分区命令:

xbdCreatePartition("NameOfTheBlockDevice", nPart, size1, size2, size3)

举例1:只分1个分区,占整个设备,命令如下:

xbdCreatePartition("/mmc0:0",1,0,0,0)

举例2:分配4个分区,第2,3,4分区容量分别占用10%,15%,20%,剩余容量全部给第1分区,命令如下:

xbdCreatePartition("/mmc0:0",4,10,15,20)

重要! 分区命令会删除块设备上所有数据,要慎重使用!提前备份重要数据!建议只对出厂设备第一次使用时才分区。

格式化命令:

dosFsVolFormat ("NameOfTheBlockDevice", 0x20, 0);    /@ FAT32 format @/

或者

dosFsVolFormat ("NameOfTheBlockDevice", 0x10, 0);    /@ FAT16 format @/

格式化后,可以用文件系统的相关命令,比如

copy ("vxWorks", "NameOfTheBlockDevice/vxWorks");
pwd
cd("/ata0:2")
ls
ll 
rm "/ata0:2/test.bin"
mv "/sd0/dir1","/sd0/dir2"
rename "oldfile","newfile"

如果copy命令省略第2个参数,则用标准输出。这可以在shell里显示文本文件内容,比如

copy "/ata0:2/hello.txt"

devs 命令可以查看vxWorks系统添加的设备列表。比如:

/tyCo/0
host:
/ata0:1
/bd0

3.9. I2C驱动组件配置及使用方法

基本组件配置:

#define DRV_FTI2C
#define INCLUDE_I2C_BUS

如需访问I2C总线上的设备,则需要添加I2C设备驱动。驱动需遵循VxWorks I2C总线驱动架构的标准。
I2C总线驱动架构可以参考vxWorks安装自带目录docs下vxbus_device_driver_developers_guide.pdf手册中的第9章I2C Drivers。
如果访问I2C的RTC设备,比如DS1339器件,则添加组件

#define INCLUDE_TIMER_RTC
#define DRV_I2C_RTC

并且在hwconf.c的I2C设备列表中添加DS1339设备。注意struct i2cDevInputs的deviceAddr用7位I2C设备地址,由硬件决定具体值。

访问RTC设备的用户接口主要有:

STATUS vxbRtcGet (struct tm * rtcTime); /*读取RTC时间。*/
STATUS vxbRtcSet (struct tm * rtcTime); /*设置RTC时间。*/
(系统中如果存在多个RTC设备,软件会自动选用最合适的一个)。   

如果访问I2C的EEPROM设备,则添加组件

#define DRV_I2C_EEPROM
#define INCLUDE_EEPROMDRV

用devs命令,可以查看到EEPROM设备文件名称。用文件系统接口open/read/write/ioctl/close等访问设备。
详细用法可以参考target\src\hwif\util\vxbEeprom.c的文件头注释。

总之,I2C总线驱动,给设备驱动提供统一接口 vxbI2CDevRead(),vxbI2cDevWrite(),vxbI2cDevXfer()。应用程序访问设备时,要根据具体器件的设备驱动,灵活处理。

3.10. GPIO组件配置及使用方法

基本组件配置:

#define DRV_FTGPIO

可以在hwconf.c中的gpioXModeTable表中配置GPIO各个pin的默认工作模式(NOT USE/ IN / OUT /INTERRUPT)。
例如,将GPIO0的pin0设成IN,pin1设成OUT,pin2设成INTERRUPT:

LOCAL UINT32 gpio0ModeTable[] = {
/*pinNo: 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15*/       
        1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  /* 0:GPIO_MODE_NOT_USED  1:GPIO_MODE_IN 
                                                           2:GPIO_MODE_OUT       3:GPIO_MODE_INT*/ 
};

访问GPIO的用户接口主要有:

gpioModeSet():设置各个pin的工作模式
gpioInput():输出各个pin的值
gpioOutput():写入各个pin的值
gpioISRSet():中断模式下设置用户的回调函数

使用方法可参考FT_GPIO_DEBUG宏下面的用户接的例程

3.11. SD/eMMC组件配置及使用方法

基本组件配置:

#define DRV_FTSD
#define DRV_SDSTORAGE_CARD
#define DRV_MMCSTORAGE_CARD
#define INCLUDE_SD_BUS

根据硬件实际情况配置config.h文件中的以下宏:

#define CONFIG_FT_SD0    /*板子上存在sd/mmc-0设备时,define该宏,否则undef该宏*/
#define CONFIG_FT_SD1    /*板子上存在sd/mmc-1设备时,define该宏,否则undef该宏*/

SD/eMMC控制器使用默认配置不通时,可以考虑存在相位偏差问题,此时可以通过打开以下宏, 调整sd clk线上输出延时来解决,延时的具体值根据板子实际情况决定。

#define CONFIG_FT_SD0_CLKPIN_DELAY
#define CONFIG_FT_SD1_CLKPIN_DELAY 

SD/eMMC支持FAT32文件系统 , 需要包含dosFs文件系统组件。
dosFs文件系统相关组件参考上面的”3.8.块设备文件系统“一节

第一次使用DosFs文件系统时,需要格式化DOS分区:
在shell里执行:

dosFsVolFormat ("/mmc0:0", 0x20, 0);    /* eMMC 格式化 */

或者

dosFsVolFormat ("/sd0:1", 0x20, 0);    /* SD 格式化 */

格式化后,可以用文件系统的相关命令,比如 :

 -> cd "/mmc0:0"
 -> fd=open("test.txt",0x202,0777)
 -> write(fd, "hello world\r\n",13)
 -> close (fd)
 -> copy "test.txt"

如果使能INCLUDE_DOSFS_CACHE,那么DOSFS_BLOCKS_PER_DATA_DIR_CACHE_GROUP宏应小于等于SD_MAX_BD_NUM。

3.12. CANFD组件配置及使用方法

基本组件配置:

#define DRV_FTCAN

由于E2000支持CANFD和CAN接口,应用时先确定器件需要什么模式。
在hwconf.c中配置CANFD控制器的工作模式(CAN/CANFD)以及波特率。
例如,将CANFD控制器0配置为CANFD模式,波特率设置为1MHz(仲裁段)+5MHz(数据段),
具体需要修改ftCanDev0Resources[] 数组里的具体值。

访问CANFD的用户接口主要有:

ftCanSetBitrate():设置波特率,可以运行时修改波特率。
ftCanSend():发包函数接口,在参数中设置帧格式的各类参数。
ftCanRecvCallback():收包时,挂接回调函数。如果不设置,则默认在shell里显示接收信息。
ftCanSetIDFilter():设置CAN ID过滤。

3.13. SPI组件配置及使用方法

基本组件配置:

#define DRV_FTSPI
#define INCLUDE_SPI_BUS

如需访问SPI总线上的设备,则需要添加SPI设备驱动。驱动需遵循VxWorks SPI总线驱动架构的标准。
SPI总线驱动架构可以参考vxWorks安装自带目录docs下vxbus_device_driver_developers_guide.pdf手册中的第17章SPI Drivers。

如果访问SPI的FLASH设备,比如gd25lq32es,需要添加如下代码:

① 添加组件

#define DRV_SPIFLASH_SP25

② 在config.h中添加gd25lq32es的SPI_FLASH_DEVICE_NAME、SPI_FLASH_SIZE等参数
③ 在hwconf.c的SPI设备列表spi2DevTbl中添加gd25lq32es器件
④ 在vxbSp25SpiFlash.c的设备列表spiFlashList中添加gd25lq32es器件
列表中的flash名称需与config.h中定义的SPI_FLASH_DEVICE_NAME一致(需要去掉spiFlash_前缀);
列表中的manuId, devId, extId需与芯片读出的id一致(调试时可打开debug宏SPI_FLASH_DBG,打印读出的flash相关id);
⑤ 可以通过TFFS文件系统访问SPIFLASH,具体操作参考下面的"3.15. TFFS组件配置及使用方法"一节

SPI总线驱动,给设备驱动提供接口vxbSpiTransfer(),vxbSpiIoctl()。应用程序访问设备时,要根据具体器件的设备驱动,灵活处理。

3.14. QSPI组件配置及使用方法

基本组件配置:

#define DRV_FTQSPI
#define INCLUDE_SPI_BUS

如需访问SPI总线上的设备,则需要添加SPI设备驱动。驱动需遵循VxWorks SPI总线驱动架构的标准。
SPI总线驱动架构可以参考vxWorks安装自带目录docs下vxbus_device_driver_developers_guide.pdf手册中的第17章SPI Drivers。

如果访问QSPI的FLASH设备,比如gd25lq32es,需要添加如下代码:
① 添加组件

#define DRV_SPIFLASH_SP25

② 在config.h中添加gd25lq32es的QSPI_FLASH_DEVICE_NAME、QSPI_FLASH_SIZE等参数
③ 在hwconf.c的SPI设备列表qspiDevTbl中添加gd25lq32es器件
④ 在vxbSp25SpiFlash.c的设备列表spiFlashList中添加gd25lq32es器件
列表中的flash名称需与config.h中定义的QSPI_FLASH_DEVICE_NAME一致(需要去掉spiFlash_前缀);
列表中的manuId, devId, extId需与芯片读出的id一致(调试时可打开debug宏SPI_FLASH_DBG,读出flash的相关id);
⑤ 可以通过TFFS文件系统访问SPIFLASH,具体操作参考下面的"3.15. TFFS组件配置及使用方法"一节

QSPI总线驱动,给设备驱动提供接口vxbSpiTransfer(),vxbSpiIoctl()。应用程序访问设备时,要根据具体器件的设备驱动,灵活处理。

3.15. TFFS组件配置及使用方法

若要支持TFFS文件系统,需要包含TFFS及dosFs文件系统组件。
dosFs文件系统相关组件参考上面的”3.8.块设备文件系统“一节;
TFFS文件系统相关组件如下:

#define INCLUDE_TFFS
#define INCLUDE_TFFS_MOUNT
#define INCLUDE_TFFS_SHOW
#define INCLUDE_TFFS_STUB_VXBFLASH

第一次使用TFFS文件系统时,需要格式化FLASH,并且格式化DOS分区:
在shell里执行:

 -> sysTffsFormat 0              对FLASH格式化
 -> usrTffsConfig 0,0,"/tffs0"   创建设备
 -> devs                         显示设备/tffs0
 -> dosFsVolFormat("/tffs0",0,0) 分区格式化为DOS

第二次上电以后,无需格式化,只需要创建设备就可以了,在shell里执行创建设备后,就可以用了:

-> usrTffsConfig 0,0,"/tffs0"   

使用方法举例:

-> cd "/tffs0"
-> fd=open("test.txt",0x202,0777)
-> write(fd, "hello world\r\n",13)
-> close (fd)
-> copy "test.txt"

3.16. GDMA组件配置及使用方法

基本组件配置:

#define DRV_FTGDMA

访问GDMA,应遵循VxWorks的DMA驱动架构。
可以参考vxWorks安装自带目录docs下vxbus_device_driver_developers_guide.pdf手册中的
第3.6.7节Direct Memory Access (DMA) 及 第8章Direct Memory Access Drivers。

GDMA控制器支持内存与内存之间的数据搬移,支持直接模式及链表模式。
使用方法可参考GDMA驱动的例程:

testGDmaMemCpy()   /*直接模式的例程*/
testGDmaChain()    /*链表模式的例程*/

3.17. PCIE总线

基本组件配置:

#define DRV_PCIBUS_FT

#define INCLUDE_PCI_BUS
#define INCLUDE_PCI_BUS_AUTOCONF
#define INCLUDE_PCI_BUS_SHOW
#define INCLUDE_PCI_OLD_CONFIG_ROUTINES

该组件支持PCI/PCIE总线访问。初始化不做autoConfig总线扫描,而是直接利用固件扫描的结果。
中断只支持四个legacy interrupt,不支持动态MSI中断。
PCIE总线设备是运行时动态加载驱动的,不需要hwconf.c里配置hcfDeviceList[]设备列表。
设备驱动程序通常使用VendorID,ProductID和硬件匹配。
常用的调试命令有:

pciConfigTopoShow
pciHeaderShow busNo,deviceNo,funcNo
pciDeviceShow busNo
pciFindDeviceShow vendorId,deviceId,index

3.18. SATA硬盘

基本组件配置:

#define INCLUDE_DRV_STORAGE_AHCI

在 shell中,可以用devs查询硬盘设备名字,例如:

 -> devs
  drv name
   3 /ata0:1
   4 /ata0:2
   4 /ata0:3

 -> ls "/ata0:1"
  /ata0:1/uImage-2004

实际显示的设备名字,与硬盘分区有关,而且当前只支持硬盘的DOSFS文件系统。具体参看块设备描述。

3.19. USB总线和设备

USB总线组件配置:

#define INCLUDE_USB_XHCI_HCD_INIT

USB设备种类很多,此处举几个例子:

USB存储设备组件:

#define INCLUDE_USB_GEN2_STORAGE_INIT
USB存储设备的文件系统,和SATA一样只支持DOSFS文件系统。

USB键盘组件:

#define INCLUDE_USB_GEN2_KEYBOARD_INIT

如果USB键盘用作shell输入设备,则继续添加组件:
#define INCLUDE_USB_GEN2_KEYBOARD_SHELL_ATTACH

USB鼠标组件:

#define INCLUDE_USB_GEN2_MOUSE_INIT

3.20. 外设通用定时器

E2000外部设备扩展了38个通用定时器,可以一次性/周期性定时,可以做风扇转速计,还可以做计数器捕获外部事件。
基本组件配置:

#define DRV_TIMER_FT_GPT

具体使用时,在hwconf.c里,配置资源和工作模式,使得和硬件一致。
接口函数有:

一次性定时:

ftGptClkOnceConnect
ftGptClkOnceTimeSet
ftGptClkOnceDisable
ftGptClkOnceEnable

周期性定时:

ftGptClkConnect
ftGptClkDisable
ftGptClkEnable
ftGptClkRateGet
ftGptClkRateSet

转速计:

ftGptTachoOverConnect
ftGptTachoUnderConnect
ftGptTachoOverLimitSet
ftGptTachoUnderLimitSet
ftGptTachoDisable
ftGptTachoEnable
ftGptTachoRPM

捕获事件:

ftGptCaptureConnect
ftGptCaptureCnt

3.21. PWM脉冲宽度调制

基本组件配置:

#define DRV_FTPWM

E2000有8组PWM资源,进行波形脉宽调制。具体配置需要在hwconf.c中,根据实际硬件进行配置。
系统启动后,创建对应的设备名字,devs可以查看,样例:

 -> devs            
  11 /pwm/0              
  11 /pwm/1              
  11 /pwm/7  

通过文件系统标准接口,访问控制PWM设备。参数设置主要通过ioctl调用,传入结构体PWM_USER_CONFIG信息。

4. 参考资源

ARM Architecture Reference Manual

Wind River Workbench User's Guide

VxWorks Kernel Programmer's Guide

VxWorks Architecture Supplement

飞腾腾珑E2000系列处理器软件编程手册

飞腾腾珑E2000Q系列处理器数据手册

飞腾腾珑E2000D系列处理器数据手册

飞腾腾珑E2000S系列处理器数据手册

5. 已知问题列表

5.1. Workbench WDB调试连接SMP内核问题

现象:调试连接失败
PC机上workbench工具在建立连接过程中,默认会检查PC机上程序映像文件,和目标板上正在运行的 文件是否一致。这通过检查文件checksum实现。由于SMP版本映像文件上电启动时,动态修改了代码段内容, 这会导致检查失败,WDB报错退出。(UP版本映像文件无此问题)

建议:为了使用WDB,可以在WDB连接选项中禁用此校验。只要用户保证PC机上WDB使用的映像文件,和目标板上 正在运行的程序,是同一个文件,则不影响正常调试。 具体选项为: Target Server Options >> Kernel image >> Bypass checksum comparison 打上勾选中。 如下图红圈所示: markdown picture

5.2. Workbench WDB连接IP地址问题

现象:系统启动后,用ifconfig "网口 IP地址" 命令修改了IP地址后,WDB连接失败。

建议:由于WDB组件初始化时就要获取IP地址,因此不要启动后再修改WDB用的IP地址。
在组件配置窗口里,修改 DEFAULT_BOOT_LINE 字符串里的IP地址,然后编译镜像。

空文件

简介

本项目是vxWorks6.9.4版本的E2000Q/D/S三种参考板BSP源码。 可依此创建Workbench工程,编译生成vxWorks(或vxWorks.bin)程序镜像文件。详细编译和启动步骤请参考README或者target.ref文件。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/bitxing/e2000-vxworks-6.9.4.git
git@gitee.com:bitxing/e2000-vxworks-6.9.4.git
bitxing
e2000-vxworks-6.9.4
e2000-vxworks-6.9.4
master

搜索帮助