bboyer
623
EZ-USB FX3固件应用最基本的eclipse项目结构
必要文件说明
cyfx_gcc_startup.S
Cypress FX3固件应用程序启动代码,一般是固定的.
.section .text
.code 32
.global jump
jump:
bx R0
.global CyU3PToolChainInit
CyU3PToolChainInit:
# clear the BSS area
__main:
mov R0, #0
ldr R1, =_bss_start
ldr R2, =_bss_end
1: cmp R1, R2
strlo R0, [R1], #4
blo 1b
b main
.global __user_initial_stackheap
__user_initial_stackheap:
# The tool chain is not expected to place the stack.
# No heap is expected to be used by USB 3.0 platform drivers.
# Place them as required by the user code
.if INTER == TRUE
bx lr
.else
mov pc, lr
.endif
.end
# []
cyfxtx.c
这个文件定义了芯片的一些基本的SDK功能: 异常处理和内存的分配功能. 当前文件不可以更改.
代码参考示例代码
makefile
这个文件是用来编译项目用的.懂makefile语法的,可以自行修改
FX3FWROOT=../../..
all:compile
include $(FX3FWROOT)/fw_build/fx3_fw/fx3_build_config.mak
MODULE = cyfxusbdebug
SOURCE= $(MODULE).c \
cyfxusbdscr.c \
cyfxtx.c
ifeq ($(CYFXBUILD),arm)
SOURCE_ASM=cyfx_startup.S
else
SOURCE_ASM=cyfx_gcc_startup.S
endif
C_OBJECT=$(SOURCE:%.c=./%.o)
A_OBJECT=$(SOURCE_ASM:%.S=./%.o)
EXES = $(MODULE).$(EXEEXT)
$(MODULE).$(EXEEXT): $(A_OBJECT) $(C_OBJECT)
$(LINK)
cyfxtx.c:
cp $(FX3FWROOT)/fw_build/fx3_fw/cyfxtx.c .
cyfx_startup.S:
cp $(FX3FWROOT)/fw_build/fx3_fw/cyfx_startup.S .
cyfx_gcc_startup.S:
cp $(FX3FWROOT)/fw_build/fx3_fw/cyfx_gcc_startup.S .
$(C_OBJECT) : %.o : %.c
$(COMPILE)
$(A_OBJECT) : %.o : %.S
$(ASSEMBLE)
clean:
rm -f ./$(MODULE).$(EXEEXT)
rm -f ./$(MODULE).map
rm -f ./*.o
rm -f cyfxtx.c cyfx_startup.S cyfx_gcc_startup.S
compile: $(C_OBJECT) $(A_OBJECT) $(EXES)
上面代码是示例中的一个代码, 大家可以根据自己的项目需求, 自行更改.
makefile.init
这个文件不是必须的. 有时候需要更改命令行终端,才能编译成功. 需要在里面配置.其他的环境配置, 也可以在这里配置.
SHELL=C:\Windows\system32\cmd.exe
上面只配置了shell的执行路径.
必要头文件夹
一般都是讲EZ-USB FX3 SDK的arm gcc相关头文件包含进来,以及fw_lib导入.
项目入口文件
项目入口文件一般就是包含main函数的c文件. 这个文件最基本的代码
- 初始化usb设备
- 如果需要开启引脚, 则需要配置usb矩阵信息(就是配置开启哪些引脚)
- 开启rtos的功能, 因为一般我们都是在RTOS基础上开发固件应用.就是调用(
CyU3PKernelEntry()
)这个函数. - 开启rtos后, 会有自动调用一个入口函数
CyFxApplicationDefine
. 所以我们需要定义这么一个函数. 这个函数没有参数,也没有返回值.
总结
至此, 我们把FX3项目最基本的代码结构, 整理出来. 其他的功能就需要我们去了解这个FX3设备的一些说明文档,来开发不同的功能. 文档主要包含了:
- 当前芯片的数据手册,驱动开发手册
- 固件SDK的开发手册
- 上层应用(普通的软件应用)的开发手册
- GPIF II的说明文档
- 相关的实例代码文档 .............
其他的文档,可以去设备产商官网去查找......
cypress
fx3
usb3.0
固件开发
cyusb3014
发布于: 2022年6月14日