• Welcome to Andy's Workshop Forums. Please login or sign up.
May 18, 2024, 01:20:42 am


SMF - Just Installed!

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Andy Brown

stm32plus C++ library / stm32plus code snippets
July 26, 2015, 10:35:54 am
As I write more and more stm32plus code I thought it might help people if I share small snippets of code to do common tasks in the spirit of the github gist. Feel free to contribute snippets yourself and/or comment on others.
Quote from: Alan Carvalho de Assis on July 19, 2015, 07:23:36 am
Do you know some low cost mainboard with 4 CPU sockets for Xeon X5680?

I've never seen a quad socket Westmere/Nehalem board and if it did exist then it would likely be made by Supermicro or Tyan and probably come in a form factor designed for a rack case.
I find out Supermicro X7QC3, but it still too much expensive.

It's not for the Westmere/Nehalem series Xeons.

About 2 CPU slots, did you take a look at Dell Poweredge R410 ? It has a low cost at eBay (lesser than Z800).

(R) = rack. In a tower case the slots would not line up in the chassis and the rear ports would be in the wrong place.
Quote from: Alan Carvalho de Assis on July 19, 2015, 07:10:18 am
Hi Andy,
How are you, I hope fine.

I finished my project, but I decided to use TI DP83848 RMII instead instead of Micrel KSZ8081, see here:

You Oven Reflow project is very interesting.
I will try to replicate your reflow project and will let you know if it worked at 110V.



Hi Alan, congrats on finishing your project. The board looks well laid out, neat and tidy, and you've got the MCU and some other peripherals on there too so I'm guessing this is a complete project and not just a breakout board?
Quote from: Attilio Fiandrotti on July 16, 2015, 06:31:07 am
Hello, not sure if this topic has already been discussed before, but has anyone attempted to get correct ambient temperature readings so far ? It seems that the HP zx00 and xwxx00 (at least some) workstations read the ambient temperature via a sensor connected to pins 11-13 of the main connector. The sensor is embedded into the power cable assembly, at least for the xw8600 and similars (P/N: 349576-006). Here [1] is reported an equivalent schematic to build your own sensing circuit. It seems that the air temp sensor drives the speed at which the front fans spin, at least on xwxx00 workstation: getting correct temp readings should slow em without fancontrol. Another option would be getting a xw8600 cable and using the sensor contained therein.

I'm going to try building one of these. I've got a basket of parts that I need to order from Farnell within the next few weeks. I'll probably use the exact same MMBT3904 part in the SOT-23 surface mount package rather than hunting around for a through-hole transistor with the same characteristics.
I've just posted a new article in which I document the build process for a new reflow controller that uses an android app to communicate using bluetooth with the controller. The board is designed to be simple to build using (nearly) all through-hole components.

As usual all the gerbers and firmware source are made available for people that want to build their own and there's a lengthy how-to-build video that accompanies it.
Hi Robin,

This is happening because the SConstruct file for the fpga sprite engine project was written to be compatible with version 3.4.0 of stm32plus. All you need to do is build and install version 3.4.0 and you'll be good. Here's how.

Assuming you've cloned the stm32plus repo from github you first need to ensure that you've got the release tags. The following commands are all run from the stm32plus base directory (the one with the .git directory in it).

$ git fetch origin --tags

When that's done, make sure you've got the 3.4.0 tag:

$ git tag -l

Now check out the 3.4.0 tag:

$ git checkout 3.4.0
Note: checking out '3.4.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 02cc018... update readme for release

Don't worry about all the git output, we're not making changes so we can ignore what it's trying to tell us. Now you can build:

$ scons mode=small mcu=f4 hse=8000000 float=hard -j12 install

Change the -j option to match your CPU core count. When the build has completed you can proceed with the fpga sprite engine build. You should probably do a 'git checkout master' in the stm32plus directory as well just in case you forget that you've checked out a tag.

Hope that helps. I will update the README in the FPGA project to make it clear that it's important to install the correct version of stm32plus.
Quote from: Vesuveus on July 07, 2015, 03:09:39 am
BTW If people are looking for easy to install aftermarket CPU coolers, the coolermaster hyper t4 requires no modification. The screws go directly in the current plate for the CPU. I will be posting picture of my rig soon.

