0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在使用Keil过程中的一些不顺手的地方

TopSemic嵌入式 来源:TopSemic嵌入式 2023-05-23 09:14 次阅读

首先声明本人并非Keil黑,本期纯吐槽下在使用Keil过程中的一些不顺手的地方,也极有可能讲的并不全面,不客观,望见谅,轻拍,也欢迎评论区讨论。

单片机写固件的朋友都会用到IDE,目前比较常见的IDE有:

编译器名称 厂商
MDK ARM
IAR IAR
Eclipse+编译器(GCC) NXPMCUxpresso,TI的CCS,ST的TrueSTUDIO
Embedded Studio Segger

其中MDK和IAR应该是最流行的两个IDE,MDK的粉丝可能还更多一些。实际使用过程中,MDK简洁的目录结构,方便的调试操作以及精简的安装包让人赞叹,新手很容易上手,但是用的时间久了,特别是用过更多的IDE后,你会发现,MDK缺少一些核心的功能:

1. Load寄存器或Memory

各家IDE厂商都可以在View窗口看到芯片的寄存器或者Memory,以NXP提供的MCUXpresso SDK lwip_ping为例:

MDK:68fe39d8-f8fd-11ed-90ce-dac502259ad0.pngIAR:6915a6f4-f8fd-11ed-90ce-dac502259ad0.png

有时在调试过程中,经常会遇到这样一种情况,代码前一个版本没有问题,新加入一些功能后出现了bug,比如某个UART不工作了,通过比对源码却没有发现明显的问题,在这种情况下,在线仿真是一个比较好的手段,但是如果代码复杂,解决该问题依旧需要花费更大的精力。

但是使用IAR或者MCUXpresso这类的IDE,可以将MCU的寄存器保存成文件,这样我们就可以在正常代码运行时保存一份寄存器列表文件,运行异常代码保存另一份寄存器列表文件,通过对比这两个文件去寻找具体哪个寄存器的某个bit产生的影响,从而在代码中找到对应bit的处理方式去解决该问题。

6938ec68-f8fd-11ed-90ce-dac502259ad0.png

695123aa-f8fd-11ed-90ce-dac502259ad0.png

IAR不仅提供了寄存器的Save功能,包括Watch窗口的数据也可以保存到电脑中,有些用户做ADC的采样,也可以直接把数组数据导入Excel来画出信号曲线

69653192-f8fd-11ed-90ce-dac502259ad0.png

IAR还提供了Memory的Save功能,这样用户就可以对某块板子进行校准存参,然后把其Flash的参数数据导出烧写到其他板子

697e0e9c-f8fd-11ed-90ce-dac502259ad0.png

存储的类型可以是hex,s19或者bin

69971982-f8fd-11ed-90ce-dac502259ad0.png

Save的Memory也可以是寄存器外设地址

69a7767e-f8fd-11ed-90ce-dac502259ad0.png

2. RTOS插件

MDK默认的OS support仅支持RTX,对于第三方的RTOS并没有很好的支持,需要用户选择第三方的调试工具,比如Tracealyzer,而IAR默认提供了包括FreeRTOS, ThreadX, embOS在内的多种插件,虽然功能并没有Tracealyzer强大,但是至少能满足观察任务堆栈这样比较基础的需求。

69c11782-f8fd-11ed-90ce-dac502259ad0.png

3. Attach功能

本人09毕业时第一份工作使用的IDE是CW_Power_Architecture_V8.8,支持三种调试模式:

69db8414-f8fd-11ed-90ce-dac502259ad0.jpg

69f2acac-f8fd-11ed-90ce-dac502259ad0.jpg

69ff1cc6-f8fd-11ed-90ce-dac502259ad0.jpg

有时大家会遇到这样一种情况,产品无缘无故的死机,有时是产品硬件问题,但更多情况是软件问题,特别是异常非常难复现,而且有时还需要反复开关机才能出现,这就导致仿真器无法一直挂载去查找问题,attach的功能就是在不破坏MCU当前异常状态下的一种仿真手段。IAR默认也支持该功能:

6a15753e-f8fd-11ed-90ce-dac502259ad0.png

但是如果想在MDK中想要实现该功能就较为复杂,下面这个文章可以教你如何在MDK中实现该功能:

不复位MCU直接调试运行程序,让bug闻风丧胆

4. Pack install

