查看: 7840|回复: 13

[经验] 《GD32-Colibri-F207ZE开发板玩家笔记》之从零创建工程模板

  [复制链接]
  • TA的每日心情
    奋斗
    2018-10-29 22:48
  • 签到天数: 731 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2016-1-4 22:00:50 | 显示全部楼层 |阅读模式
    分享到:
    2.1 搭建开发环境
    基于Windows 7 Professional 64-bit Operation System搭建开发环境。
    基本开发工具
    1. Keil v5.17.0
    之前电脑上装的是v5.12.0的版本,但是不能识别GD32的芯片支持包,所以就重新从Keil的官网上下载了最新版。在交流群里听其他网友提到过,v5.13.0之后的版本经过验证都是可以用的。
    2. GD32芯片支持包
    Keil.GD32F2xx_DFP.1.0.0.pack

    figure_2_1.png

    图 2-1
    当试着新建工程选择芯片型号时,在“工程属性”对话框中能识别出GigaDevice系列MCU即可。针对GD32-Colibri-F207ZE开发板上使用的主控MCU,此处应当选择“GD32F207ZE”。
    3. CMSIS-DAP调试器驱动程序
    这个驱动是配合开发板上的GDLink使用的。调试工程时,在相应的位置选择“CMSIS-DAP”即可。感觉这个调试器就是开源的CMSIS-DAP在GD32芯片上的一个移植。
    首次将GDLink通过USB接入电脑时,它被识别成“USB输入设备”,不需要额外安装驱动程序。
    figure_2_2.png

    图 2-2
    在Windows的设备管理器界面中查看当前接入系统的USB设备,未列识别出特别名称的设备。估计是被识别成了“USB Composite Device”。
    figure_2_3.png

    图 2-3
    不用担心,这是正常情况,后续步骤在验证下载功能时是可以正常调试和下载程序的。
    4. CH340 USB转TTL串口设备驱动
    开发板上集成了CH340G芯片,可以将USB通信同TTL串口通信相互转换,方便通过USB线缆实现串口通信。将开发板的USB串口接入电脑的USB口之后,在Windows设备管理器中可以识别出来设备“USB-SERIAL CH340 (COMn)”。在我的电脑上识别出来的是“COM5”,如图2-4所示。
    figure_2_4.png

    图 2-4
    5. Tera Term 串口终端软件。
    Tera Term跟超级终端的界面类似,还支持ssh连接。用Tera Term建立串口连接时可以自动检测到当前系统中识别出来的串口,使用非常方便。Tera Term的综合功能要比各种“串口调试工具”小软件的功能强大很多。
    进阶开发工具
    1. Git代码版本管理工具
    同时使用了http://git.oschina.net网站提供的免费Git仓库,用于保存开发过程中的代码,并记录每次的代码更新日志。
    我创建的git仓库地址是:
    2. Sublime Test 3
    Sublime Test一款非常优秀的代码编辑软件。除了代码编辑软件的高亮、智能缩进等常规功能之外,Sublime Test的代码显示主题及代码预览也是非常吸引程序员眼球的功能,所以,我形容她为一款“销魂”的代码编辑器。
    2.2 获取必要的源代码
            Keil的插件包里提供了相当充分的代码,帮助用户完成从芯片上电到进入应用程序入口main函数之前的系统初始化工作,这其中包含了中断向量表的初始化和基本时钟系统的初始化等内容。当然,还有最重要的芯片寄存器头文件,也是在Keil的插件包中提供的。如表2-1所示。
    表2-1.PNG

    另外,还可以从GD官方提供的固件库中提取GD32芯片中各模块的驱动程序,复用已有的固件库可以免去阅读参考手册、编写片上模块驱动程序的麻烦。如表2-2所示。
    表2-2.PNG


    2.3 创建代码树
    创建代码文件组织结构
    创建根目录为“MyFwSDK_GD32F207”,用于保存整个项目的代码。在目录下根据表2-3描述创建工程代码树。
    表2-3.PNG


    在基础文件组织结构中,还可以根据需要在根目录中创建“doc_tool”子目录专门存放工程文档、小工具之类的文件,还可以创建“component”子目录存放与底层无关的软件组件模块,例如RTOS,扩展外设驱动程序等等。
    将固件库布中的驱动程序打包成库
    GD官方提供了固件库,为每个模块单独设计了接口头文件和代码实现文件,例如ADC模块对应的gd32f20x_adc.h和gd32f20x_adc.c文件。然而,固件库里包含的模块比较多,对应每次需要添加到工程中的驱动文件也就比较多,在每个应用工程中每次重新编译时,都要重新编译这些文件,比较浪费时间。因此,此处将固件库中的所有模块的驱动程序预先编译,以库的方式封装起来,这样在应用工程中,只要包含这个预编译库,就可以跳过这些驱动程序的编译过程直接链接。另外,由于编译器具有“不使用就不链接”的优化策略,应用程序只会将用到的函数链接到最终的可执行映像文件中,不用担心由于使用了库而使得可执行映像文件过大。
    打包库的具体过程如下:
    步骤一:配置库工程属性
    在代码目录结构的“\driver\Peripherals\lib”目录下创建工程“GD32FwLib”,并在其“Option”对话框中的“Output”标签页中勾选“Create Library”选项,设定编译工程之后生成的库文件。如图2-5所示。
    figure_2_5.png

    图 2-5
    在“C/C++”标签页下添加驱动头文件的搜索路径,如图2-6所示。
    figure_2_6.png

    图 2-6
    其它工程配置参考模板应用工程即可。
    步骤二:向库工程中添加驱动程序文件
    将GD官方固件库提供的驱动代码实现文件(*.c)文件全部添加到库工程中,如图2-7所示。
    figure_2_7.png

    图 2-7

    步骤三:编译库工程
    同编译普通的应用工程一样,启动库工程的编译过程,开始编译各个驱动代码文件。

    *** Using Compiler 'V5.06 update 1 (build 61)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
    Rebuild target 'GD32FwLib'
    compiling gd32f20x_can.c...
    compiling gd32f20x_adc.c...
    compiling gd32f20x_bkp.c...
    compiling gd32f20x_cryp_aes.c...
    compiling gd32f20x_crc.c...
    compiling gd32f20x_cryp.c...
    compiling gd32f20x_cryp_tdes.c...
    compiling gd32f20x_cryp_des.c...
    compiling gd32f20x_dac.c...
    compiling gd32f20x_dci.c...
    compiling gd32f20x_dma.c...
    compiling gd32f20x_eth.c...
    compiling gd32f20x_exmc.c...
    compiling gd32f20x_exti.c...
    compiling gd32f20x_fmc.c...
    compiling gd32f20x_gpio.c...
    compiling gd32f20x_hash.c...
    compiling gd32f20x_hash_md5.c...
    compiling gd32f20x_hash_sha.c...
    compiling gd32f20x_i2c.c...
    compiling gd32f20x_iwdg.c...
    compiling gd32f20x_mcudbg.c...
    compiling gd32f20x_misc.c...
    compiling gd32f20x_pwr.c...
    compiling gd32f20x_rcc.c...
    compiling gd32f20x_rtc.c...
    compiling gd32f20x_rng.c...
    compiling gd32f20x_sdio.c...
    compiling gd32f20x_spi.c...
    compiling gd32f20x_timer.c...
    compiling gd32f20x_tldi.c...
    compiling gd32f20x_usart.c...
    compiling gd32f20x_wwdg.c...
    creating Library...
    ".\output\GD32FwLib.lib" - 0 Error(s), 0 Warning(s).
    Build Time Elapsed:  00:00:13

    最后在“\driver\Peripherals\lib\output”目录下输出了打包好的库文件“GD32FwLib.lib”。当在应用工程中包含了这个库文件时,就同包含了所有驱动程序文件是等价的。有心的看官会发现,在build日志有最后一句“Build Time Elapsed:  00:00:13”,说明编译这些驱动文件足足用了13秒,以后再编译包含驱动库文件的应用工程时,每次都可以不用再花这13秒重新编译固件库的代码文件了。
    2.4 创建模板工程
    在模板工程中,除了在main函数中没有具体的应用之外,将包含一个应用工程的所有必备要素,包括:启动代码文件、固件库等。同时,在模板工程中将配置头文件的搜索路径及配置调试器选项等。最终验证模板工程顺利编译、下载。
    创建模板工程的意义在于,之后再创建样例程序及实际开发的应用工程时,可直接复制模板工程作为基础进行应用开发,避免了每次新建工程需要重新添加文件、配置工程属性及验证相关配置的正确性等重复操作,减少不必要的时间浪费。
    创建Keil工程组织模板
    在代码树中的目录“\example\00_Template\build”下创建Keil工程“MyProject”。此处使用“MyProject”作为工程名是考虑到简化工程内部的配置及对其它工程的通用性,若是要区分不同工程,可在复制“00_Template”工程目录之后,修改该目录名为指定的工程名即可。
    在模板工程“MyProject”内部建立工程组织结构,如图2-8所示。
    figure_2_8.png

    图2-8
    特别注意,模板工程的包含路径中应包含必要的目录。具体配置如图2-9所示。
    figure_2_9.png

    图 2-9
    启动编译过程,验证模板工程可编译无误。
    *** Using Compiler 'V5.06 update 1 (build 61)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
    Build target 'MyProject'
    compiling system_gd32f20x.c...
    compiling main.c...
    linking...
    Program Size: Code=520 RO-data=440 RW-data=0 ZI-data=1024  
    ".\output\MyProject.axf" - 0 Error(s), 0 Warning(s).
    Build Time Elapsed:  00:00:01

    配置下载属性
    将开发板接入到电脑上,然后在工程选项对话框的“Debug”标签页中选择使用“CMSIS-DAP Debugger”调试器。此处对应于开发板的GDLink调试器。如图2-10所示。
    figure_2_10.png

    图2-10
    轻戳“Settings”按钮,在弹出的“Cortex-M Target Driver”对话框中,在“SW Device”一栏中就可以看到识别出来的单片机内核的设备号了。同时还要确保调试器属性被正确设置。具体见图2-11所示。
    figure_2_11.png

    图 2-11
    配置要调试属性后,返回Keil工程主界面,触发下载过程。
    Load "D:\\MyCode\\GitRepo\\MyFwSDK_GD32F207\\example\\00_Template\\build\\output\\MyProject.axf"
    Erase Done.
    Programming Done.
    Verify OK.
    Application running ...
    Flash Load finished at 23:26:20

    验证样例工程可以将编译生成的“MyProject.axf”映像文件顺利下载到开发板上。
    另外,也可以启用在线调试功能,验证程序是否能够正确运行。
    figure_2_12.png

    图2-12
    在图2-12中可以看出,在系统启动后,顺利进入main函数。
    至此,模板工程创建完毕。后续工作中在需要创建新工程时,复制此模板工程作为基础开发框架,然后根据应用的具体需要添加代码。

    建议从git reposity上克隆最新代码,这里也提供了一个包含模板工程、UART_HelloWorld和GPIO_BlinkyLED工程的mini代码包:
    MyFwSDK_GD32F207_20160104.7z (421.44 KB, 下载次数: 57)

    评分

    参与人数 1声望 +3 与非币 +20 收起 理由
    loveeeboard + 3 + 20 很给力!

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-10-29 22:48
  • 签到天数: 731 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2016-1-4 22:03:31 | 显示全部楼层
    一下子码了这么多字,都快虚脱了,管理员给加个精华吧,再赏点金币就更好啦。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-23 13:44
  • 签到天数: 243 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2016-1-5 09:26:57 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-5-27 15:41
  • 签到天数: 868 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-1-5 12:46:11 | 显示全部楼层
    好详细                     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-4-5 15:06
  • 签到天数: 23 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2016-1-5 19:57:58 | 显示全部楼层
                                     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-1-13 09:11
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2016-1-6 09:29:41 | 显示全部楼层
    不错,等板子到了研究一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-11-19 16:39
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-1-6 09:41:12 | 显示全部楼层
    分享的不错,可以将文章一并发到经验频道,获取双重奖励哟http://jingyan.eeboard.com/
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-3-13 10:11
  • 签到天数: 1088 天

    连续签到: 2 天

    [LV.10]以坛为家III

    发表于 2016-1-7 12:01:53 | 显示全部楼层
    好文章。顶。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-1-7 23:16
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2016-1-7 23:11:41 | 显示全部楼层
    ,非常详细,以前都是从demo里修改的,还从来没自己从头创建过工程,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-1-7 23:16
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2016-1-7 23:18:15 | 显示全部楼层
    gezhuag 发表于 2016-1-7 23:11
    ,非常详细,以前都是从demo里修改的,还从来没自己从头创建过工程, ...

    我地 keil是5.11版本的,用gd光盘里的库,直接安装就可以用了的,
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-26 15:18 , Processed in 0.215103 second(s), 34 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.