Get Started Faster! (A newer, simpler way to install the toolchain)

Hi everyone,

We’ve been working on simplifying the process of installing the necessary tools, as it has proven to be both time-consuming and prone to various issues depending on the operating system.

I would like to introduce the DaisyToolchain. The timing of this also worked out well with a few updates to the tools themselves (openocd 0.11, etc.) that have had a wonderful effect on simplifying the MacOS installation as well.

Instructions have been updated on the Wiki for Windows and Mac, and the whole process should take a fraction of the time it used to.

For Windows, we’ve bundled up versions of all of the tools. So all you have to do is download the release zip file, extract it to a location of your choosing, and double click the install.bat file (which simply adds the windows\bin folder to your user PATH variable).

For Mac, the homebrew version of the core tools are now all up to date. So our install.command file will install homebrew if it isn’t installed already, use it to install the necessary tools, and run the annoying security command that has been necessary since Mojave. Use the same release zip file as was mentioned above.

We have not fully simplified the Linux installation yet, but we may do that in the form of a VM that can be used on any OS.

Feel free to ask questions, or suggest improvements. We’re hoping this will begin to make things a lot easier. We look forward to your feedback, and plan to improve upon this process as regularly as is necessary to make working with Daisy as easy as it should be.

6 Likes

This will be hugely helpful, @shensley ! I would have avoided a lot of brain damage over the last few weeks if I had waited.

FWIW, I now can modify, build, download, and run some example programs. I am ALMOST to the point where I can debug with STlink - I still get a “can’t find something_or_other”.

Dare I start over again with the new process? Do I need to uninstall the current stuff piecemeal before I try it? (Windows) You know I will post honest feedback on my experience if you want me to be a beta test case!

If you have everything working, you don’t necessarily have to change anything. However, if you are still getting errors on certain tools then it might be worth giving it a go.

Since you’re on windows, you should be able to just delete all of the different entries in PATH for the various daisy tools you’ve installed (make, arm-none-*, dfu-util, openocd) in the Environment Variable editor. (You can take a screenshot of these before hand so you can quickly revert back if you do encounter any issues).

The installation for git is still separate, and the process for that hasn’t changed. So you don’t have to change or uninstall that.

Then it really should be as easy as downloading the new toolchain, and double clicking on the install.bat file.

If you do give it a shot, we’ll look forward to your honest feedback :slight_smile:

We are also planning to release a video going over everything covered in the Setting up the Development Environment wiki page very soon (we have a video mostly complete, but are reworking it to use the new installation process now).

The new DaisyToolchain Wiki page is great! I’m following it for MacOS, and have found it fairly simple and intuitive. I do notice some VS Code terminology does not match my configuration - on my Mac (running Catalina), I hit shift-command-p to bring up the “command palette” (rather than ctrl-p for “control palette”). I don’t see a “task build_all” in this palette, but I do have a “Tasks: Run Build Task” which I’m guessing is the same thing. When I invoke this, the build is failing. Here’s what I’m seeing. Can you suggest a next step?

