Commit Graph

75 Commits

Author SHA1 Message Date
Karl Palsson c9c5cb7c9c style: fix some of the easier style bugs
No real changes.
2017-03-30 21:48:07 +00:00
fenugrec c3512f4de5 tests: gadget0: test for unaligned buffer read/writes.
This currently fails on stm32F072, which is expected but not normal.
See GH issues #401 , #461
2016-10-01 15:46:33 +00:00
Karl Palsson c585336766 tests: gadget0: pull up endpoint size constant 2016-10-01 15:15:36 +00:00
Karl Palsson cdd2054fe4 tests: update gadget zero readme docs for actually running
Fixes Github issue #652
2016-08-18 23:34:35 +00:00
Karl Palsson ba9cb7dc5d minor stylecheck cleanups 2016-02-29 21:30:31 +00:00
Karl Palsson 84dec14d60 tests: extract serials to optional local config
Instead of having committed files containing a single developer's serials, use
optional includes to include a local config file for each board.

If you have only a single board connected, simply:

$ make -f Makefile.<board> clean all flash

If you have multiple boards connected, make sure to fill in the appropriate
hla_serial in your openocd.<board>.local.cfg file, and then run the same
commands.
2016-02-28 17:47:28 +00:00
Karl Palsson 63fda0a231 tests: gadget0: config should be 0 in addressed state 2016-01-27 00:13:05 +00:00
Karl Palsson 8225089cc9 tests: show expected, actual _and_ custom messages
See
https://docs.python.org/2/library/unittest.html#unittest.TestCase.longMessage

Allows showing the 42 != 69 : custom message instead of _only_ showing the
custom message if one was specified.
2016-01-27 00:13:05 +00:00
Karl Palsson e6f6122965 tests: trivial: drop redundant ; 2016-01-27 00:12:59 +00:00
Oliver Meier 5996ac606b tests: usb gadget0: Add stm32f429i-disco support
The F429i board has the user USB OTG port connected to the HS capable
OTG core, rather than the FS OTG core.  It is still only operating in FS
mode, as you need a ULPI phy to use HS mode.
2016-01-05 18:11:59 +00:00
Karl Palsson b81588da74 tests: gadget0: Update for namespace cleanups
Fixes: 3a7cbec776
2016-01-05 18:00:00 +00:00
Piotr Esden-Tempski b1049f9a6f [Style] Stylefix sweep over the whole codebase. 2015-12-14 22:57:15 +01:00
Karl Palsson 27b826bc4a tests: Allow user override of C/CXX/CPP/LD flags
As recently added to the library, allow the tests to be compiled with user
overridable flags too
2015-10-11 19:15:06 +00:00
Karl Palsson 3ed12b6fd9 usb: short control IN might need a ZLP
Control transfers can transfer less than was requested by the host in the
wLength field.  if this short transfer is a multiple of the endpoint's packet
size, a zero length packet must be sent.

Adds tests for a range of control transfer IN requests, and properly supports
this in the core.  Based heavily on work by Kuldeep Dhaka.

See https://github.com/libopencm3/libopencm3/pull/505
and https://github.com/libopencm3/libopencm3/pull/194 for original discussion.

Tested with stm32f4, stm32f103 and stm32l053.
2015-10-11 18:43:11 +00:00
Karl Palsson 4b54b35582 tests:gadget0: stm32l0: drop RCC test code
Don't commit commented out code! bad!
2015-10-06 01:06:30 +00:00
Karl Palsson 52dc61403d tests: gadget0: use proper usb enumerations
Eliminate warnings.  carry over from developing in a different tree.
2015-10-06 01:05:36 +00:00
Karl Palsson e7ea622037 tests: gadget0: Add stm32l053 disco support
Much more complicated clock setup, but tests all pass once you get past that
step.
2015-10-06 00:54:53 +00:00
Karl Palsson c097343634 tests: gadget0: F0: drop unnecessary code.
* Only the L1 needed to include flash settings
* whitespace and comment cleanup
* drop redundant clock setting calls
2015-10-04 00:28:16 +00:00
Karl Palsson f5eb96caf3 usb: Add st_usbfs_v2 for f0/l0 devices
Based on previous work, add a new driver for the v2 usb peripheral found on
stm32f0 and l0 devices.

Correspondingly, add a usb gadget zero test suite for the f0.  L0 device level
code isn't yet ready, but will add the test case when it moves in.

