News for hackers. Stuff that matters.
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by amelius on Friday April 03, 2020 @05:39PM (#22774181)
Anybody got USB communication (CDC class) working on this platform without the proprietary libs?
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by dmitrygr on Friday April 03, 2020 @06:03PM (#22774390)
no, i spent months on this, and the answer is no

They use IP from synopsis, but <rumor>synopsis refuses to allow their docs to be published so every manufacturer has to read them and regurgitate them into their own docs in their own words</rumor>. In any case official STM docs are incomplete. See their driver source - it accesses undocumented registers and sets undocumented bits in documented regs. Without them the usb core will not start or run.

Your options are to carefully rewrite STM's libs (which are based on real synopsis docs and DO work) or use them as is. Both solutions IMHO leave you subject to STM's EULA and such

this is the #1 issue in stm32

a close #2 is the their so-smart-it-is-useless i2c controller. I know of no project that uses it. Everyone bitbangs i2c master on stm32. The hardware unit is very easy to wedge to a point where only a power cycle unwedges it.

Re:How to flash an LED: writing ARM assembly for an STM32 mi... by _noise_ on Saturday April 04, 2020 @07:12AM (#22777581)
I don't know what issues you are having with STM32 I2C, but I have done dozens of STM32 designs and have never had an issue and needed to bitbang it.
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by dmitrygr on Saturday April 04, 2020 @03:54PM (#22780972)
Send an address only packet (smbus uses these) Just try. Now do it to an address that doesn't ack. Enjoy your wedged i2c state machine.
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by lochsh on Saturday April 04, 2020 @09:59PM (#22783133)
I think it's worth noting that there are multiple I2C peripherals by ST -- one for STM32F1, F4, and L1; and a different one used for STM32F0, F3, F7, L0, and L4.
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by thebruce87m on Saturday April 04, 2020 @06:26PM (#22782045)
I’ve recently used the “HAL_I2C_IsDeviceReady” function to scan the whole address range to find devices on the bus with no issues. I’m not near my PC to double check but I’m pretty sure that does what you’re talking about and seems to work ok for me - unless you’re suggesting it’s intermittent?
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by duskwuff on Friday April 03, 2020 @06:24PM (#22774520)
Can you point to where the undocumented registers are used in the source? I don't see anything obvious that fits that definition in:

https://github.com/STMicroelectronics/STM32CubeF4/tree/maste...

(I've chosen the version for STM32F4 arbitrarily; if there's something similar in one of their other USB support libraries, feel free to point to that instead.)

Re:How to flash an LED: writing ARM assembly for an STM32 mi... by dmitrygr on Friday April 03, 2020 @06:33PM (#22774575)
a few bits used here are not in the docs: https://github.com/STMicroelectronics/STM32CubeF4/blob/maste...
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by duskwuff on Friday April 03, 2020 @06:42PM (#22774642)
That's a 2000-line file. What part of it are you referring to?
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by kevin_thibedeau on Friday April 03, 2020 @06:19PM (#22774492)
It's not a rumor. You have to be a Synopsys licensee to see the docs on their IP cores.
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by rabryan on Friday April 03, 2020 @09:43PM (#22775521)
Avoid ST at all costs in my experience. Their documentation is terrible. They never acknowledge hardware errata even after clear evidence of it. They’re not a company with a solid engineering culture imo
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by __init on Friday April 03, 2020 @11:28PM (#22775993)
I'm really surprised to hear that. ST has always been one of my favorite manufacturers. I find their datasheets to be clear and well laid out, though I will note that I'm usually more interested in the hardware side than the software side. Their chips and boards are also high quality and convenient, e.g. GPIOs are often five-volt tolerant, Nucleo boards come with well-made breakout headers and several peripherals (at seemingly impossibly low cost), chips have wide supply voltages, etc. I can't say I know anything about their errata (I've never run into any), but even if the situation is as bad as you say, that's quite a harsh condemnation, especially considering how widely-used and successful they are in industry. Do you have other complaints?
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by rabryan on Sunday April 05, 2020 @10:06AM (#22785601)
I’ve used their accelerometer (LIS2D). Performance and specs are great - it was just a pain to develop the embedded interface with it because the documentation had a bunch of mistatements and was missing critical information (a weak pullup on a certain line caused a bunch of current consumption - took days to figure out). Also they had an off by one bug in their LIFO queue that took a long time to figure out. Once you getting it working its great. Last time I checked they still hadnt updated their documentation with what I reported to them...
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by dmitrygr on Saturday April 04, 2020 @01:31AM (#22776397)
can confirm. found multiple issues around SDRAM interface in STM32f429, only some are in the errata doc
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by detaro on Friday April 03, 2020 @09:44PM (#22775527)
Which MCU makers do you prefer?
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by rabryan on Friday April 03, 2020 @10:31PM (#22775731)
Atmel (now under Microchip). They have great documentation and software libraries. And they actually acknowledge hardware errata in the documentation.
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by userbinator on Saturday April 04, 2020 @12:08AM (#22776136)
And they actually acknowledge hardware errata in the documentation.

More so for Microchip than Atmel --- it's pretty common to find on some of their newer and more complex parts a ton of errata, among which there are some extremely "WTF!?" ones like "feature X does not work at all".

Re:How to flash an LED: writing ARM assembly for an STM32 mi... by rabryan on Sunday April 05, 2020 @10:08AM (#22785614)
Yeah I love those. They highlight features xyz on first page of datasheet. Then on the last few pages its like btw features xyz dont work on rev A-F. And your supplier doesnt know what revs they have...
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by reportingsjr on Friday April 03, 2020 @11:55PM (#22776095)
I used a SAMD21 for my latest project and I was definitely impressed with it versus STM32s.

I will say that STM has definitely released better tools that make it much easier to get designs up and running (STM32Cube specifically).

Re:How to flash an LED: writing ARM assembly for an STM32 mi... by HeyLaughingBoy on Friday April 03, 2020 @08:44PM (#22775270)
Maybe I don't understand the question. Aren't the STM32 CDC libraries redistributable?
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by duskwuff on Friday April 03, 2020 @09:03PM (#22775357)
The STM32 USB libraries are provided under the oddly named "Ultimate Liberty License" [1], which is actually incredibly restrictive -- it requires the code to only be used on ST hardware, and prohibits it from being used "in any manner that would subject this software to any Open Source Terms".

[1]: http://www.st.com/SLA0044

Re:How to flash an LED: writing ARM assembly for an STM32 mi... by lochsh on Friday April 03, 2020 @06:14PM (#22774455)
I don't have experience with this, but from talking to people who do, there are indeed open source implementations. They say the documentation is a bit confusing, but it does describe everything.

This Rust library is an abstract USB library that can implement CDC serial https://docs.rs/usb-device/0.2.5/usb_device/, and this library connects it to the STM32 USB peripheral https://github.com/stm32-rs/stm32-usbd

Examples here: https://github.com/stm32-rs/stm32-usbd-examples

Re:How to flash an LED: writing ARM assembly for an STM32 mi... by dmitrygr on Friday April 03, 2020 @06:20PM (#22774500)
those open source libs use undocumented regs documented and thus are based on STM lib. License in question thus
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by userbinator on Friday April 03, 2020 @07:39PM (#22774965)
That's what "clean room reverse engineering" is for. If you document what the code does, then code written based only on those docs wouldn't need to be under the same license.
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by nine_k on Friday April 03, 2020 @07:41PM (#22774976)
Is clean-room reverse engineering even viable? That is, would anyone agree that an independent discovery of what bit does what is even possible, and this is not lifted from known drivers?
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by duskwuff on Friday April 03, 2020 @09:14PM (#22775406)
Clean-room reverse engineering doesn't require that. If someone were to read the existing drivers and write documentation explaining how the hardware appears to work, that documentation would be unencumbered, and a freely licensed driver could be written based on that documentation. The only methodology that would be questionable would be a developer writing a new driver while referring directly to the vendor driver.

To put it another way -- the IP protections on the current library are a matter of copyright law, and the protections are on the code itself. The facts of which bits do what -- which are embodied in that code -- are not protected (or protectable!), and can be reused freely.

Re:How to flash an LED: writing ARM assembly for an STM32 mi... by bear8642 on Friday April 03, 2020 @09:41PM (#22775512)
>The facts of which bits do what -- which are embodied in that code -- are not protected (or protectable!), and can be reused freely.

Though given Oracle's current legal proceedings that might change...

Re:How to flash an LED: writing ARM assembly for an STM32 mi... by twarge on Friday April 03, 2020 @09:39PM (#22775501)
ChibiOS' CDC works great. Don't know about licensing, but it's fine for non-commercial use.
Re:How to flash an LED: writing ARM assembly for an STM32 mi... by markrages on Friday April 03, 2020 @10:54PM (#22775849)
Black magic probe has it (two of them!) working with just libopencm3.