关于keil的进阶操作.烧录、flash回读、sct文件

一、魔术棒options for target

1、进阶操作

  • 一般 c/c++ 标签里会有自定义的宏,选芯片时,也会给出隐藏的宏。具体在”compiler control string“标签栏里会著名上述的两种自定义的不在代码的宏。
  • 关于keil的sct文件,如果在linker标签里取消选择“use memory layout from target dialog”选项,keil将会使用用户给出的sct文件,很多时候keil的默认sct时不够用的,这时候就要求程序员自己写sct文件, 网上一个写的比较好的文档->this<-
  • 关于魔术棒里的起始地址,点开target标签就可以看到”read/Only Memory Areas“标签栏,一个给片上的flash用:on-chip,一个给片外的flash用:off-chip,这两者在逻辑上仅仅地址有所区别。看回gd32,其片上的flash其实也是用的串口供内核寻址。sram也一样
  • CMSIS(微控制器软件接口标准, Cortex Microcontroller Software Interface Standard)是arm公司联合多个厂商整出来的一个标准接口,是硬件的抽象,目的在于降低开发的难度。通过供应商端设计一个同一的接口以此在产品换平台的时候不必再花费时间成本学习。不过目前这个东西只能说推进困难,虽然这两年情况有所改善,但仍然没有多少供应商买账加入。

2、基础操作

  • debug:
  • c99:
  • 编译器优化等级:
  • 驱动器件选择:
  • include 头文件:
  • bin文件输出方法:

二、烧录与在线debug

1、多文件烧录

  • 事实上多文件烧录有两种方法,将多个project工程编译后得出的hex文件用notepad++打开后,掐头去尾就能组装成一个分别烧录在flash的不同地址的一个hex文件,再用j-link烧录工具烧录到单片机。或者用keil打开想要烧录的多个工程,设置好偏移后就可以直接用download分别进行下载多个工程生成的hex文件,不过这种方式可能有一些隐藏的问题。因为想要让代码运行起来就需要进入debug界面,这绝对是不正常的,具体原因还在分析,不过作为一种便利的烧录方式不失为一种优秀的仅限研发阶段使用的方法。

2、mcu的flash回读

  • 只要使用j-link工具就可以回读烧录在mcu内的数据。关于keil的进阶操作.烧录、flash回读、sct文件_第1张图片

3、在线调试

  • keil的debug窗口非常的便利,可以看到汇编界面也可以看到外设的寄存器。也可以看到变量的实时变化(仅限全局或静态变量,所以有需要可以将一些需要实时查看的局部变量加一个static,用完删除)。也可以多关注一下sp指针跟pc指针,这在需要代码跳转的场景里很便利。关于keil的进阶操作.烧录、flash回读、sct文件_第2张图片
  • 当然debug里的其他功能,比如查看flash数据也有用。还有使用基于jtag的串口打印功能,都是调试利器。

你可能感兴趣的:(单片机,stm32,嵌入式硬件,mcu,arm)