Work by Frantisek Burian, Kuldeep
Singh Dhaka, Robin Kreis, fenugrec and zyp on irc, and all those forgotten.
2015-10-03 02:03:58 +00:00
Karl Palsson e121243ce2 usb: extract ST USB FS peripheral core. [BREAKING CHANGE]
The breaking changes here changes in header location, and changes in driver
name passed down to the usb stack.

Changes affect: stm32f102/f103, stm32l1, and some f3 parts

* instead of the confusingly generic "usb" use the name "st_usbfs" for the USB
  Full speed peripheral ST provides in a variety of their stm32 products.
  Include directives should change as:
      #include <libopencm3/stm32/usb.h> => <libopencm3/stm32/st_usbfs.h>

* instead of the confusingly specific "f103" name for the driver, use
  "st_usbfs_v1"  [BREAKING_CHANGE]

  Instead of:
    usbd_init(&stm32f103_usb_driver, .....) ==>
    usbd_init(&st_usbfs_v1_usb_driver, .....) ==>

The purpose of these changes is to reduce some confusion around naming, but
primarily to prepare for the "v2" peripheral available on stm32f0/l0 and some
f3 devices.

Work by Frantisek Burian, Kuldeep Singh Dhaka, Robin Kreis, fenugrec and zyp
on irc, and all those forgotten.
2015-10-03 01:32:34 +00:00
Karl Palsson 1480c6ee4b tests: gadget0: add stm32l1 target
As with F103 generic, there's no readily available L1 board with USB device
A custom LED is used to track boot process, but otherwise this should be
portable to any L1 board, except for the openocd configuration file.

Tests pass straight away, which is good, as it uses the existing f103 usb
driver.
2015-10-03 01:29:49 +00:00
Karl Palsson 58d5de26f3 tests: gadget0: add stm32f103 target
There's no F1 discovery style board with usb device, so this is for a "generic"
device.  The USB portion should be safe, but there's a led used for bootup that
is board specific, and of course the clock source is board specific.

Related, the openocd config file is rather custom to my own setup, but shows
what you need to customize for your test environment.

Further, as the F1 usb core doesn't include support for soft disconnect, use
the very hacky method of dragging the pin low to force reenumeration on reset.
Very very useful for development purposes!
2015-10-03 01:18:17 +00:00
Karl Palsson 39c29b8fdf tests: rules.mk: kill rcs/sccs support
If you can read this, you're not using a version control system affected by
this change ;)

Before: make -d | wc -l ==> 992
After:  make -d | wc -l ==> 452
2015-10-03 00:59:26 +00:00
Karl Palsson 44f3fc98ea tests: rules.mk: scrap legacy suffix search
Instead of just adding elf/bin and friends, actively delete the original
suffixes and include only things we care about.

Before vs After:
make -d | wc -l ==> 4497
make -d | wc -l ==> 932

Now, if only I could turn off the RCS/SCCS support so easily.
2015-10-03 00:59:26 +00:00
Karl Palsson 34f00a7d5a tests: usb: gadget0 compatible interface (stm32f4)
This introduces the first firmware setup specifically for automated testing.
Based heavily on the linux kernel project's "USB Gadget Zero" idea, and in
theory, this should be testable with <kernelsrc>/tools/usb/testusb.c but...
not yet.  It's tricky to set that up and poorly documented, so we've got our
own tests instead. Instead, we include a set of python unit tests using pyusb.

These currently only test a basic core subset of functionality, but have already been
very helpful in finding latent bugs.

In this first stage, we support only the stm32f4 disco board, (MB997) and
FullSpeed USB devices.  A generic "rules.mk" is introduced to support multi
platform builds. (See below)

Some basic performance tests are included, but as they take some time to run,
you must manually enable them. See the README for more information

NOTE! Only the source/sink functional interface is supported, loopback will require
some comparision with a real gadget zero to check exactly how it's working.

FOOTNOTES 1:

This introduces a rules.mk file that is arguably substantially simpler[1] for
re-use, and then uses this rules.mk file to support multiple target outputs
from the same shared source tree. Less path requirements are imposed, and less
variables need to be defined in each project's makefile.  A separate bin
directory is created for each project.

All useful settings and configurations imported from the original library rules
file.

cxx support untested, but lifted from the original library rules file.

[1] Than the file in the libopencm3-examples repo it is loosely based on.
2015-10-03 00:58:43 +00:00