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%几断了真的很糟心,推荐使用工具下载离线包:

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

    关注

    31

    文章

    5308

    浏览量

    119975
  • keil
    +关注

    关注

    68

    文章

    1211

    浏览量

    166659
  • MDK
    MDK
    +关注

    关注

    4

    文章

    209

    浏览量

    32032

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

    关于PCB 生产过程中铜面防氧化的一些探讨

    关于PCB 生产过程中铜面防氧化的一些探讨   摘要:本文主要论述了PCB 生产过程中对铜面氧化的防范手段,探讨引用种新
    发表于 11-17 08:52 3954次阅读

    绘制原理图和PCB图的过程中常遇到的一些问题

    绘制原理图和PCB图的过程中常遇到的一些问题.doc
    发表于 07-12 10:42 0次下载

    PCB设计过程中一些问题和一些技巧分享

    PCB设计过程中一些问题和一些技巧分享 1、如何利用层次图绘制电路原理图? 答:层次原理是种模块化的设计方法,设计者可以将设计的系统划分为多个子系统,子系统又可以划分为若干个功能模
    发表于 09-07 20:08 17次下载

    总结使用 Vim 的过程中不得不了解的一些指令和注意事项

    Vim 是个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持续分享个前端工作者不得不安装的一些
    的头像 发表于 12-27 16:44 4801次阅读

    光端机使用过程中碰到的一些问题

    光端机,就是光信号传输的终端设备,我们使用的过程中难免会碰到一些问题,接下来杭州飞畅的小编为大家详细列举了光端机使用过程中遇到的
    的头像 发表于 12-25 14:54 1050次阅读

    STM32遇到的问题--关于串口的一些常见问题

    单片机的开发过程中,最常用的外设就是串口了,是用来进行bug纠错、log输出的常用工具,也是用来与外部通讯的常见协议之。 但是使用串口的过程中
    发表于 12-24 18:51 2次下载
    STM32<b class='flag-5'>中</b>遇到的问题--关于串口的<b class='flag-5'>一些</b>常见问题

    Verilog设计过程中一些经验与知识点

     “ 本文主要分享了Verilog设计过程中一些经验与知识点,主要包括块语句、阻塞赋值和非阻塞赋值 以及结构说明语句(initial, always, task, function)。”
    的头像 发表于 03-15 12:19 2326次阅读

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

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

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

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