added dcd_dma_descriptor_t typdef

reorganize test project, multiple test projects each is specifically for an MCU
This commit is contained in:
hathach 2013-06-05 11:23:41 +07:00
parent 6fb34f0e7a
commit f69fefefa9
45 changed files with 190 additions and 89 deletions

171
.cproject
View File

@ -101,61 +101,6 @@
</infoList>
&lt;/TargetConfig&gt;</projectStorage>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
<buildTargets>
<target name="clean" path="tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>clean</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="release" path="tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>release</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test" path="tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildTarget>test:all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test delta" path="tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildTarget>test:delta</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="clobber" path="tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildTarget>clobber</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test verbose" path="tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildTarget>verbosity[4] test:all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test verbose delta" path="tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildTarget>verbosity[4] test:delta</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
</buildTargets>
</storageModule>
<storageModule moduleId="refreshScope" versionNumber="1">
<resource resourceType="PROJECT" workspacePath="/tinyusb"/>
</storageModule>
@ -418,4 +363,120 @@
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
<buildTargets>
<target name="clean" path="tests/test" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>clean</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="clobber" path="tests/test" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>clobber</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="release" path="tests/test" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>release</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test" path="tests/test" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>test:all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test delta" path="tests/test" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>test:delta</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test verbose" path="tests/test" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>verbosity[4] test:all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test verbose delta" path="tests/test" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>verbosity[4] test:delta</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="clean" path="tests/lpc175x_6x" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>clean</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="clobber" path="tests/lpc175x_6x" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>clobber</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="release" path="tests/lpc175x_6x" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>release</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test" path="tests/lpc175x_6x" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>test:all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test delta" path="tests/lpc175x_6x" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>test:delta</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test verbose" path="tests/lpc175x_6x" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>verbosity[4] test:all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="test verbose delta" path="tests/lpc175x_6x" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>rake.bat</buildCommand>
<buildArguments/>
<buildTarget>verbosity[4] test:delta</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
</buildTargets>
</storageModule>
</cproject>

View File

@ -1,4 +1,4 @@
language: c
compiler:
- gcc
script: cd tests/ && mkdir build && rake test:all
script: cd tests/test && rake test:all && cd ../lpc175x_6x && rake test:all

View File

@ -0,0 +1 @@
just a build folder

View File

@ -69,6 +69,26 @@
#define TEST_ASSERT_STATUS( actual )\
TEST_ASSERT_EQUAL( TUSB_ERROR_NONE, (actual) )
// log2_of a value is equivalent to its highest set bit's position
#define BITFIELD_OFFSET_OF_MEMBER(struct_type, member, bitfield_member) \
({\
uint32_t value=0;\
struct_type str;\
memclr_((void*)&str, sizeof(struct_type));\
str.member.bitfield_member = 1;\
memcpy(&value, (void*)&str.member, sizeof(str.member));\
log2_of( value );\
})
#define BITFIELD_OFFSET_OF_UINT32(struct_type, offset, bitfield_member) \
({\
struct_type str;\
memclr_(&str, sizeof(struct_type));\
str.bitfield_member = 1;\
log2_of( ((uint32_t*) &str)[offset] );\
})
#ifdef __cplusplus
}
#endif

View File

@ -0,0 +1 @@
just a build folder

View File