Did you sort your hyperthreading issue out? I'll be eligible for the free upgrade to Win10 when it comes out and would like to know there's a smooth path ahead.
The new Arduino IDE releases are throwing up quite a few compatibility issues that I need to investigate. If you don't need the facilities of the new IDE then the older 1.0.x versions are compatible.
Quote from: colincoates on July 03, 2015, 06:09:20 pm
Hi Guys,
turns out it was the psu. I RMAed it for a evga 1.3kw supernova g2. It starts up and recognises both processors.

Good to hear that you got it working. It seems like the PSU specs are quite critical to get this board to boot reliably. My 1000W Superflower (EVGA in the US) is still completely stable with 2x X5680 and an ATI 7970.


void SysTick_Handler()            __attribute__ ((weak, alias ("Default_Handler")));

The above line is the problem. Since we are providing SysTick_Handler as a weak symbol ourselves, can you change that line to:

extern void SysTick_Handler();

I'm concerned that it's auto-generated. Is it a one-off auto-generation when the project is created or is there some trigger that will cause any changes that you make to be overwritten?
Quote from: yaqwsx on June 26, 2015, 03:25:59 amTo be clear: I am trying to use your library with GNU toolchain using Visual Studio and VisualGDB plugin, so I setup the project from scratch. It is possible, that I have ommited some steps necessary for the aliases to work. I attach the configuration of the project (the startup code and linker script are generated by VisualGDB).

This is looking related to the change made in issue 19 where the weak alias from SysTick_Handler to Default_Handler in Startup.asm was removed and now looks like this:

* SysTick_Handler in stm32plus is now marked 'weak' so that compatibility with other
* frameworks is made possible.

  .weak  SysTick_Handler
  .thumb_set SysTick_Handler,Default_Handler

The weak alias is now made to the stm32plus implementation so that users of an RTOS can integrate with the library and use the RTOS implementation of SysTick.

All other weak aliases of SysTick_Handler to Default_Handler must be removed. Unfortunately the Startup.asm I attached in my previous post did not have this weak alias commented out. If you could comment it out and ensure there are no more weak aliases for SysTick_Handler in your startup code then you should be OK.
The vector table in the MD series is shorter than the the HD but it is location-compatible right up to the end. Nevertheless, let's try replacing the startup assembly code with one designed for the MD line. Please replace the content of system/f1hd_72_8/Startup.asm with the attached file and let me know if it helps. I'm assuming you've already set the correct values for your flash and SRAM sizes in the linker script.
Quote from: yaqwsx on June 25, 2015, 02:14:05 pm
I am also trying to use your great-looking library for STM32F103C8. I tried to use the F1_HD settings with linker script from VisualGDB. The blink example hangs in Default_Handler. It seems like no handlers were defined - when I look inside the g_pfnVectors, all vectors have defined Default_Handler.

Could you please take a look at it?

I've ordered one of those incredibly cheap STM32F103C8 boards from ebay to have a look at but it's likely to be several weeks before it reaches me.

Can you break in Reset_Handler and single step to find out where it goes wrong? It's assembly language but is quite short. Basically it sets up some data then calls SystemInit and then main. It'll be particularly interesting to see if it gets past SystemInit where the clocks are initialised.
Quote from: Vesuveus on June 17, 2015, 06:02:51 pm
So I got my rig up and running with windows 10 technical preview, dual xeon x5550, a gtx 295 and 24gb ram. My problem now is that hyperthreading isnt working. I have it enabled in the bios but it doesnt work when I am in the OS. If anyone has any advice it would be much appreciated. If not I will try and install windows 7 on one of the other hard drives to see if it is a problem with the OS. Thanks.

I strongly suspect the OS but have you run the Intel processor identification utility anyway? It should look something like this attached screenshot.
Those linker settings look OK to me. Assuming you've connected the LED with a series resistor appropriate to the IO voltage on your board (probably 3.3V) then it should flash.

Can you run it in the Eclipse debugger and see what's going on?