树莓派pico C/C++ SDK开发环境准备
[toc] 限制于MicroPython的封装程度限制了一些性能以及自定义的发挥,因此要想发挥出芯片的最佳性能,C/C++开发才是正道,因此特在此记录下pico的C/C++开发环境配置。
环境准备
按照官方文档所说,在Linux环境下配置开发工具链只需要执行一个.sh文件,但是,配置环境的过程中需要从github上下载许多文件,而由于一些众所周知的原因,这个环境就能挫败不少刚要起步的同学,所以阅读这篇文章的同学可以选在晚上或者早上进行环境配置。速度可能会快一些。
Windows下的配置与Linux下的配置大概步骤差不多,但是工具的安装与SDK的下载需要手动来完成。
需要准备以下软件或者工具
- ARM GCC compiler
- CMake
- Build Tools for Visual Studio 2019
- Python3.9
- Git
以上所有软件在网上都有详细的安装步骤以及环境变量配置,这里就不多说。
其中Build Tools for Visual Studio 2019 在C/C++ 那个选项下,仔细找找。
开始
以上软件安装完毕后,请一定要检查一下环境变量配置是否正确。
找一个路径,新建一个文件夹以及子文件夹分类保存你的所有文件,不同用途软件以及SDK分类保存,否则一旦之后文件越存越多,就显得很乱甚至冲突,这是一个好习惯,建议文件路径全部用英文,之前因为路径含中文字符不少吃亏。
新建pico-sdk,文件夹下右键,“Git Bash Here”执行以下命令
git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update –init
cd ..
git clone -b master https://github.com/raspberrypi/pico-examples.git
每行依次执行,如果有因为网络问题产生错误,重试或者采取特殊手段。
完成之后,按照Windows > Visual Studio 2019 > Developer Command Prompt 找到并启动 Developer Command Prompt,或者直接搜索Developer Command Prompt,打开之后
code
enter执行,这会打开VSCode,切记这里一定要按照这个步骤来打开VSCode,不要直接从桌面打开。
安装CMakeTools扩展插件,然后点击齿轮进行配置。
找到Cmake:Configure Environment项,并增加一个PICO_SDK_PATH项,项目的值就为上面下载SDK时的路径。
找到Cmake:Generator项,加值’NMake Makefiles’ 。
至此完成,现在可以打开pico-examples,活动工具包(界面最下方那一行带锤子那个)需要选择 ‘GCC for arm-none-eabi’。生成后,则进行编译。编译完成的文件会被放在例子目录下的build目录下。注意,如果编译不能进行,则要尝试用Visual Studio 2019的Developer Command Prompt菜单来打开VS Code。
分析构建项目需要的文件
- 结构
- 工程名
- 工程源代码文件夹
- 源代码
- CMakeLists.txt
- CMakeLists.txt
- pico_sdk_import.cmake
- example_auto_set_url.cmake
build文件夹是构建项目时自动生成的。
-
与源代码同文件夹的CMakeList.txt
# 添加代码源文件,这里第一个my_blink建议与工程名一致 add_executable(my_blink my_blink.c ) # 添加需要的库文件,另一个CMakeLists.txt将需要的文件从SDK里复制来了 # pull in common dependencies target_link_libraries(my_blink pico_stdlib) # 生成hex文件 # create map/bin/hex file etc. pico_add_extra_outputs(my_blink) # 没看懂-_-.,一样改成工程名吧 # add url via pico_set_program_url example_auto_set_url(my_blink)
-
工程文件下的CMakeLists.txt
cmake_minimum_required(VERSION 3.12) # 添加需要的SDK # Pull in SDK (must be before project) include(pico_sdk_import.cmake) # 项目基本环境配置 project(blink C CXX ASM) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) if (PICO_SDK_VERSION_STRING VERSION_LESS "1.3.0") message(FATAL_ERROR "Raspberry Pi Pico SDK version 1.3.0 (or later) required. Your version is ${PICO_SDK_VERSION_STRING}") endif() set(PICO_EXAMPLES_PATH ${PROJECT_SOURCE_DIR}) # Initialize the SDK pico_sdk_init() include(example_auto_set_url.cmake) # 添加项目文件夹,就是保存代码文件的那个 # Add project add_subdirectory(my_blink) # Add hello world example # add_subdirectory(hello_world) add_compile_options(-Wall -Wno-format # int != int32_t as far as the compiler is concerned because gcc has int32_t as long int -Wno-unused-function # we have some for the docs that aren't called -Wno-maybe-uninitialized ) # 这里添加的是pico-examples里的所有例子,编写自己的文件夹时可以参考,但是就没必要添加进来了,一样注释掉了 # Hardware-specific examples in subdirectories: # add_subdirectory(adc) # add_subdirectory(clocks) #add_subdirectory(cmake) #add_subdirectory(divider) #add_subdirectory(dma) #add_subdirectory(flash) #add_subdirectory(gpio) #add_subdirectory(i2c) #add_subdirectory(interp) #add_subdirectory(multicore) #add_subdirectory(picoboard) #add_subdirectory(pio) #add_subdirectory(pwm) #add_subdirectory(reset) #add_subdirectory(rtc) #add_subdirectory(spi) #add_subdirectory(system) #add_subdirectory(timer) #add_subdirectory(uart) #add_subdirectory(usb) #add_subdirectory(watchdog)
重点部分就这两个文件,其他的.cmake文件则是执行的一些固定必需的操作,保留即可
好了,到这里环境配置以及工程组成讲解到此为止,用C/C++ 去压榨尽pico的性能吧。