My Second ModusToolbox 2.0 Project | Cypress Semiconductor
My Second ModusToolbox 2.0 Project
With any luck, my last two blogs - My First ModusToolbox Project and Re-Targeting My ModusToolbox 2.0 Project - gave you some insight into the anatomy of ModusToolbox projects. The most important learning from them was not really to get used to the git clone and make commands, rather to understand where the files in a project come from and how to manage them. That said, I have to admit, it's a lot to keep in your brain. Let's face it, we've all got more important things to dedicate memory cells to!
Let's look at some easier methods of creating projects. In your ~/ModusToolbox/tools_2.0/project-creator folder there are two executables which automate the process for you.
As you might have guessed, this is the command-line tool. I am going to pretend to be a real engineer for a moment and advise you to start by running the command with the "--help" option to get started. Obviously, being lazy and obstinate, I did not do this, but it would have saved me some time so I'll ask you practice what I preach, not what I do! It will tell you about the --board-id, --app-id and --user-app-name options, which I'll use in a moment. But there is also the fiendishly clever --list-apps option which tells you all the GitHub-hosted projects that are compatible with a kit. Here are the options for the WIFI-Bluetooth kit.
$ ~/ModusToolbox/tools_2.0/project-creator/project-creator-cli.exe --list-apps CY8CKIT-062-WIFI-BT Getting manifest... super-manifest: https://github.com/cypresssemiconductorco/mtb-super-manifest/raw/v2.X/mtb-super-manifest.xml Successfully acquired BSP/Application information from remote server. List of template applications supported by the board "CY8CKIT-062-WIFI-BT": mtb-example-psoc6-capsense-buttons-slider mtb-example-psoc6-capsense-buttons-slider-freertos mtb-example-psoc6-crypto-aes mtb-example-psoc6-crypto-sha mtb-example-psoc6-crypto-trng mtb-example-psoc6-empty-app mtb-example-psoc6-emulated-eeprom mtb-example-psoc6-emwin-eink mtb-example-psoc6-emwin-oled mtb-example-psoc6-fault-handling mtb-example-psoc6-gpio-interrupt mtb-example-psoc6-hello-world mtb-example-psoc6-i2c-master mtb-example-psoc6-i2c-master-ezi2c-slave mtb-example-psoc6-i2c-slave-callback mtb-example-psoc6-i2s mtb-example-psoc6-mcwdt mtb-example-psoc6-pdm-pcm mtb-example-psoc6-pdm-to-i2s mtb-example-psoc6-qspi-readwrite mtb-example-psoc6-qspi-readwrite-sfdp mtb-example-psoc6-rtc-basics mtb-example-psoc6-smartio-ramping-led mtb-example-psoc6-spi-master mtb-example-psoc6-spi-master-dma mtb-example-psoc6-switching-power-modes mtb-example-psoc6-tcpwm-square-wave mtb-example-psoc6-uart-transmit-receive mtb-example-psoc6-uart-transmit-receive-dma mtb-example-psoc6-usb-hidmtb-example-psoc6-wdt
Nice! This is a convenient way to see the examples without trawling around https://github.com/cypresssemiconductorco. I am going to try the tcpwm-square-wave example. I shall call my project "square-wave" and put it into the folder called "square" using those options we saw in the help output. Here goes...
$ ~/ModusToolbox/tools_2.0/project-creator/project-creator-cli.exe --board-id CY8CKIT-062-WIFI-BT --app-id mtb-example-psoc6-tcpwm-square-wave --user-app-name square_wave Getting manifest... super-manifest: https://github.com/cypresssemiconductorco/mtb-super-manifest/raw/v2.X/mtb-super-manifest.xml Successfully acquired BSP/Application information from remote server. ============================================================================== = Cloning 'mtb-example-psoc6-tcpwm-square-wave' = ============================================================================== Cloning https://github.com/cypresssemiconductorco/mtb-example-psoc6-tcpwm-square-wave into C:/Users/yfs directory... Cloning into 'square_wave'... remote: Enumerating objects: 13, done. remote: Counting objects: 100% (13/13), done. remote: Compressing objects: 100% (10/10), done. remote: Total 13 (delta 0), reused 10 (delta 0), pack-reused 0 Unpacking objects: 100% (13/13), done. Cheking out latest-v1.X... Note: checking out 'latest-v1.X'. 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 17f92ae Upload mtb-example-psoc6-tcpwm-square-wave 220.127.116.11 ============================================================================== = Creating 'TARGET_CY8CKIT-062-WIFI-BT.lib' file(s) = ============================================================================== ============================================================================== = Updating Makefile for 'square_wave' = ============================================================================== Tools Directory: C:/Users/yfs/ModusToolbox/tools_2.0 Initializing import: mtb-example-psoc6-tcpwm-square-wave ============================================================================== = Importing libraries = ============================================================================== Git is git version 2.17.0, found at /usr/bin/git Searching application directories... Application directories search complete. Searching libs directory... Found 2 file(s) Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT.lib Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CPROTO-062-4343W.lib Libraries were processed. Re-evaluating libs directory... Found 14 file(s) Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/capsense.lib Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/core-lib.lib Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/psoc6cm0p.lib Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/psoc6hal.lib Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/psoc6make.lib Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/psoc6pdl.lib Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CPROTO-062-4343W/libs/capsense.lib Library "capsense.lib" was already processed at C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/capsense.lib. Skipping current reference... Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CPROTO-062-4343W/libs/core-lib.lib Library "core-lib.lib" was already processed at C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/core-lib.lib. Skipping current reference... Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CPROTO-062-4343W/libs/psoc6cm0p.lib Library "psoc6cm0p.lib" was already processed at C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/psoc6cm0p.lib. Skipping current reference... Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CPROTO-062-4343W/libs/psoc6hal.lib Library "psoc6hal.lib" was already processed at C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/psoc6hal.lib. Skipping current reference... Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CPROTO-062-4343W/libs/psoc6make.lib Library "psoc6make.lib" was already processed at C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/psoc6make.lib. Skipping current reference... Processing file C:/Users/yfs/square_wave/libs/TARGET_CY8CPROTO-062-4343W/libs/psoc6pdl.lib Library "psoc6pdl.lib" was already processed at C:/Users/yfs/square_wave/libs/TARGET_CY8CKIT-062-WIFI-BT/libs/psoc6pdl.lib. Skipping current reference... Libraries were processed. Re-evaluating libs directory... Found 14 file(s) libs directory search complete. ============================================================================== = Import complete = ============================================================================== Successfully created "square_wave" application.
In one command I have created a new project, added a BSP, set it as the default for build and program, and pulled in all firmware libraries needed to build the application. Just plugging in the kit and running "make program" is all it takes to build and program the board.
If the above is still too much typing then run the non-CLI executable -~/ModusToolbox/tools_2.0/project-creator/project-creator.exe. You can start it from Windows Explorer or launch from the command line with "~/ModusToolbox/tools_2.0/project-creator/project-creator.exe &". Note that I do it in the background with the ampersand at the end of the line, so I can still use the shell.
The GUI tool (why is it not spelled "gooey"?) starts by grabbing a bunch of information from the mtb-super-manifest.xml file on GitHub (I'll write more about this file, and creating your own manifests, in a future blog).
Just press "Next>" to get to the good stuff.
Now pick your kit.
Choose the application and give it a name and a sensible location.
You then get a summary of what you ordered. Press "Create" and let the tool assemble all the parts. You'll recognize all the GitHub and make output in the dialog. Once it is all done you just "make program" in the shell to get the application onto the kit (you may want to edit main.c to change the value of PWM_FREQUENCY to make sure your new program is actually running rather than the old one!).
Next time, I shall show you how to add BSPs and firmware libraries to a project using another helpful tool, the library-manager.