同步操作将从 vxWorks-ft/e2000-vxworks-6.9.4 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
FT-E2000Q 是面向嵌入式应用的高性能处理器,集成2个FTC664核和2个FTC310核。
主要技术特征如下:
E2000D 1个cluster有2个cpu,共两核。
主要技术特征如下:
E2000S 1个cluster有1个cpu,单核结构。
主要技术特征如下:
把本项目的源码按对应位置复制、替换到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开发。
库的运行模式有两种,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库
以上命令行编译库的方法,可以用Workbench工具的VxWorks Source Build(Kernel Library) Project菜单命令完全替代,简称VSB工程。
只是VSB工程不会修改系统默认库 \vxworks-6.9\target\lib或lib_smp,而是在VSB工程目录下保存新的库文件。新建VxWorks Image Project(简称VIP工程)时,要基于此VSB。
推荐使用图形化编译。
参考板使用uboot启动vxWorks操作系统。用bin格式的镜像,即默认文件名为vxWorks.bin启动操作系统镜像的方法不止一种,有网络、USB盘、SATA硬盘等方式加载,用户选择方便的一种即可。
Workbench集成开发环境编译后,默认生成 vxWorks 镜像文件,是ELF格式的。可以进一步指定生成vxWorks.bin文件镜像,这里称作bin格式。 一般地,这两种格式,uboot都是可以加载运行的。
加载的过程和方法都是一样的,区别仅仅是内存基地址不同。
(1)对于bin格式,取基地址 0x80100000
(2)对于ELF格式,取基地址 0x90100000
uboot命令行里,0x前缀可以省略。
PC机和参考板通过网口相连。在PC机上启动TFTP服务器,以windows系统为例,直接双击<workbench安装目录>\vxworks-6.9\host\x86-win32\bin\Tftpd32.exe
只需要设置 Current Directory 指向vxWorks.bin(或vxWorks)文件所在的路径即可,无其他设置。
参考板和PC机通过TTL电平的3线UART串口连接。在PC机上打开终端软件(比如超级终端、TeraTerm等),连接此串口,波特率设置为 115200,其他无需设置。上电,在终端软件中停止uboot的自动启动,在uboot提示符中,输入如下命令:
setenv ipaddr 192.168.3.119
setenv serverip 192.168.3.118
saveenv
(1)bin格式镜像:
在uboot里执行命令:
tftpboot 0x80100000 vxWorks.bin
go 0x80100000
即可启动vxWorks系统
(2)ELF格式镜像:
在uboot里执行命令:
tftpboot 0x90100000 vxWorks
bootelf 0x90100000
即可启动vxWorks系统
(以下命令相同,仅以bin格式为例。用ELF格式时,只需要替换基地址和文件名即可,其他部分相同。)
把vxWorks.bin文件提前拷贝到FAT32格式的USB盘中,再把此盘插入参考板的USB口,上电,执行uboot命令:
usb start
fatload usb 0 0x80100000 vxWorks.bin
go 0x80100000
把vxWorks.bin文件提前拷贝到FAT32格式的硬盘中,再把此盘插入参考板的SATA口,上电,执行uboot命令:
fatload scsi 0:1 0x80100000 vxWorks.bin
go 0x80100000
把vxWorks.bin文件提前拷贝到ext4格式的硬盘中,再把此盘插入参考板的SATA口,上电,执行uboot命令:
ext4load scsi 0:1 0x80100000 vxWorks.bin
go 0x80100000
此项设置是把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提示符。
四个 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作为系统的控制台,不建议修改配置。其他串口可以任意使用。
网口是集成的 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里的手册。
宏 VX_SMP_NUM_CPUS 的值是SMP启动的核的个数。
E2000Q默认取最大值4,E2000D默认取最大值2,E2000S只能取1。
可以在Workbench组件窗口中,修改此宏的值,选择启动的核数。
对于UP版本,只在一个核上运行操作系统,不涉及CPU ID映射。 只有SMP版本时,才需要映射。在sysLib.c里,使用数组cpuIndexMap[]进行物理ID号和逻辑ID号的转换。 物理ID号取自MPIDR(Multiprocessor Affinity Register)寄存器的低24位。 cpuIndexMap[0] 必须 为操作系统启动核(主核)的MPIDR,各个从核的物理ID依次填入cpuIndexMap[]数组后续项。该数组索引 就是逻辑ID。上层函数usrSmpInit唤醒每个逻辑核,就对应cpuIndexMap[]数组所配的每个实际物理核。
块设备 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
基本组件配置:
#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()。应用程序访问设备时,要根据具体器件的设备驱动,灵活处理。
基本组件配置:
#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宏下面的用户接的例程
基本组件配置:
#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。
基本组件配置:
#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过滤。
基本组件配置:
#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()。应用程序访问设备时,要根据具体器件的设备驱动,灵活处理。
基本组件配置:
#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()。应用程序访问设备时,要根据具体器件的设备驱动,灵活处理。
若要支持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"
基本组件配置:
#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() /*链表模式的例程*/
基本组件配置:
#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
基本组件配置:
#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文件系统。具体参看块设备描述。
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
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
基本组件配置:
#define DRV_FTPWM
E2000有8组PWM资源,进行波形脉宽调制。具体配置需要在hwconf.c中,根据实际硬件进行配置。
系统启动后,创建对应的设备名字,devs可以查看,样例:
-> devs
11 /pwm/0
11 /pwm/1
11 /pwm/7
通过文件系统标准接口,访问控制PWM设备。参数设置主要通过ioctl调用,传入结构体PWM_USER_CONFIG信息。
ARM Architecture Reference Manual
Wind River Workbench User's Guide
VxWorks Kernel Programmer's Guide
VxWorks Architecture Supplement
飞腾腾珑E2000系列处理器软件编程手册
飞腾腾珑E2000Q系列处理器数据手册
飞腾腾珑E2000D系列处理器数据手册
飞腾腾珑E2000S系列处理器数据手册
现象:调试连接失败
PC机上workbench工具在建立连接过程中,默认会检查PC机上程序映像文件,和目标板上正在运行的
文件是否一致。这通过检查文件checksum实现。由于SMP版本映像文件上电启动时,动态修改了代码段内容,
这会导致检查失败,WDB报错退出。(UP版本映像文件无此问题)
建议:为了使用WDB,可以在WDB连接选项中禁用此校验。只要用户保证PC机上WDB使用的映像文件,和目标板上 正在运行的程序,是同一个文件,则不影响正常调试。 具体选项为: Target Server Options >> Kernel image >> Bypass checksum comparison 打上勾选中。 如下图红圈所示:
现象:系统启动后,用ifconfig "网口 IP地址" 命令修改了IP地址后,WDB连接失败。
建议:由于WDB组件初始化时就要获取IP地址,因此不要启动后再修改WDB用的IP地址。
在组件配置窗口里,修改 DEFAULT_BOOT_LINE 字符串里的IP地址,然后编译镜像。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。