本文主要介绍如何在 vscode 上利用 eide 插件开发 avr mcu
安装编译器:
WinAVR-20100110
WinAVR-20100110-install.exe
检查编译器:
avr-gcc -v
安装 avrdude 烧录工具:https://github.com/mariusgreuel/avrdude/releases/tag/v6.3.1.1-windows
avrdude
一切就绪,现在即可开始新建项目了
本示例直接从 github 上随便下载一个 avr 项目的源码,然后进行创建 本处我们使用的 avr 示例源码仓库为:https://github.com/hexagon5un/AVR-Programming
下载仓库:https://github.com/hexagon5un/AVR-Programming
打开其中的 helloworld 项目: Chapter05_Serial-IO\serialLoopback
Chapter05_Serial-IO\serialLoopback
新建项目:打开 eide,新建一个 AnyGcc 空项目,将项目新建在上述的目录内,然后打开新建的 eide 项目,删除默认生成的 src/main.c
AnyGcc
src/main.c
配置项目的编译器:打开项目根目录下的 xxx.code-workspace 工作区设置,设置编译器前缀为:avr-,完成后重启 vscode 即可
xxx.code-workspace
avr-
添加源文件:右键 Project Resource->Add File 即可添加文件
Project Resource
Add File
配置项目:打开项目根目录下的 Makefile, 将 Makefile 中的编译参数,包含目录,宏定义 等配置添加到 eide 项目的对应位置
项目包含目录,宏定义:
# Header Include Path IncludeFolders: # - ./Your/Include/Folder/Path - ../../AVR-Programming-Library # Library Search Path LibraryFolders: # - ./Your/Library/Path # Preprocessor Definitions Defines: # - TEST=1 - F_CPU=1000000UL - BAUD=9600UL
编译配置 (debug.options.any.gcc.json):
debug.options.any.gcc.json
{ "version": 1, "beforeBuildTasks": [], "afterBuildTasks": [ { "name": "make hex", "disable": false, "abortAfterFailed": false, "command": "\"${CompilerFolder}/${CompilerPrefix}objcopy\" -j .text -j .data -O ihex \"${OutDir}/${TargetName}.elf\" \"${OutDir}/${TargetName}.hex\"" }, { "name": "make eeprom", "disable": false, "abortAfterFailed": false, "command": "\"${CompilerFolder}/${CompilerPrefix}objcopy\" -j .eeprom --change-section-lma .eeprom=0 -O ihex \"${OutDir}/${TargetName}.elf\" \"${OutDir}/${TargetName}.eeprom\"" } ], "global": { "misc-control": "-mmcu=atmega168p" }, "c/cpp-compiler": { "one-elf-section-per-function": true, "one-elf-section-per-data": true, "C_FLAGS": "-c -xc -Os -g -std=gnu99 -Wall -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums", "CXX_FLAGS": "-c -xc++" }, "asm-compiler": { "ASM_FLAGS": "-c" }, "linker": { "output-format": "elf", "remove-unused-input-sections": true } }
由于本项目不需要使用链接脚本,因此直接将 链接脚本选项置空 即可
一切就绪后即可开始编译
将烧录器切换至 Shell 模式
填入烧录命令:avrdude -c usbtiny -p m168 -U flash:w:./build/Debug/serialLoopback.hex
avrdude -c usbtiny -p m168 -U flash:w:./build/Debug/serialLoopback.hex
按下烧录按钮即可烧录程序
本文中的项目压缩包 (项目位置:./Chapter05_Serial-IO/serialLoopback):
./Chapter05_Serial-IO/serialLoopback
不如開個經驗分享主題,這些都放在經驗分享裏
请问为什么按照教程编译成功后只能生成elf和lib,而不能生成hex文件呢