`

Executing task: make clean; make <
rm -fR build
mkdir build
arm-none-eabi-gcc -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32H750xx -DHSE_VALUE=16000000 -DCORE_CM7 -DSTM32H750IB -DARM_MATH_CM7 -DUSE_FULL_LL_DRIVER -include stm32h7xx.h -I…/…/libdaisy -I…/…/libdaisy/src/ -I…/…/libdaisy/src/sys -I…/…/libdaisy/src/usbd -I…/…/libdaisy/Drivers/CMSIS/Include/ -I…/…/libdaisy/Drivers/CMSIS/DSP/Include -I…/…/libdaisy/Drivers/CMSIS/Device/ST/STM32H7xx/Include -I…/…/libdaisy/Drivers/STM32H7xx_HAL_Driver/Inc/ -I…/…/libdaisy/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I…/…/libdaisy/core/ -I…/…/DaisySP/Source -I…/…/libdaisy/Middlewares/Third_Party/FatFs/src -O2 -Wall -Wno-missing-attributes -fasm -fdata-sections -ffunction-sections -MMD -MP -MF"build/startup_stm32h750xx.d" -std=gnu11 -Wa,-a,-ad,-alms=build/startup_stm32h750xx.lst …/…/libdaisy/core/startup_stm32h750xx.c -o build/startup_stm32h750xx.o
arm-none-eabi-gcc -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32H750xx -DHSE_VALUE=16000000 -DCORE_CM7 -DSTM32H750IB -DARM_MATH_CM7 -DUSE_FULL_LL_DRIVER -include stm32h7xx.h -I…/…/libdaisy -I…/…/libdaisy/src/ -I…/…/libdaisy/src/sys -I…/…/libdaisy/src/usbd -I…/…/libdaisy/Drivers/CMSIS/Include/ -I…/…/libdaisy/Drivers/CMSIS/DSP/Include -I…/…/libdaisy/Drivers/CMSIS/Device/ST/STM32H7xx/Include -I…/…/libdaisy/Drivers/STM32H7xx_HAL_Driver/Inc/ -I…/…/libdaisy/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I…/…/libdaisy/core/ -I…/…/DaisySP/Source -I…/…/libdaisy/Middlewares/Third_Party/FatFs/src -O2 -Wall -Wno-missing-attributes -fasm -fdata-sections -ffunction-sections -MMD -MP -MF"build/diskio.d" -std=gnu11 -Wa,-a,-ad,-alms=build/diskio.lst …/…/libdaisy/Middlewares/Third_Party/FatFs/src/diskio.c -o build/diskio.o
arm-none-eabi-gcc -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32H750xx -DHSE_VALUE=16000000 -DCORE_CM7 -DSTM32H750IB -DARM_MATH_CM7 -DUSE_FULL_LL_DRIVER -include stm32h7xx.h -I…/…/libdaisy -I…/…/libdaisy/src/ -I…/…/libdaisy/src/sys -I…/…/libdaisy/src/usbd -I…/…/libdaisy/Drivers/CMSIS/Include/ -I…/…/libdaisy/Drivers/CMSIS/DSP/Include -I…/…/libdaisy/Drivers/CMSIS/Device/ST/STM32H7xx/Include -I…/…/libdaisy/Drivers/STM32H7xx_HAL_Driver/Inc/ -I…/…/libdaisy/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I…/…/libdaisy/core/ -I…/…/DaisySP/Source -I…/…/libdaisy/Middlewares/Third_Party/FatFs/src -O2 -Wall -Wno-missing-attributes -fasm -fdata-sections -ffunction-sections -MMD -MP -MF"build/ff.d" -std=gnu11 -Wa,-a,-ad,-alms=build/ff.lst …/…/libdaisy/Middlewares/Third_Party/FatFs/src/ff.c -o build/ff.o
arm-none-eabi-gcc -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32H750xx -DHSE_VALUE=16000000 -DCORE_CM7 -DSTM32H750IB -DARM_MATH_CM7 -DUSE_FULL_LL_DRIVER -include stm32h7xx.h -I…/…/libdaisy -I…/…/libdaisy/src/ -I…/…/libdaisy/src/sys -I…/…/libdaisy/src/usbd -I…/…/libdaisy/Drivers/CMSIS/Include/ -I…/…/libdaisy/Drivers/CMSIS/DSP/Include -I…/…/libdaisy/Drivers/CMSIS/Device/ST/STM32H7xx/Include -I…/…/libdaisy/Drivers/STM32H7xx_HAL_Driver/Inc/ -I…/…/libdaisy/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I…/…/libdaisy/core/ -I…/…/DaisySP/Source -I…/…/libdaisy/Middlewares/Third_Party/FatFs/src -O2 -Wall -Wno-missing-attributes -fasm -fdata-sections -ffunction-sections -MMD -MP -MF"build/ff_gen_drv.d" -std=gnu11 -Wa,-a,-ad,-alms=build/ff_gen_drv.lst …/…/libdaisy/Middlewares/Third_Party/FatFs/src/ff_gen_drv.c -o build/ff_gen_drv.o
arm-none-eabi-gcc -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32H750xx -DHSE_VALUE=16000000 -DCORE_CM7 -DSTM32H750IB -DARM_MATH_CM7 -DUSE_FULL_LL_DRIVER -include stm32h7xx.h -I…/…/libdaisy -I…/…/libdaisy/src/ -I…/…/libdaisy/src/sys -I…/…/libdaisy/src/usbd -I…/…/libdaisy/Drivers/CMSIS/Include/ -I…/…/libdaisy/Drivers/CMSIS/DSP/Include -I…/…/libdaisy/Drivers/CMSIS/Device/ST/STM32H7xx/Include -I…/…/libdaisy/Drivers/STM32H7xx_HAL_Driver/Inc/ -I…/…/libdaisy/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I…/…/libdaisy/core/ -I…/…/DaisySP/Source -I…/…/libdaisy/Middlewares/Third_Party/FatFs/src -O2 -Wall -Wno-missing-attributes -fasm -fdata-sections -ffunction-sections -MMD -MP -MF"build/ccsbcs.d" -std=gnu11 -Wa,-a,-ad,-alms=build/ccsbcs.lst …/…/libdaisy/Middlewares/Third_Party/FatFs/src/option/ccsbcs.c -o build/ccsbcs.o
arm-none-eabi-g++ -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32H750xx -DHSE_VALUE=16000000 -DCORE_CM7 -DSTM32H750IB -DARM_MATH_CM7 -DUSE_FULL_LL_DRIVER -include stm32h7xx.h -I…/…/libdaisy -I…/…/libdaisy/src/ -I…/…/libdaisy/src/sys -I…/…/libdaisy/src/usbd -I…/…/libdaisy/Drivers/CMSIS/Include/ -I…/…/libdaisy/Drivers/CMSIS/DSP/Include -I…/…/libdaisy/Drivers/CMSIS/Device/ST/STM32H7xx/Include -I…/…/libdaisy/Drivers/STM32H7xx_HAL_Driver/Inc/ -I…/…/libdaisy/Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I…/…/libdaisy/core/ -I…/…/DaisySP/Source -I…/…/libdaisy/Middlewares/Third_Party/FatFs/src -O2 -Wall -Wno-missing-attributes -fasm -fdata-sections -ffunction-sections -MMD -MP -MF"build/Blink.d" -fno-exceptions -fasm -finline -finline-functions-called-once -fshort-enums -fno-move-loop-invariants -fno-unwind-tables -std=gnu++14 -Wa,-a,-ad,-alms=build/Blink.lst Blink.cpp -o build/Blink.o
arm-none-eabi-g++ build/startup_stm32h750xx.o build/diskio.o build/ff.o build/ff_gen_drv.o build/ccsbcs.o build/Blink.o -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard --specs=nano.specs --specs=nosys.specs -T…/…/libdaisy/core/STM32H750IB_flash.lds -L…/…/libdaisy/build -L …/…/DaisySP/build -ldaisy -lc -lm -lnosys -ldaisysp -Wl,-Map=build/Blink.map,–cref -Wl,–gc-sections -o build/Blink.elf
/usr/local/Caskroom/gcc-arm-embedded/10-2020-q4-major/gcc-arm-none-eabi-10-2020-q4-major/bin/…/lib/gcc/arm-none-eabi/10.2.1/…/…/…/…/arm-none-eabi/bin/ld: cannot find -ldaisy
/usr/local/Caskroom/gcc-arm-embedded/10-2020-q4-major/gcc-arm-none-eabi-10-2020-q4-major/bin/…/lib/gcc/arm-none-eabi/10.2.1/…/…/…/…/arm-none-eabi/bin/ld: cannot find -ldaisysp
collect2: error: ld returned 1 exit status
make: *** [build/Blink.elf] Error 1
The terminal process “/bin/bash ‘-c’, ‘make clean; make’” terminated with exit code: 2.`

