查看: 5996|回复: 12

[经验] 兆易创新GD32 Colibri-F207ZE评估板体验纪实 (二、初识)

[复制链接]
  • TA的每日心情
    无聊
    2018-1-4 09:36
  • 签到天数: 58 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-12-28 22:13:34 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 okwh 于 2016-2-18 12:05 编辑

    1toc.png

    兆易创新GD32 Colibri-F207ZE评估板体验纪实 (二、初识) 
    25  okwh@https://www.cirmall.com/gd32f2mcu
       2015.12.28
    一、   初识 
          在当代人类已经积累了不少经验的基础上,实现可配置机器的基本硬件装置已经基本完善优化,目前几乎最普及的大概就是ARM系列嵌入控制器,其中风头最劲的就是Cortex系列。它们基本由两个部分构成,(1) 基于数字电路针对相应指令集设计出来的核心控制单元;(2)通过多级或和多层总线扩展连接、基于地址索引的的存储单元、各种周边设备(Peripherals)。当然这一切都需要一套基于方波的时间基准或者说计数计时基准---时钟子系统支持(晶振和PLL)。
          我们知道,人类创造的所有机器,其实都是一个基本运行模式,计算机也不例外,当然ARM这类芯片也不例外;
    这个基本模式就是两个部分;A) 顺序步骤,关联关系;B) 定时不定时的应急响应
          第一部分A的构成是:(1)准备,初始化;(2)入口,主循环,在主循环中通过条件判断转向处理各种情况;(3) 这些处理各种情况的处理方法步骤,就构成各种函数、函数集、模块、库等等这样面向各种目的、价值、应用、偏好的名字。
          第二部分B的构成是:(1) 计数器,计时器; (2) 中断,DMA,缓冲区,FIFO。
          通常,对于我等这样只知道如上一些少量硬件知识,工作重点为软件,想快速学习一些ARM类嵌入编程来完成某项工作的半懂不懂的人来说,了解框架是非课堂学习的第一步。

          综观各种MPU,从51系列、196系列到PIC…ARM,一路发展过来,或简或繁已经基本形成了一个约定俗成的三级框架结构,这就是 (1) 基础核心:包括时钟系统配置、基本常数定义、类型定义、宏定义、启动代码(main之前的初始化代码),目前Cortex ARM系列已对此形成初步规范—ARM Cortex 微控制器软件接口标准(CMSIS:Cortex Microcontroller SoftwareInterface Standard),它们由厂商的技术人员依照此标准建立和提供;有时称作系统库;对于这块GD32 Colibri-F207ZE板,它们在Colibri_GD32F207\firmware\GD32F20x_Firmware_Library\Firmware\CMSIS。 (2) 硬件(周边设备)驱动库,即各种功能(IO、Timer、SPI、I2C、UART、USB、CAN、NVIC……)的使用方法,通常以函数库形式提供,它们自己或和(1)合并称作芯片库或硬件驱动库。它们在Colibri_GD32F207\firmware\GD32F20x_Firmware_Library\Firmware \Peripherals。(3)电路板演示验证代码,它们是多数用户需要理解和借鉴的个性化代码(从maink开始吧),这些代码一般称作BSP――Board Support Package,有帮助文件GD32F20x_Firmware_Library.CHM可作参考查询。对于这块GD32 Colibri-F207ZE板,它们在GD32-Colibri-F207ZE-DEMO\Colibri_GD32F207\board \Colibri207。主程序则是在\Colibri_GD32F207\example。 参考用的许多例子主程序在GD32-Colibri-F207ZE-DEMO\Colibri_GD32F207\firmware \GD32F20x_Firmware_Library \Example。如果用户自己设计的电路,可以借鉴修改满足自己的需要。虽然目前已经以C语言为主进行开发,但是了解ARM Cortex的指令集至少调试时是必须的,偶尔对关键之处使用汇编代码也是也是点睛工作,虽然我目前对各个开发系统嵌入汇编的编译结果还甚感诡异。
           在芯片级、板级、用户工程代码这基本三级框架之外,还应该提到操作系统,各种实时操作系统、多任务操作系统、甚至小型Linux、Andriod等等,根据硬件能力的强大程度选用。通常我们不使用操作系统,以主循环判断+各种定时不定时中断足以对付实际工作。操作系统往往是在有用户界面(如显示、输入、触摸)、多种不同响应处理速度的事情并存等等才有需要,它的作用其实就是事情繁杂时以一种基于事件和任务的方式进行线程分配组合。越是实时性要求高,越不用操作系统,要处理大量慢的事情才最需要操作系统。如何权衡取决于面对的工作目的和各种约束条件。
          另外,需要时还可能有专用支持库,如图形用户界面库emWin、DSP库、网络协议库LWIP、USB协议库等。
          总之,软硬件的世界,一切都是在时间空间排列的二进制,一切可以是代码也可以是数据,关键索引是地址

          现在,来看看我期待的GD32 Colibri-F207ZE初识过程。
    (1) 启动代码
          启动代码在E:\TJWHDHX\GD32\Prj\GD32-Colibri-F207ZE-DEMO \Colibri_GD32F207\firmware\GD32F20x_Firmware_Library\Firmware的startup_gd32f20x_cl.s。
    这就是任何MPU开天辟地的地方,它就是main之前的代码(就像是PC机通电后进入操作系统之前的硬件自检代码),基本上就是用汇编写出,包含三部分内容:栈设置、堆设置、中断向量表。栈是函数调用过程保存参数和返回等信息用的先进后出结构,堆则是动态分配变量(指针)内存的地方,有关详细含义请参考C语言专业书籍。而中断向量表吗,就是中断向量表,这是任何计算机运行的基本核心机制,值得寻找专业书籍认真理解。
    其中Reset_Handler就是加电后,MPU开始执行代码的位置。
          在那里,可以看到
         LDR     R0, =SystemInit
         BLX     R0
         LDR     R0, =__main
            BX      R0
          这其实就是所有计算机开始的核心机密,就是顺序执行了两个函数,一个是SystemInit, 它在Colibri_GD32F207\firmware\GD32F20x_Firmware_Library \Firmware\CMSIS的system_gd32f20x.c,基本上它就干一件事---配置时钟---二进制工作的时间基准。当然你若想它干别的事情,就是你的自由了,总之,它就是用来初始化的。          然后就是main了,就是C语言程序中都有且只有一个的主程序入口了。

    (2) main
          任何C语言程序中都有且只有这么一个的主程序入口。main那里其实就是一个永远的、只要有电就生命不息兢兢业业的死循环!!!!(顶多就在这循环中通过条件判断调用函数转向处理各种情况,处理完了还来循环,那些判断条件就称作flag)。
      现在的MPU都是可配置,就是说用到什么用什么,不用的是可以省电的,所以通常在死循环前,进行需要用到的各种周边设备的配置准备,就是各种Setup、Init什么的了。
           在这个板的例子中,提供了蜂鸣器、按键、led、系统滴答计数器、串口五个,在那里可以看到那个大名鼎鼎的死循环while(1)。
           有趣的是这五个例子在同一个工程中,通过example.h中的EVB_EXAMPLE常数定义,在五个c代码文件用
    #if (EVB_EXAMPLE == XXXXXX_EXAMPLE)
    ………………………..
    #endif
    来实现选择编译,方便学习。
          通常,展示板的例子都非常简单,一次只针对一个单独的功能进行练习。而一个真正的产品则是需要合理的组织各种函数,配合设计合理的flag,再加上精练的定时不定时中断来完成。

    (3) 附言
           帖中复述了本人使用此板的所思所想,由于我只是从其他行业客串来这方面的外行人,并没有扎实的科班电子和计算机基础,一切从实际需要出发,非为应对知识考试,所以遣词用句可能不合专业规范,概念表达也许不够严格清晰,多多包涵!


    本系列:
    兆易创新GD32 Colibri-F207ZE评估板体验纪实 (一、邂逅)
    兆易创新GD32 Colibri-F207ZE评估板体验纪实 (二、初识)
    兆易创新GD32 Colibri-F207ZE评估板体验纪实 (三、定计)
    兆易创新GD32 Colibri-F207ZE评估板体验纪实 (四、筑基)
    兆易创新GD32 Colibri-F207ZE评估板体验纪实 (五、曙光)
    兆易创新GD32 Colibri-F207ZE评估板体验纪实 (六、揭秘)
    兆易创新GD32 Colibri-F207ZE评估板体验纪实 (七、回眸)


    回复

    使用道具 举报

  • TA的每日心情

    2021-12-7 12:35
  • 签到天数: 1354 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-12-28 22:58:47 | 显示全部楼层
    好产品,参考和学习了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-9-28 10:10
  • 签到天数: 1018 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-12-29 09:12:14 | 显示全部楼层
    非常不错!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-1-4 08:50
  • 签到天数: 50 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2015-12-29 14:07:58 | 显示全部楼层
    支持一个                     
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-12-29 19:30:58 | 显示全部楼层
    学习下               
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-1-4 09:36
  • 签到天数: 58 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2015-12-31 20:19:28 | 显示全部楼层
    祝各位新年快乐! 祝论坛蒸蒸日上!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-1-4 09:36
  • 签到天数: 58 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2016-1-6 21:45:24 | 显示全部楼层
    本帖最后由 okwh 于 2016-1-12 20:36 编辑

    抱歉,广州出差,本周无法有新内容提供了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-1-4 09:36
  • 签到天数: 58 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2016-1-12 21:21:21 | 显示全部楼层
    补上出差的缺失,欢迎指点!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-12-26 22:31
  • 签到天数: 102 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2016-1-15 00:07:35 | 显示全部楼层
    楼主版权意识很好啊 都是图片 .想copy也不成 哈哈
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-1-4 09:36
  • 签到天数: 58 天

    连续签到: 1 天

    [LV.5]常住居民I

     楼主| 发表于 2016-1-15 21:15:15 | 显示全部楼层
    本帖最后由 okwh 于 2016-1-15 21:18 编辑
    harvardx 发表于 2016-1-15 00:07
    楼主版权意识很好啊 都是图片 .想copy也不成 哈哈

    只有 说收到板子的第一贴  是图片(那也没什么需要copy的), 其他不是图片, 不知你说什么版权指什么??
    我是首次使用ARM片的人,还不这么懂,写的基本都是自己的心得体会过程,这没有什么技术机密版权的。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-3-28 18:06 , Processed in 0.229216 second(s), 34 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.