You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
496 lines
55 KiB
496 lines
55 KiB
2 weeks ago
|
# 飞腾FT-2000四核 KM02 板描述文档
|
||
|
|
||
|
## 1.简介
|
||
|
FT-2000/4 是一款面向桌面应用的高性能通用4 核处理器。每2 个核构成1个处理器核簇(Cluster),并共享L2 Cache。主要技术特征如下:
|
||
|
|
||
|
- 兼容ARM v8 64 位指令系统,兼容32 位指令
|
||
|
- 支持单精度、双精度浮点运算指令
|
||
|
- 支持ASIMD 处理指令
|
||
|
- L2 Cache:每个Cluster内有2MB,共4MB;FT-2000/4工业级单核版L2Cache 2MB
|
||
|
- L3 Cache:分为8个Bank,共4MB
|
||
|
- 集成2 个DDR4-3200控制器
|
||
|
- 集成34 Lanes PCIe3.0 接口:2 个X16(每个可拆分成2 个X8),2 个X1
|
||
|
- 集成2 个千兆Ethernet(RGMII 接口),支持10/100/1000Mbps 自适应
|
||
|
- 集成1 个SD 卡控制器,兼容SD 2.0 规范
|
||
|
- 集成4 个UART,32 个GPIO,4 个I2C,1 个QSPI,2 个通用SPI,3 个CAN,2 个WDT,16 个外部中断
|
||
|
- 集成温度传感器
|
||
|
- 集成128KB On Chip Memory
|
||
|
|
||
|
## 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)清理整个库用rclean目标,比如:
|
||
|
|
||
|
make CPU=ARMARCH7 TOOL=diab rclean //删除整个UP库
|
||
|
make CPU=ARMARCH7 TOOL=diab //重新编译整个UP库
|
||
|
make CPU=ARMARCH7 TOOL=diab VXBUILD=SMP rclean //删除整个SMP库
|
||
|
make CPU=ARMARCH7 TOOL=diab VXBUILD=SMP //重新编译整个SMP库
|
||
|
|
||
|
|
||
|
### 2.3.图形化编译库
|
||
|
以上命令行编译库的方法,可以用Workbench工具的VxWorks Source Build(Kernel Library) Project菜单命令完全替代,简称VSB工程。
|
||
|
只是VSB工程不会修改系统默认库 <WIND_HOME>\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 ethaddr 98:0e:24:00:11:22
|
||
|
setenv eth1addr 98:0e:24:00:11:23
|
||
|
|
||
|
setenv ipaddr 192.168.3.119
|
||
|
setenv serverip 192.168.3.118
|
||
|
saveenv
|
||
|
|
||
|
#### 3.1.3 下载和启动操作系统镜像
|
||
|
|
||
|
(1)bin格式镜像:
|
||
|
在uboot里执行命令:
|
||
|
|
||
|
tftpboot 0x80100000 vxWorks.bin
|
||
|
bootvx32 0x80100000
|
||
|
即可启动vxWorks系统
|
||
|
|
||
|
(2)ELF格式镜像:
|
||
|
在uboot里执行命令:
|
||
|
|
||
|
tftpboot 0x90100000 vxWorks
|
||
|
bootvx32 0x90100000
|
||
|
即可启动vxWorks系统
|
||
|
|
||
|
(以下命令相同,仅以bin格式为例。用ELF格式时,只需要替换基地址和文件名即可,其他部分相同。)
|
||
|
|
||
|
### 3.2. 通过文件系统加载镜像
|
||
|
#### 3.2.1. USB盘加载
|
||
|
把vxWorks.bin文件提前拷贝到FAT32格式的USB盘中,再把此盘插入参考板的USB口,上电,执行uboot命令:
|
||
|
|
||
|
usb xhci start
|
||
|
fatload usb 0 0x80100000 vxWorks.bin
|
||
|
bootvx32 0x80100000
|
||
|
|
||
|
#### 3.2.2. FAT32硬盘加载
|
||
|
把vxWorks.bin文件提前拷贝到FAT32格式的硬盘中,再把此盘插入参考板的SATA口,上电,执行uboot命令:
|
||
|
|
||
|
fatload scsi 0:1 0x80100000 vxWorks.bin
|
||
|
bootvx32 0x80100000
|
||
|
|
||
|
#### 3.2.3. EXT4硬盘加载
|
||
|
把vxWorks.bin文件提前拷贝到ext4格式的硬盘中,再把此盘插入参考板的SATA口,上电,执行uboot命令:
|
||
|
|
||
|
ext4load scsi 0:1 0x80100000 vxWorks.bin
|
||
|
bootvx32 0x80100000
|
||
|
|
||
|
文件系统加载后,在vxWorks运行时,如果gmac网络不通,则仍然需要在uboot阶段提前设置一个有效合理的MAC地址:
|
||
|
|
||
|
setenv ethaddr 98:0e:24:00:11:22
|
||
|
setenv eth1addr 98:0e:24:00:11:23
|
||
|
|
||
|
### 3.3. 设置板载FLASH自动启动,避免人工干预
|
||
|
|
||
|
此项设置是把vxworks镜像保存到和UBOOT相同的NOR FLASH芯片里。此芯片一般32MB。目前uboot里的flash读写命令,最大支持16MB。
|
||
|
评估uboot固件一般4MB左右。以下命令例子,把前6MB给uboot,从6MB到16MB的空间给VxWorks镜像用。VxWorks是ELF格式的文件。操作命令如下:
|
||
|
|
||
|
tftpboot 0x90100000 vxWorks 网络下载到内存
|
||
|
|
||
|
flashe 0x600000 0xa00000
|
||
|
flashw 0x90100000 0x600000 0xa00000
|
||
|
cmp.b 0x600000 0x90100000 0xa00000
|
||
|
cp.b 0x600000 0x90100000 0xa00000
|
||
|
|
||
|
setenv bootcmd "cp.b 0x600000 0x90100000 0xa00000; bootvx32 0x90100000"
|
||
|
saveenv
|
||
|
然后就可以下电、上电启动,自动引导系统。如果用vxWorks.bin文件,则把0x90100000改成0x80100000即可。
|
||
|
|
||
|
### 3.4. 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[]数组所配的每个实际物理核。
|
||
|
|
||
|
|
||
|
## 4.驱动描述
|
||
|
|
||
|
### 4.1. 参考板支持的硬件接口驱动列表:
|
||
|
|
||
|
|Hardware Interface |Controller | Driver/Component | Status | Component
|
||
|
|-- | -- | -- | -- | --
|
||
|
|UART:0 | PrimeCell PL011 | vxbPrimeCellSio.c | SUPPORTED | DRV_SIO_PRIMECELL
|
||
|
|UART:1 | PrimeCell PL011 | vxbPrimeCellSio.c | SUPPORTED | DRV_SIO_PRIMECELL
|
||
|
|10/100/1000Mb-ETHERNET | FT GAMC | vxbFtGmacEnd.c | SUPPORTED | DRV_VXBEND_FTGMAC
|
||
|
|TIMER | generic timer | vxbArmv7GenTimer.c | SUPPORTED | DRV_ARM_GEN_SYS_TIMER
|
||
|
|TIMER | auxiliary timer | vxbArmv7AuxTimer.c | SUPPORTED | DRV_ARM_GEN_AUX_TIMER
|
||
|
|QSPI | FT QSPI | vxbFtQspi.c | SUPPORTED | DRV_FTQSPI, INCLUDE_SPI_BUS
|
||
|
|SP25FLASH | FT QSPI | vxbSp25SpiFlash.c | SUPPORTED | DRV_SPIFLASH_SP25
|
||
|
|SPI | SM2130 | vxbSm2130SpiDev.c | SUPPORTED | DRV_FTSPI, DRV_SPIDEV_SM2130
|
||
|
|GPIO | FT_GPIO | vxbFtGpio.c | SUPPORTED | DRV_FTGPIO
|
||
|
|littlefs | filesystem | vxbLfsLib.c | SUPPORTED | DRV_FS_LITTLEFS
|
||
|
|
||
|
从飞腾官方网站 [https://www.phytium.com.cn/](https://www.phytium.com.cn/) 可以下载编程手册
|
||
|
<< FT-2000_4软件编程手册.pdf>>, 用户需下载最新版。
|
||
|
|
||
|
|
||
|
### 4.2. 串口配置
|
||
|
2个 PrimeCell UART 串口,默认配置为
|
||
|
|
||
|
Baud Rate : 115200
|
||
|
Data : 8 bit
|
||
|
Parity : None
|
||
|
Stop : 1 bit
|
||
|
Flow Control: None
|
||
|
|
||
|
### 4.3. 网络和MAC地址
|
||
|
网口是集成的 SOC GMACs 10/100/1000 MAC 和 PHY。
|
||
|
MAC地址格式: 98:0e:24:xx:xx:xx. 其中前三个字节 98:0e:24 代表飞腾公司
|
||
|
|
||
|
`gmac0' | - Ethernet
|
||
|
`gmac1' | - Ethernet
|
||
|
|
||
|
vxWorks的ifconfig命令,不带参数时,可以查看网口信息。
|
||
|
配置IP地址时,可以用如下格式:
|
||
|
|
||
|
-> ifconfig "gmac0 192.168.100.100 up"
|
||
|
|
||
|
|
||
|
### 4.4. 块设备文件系统
|
||
|
|
||
|
块设备 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
|
||
|
|
||
|
格式化命令:
|
||
|
|
||
|
dosFsVolFormat ("NameOfTheBlockDevice", 0x20, 0); /@ FAT32 format @/
|
||
|
或者
|
||
|
|
||
|
dosFsVolFormat ("NameOfTheBlockDevice", 0x10, 0); /@ FAT16 format @/
|
||
|
|
||
|
格式化后,可以用文件系统的相关命令,比如
|
||
|
|
||
|
copy ("vxWorks", "NameOfTheBlockDevice/vxWorks");
|
||
|
pwd
|
||
|
cd("/ata0:2")
|
||
|
ls
|
||
|
ll
|
||
|
dosFsShow("NameOfTheBlockDevice", level)
|
||
|
|
||
|
|
||
|
devs 命令可以查看vxWorks系统添加的设备列表。比如:
|
||
|
|
||
|
/tyCo/0
|
||
|
host:
|
||
|
/ata0:1
|
||
|
/bd0
|
||
|
|
||
|
### 4.5. CPU 个数
|
||
|
|
||
|
宏 VX_SMP_NUM_CPUS 的值是SMP启动的核的个数。默认取最大值4,即所有核都启动。
|
||
|
可以在Workbench组件窗口中,修改此宏的值,选择启动的核数。
|
||
|
|
||
|
### 4.6. I2C驱动组件配置及使用方法
|
||
|
基本组件配置:
|
||
|
|
||
|
#define DRV_FTI2C
|
||
|
#define INCLUDE_I2C_BUS
|
||
|
|
||
|
|
||
|
可以在hwconf.c中配置I2C控制器的总线速率以及中断模式。
|
||
|
例如,将I2C控制器0配置为总线速率为400kHz的轮询模式:
|
||
|
|
||
|
/@ hwconf.c @/
|
||
|
...
|
||
|
struct hcfResource i2cDev0Resources[] = {
|
||
|
...
|
||
|
{ "busSpeed", HCF_RES_INT, {(void *)400000}},
|
||
|
{ "polling", HCF_RES_INT, {(void *)TRUE}},
|
||
|
...
|
||
|
};
|
||
|
...
|
||
|
|
||
|
如果访问I2C的RTC设备,比如DS1339器件,则添加组件
|
||
|
|
||
|
#define INCLUDE_TIMER_RTC
|
||
|
#define DRV_I2C_RTC
|
||
|
|
||
|
并且在hwconf.c的I2C设备列表中添加DS1339设备:
|
||
|
|
||
|
/@ hwconf.c @/
|
||
|
...
|
||
|
LOCAL struct i2cDevInputs i2cDev1Input[] = {
|
||
|
/* Name */ /* Addr (7-bit) */ /* flag */
|
||
|
...
|
||
|
#ifdef DRV_I2C_RTC
|
||
|
{ "rtc_ds1339", (0xD0>>1), 0 },
|
||
|
#endif
|
||
|
...
|
||
|
};
|
||
|
...
|
||
|
|
||
|
访问RTC设备的用户接口主要有:
|
||
|
|
||
|
STATUS vxbRtcGet (struct tm * rtcTime); /*读取RTC时间。*/
|
||
|
STATUS vxbRtcSet (struct tm * rtcTime); /*设置RTC时间。*/
|
||
|
|
||
|
(系统中如果存在多个RTC设备,软件会自动选用最合适的一个)。
|
||
|
|
||
|
|
||
|
如果访问I2C的EEPROM设备,比如at24c32器件,则添加组件
|
||
|
|
||
|
# define DRV_I2C_EEPROM
|
||
|
# define INCLUDE_EEPROMDRV
|
||
|
|
||
|
并且在hwconf.c的I2C设备列表中添加at24c32设备:
|
||
|
|
||
|
/@ hwconf.c @/
|
||
|
...
|
||
|
LOCAL struct i2cDevInputs i2cDev1Input[] = {
|
||
|
/* Name */ /* Addr (7-bit) */ /* flag */
|
||
|
...
|
||
|
#ifdef DRV_I2C_EEPROM
|
||
|
{ "eeprom_at24c32", (0x57), I2C_WORDADDR },
|
||
|
#endif
|
||
|
...
|
||
|
};
|
||
|
...
|
||
|
|
||
|
这样就在文件系统里添加了一个eeprom设备,
|
||
|
可以通过devs命令查看到eeprom设备:
|
||
|
|
||
|
-> devs
|
||
|
drv name
|
||
|
...
|
||
|
7 /eeprom/0
|
||
|
...
|
||
|
|
||
|
可以通过标准的文件系统接口open,read,write,close等操作来访问EERROM。
|
||
|
|
||
|
|
||
|
### 4.7. CAN组件配置
|
||
|
基本组件配置:
|
||
|
|
||
|
#define DRV_FTCAN
|
||
|
|
||
|
设置波特率的函数接口为:ftCanSetBitrate(),可以运行时修改波特率。
|
||
|
发包函数接口为ftCanSend(),在参数中设置帧格式的各类参数。
|
||
|
收包是被动且异步的,通过ftCanRecvCallback()挂接回调函数实现。如果不设置,则默认打印shell显示接收信息。
|
||
|
|
||
|
### 4.8. SD卡组件配置
|
||
|
基本组件配置:
|
||
|
|
||
|
#define INCLUDE_FT_SD
|
||
|
#define RV_SDSTORAGE_CARD
|
||
|
|
||
|
仅支持FAT32文件系统 ,devs命令显示的默认设备名称 /sd0:0
|
||
|
|
||
|
### 4.9. QSPI组件配置及使用方法
|
||
|
基本组件配置:
|
||
|
|
||
|
#define DRV_FTQSPI
|
||
|
#define INCLUDE_SPI_BUS
|
||
|
|
||
|
如果访问QSPI的FLASH设备,比如sp25系列器件,则添加组件
|
||
|
|
||
|
#define DRV_SPIFLASH_SP25
|
||
|
|
||
|
并且在hwconf.c的SPI设备列表中添加sp25器件:
|
||
|
|
||
|
/@ hwconf.c @/
|
||
|
...
|
||
|
LOCAL struct vxbSpiDevInfo spiDevTbl[] = {
|
||
|
/* name cs width freq mode */
|
||
|
...
|
||
|
#ifdef DRV_SPIFLASH_SP25
|
||
|
{ SPI_FLASH_DEVICE_NAME, 0, 8, 30000000, 1},
|
||
|
#endif
|
||
|
...
|
||
|
};
|
||
|
...
|
||
|
|
||
|
可以通过TFFS文件系统访问SPIFLASH,具体操作参考下面的"4.10. TFFS组件配置及使用方法"一节
|
||
|
|
||
|
### 4.10. TFFS组件配置及使用方法
|
||
|
若要支持TFFS文件系统,需要包含TFFS及dosFs文件系统组件。
|
||
|
dosFs文件系统相关组件参考上面的“4.4.块设备文件系统”一节;
|
||
|
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"
|
||
|
|
||
|
### 4.11. PC CONSOLE组件配置
|
||
|
基本组件配置:
|
||
|
|
||
|
#define INCLUDE_PC_CONSOLE
|
||
|
#define INCLUDE_USB_GEN2_KEYBOARD_INIT
|
||
|
#define INCLUDE_USB_GEN2_KEYBOARD_SHELL_ATTACH
|
||
|
|
||
|
PC CONSOLE组件可以在显示器屏幕上显示控制台信息,这需要X100套片硬件的支持。控制台需要USB键盘作为输入设备,挂载到vxWorks系统的shell任务上。
|
||
|
|
||
|
### 4.12. GPIO组件配置及使用方法
|
||
|
基本组件配置:
|
||
|
|
||
|
#define DRV_FTGPIO
|
||
|
|
||
|
在hwconf.c的GPIO管脚工作模式列表中设置各个管脚的默认工作模式:
|
||
|
|
||
|
/@ hwconf.c @/
|
||
|
...
|
||
|
/*This table is used to set the default pin mode of portA*/
|
||
|
/* 0:GPIO_MODE_NOT_USED 1:GPIO_MODE_IN
|
||
|
2:GPIO_MODE_OUT 3:GPIO_MODE_INT*/
|
||
|
|
||
|
LOCAL UINT8 gpio0PortAModeTable[] = {
|
||
|
/*portA-pinX: 0 1 2 3 4 5 6 7 */
|
||
|
3, 2, 1, 0, 0, 0, 0, 0
|
||
|
};
|
||
|
...
|
||
|
|
||
|
|
||
|
# 5. 参考资源
|
||
|
|
||
|
ARM Architecture Reference Manual
|
||
|
|
||
|
Wind River Workbench User's Guide
|
||
|
|
||
|
VxWorks Kernel Programmer's Guide
|
||
|
|
||
|
VxWorks Architecture Supplement
|
||
|
|
||
|
FT-2000_4软件编程手册.pdf
|
||
|
|
||
|
# 6. 已知问题列表
|
||
|
## 6.1. CAN ID过滤帧问题
|
||
|
现象:设置ID过滤寄存器之后,一旦收到ID不匹配的帧,将会导致随后第一个ID匹配的帧在硬件FIFO里是内容错误的,需要丢弃此帧。第二个ID匹配帧以后,就能正常接收了。
|
||
|
|
||
|
建议:不设置硬件过滤,所有帧全收,再用软件实现ID过滤功能。
|
||
|
|
||
|
## 6.2. Workbench WDB调试连接SMP内核问题
|
||
|
现象:调试连接失败
|
||
|
PC机上workbench工具在建立连接过程中,默认会检查PC机上程序映像文件,和目标板上正在运行的
|
||
|
文件是否一致。这通过检查文件checksum实现。由于SMP版本映像文件上电启动时,动态修改了代码段内容,
|
||
|
这会导致检查失败,WDB报错退出。(UP版本映像文件无此问题)
|
||
|
|
||
|
建议:为了使用WDB,可以在WDB连接选项中禁用此校验。只要用户保证PC机上WDB使用的映像文件,和目标板上正在运行的程序,是同一个文件,则不影响正常调试。
|
||
|
|
||
|
具体选项为: Target Server Options >> Kernel image >> Bypass checksum comparison 打上勾选中。
|
||
|
|
||
|
如下图红圈所示:
|
||
|
![markdown picture][SMP_BypassCheckSum]
|
||
|
|
||
|
|
||
|
## 6.3. Workbench WDB连接IP地址问题
|
||
|
现象:系统启动后,用ifconfig "网口 IP地址" 命令修改了IP地址后,WDB连接失败。
|
||
|
|
||
|
建议:由于WDB组件初始化时就要获取IP地址,因此不要启动后再修改WDB用的IP地址。
|
||
|
在组件配置窗口里,修改 DEFAULT_BOOT_LINE 字符串里的IP地址,然后编译镜像。
|
||
|
|
||
|
## 6.4. SATA硬盘驱动vxbAhciStorage.c 文件版本问题
|
||
|
在vxWorks 6.9.4.x 的不同小版本之间,vxbAhciStorage.c这个文件的代码差异还是比较多的。最合理的方法是从对应版本的<WIND-HOME>\vxworks-6.9\target\src\hwif\storage\目录下取vxbAhciStorage.c这个文件放到BSP目录下,然后在vxbAhciInstInit2()函数的最后,添加以下几行代码:
|
||
|
|
||
|
LOCAL void vxbAhciInstInit2
|
||
|
(
|
||
|
VXB_DEVICE_ID pDev
|
||
|
)
|
||
|
{
|
||
|
... 省略 ...
|
||
|
if (pDev->busID != VXB_BUSID_PCI)
|
||
|
pAhciDrvCtrl->regHandle = (void *)AHCI_REG_HANDLE_SWAP((ULONG)pAhciDrvCtrl->regHandle);
|
||
|
|
||
|
/*----------------------------- 新加以下几行----------------------------------------*/
|
||
|
/* reset AHCI controller. Here we must reset AHCI as soon as early when using PCI legacy interrupt!
|
||
|
* Because both Net Card and SATA Card use int-pin 1, with the same int line 83 for FT1500 board.
|
||
|
* When Net Card init, there are too many SATA interrupts to boot board if the AHCI not reset here.
|
||
|
*/
|
||
|
|
||
|
(void) CTRL_REG_READ(pAhciDrvCtrl, AHCI_GHC);
|
||
|
CTRL_REG_WRITE(pAhciDrvCtrl, AHCI_GHC, AHCI_GHC_HR);
|
||
|
/*------------------------------------------------------------------------------------*/
|
||
|
|
||
|
}
|
||
|
由于本BSP从6.9.4.8支持,基于此版本的vxbAhciStorage.c 文件作为一个示例。如果用户版本更新,则取更新的版本作为基线。
|
||
|
旧版本识别SATA的速度比较慢一些,新版本更新ahciDrv()函数会加快识别速度。
|
||
|
|
||
|
|
||
|
[SMP_BypassCheckSum]:data:image/png;base64,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
|