You can launch the correct palette with command-P on mac.
Then you should be able to run task build_all.

Side note:
Technically the Command + P window is the same as the command palette, but commands are prefaced with > in VS Code so the command palette has that in there by default. But if you just add or delete that character it’s the same box. Kinda weird imo.

Edit:
I’ve updated the wiki to make the Command-P thing clearer for macOS users. Thanks for the feedback!

1 Like

BTW, Another thing that would help with the doc for noobs like me is the “other half” of the STlink photo. There are two ways the STlink board can be oriented wrt the cable. I’m hoping this is correct? If not, please let me know!

Thanks for the quick reply, Ben. Yep, that worked like a charm. As you say, weird!! I notice that the menu item associated with Command + P is under “Go” and called “Go to file …” The joy of learning a new IDE is getting all these idiosyncrasies under one’s belt; that’s one down!

Found the answer in the 4th photo in this listing: https://www.amazon.com/STLINK-V3MINI-Stand-Alone-Debugging-Programming-microcontrollers/dp/B0854MC2JP

Blinky is now working!!

1 Like

Glad you were able to get it up and running!

As far as I can tell from the one I have here, there is only one way to connect the other cable to the ST-Link. The header is shrouded and keyed to prevent reverse insertion.

If that doesn’t seem to be the case on all ST-Links we can/should certainly add a note about that.

