<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mjb/altos/src/stmf0/ao_usb_stm.c, branch time-series</title>
<subtitle>AltOS - the operating system for Altus Metrum products
</subtitle>
<id>https://git.ethernal.org/mjb/altos/atom?h=time-series</id>
<link rel='self' href='https://git.ethernal.org/mjb/altos/atom?h=time-series'/>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/'/>
<updated>2017-05-05T05:10:36+00:00</updated>
<entry>
<title>altos: Make CDC ACM 'line coding' public</title>
<updated>2017-05-05T05:10:36+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2017-05-05T05:04:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=e76d543a203f210683cb77df2b9bbff1a9f4b381'/>
<id>urn:sha1:e76d543a203f210683cb77df2b9bbff1a9f4b381</id>
<content type='text'>
This allows other systems to see what baud rate the host has requested.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos/arm: Align data so that gcc 5.4 doesn't do byte-accesses. Add -Wcast-align</title>
<updated>2016-12-18T05:04:33+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2016-12-18T04:58:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=89ecc32b90565ace078c4a84d4406a4d1f86821a'/>
<id>urn:sha1:89ecc32b90565ace078c4a84d4406a4d1f86821a</id>
<content type='text'>
Gcc 5.4.1 tracks alignment of data through assignments, so that a
uint32_t pointer which comes from byte-aligned uint8_t data:

extern uint8_t foo[];

	uint32_t	*q = (void *) foo;

Fetches and stores through this pointer are done bytewise. This is
slow (meh), but if q references a device register, things to bad very
quickly.

This patch works around this bug in the compiler by adding
__attribute__((aligned(4))) tags to some variables, or changing them
from uint8_t to uint32_t. Places doing this will now be caught as I've
added -Wcast-align to the compiler flags. That required adding (void
*) casts, after the relevant code was checked to make sure the
compiler could tell that the addresses were aligned.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>Switch from GPLv2 to GPLv2+</title>
<updated>2016-07-12T22:41:41+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2016-07-05T16:03:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=1085ec5d57e0ed5d132f2bbdac1a0b6a32c0ab4a'/>
<id>urn:sha1:1085ec5d57e0ed5d132f2bbdac1a0b6a32c0ab4a</id>
<content type='text'>
Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos/stmf0: Remove ao_usb_free</title>
<updated>2016-06-12T05:17:01+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2016-06-12T05:17:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=eee7fa303fb0d80ac5d7b9c5a86af60333f61951'/>
<id>urn:sha1:eee7fa303fb0d80ac5d7b9c5a86af60333f61951</id>
<content type='text'>
This can't work without a lot more effort.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos/stmf0: Rework the sram allocation to save a few text bytes</title>
<updated>2016-06-12T05:16:12+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2016-06-12T05:16:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=1704d27248f1845c545ec61cf1bad58bf41189af'/>
<id>urn:sha1:1704d27248f1845c545ec61cf1bad58bf41189af</id>
<content type='text'>
Boot loaders were going over 4096 bytes of ROM. I suspect we'll need
more serious work soon.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>stmf0: Do not send more data than requested for GET_DESCRIPTOR</title>
<updated>2016-06-10T05:06:30+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2016-06-10T05:06:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=36ba97fabbed2f2a4a89da5be221c630ea3ff66f'/>
<id>urn:sha1:36ba97fabbed2f2a4a89da5be221c630ea3ff66f</id>
<content type='text'>
When Linux boots, it asks for only the first 8 bytes of the device
descriptor; we must limit the amount of data sent back to that amount
or USB will get wedged.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>stmf0: Clear all USB state when resetting chip. Wakeup all sleepers</title>
<updated>2016-06-10T05:05:24+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2016-06-10T05:05:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=2970de9f92243b11d3beef56f3b1df3ef3579b95'/>
<id>urn:sha1:2970de9f92243b11d3beef56f3b1df3ef3579b95</id>
<content type='text'>
When USB is reset, but the board is not power cycled, all of the
internal USB state needs to be reset, and any tasks blocked on sending
or receiving packets need to be awoken so they can go wait for USB to
start running again.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos/stmf0: Fix build without second USB IN endpoint</title>
<updated>2016-03-05T22:37:40+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2016-03-05T22:37:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=7cb388a33104fd78c8cb1fa08a6f114e3e1e372d'/>
<id>urn:sha1:7cb388a33104fd78c8cb1fa08a6f114e3e1e372d</id>
<content type='text'>
The code for the second IN endpoint was using the wrong ifdef.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos/chaoskey: Add another USB endpoint to read raw data</title>
<updated>2016-03-02T21:59:21+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2016-03-02T21:54:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=05fcb717bfc44aba3c1cfd43281e323505a46402'/>
<id>urn:sha1:05fcb717bfc44aba3c1cfd43281e323505a46402</id>
<content type='text'>
This replaces having the single output switch based on a pin value and
allows us to box the device and still fetch raw data.

For now, this will use a special libusb2 program, ao-chaosread, to
pull bits as I haven't figure out how to make linux provide two
/dev entries for one USB device.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>altos/stmf0: Use device ID as usb serial number if requested</title>
<updated>2016-02-15T23:24:35+00:00</updated>
<author>
<name>Keith Packard</name>
<email>keithp@keithp.com</email>
</author>
<published>2016-02-15T23:24:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ethernal.org/mjb/altos/commit/?id=5637c1b2fd7232842245af1437e33b5bb1583c7d'/>
<id>urn:sha1:5637c1b2fd7232842245af1437e33b5bb1583c7d</id>
<content type='text'>
This exposes the hardware device ID (which is unique per-chip) as the
USB serial number, avoiding the need to create a custom ROM image for
each device.

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
</feed>
