![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译器Keil/GCC/Makefile
技术在路上
这个作者很懒,什么都没留下…
展开
-
Keil安装芯片PCAK包失败/软件卡死/无法解压的问题
一般我们直接双击Keil芯片包后就可以打开安装了,或者通过Keil-Pack Installer-Import界面进行导入安装,当这两种方法都失败后,则需要手动解压芯片包并将文件复制到对应目录下。原创 2024-01-27 11:44:49 · 2450 阅读 · 5 评论 -
Cortex-M3 内核HardFault错误调试定位方法
首先更改startup.s的启动文件把里面的HardFault_Handler代码段换成下面的代码:HardFault_Handler\ PROC IMPORT hard_fault_handler_c ;函数申明 TST LR, #4 ;根据LR.2判断使用的什么堆栈 ITE EQ MRSEQ R0, MSP ;使用MSP堆栈 MRSNE R0, PSP ;使用PSP堆栈 B hard_fault_handle原创 2021-08-14 18:16:20 · 463 阅读 · 0 评论 -
keil5在原有工程上修改工程名
keil建立工程,需要添加启动文件,需要修改魔术棒设置,需要添减文件和文件路径等等…,不难,倒是很麻烦;如果有现成的工程(往往都会有现成的工程),只需要稍微修改工程信息,借助这个基础工程会节省很大的开发周期;故,说明下如何简单快速的修改工程;简单3个步骤 很实用!!!1.在工程文件目录中,将old.uvoptx和old.uvprojx名字改成new.uvoptx和new.uvprojx。并其他 .uvoptx文件统统删除。如:2.双击打开new.uvproj,点击,在弹出的界面上,双击“Progec转载 2021-03-22 19:43:08 · 1493 阅读 · 0 评论 -
makefile中的notdir,wildcard和patsubst
notdir,wildcard和patsubst是makefile中几个有用的函数,以前没留意过makefile中函数的用法,今天稍微看看~ 1、makefile里的函数makefile里的函数使用,和取变量的值类似,是以一个‘$’开始,然后是一个括号里面是函数名和需要的参数列表,多个变量用逗号隔开,像这样return = $(functionname arg1,转载 2017-10-05 23:32:35 · 430 阅读 · 0 评论 -
代码图形分析工具Understand
下面是转载:http://www.codemx.cn/2016/04/30/Understand01/ 的文章,他是用mac版本,我们也可以使用Windows版本的,可以到:http://download.csdn.net/download/yangzhao0001/9266639 下载3.1版本http://www.qqtn.com/down/91669.html 下载4.转载 2017-01-20 10:03:54 · 11180 阅读 · 1 评论 -
Keil总是全部编译的解决办法
正常情况下,Keil只是会对编辑过的文件进行重新编译,但是有的时候只是修改一个文件也会全部编译,两个地方需要检查:1,project--option for target 'xxx' ---target---Code Generation-- 将Use Cross-Module Optimization勾选去掉2,工程文件是否是只读属性,如果是只读,那去掉整个工程文件的只读属性。原创 2017-01-07 13:07:32 · 11246 阅读 · 1 评论 -
Keil如何提升性能和减小代码大小
在编译程序的过程中,需要考虑两个问题,一个是使用的代码够不够快,另一个是编译的代码够不够小,下面汇集一些解决方法,主要针对Keil ARMCC编译器:1,让代码够小如图 1,未进行任何优化时,keil编译生成的文件大小为:9668字节。 第一步:project >> Option for Target “**” 打开如图 2界面。选择“target”,勾选上“Use Mi原创 2016-12-14 18:28:13 · 17605 阅读 · 0 评论 -
用keil像makefile那样选择文件进行编译
1、分开建target,Project->Manage命令允许你在项目里面增加Target.每个target一个项目,创建target时,包含所需的工程文件编译即可。 缺点:项目多时,创建target比较麻烦。 优点:比较不容易出错,因为工程文件较独立,其它target修改时,不会影响到该target。2、使用条件编译,#define + #if . 编写程序时,用以下转载 2016-11-02 11:37:44 · 3919 阅读 · 0 评论 -
Keil多target共存的文件和文件组编译方式
上图是 stm32 的一个demo,有多个 target 和 group,group 有公用的也有专属于某个target的,是如何把 专属于某个target的 group 只加入该 target ,而不加入其它 target的?解决方法:在 project 窗口,选择要设置的 group 或 文件,点右键,选择 “option for group ...”,出现下图原创 2016-11-13 18:20:58 · 10358 阅读 · 1 评论 -
结构对齐--__packed与#pragma pack
Arm结构体gcc内存边界对齐问题 这段时间移植公司的linux i386程序到Arm linux平台,本以为是件工作量很小的事情,以为只要改几个驱动程序就OK了,没想到在应用程序这一块卡了很长时间。其中最烦的事情就莫过于结构体内存边界对齐了。搞了这么久,终于终结了一些小经验。默认情况下,在32位cpu里,gcc对于结构体的对齐方式是按照四个字节来对齐的。看以下结构体转载 2016-11-05 10:37:31 · 7294 阅读 · 0 评论