Yes, you’re right about the keying; I missed that.

Now that I have an existing project running, I want to create a new one. In the Arduino IDE, I would simply do a File->New. It’s not clear to me in VSCode how to perform the analogous operation. For now, I’ll simply copy the Blinky folder, rename, and use that as a starting point. But, I’m sure there’s a better way :grinning: If you would extend your “getting started” document to include “new project,” I’m sure it would be helpful to many. Thanks.

1 Like

If you do extend the documentation as I’ve suggested, please include a bit about file locations and path. For now, I’m going to keep all new code in DaisyExamples/seed so I don’t have to deal with path issues, but that’s certainly not convenient.

We are actually going to publish a “Creating a New Project” wiki page next! That will go over the process for both creating a new project within the DaisyExamples hierarchy, as well as setting up a dedicated repository for a custom project. I expect that we’ll have the first version of this page up sometime in the next week or so.

In the meantime, I can briefly summarize the process.

You can certainly do this manually, but you will have to find the references to your source file (i.e. Blink.cpp) within the JSON files in the .vscode/ folder, as well as the Makefile. (For users on Windows planning to use VisualStudio and the VisualGDB extension, they’d have to do this for the files in the vs/ folder as well.)

That said, DaisyExamples has a helper script written in python that can create new projects, or create copies of a project similar to what you want to create.

To create a new project:

python helper.py create seed/MyNewProject

Or to duplicate an existing one:

python helper.py --source seed/Blink copy seed/MyNewProject

For now the script assumes a folder structure that matches the DaisyExamples hierarchy, and has some issues if you try to use original name in the new name for a copied project (i.e. “Blink” and “NewBlink”).

2 Likes

Thanks very much, Stephen! I’m looking forward to getting roadmaps to automated procedures, and appreciate the interim how-to :grinning:

I’ve given it a try from a macOS terminal window. I did a cd to ~/Desktop/DaisyExamples, then ran the command: “python helper.py seed/DSC-Daisyplayer-1.1” The command failed as follows:

Traceback (most recent call last):
  File "helper.py", line 264, in <module>
    run()
  File "helper.py", line 228, in run
    op = args.operation.casefold()
AttributeError: 'str' object has no attribute 'casefold'

Some missing setup ??