@ -26,17 +26,16 @@
:paths:
:test:
- +:test/**
- -:test/support
:source:
- ../tinyusb/**
- +:../demos/bsp/lpc43xx/**
- +:../demos/device/keyboard/*
- -:../demos/
- ../vendor/freertos/freertos/Source/*
- ../vendor/freertos/freertos/Source/portable/MSVC-MingW/*
- ../../tinyusb/**
- +:../../demos/bsp/lpc43xx/**
- +:../../demos/device/keyboard/*
- -:../../demos/
- ../../vendor/freertos/freertos/Source/*
- ../../vendor/freertos/freertos/Source/portable/MSVC-MingW/*
:support:
- test/support
- ../support
:defines:
# in order to add common defines:
@ -59,8 +58,8 @@
#:flags:
# :test:
# :compile:
# :hid_host:
# - -Dstatic=
# :dcd_lpc175x_6x.c:
# - -DMCU=MCU_LPC175X_6X
# Ceedling defaults to using gcc for compiling, linking, etc.
# As [:tools] is blank, gcc will be used (so long as it's in your system path)
@ -75,7 +74,6 @@
- :callback
- :array
#:ignore: :args_only
# :unity_helper_path: test/support/type_helper.h
:treat_as:
uint8: HEX8
uint16: HEX16
@ -85,7 +83,7 @@
:plugins:
:load_paths:
- vendor/ceedling/plugins
- ../vendor/ceedling/plugins
:enabled:
#- stdout_pretty_tests_report
- stdout_ide_tests_report

View File

@ -1,4 +1,4 @@
PROJECT_CEEDLING_ROOT = "vendor/ceedling"
PROJECT_CEEDLING_ROOT = "../vendor/ceedling"
load "#{PROJECT_CEEDLING_ROOT}/lib/rakefile.rb"
task :default => %w[ test:all release ]

View File

@ -41,6 +41,7 @@
#include "tusb_option.h"
#include "errors.h"
#include "binary.h"
#include "type_helper.h"
#include "hal.h"
#include "hcd.h"
@ -55,26 +56,6 @@ usbh_device_info_t usbh_devices[TUSB_CFG_HOST_DEVICE_MAX+1];
//--------------------------------------------------------------------+
// Setup/Teardown + helper declare
//--------------------------------------------------------------------+
// log2_of a value is equivalent to its highest set bit's position
#define BITFIELD_OFFSET_OF_MEMBER(struct_type, member, bitfield_member) \
({\
uint32_t value=0;\
struct_type str;\
memclr_((void*)&str, sizeof(struct_type));\
str.member.bitfield_member = 1;\
memcpy(&value, (void*)&str.member, sizeof(str.member));\
log2_of( value );\
})
#define BITFIELD_OFFSET_OF_UINT32(struct_type, offset, bitfield_member) \
({\
struct_type str;\
memclr_(&str, sizeof(struct_type));\
str.bitfield_member = 1;\
log2_of( ((uint32_t*) &str)[offset] );\
})
void setUp(void)
{

View File

@ -51,6 +51,7 @@
//--------------------------------------------------------------------+
// MACRO CONSTANT TYPEDEF
//--------------------------------------------------------------------+
STATIC_ dcd_dma_descriptor_t* dcd_udca[32] ATTR_ALIGNED(128) TUSB_CFG_ATTR_USBRAM;
//--------------------------------------------------------------------+
// INTERNAL OBJECT & FUNCTION DECLARATION

View File

@ -46,11 +46,49 @@
#ifndef _TUSB_DCD_LPC175X_6X_H_
#define _TUSB_DCD_LPC175X_6X_H_
#include "common/common.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct
{
//------------- Word 0 -------------//
uint32_t next;
//------------- Word 1 -------------//
uint16_t mode : 2; // either normal or ATLE(auto length extraction)
uint16_t is_next_valid : 1;
uint16_t : 1;
uint16_t is_isochronous : 1; // is an iso endpoint
uint16_t max_packet_size : 11;
volatile uint16_t buffer_length;
//------------- Word 2 -------------//
volatile uint8_t* buffer_start_addr;
//------------- Word 3 -------------//
volatile uint16_t is_retired : 1; // initialized to zero
volatile uint16_t status : 4;
volatile uint16_t iso_last_packet_valid : 1;
volatile uint16_t atle_is_lsb_extracted : 1; // used in ATLE mode
volatile uint16_t atle_is_msb_extracted : 1; // used in ATLE mode
volatile uint16_t atle_message_length_position : 6; // used in ATLE mode
uint16_t : 2;
volatile uint16_t present_count; // The number of bytes transferred by the DMA engine. The DMA engine updates this field after completing each packet transfer.
//------------- Word 4 -------------//
// uint32_t iso_packet_size_addr; // iso only, can be omitted for non-iso
} ATTR_ALIGNED(4) dcd_dma_descriptor_t;
#define DCD_DD_NUM 10 // TODO scale with configure
typedef struct {
dcd_dma_descriptor_t dd[DCD_DD_NUM];
}dcd_data_t;
#ifdef __cplusplus
}
#endif