最后讲讲这个Pack install,它本身没有啥可吐槽的,主要是服务器好像没有国内加速,每次用个新片子都要下载上个把小时,特别是电信用户,有时下到90%几断了真的很糟心,推荐使用工具下载离线包:

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5032

    浏览量

    117746
  • keil
    +关注

    关注

    68

    文章

    1196

    浏览量

    165331
  • MDK
    MDK
    +关注

    关注

    4

    文章

    208

    浏览量

    31773

原文标题:为什么我不喜欢使用Keil?

文章出处:【微信号:TopSemic,微信公众号:TopSemic嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    焊接过程中电流电压监测系统

    程序、单片机KEIL C语言程序我的论文以及PROTEOUS模拟电路图以及一些相关的资料。希望串口设计中有困难的朋友看看我的论文相应章节,虽然不专业但还是有自己的思考。
    发表于 06-25 08:04

    PCB光绘工艺过程中一些特殊问题处理-华强pcb

      PCB光绘工艺过程中一些特殊问题  ()Gerber文件生成焊盘中心孔:  在用普通方法处理Gerber文件生成中心孔的时候,存在着两种危险性:  1、当D码不匹配时,应该有孔的地方
    发表于 02-06 11:11

    代码执行过程中一些问题会影响运行时性能

    您好,我使用了以下资源:Device:dsPIC33EP64MC202Debugger:ICD3IDE:MPLAB X-v3.20Compiler:XC16-v1.25我的代码编译正常,但是xc.h include.为什么会发生这种情况?我的代码执行
    发表于 05-13 10:48

    使用WiFi的过程中总结的一些经验

    简述我们做项目开发,经常会用到WiFi,这次给大家分享下我使用WiFi的过程中总结的一些
    发表于 08-05 07:30

    STM32开发过程中一些心得及总结

    JTAG设备STM32 汇编汇编含C语言注释数字信号处理滤波IIR滤波器本人STM32开发过程中一些心得及总结。比较好的文章加密STM32MCU加密原理与方法 (很详细)驱动开发启动使用CCMRAM内...
    发表于 08-17 08:50

    STM32开发过程中遇到的一些问题

    STM32开发过程中遇到的一些问题,记录如下。Q1:下载后程序不运行,反复排查代码没问题。A1:栈空间太小,打开startup_stm32f10x_hd.s,把 Stack_Size EQU
    发表于 08-20 06:48

    记录STM32调试过程中遇到的一些

    记录STM32调试过程中遇到的一些坑假装这是个目录?零、 CubeMX1.发现新大陆一、串口与DMA1.配置与使用2.串口中断与DMA3.串口中断异常二、PWM三、FDCAN1.CAN波特率
    发表于 12-06 06:40

    介绍下机电暂态开源工具使用过程中一些体会

    )作者:一一数二三这个工具箱所有代码开源,且提供了图形化仿真界面,单元模块化,易于添加新的模块和仿真器件。介绍下我使用过程中一些体会:负荷使用ZIP模型,注入负荷电流到输电网络的过程中
    发表于 12-30 08:33

    keil编译过程中遇到的一些问题及解决方案汇总

    Keil编译问题汇总所学板子为32系列(Cortex-M0),keil编译过程中遇到的一些问题及解决方案:①…\FWLib\SRC\ETI
    发表于 01-11 08:18

    RTOS SDK编程环境搭建过程中一些步骤和问题总结

    自己搭建过程中一些步骤和问题总结,有不对的的地方欢迎指正。
    发表于 02-17 06:49

    分享下用AD画PCB过程中一些基础知识

      今天跟大家分享下用AD画PCB过程中一些基础知识。   完成后的PCB   通常原理图设计完成后,就开始PCB设计。有几个地方需要注意:   1.原理图设计完成后
    发表于 04-27 16:46

    一些测量和控制过程中为什么要使用射频定向耦合器呢?

    一些测量和控制过程中为什么要使用射频定向耦合器呢?
    发表于 05-16 17:29

    ST的LL库使用的过程中需要注意什么地方

    ST的LL库使用的过程中需要注意什么地方
    发表于 10-09 06:48

    使用Keil过程中一些不顺手地方

    首先声明本人并非Keil黑,本期纯吐槽下在使用Keil过程中一些不顺手地方,也极有可能讲的并
    的头像 发表于 05-26 10:53 1152次阅读

    吐槽下使用Keil过程中一些不顺手地方

    其中MDK和IAR应该是最流行的两个IDE,MDK的粉丝可能还更多一些
    的头像 发表于 05-23 09:10 822次阅读
    吐槽下使用<b class='flag-5'>Keil</b><b class='flag-5'>过程中一些</b><b class='flag-5'>不顺手</b>的<b class='flag-5'>地方</b>