- 博客(24)
- 收藏
- 关注
转载 局部变量要不要赋初始值?
很多C语言编码规范里面都会建议局部变量定义时最好赋初始值,因为局部变量存放到Stack中,如果不赋初始值,那么对应局部变量的初始值是不确定的。但是有些时候静态代码分析工具会提示有些局部变量的初始值没有被使用。本文通过两种情况分析讨论局部变量要不要赋初始值。
2024-08-19 13:48:16
332
1
转载 在Linux服务器上使用IAR Build Tools实现DevOps和CI/CD
近些年来,随着嵌入式软件越来越复杂,DevOps和CI/CD也开始被引入到嵌入式软件开发中,越来越多的自动化构建(Build)和测试都放到Linux服务器上来提升研发效率。为了帮助用户更好地在Linux服务器上使用IAR工具,IAR于2020年推出了可以在Linux服务器上运行的IAR Build Tools。IAR Build Tools可以在Linux服务器上完成自动化构建和C-STAT静态代码分析。本文主要以BXARM为例介绍如何在Linux服务器上使用IAR Build Tools实现DevOp
2024-08-19 13:44:13
553
转载 在IAR Embedded Workbench中计算多个地址区间的Checksum
在前面的文章“使用IAR Embedded Workbench和MCU的CRC模块来检查代码的完整性”中介绍了如何在IAR Embedded Workbench中配置生成对应代码区域的CRC校验码。但是在IDE里面的Linker > Checksum选项里面只能配置一个地址区间并且只能生成一个Checksum。如果有多个地址空间,那么IDE里面的Linker > Checksum选项没有办法满足需求,需要使用命令行的方式。
2024-08-19 13:39:22
112
转载 在IAR Embedded Workbench中选择对应Checksum的CRC算法来匹配MCU的CRC模块
CRC算法有很多种,一般MCU内嵌的CRC硬件模块支持的CRC算法种类是固定的,所以需要在IAR Embedded Workbench中选择对应的Checksum的CRC算法来匹配MCU的CRC模块。 本文主要以CRC32算法为例介绍如何在IAR Embedded Workbench中选择对应Checksum的CRC算法来匹配MCU的CRC模块。
2024-01-02 11:15:52
316
转载 如何降低Build时间
随着嵌入式系统功能越来越多,嵌入式软件代码也越来越复杂,Build时间也越来越长。本文主要介绍如何降低build时间。
2023-08-25 17:43:39
257
1
转载 在日常开发中使用IAR C-RUN进行动态分析,提高代码质量
在《在日常开发中使用IAR C-STAT进行静态分析,提高代码质量》中,重点探讨了IAR C-STAT静态代码分析工具的设计理念,特点和使用。但正如在《应用编码标准和自动化工具,提高代码质量》提到的,静态代码分析工具基于源代码分析,擅长发现一些未定义行为的缺陷,检查编码标准的符合性,而有些缺陷,比如缓冲区溢出,边界问题,内存泄漏等,往往只有在程序运行时才会被触发。因此,动态分析工具也是非常重要的自动化检测工具。本文将介绍IAR C-RUN动态分析工具,以及如何快速上手使用C-RUN进行动态分析来提高代码质量
2023-08-23 17:55:30
461
转载 在日常开发中使用IAR C-STAT进行静态代码分析,提高代码质量
在《应用编码标准和自动化工具,提高代码质量》一文中,重点探讨了在嵌入式开发中,应用编码标准和自动化工具,是如何帮助提高代码质量和生产力的。其中静态代码分析工具是非常重要的自动化检测工具。本文将介绍IAR C-STAT静态代码分析工具的设计理念和特点,以及如何在日常开发过程中,快速上手使用C-STAT进行静态代码分析来提高代码质量。
2023-08-23 17:47:31
1255
转载 应用编码标准和自动化工具,提高代码质量
嵌入式系统在我们的日常生活中广泛存在,从消费类电子、医疗设备,到汽车,工业控制,航空航天等,它们的存在已经成为我们生活中不可分割的一部分。随着技术的不断进步和客户需求的增加,嵌入式系统和软件变得越来越复杂,同时产品的开发周期变得越来越短。如何在短时间内开发出高质量的软件对产品的成功起着决定性的作用。本文主要介绍如何应用编码标准和自动化工具,提高代码质量。
2023-08-23 17:44:39
170
转载 程序运行时堆栈溢出检测及失效安全策略
本文主要介绍如何在程序运行时进行堆栈溢出检测及检测到堆栈溢出之后的失效安全策略。程序运行时堆栈溢出检测主要通过检查对应的堆栈指针(SP)是否超出指定的堆栈范围来实现,一般可以分为硬件检测和软件检测。
2023-08-23 17:38:40
626
转载 实现堆栈保护来提高代码的安全性
在C/C++中,堆栈缓存溢出是一种常见的错误:当程序往堆栈缓存写数据时,由于堆栈缓存通常是固定长度的,如果需要写的数据长度超过堆栈缓存的长度时,就会造成堆栈缓存溢出。堆栈缓存溢出会覆盖堆栈缓存临近的堆栈数据(可能包含函数的返回地址),造成函数返回时异常。如果堆栈缓存溢出是攻击者利用代码的漏洞蓄意造成的,就称为堆栈粉碎。堆栈粉碎是常用的一种攻击手段。本文主要介绍如何在IAR Embedded Workbench中实现堆栈保护来提高代码的安全性。
2023-08-23 17:35:56
447
转载 在IAR Embedded Workbench中分析和监控堆栈使用
堆栈是嵌入式系统中非常基础但又特别重要的概念。正确设置堆栈的大小对于嵌入式系统的稳定性和可靠性非常重要。如果堆栈设置过小,可能会引起堆栈溢出,从而导致系统运行异常。反之,如果堆栈设置过大,则会造成宝贵RAM资源的浪费。由于堆栈需要开发人员指定分配,因此开发人员需要知道堆栈的使用情况,从而正确设置堆栈的大小。本文主要介绍如何在IAR Embedded Workbench中分析和监控堆栈的使用,帮助开发人员正确设置堆栈的大小,提高系统的稳定性和可靠性,同时最大程度地减小RAM资源的使用。
2023-08-23 17:30:18
1897
转载 IAR Embedded Workbench中的初始化策略
之前的文章“IAR Embedded Workbench中的MCU启动过程”介绍了IAR Embedded Workbench中的MCU启动过程:其中非常重要的一步是存储在RAM中的全局和静态变量的初始化。本文主要介绍IAR Embedded Workbench中的初始化策略。
2023-08-15 11:36:52
501
1
转载 IAR Embedded Workbench中的MCU启动过程
在嵌入式系统中,当MCU复位之后,需要运行对应的启动代码来对系统进行初始化,然后才会调用main函数,开始运行用户的代码。通常情况下,对应的启动代码一般是工具厂商或者芯片厂商提供,嵌入式软件开发工程师不需要特别关注。不过掌握对应的MCU启动过程对于了解和掌握嵌入式系统还是非常有帮助的,特别是在启动过程中出现问题的时候。本文主要以Arm Cortex-M为例,介绍IAR Embedded Workbench中的MCU启动过程。
2023-08-15 11:28:50
415
1
转载 在IAR Embedded Workbench中使用volatile和const关键字实现标定参数
在嵌入式软件开发过程中,有时为了让同一套软件可以在不同的场景下使用,往往需要使用标定参数。标定参数一般存放到ROM中,上电的时候从ROM拷贝到RAM,应用程序从RAM中读取对应的标定参数。在标定测试过程中可以通过相关标定工具修改对应标定参数进行标定,标定参数标定好之后,可以通过Bootloader升级ROM中的标定参数,不需要升级ROM中对应的应用程序,提高了软件的稳定性和灵活性。本文主要介绍如何在IAR Embedded Workbench中使用volatile和const关键字实现标定参数
2023-07-28 10:24:48
290
1
转载 在 IAR Embedded Workbench中进行ARM+RISC-V多核调试
近些年来,随着RISC-V的兴起,不少芯片集成了基于RISC-V架构的CPU内核,ADI的MAX78000集成了Arm Cortex-M4和RISC-V RV32,国产MCU厂商航顺科技的HK32U3009集成Arm Cortex-M3和RISC-V RV32 N205。本文主要以航顺科技的HK32U3009为例介绍如何在IAR Embedded Workbench for Arm和IAR Embedded Workbench for RISC-V中进行ARM+RISC-V多核调试。
2023-06-28 11:28:35
1338
1
转载 程序单独运行正常但是仿真调试不正常
在嵌入式软件开发中,有时会遇到程序断开仿真器单独运行时正常,但是连上仿真器调试时不正常。本文主要介绍在IAR Embedded Workbench中程序断开仿真器单独运行时正常但是连上仿真器调试时不正常的情况。
2023-06-01 11:57:41
594
1
转载 程序仿真调试正常但是单独运行不正常
在嵌入式软件开发中,有时会遇到程序连上仿真器调试时正常,但是断开仿真器单独运行时不正常。本文主要介绍在IAR Embedded Workbench中程序连上仿真器调试时正常但是断开仿真器单独运行时不正常的情况。
2023-05-31 15:22:49
1652
1
转载 在IAR Embedded Workbench中进行Bootloader和Application联合开发和调试
随着电子技术的发展,客户对嵌入式产品的期望也越来越高,对应的嵌入式产品功能越来越丰富,里面包含的代码也越来越复杂。很多时候很难把所有功能都实现之后再进行测试验证,而是阶段性的开发对应的功能,然后进行测试验证。为了能够升级对应MCU里面包含的Application,越来越多的的嵌入式产品会包含Bootloader进行Application升级:修改之前的Bug和添加新的功能实现。本文主要介绍IAR Embedded Workbench中的一些相关特性,帮助开发人员进行Bootloader和Applicat
2023-05-26 09:00:21
2135
4
转载 在IAR Embedded Workbench中有效地使用不同类型的代码断点
前面的文章中介绍了如何在IAR Embedded Workbench中充分利用各种类型的断点(https://blog.youkuaiyun.com/Changjiang_SZ/article/details/130843171?spm=1001.2014.3001.5501),其中代码断点是使用最多的。本文着重介绍如何在IAR Embedded Workbench中有效地使用不同类型的代码断点。
2023-05-25 11:42:57
587
1
转载 如何在IAR Embedded Workbench中充分利用各种类型的断点
随着嵌入式产品功能越来越丰富,嵌入式软件越来越复杂,开发人员花费在调试上的时间在整个软件开发周期中的比例越来越高。为了更有效地调试,开发人员需要掌握对应的调试工具。断点作为最基本的调试功能,开发人员在调试时都会使用到。本文主要介绍如何在IAR Embedded Workbench中充分利用各种类型的断点来提高开发人员调试的效率。
2023-05-24 11:33:52
1621
1
转载 在IAR Embedded Workbench for Arm中进行多核调试
随着嵌入式设备的智能化需求越来越高,对MCU的性能要求也越来越高。一方面可以通过提高MCU的主频来提升MCU的性能,但是这会使MCU的设计变得更复杂。另一方面可以通过多核的方式来提升MCU的性能,目前多核MCU已在市场上广泛应用。随着多核MCU的出现,多核调试变得越来越重要。本文主要介绍如何在IAR Embedded Workbench for Arm中进行多核调试
2023-05-17 09:05:01
1195
4
转载 在IAR Embedded Workbench for Arm中调试Cortex-M HardFault
基于Cortex-M的MCU被广泛应用于各种嵌入式系统中,Cortex-M有很多优点,比如高性能、低功耗、高代码密度、丰富的调试功能、强大的生态系统等。在错误异常处理上,Cortex-M提供了强大的错误异常机制,帮助提升系统的稳健性。本文主要介绍如何在IAR Embedded Workbench for Arm中调试Cortex-M HardFault,帮助开发人员在开发过程中尽早发现代码中的错误异常、提升开发和调试效率、提高代码质量。
2023-05-16 14:34:35
877
1
原创 基于IAR Embedded Workbench的MCU初始化过程
很多嵌入式软件工程师会好奇程序是怎么从MCU复位跑到main()函数的?存储在RAM的全局和静态变量的初始值是如何设置好的?要回答这些问题,就需要弄懂MCU的初始化过程。本文主要基于IAR Embedded Workbench介绍MCU的初始化过程。虽然是基于IAR Embedded Workbench,但是大部分内容都是通用的。MCU初始化过程指的是从MCU复位到main()函数之前的过程。一般来说,MCU初始化过程包括如下几个阶段:1. 硬件初始化硬件初始化指的是硬件必须先准备好(比如初
2021-08-06 14:23:39
2291
原创 基于IAR Embedded Workbench的嵌入式软件构建过程
嵌入式软件开发是项比较复杂的工程,如下图所示的ISO26262-6给出的参考软件开发V模型流程包括:1. 软件需求分析(Software Requirement Specification)2. 软件架构设计 (Software Architecture Design)3. 软件单元设计和实现 (Software Unit Design and Implementation)4. 软件单元验证 (Software Unit Verification)5. 软件集成和验证 (Softwar
2021-07-20 11:19:28
2068
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人