Ben, I’d like to suggest extending your “Debugging” section to include MacOS. F5 on the Mac will change the brightness, but as far as I can tell is unable to bring up the debugging window :laughing:

Ah, it looks like you have an older version of python installed. The helper.py script is written using python 3. This is the standard version nowadays. Many things to still use the older version, though.

You may have both installed, it just might be invoked with python3 instead.

Also, on Mac keyboards the F5 key can be pressed by holding the Fn key (bottom left of the keyboard). I believe there is a user setting somewhere in System Preferences to swap whether the function keys or the media keys are the default state if you do want to change it.

But agreed, we should add a note about that to the instructions. :slight_smile:

Thanks for all the feedback!

1 Like

Using python3 AND adding the “create” keyword fixed my problems! Thanks again for your help, Stephen.

Oh perfect! Sorry, I read through your post quickly and missed that you didn’t include create either.

Glad that worked! We’ll be sure to note these type of things in the new guide as well!

Hello!

I’m on windows,

i’m not sure it installed properly since I did not had any installing actions happening after I run install.bat even though I runned it as and admin. I tried to simply uploaded a patch from the website and it’s not detecting the daisy. I see my computer sees it but it seems there is no proper driver installed (saw it from the peripherals pannel).

I’m a bit clueless and a bit of a noob, can you tell me whatsup, did i do the toolchain install wrong?

thanks!

The toolchain install more than likely ran correctly. It currently doesn’t output anything to the window (it’s on our agenda!).
Have you followed the Zadig Instructions?

Hi On a mac M1 here. I ran the Install.command

to make anything work, I had to add homebrew to the path.
Now If i run install.command again this is my output:

Installing DaisyToolchain
Upgrading Homebrew
Updated 1 tap (homebrew/cask).
==> Updated Casks
kitty                                                                     postman
Installing packages with Homebrew
Warning: Cask 'gcc-arm-embedded' is already installed.

To re-install gcc-arm-embedded, run:
  brew reinstall gcc-arm-embedded
Warning: open-ocd 0.11.0 is already installed and up-to-date.
To reinstall 0.11.0, run:
  brew reinstall open-ocd
Warning: dfu-util 0.10 is already installed and up-to-date.
To reinstall 0.10, run:
  brew reinstall dfu-util
find: /usr/local/Caskroom/gcc-arm-embedded: No such file or directory
find: /usr/local/Caskroom/gcc-arm-embedded: No such file or directory
Done

I try to use oopsy and i get:

oopsy-verbose: script start patch 48 /Users/assaf/Documents/Max 8/Packages/oopsy/examples/reverb.cpp
oopsy-verbose: stop success dictionary u888000697
oopsy-verbose: start success dictionary u752000698
oopsy-verbose: Target patch configured in path /Users/assaf/Documents/Max 8/Packages/oopsy/source/daisy.patch.json
oopsy-verbose: Building to /Users/assaf/Documents/Max 8/Packages/oopsy/source/build_reverb_patch
oopsy-verbose: Will upload from /Users/assaf/Documents/Max 8/Packages/oopsy/examples/reverb.cpp by writing to:
oopsy-verbose: 	/Users/assaf/Documents/Max 8/Packages/oopsy/source/build_reverb_patch/reverb_patch.cpp
oopsy-verbose: 	/Users/assaf/Documents/Max 8/Packages/oopsy/source/build_reverb_patch/Makefile
oopsy-verbose: 	/Users/assaf/Documents/Max 8/Packages/oopsy/source/build_reverb_patch/build/reverb.bin
oopsy-verbose: oopsy generated code
oopsy-verbose: generated code
oopsy-verbose: rm -fR build
oopsy-verbose: 
oopsy-verbose: /bin/sh: arm-none-eabi-gcc: command not found
oopsy-verbose: make: *** [build/system_stm32h7xx.o] Error 127
oopsy-verbose: make failed
oopsy-verbose: oopsy done
oopsy-verbose: done

Please help!