嵌入式
iamgengyiping
I do what I do!
展开
-
c++出现double free or corruption (fasttop)
问题现象:c++代码在linux运行中,出现double free or corruption (fasttop)异常报错。问题分析:出在代码free的地方,即delete的代码段中。问题原因:delete一个代码段两次,即二次释放同一块内存。问题解决:找出代码delete和new的地方,进行加锁处理。原创 2022-11-19 18:39:48 · 2730 阅读 · 1 评论 -
VSCode搭建STM32开发环境
问题现象:Keil收费,并且不可扩展问题解决:改用VSCode开发STM32一 思想准备。过程简单但细节繁多,如果没有折腾的欲望,请出门左转找STM32CubeIDE,对于不喜欢麻烦的人来说也挺好用的。二 安装。1)VScode官方下载地址:https://code.visualstudio.com/微云下载:https://share.weiyun.com/3cJqYzhX安装教程:(知乎作者:IT-cute)https://zhuanlan.zhihu.com/p/1063原创 2022-01-10 11:44:22 · 952 阅读 · 0 评论 -
keil烧录hex文件
问题现象:keil默认烧录是axf文件,想要烧录hex文件问题解决:如下图所示:原创 2021-09-23 16:23:04 · 3668 阅读 · 0 评论 -
gcc 生成文件 text, data and bss: 代码和数据的所占空间详解
In “Code Size Information with gcc for ARM/Kinetis” I use an option in the ARM gcc tool chain for Eclipse to show me the code size:在“在ARM/Kinetis项目中用GCC编译器输出代码占用空间信息”一文中我用了一个用于Eclipse的ARM gcc工具链选项来输出显示代码大小: text data bss dec ...原创 2021-03-12 15:14:47 · 4325 阅读 · 0 评论 -
Linux挂载U盘错误,报invalid argument
问题现象:Linux挂载U盘提示invalid argument问题分析:1、使用fdisk -l能查看到该U盘及其文件2、使用mount挂载报invalid argument,说明是U盘问题问题原因:U盘存储格式问题问题解决:1、重新格式化U盘2、使用FAT32格式格式化...原创 2020-10-09 17:30:42 · 11297 阅读 · 6 评论 -
STM32F4中的CCM内存说明与使用
STM32F4 CCM内存http://www.makeru.com.cn/course/details/2986?s=69821我们知道STM32F4当中有个CCM内存,如图所示,这个内存是挂在D总线上直接和内核相连,因此除了内核之外谁都不能访问,那么我们怎么将其利用起来呢?首先,我们可以使用Keil的设置选项,将IRAM2打勾,让编译器选择什么时候使用这个内存。显然,我们还可以将这两个地址修改一下,将IRAM1改为0x10000000,这样,编译器就会优先分配CCM内存。我们来看看原创 2020-06-05 14:25:57 · 3042 阅读 · 1 评论 -
Linux开机自启动方法shell脚本
设置命令行自启动开机自启动脚本为/etc/rc.d/rc.local,可以将开机需要进行设置的命令可以在此脚本中加入。假设开机时自动执行/root/loop.sh,在/etc/rc.d/rc.local中加入#source /etc/rc.d/qt_env.sh#source /etc/rc.d/apps.sh &cd //root/loop.sh ...原创 2018-11-12 14:35:56 · 698 阅读 · 0 评论 -
java对windows或者linux的系统时间设置和获取
//public static String getDatetime() { String dataTime = ""; String osName = System.getProperty("os.name"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH:mm:...原创 2018-12-05 19:23:33 · 1479 阅读 · 0 评论 -
Linux开机自启动Jar包,Linux断电重启自动启服务,使用 /etc/rc.d/rc.local启动
使用 /etc/rc.d/rc.local配置:输入命令:chmod +x /etc/rc.d/rc.local这句话的意思是 授予 /etc/rc.d/rc.local 文件执行权限然后我们创建启动文件 runJar.sh#!/bin/bash export JAVA_HOME=/usr/local/jdk1.8.0_171export JRE_HOME=/usr/loc...原创 2018-12-05 20:04:53 · 1485 阅读 · 0 评论 -
LPC11Cx系列CAN总线位定时参数计算方法校正
LPC11Cx系列是NXP公司的高性价比Cortex—M0构架ARM微控制器产品,内嵌CAN总线控制器。CAN总线位定时参数决定CAN总线能否按给定速率正常通信及其稳定性,但在实践中发现,原版用户手册及国内译本在CAN总线位定时参数配置寄存器的表述上有误,导致用户CAN总线无法正常通信。下面将校正错误,并给出CAN总线位定时参数具体计算实例。1 位定时时序及参数 依据CAN总线规范,LP...原创 2018-12-06 14:53:36 · 705 阅读 · 0 评论 -
ISP方式烧录固件
1、找到开发板的ISP跳线位置,用跳线短接。 PS:主板白色字体显示ISP或者带两针的插针为ISP跳线位置。2、并USB转串口线接到开发板的四针串行接口处,并复位开发板。3、打开Flash Magic软件,操作如下: ...原创 2018-12-06 14:54:06 · 2401 阅读 · 1 评论 -
找回忘记的Ubuntu账号密码,Ubuntu12.04版本举例,解决Authentication Token Manipulation Error问题
1、选择右上角关机按钮,找到Shut Down->Restart。2、按住shift键,直到出现如下界面,点击recovery mode3、进入如下界面,选择root界面:4、输入 passwd Ubuntu(ubuntu),发现用户不存在。5、查看系统所有用户,输入cat /etc/passwd6、重新输入passwd 用户名,并根据提示修改密码,如果报错pas...原创 2018-12-14 16:48:52 · 508 阅读 · 0 评论 -
Keil 编译器 malloc动态分配内存 C/C++
1、C代码中往往用到malloc函数,但单片机没有mmu单元,这时候需要自己手动去free,切记一定要malloc之后,用完就free或者delete掉。2、光free或者delete可能还不行,因为这可能会因此而产生碎片问题,还是需要mmu来管理内存...原创 2019-01-03 18:00:57 · 1490 阅读 · 0 评论 -
linux命令行即-/bin/sh:xx(命令) not found 的几种原因和解决办法
问题现象:解压jdk的包,执行java -version,出现-sh:java not found问题原因:关于-/bin/sh:xx(命令) not found 的几种原因:1./bin/目录下没有这个命令;2.bin/目录有这个命令,只是执行权限不够,或者程序执行权限不够;3.程序需要的静态库或者动态库没有;解决办法:原因一的解决方法:安装busy box将busy ...原创 2019-01-31 18:45:51 · 27304 阅读 · 3 评论 -
Linux中记录终端输出到一个文本文件
一,把命令运行的结果保存到文件当中:用 > 把输出转向就可以了 例子: $ ls > ls.txt #或者 ls-->ls.txt #把ls命令的运行结果保存到文件ls.txt中 说明: > 是把输出转向到指定的文件,如文件已存在的话也会重新写入,文件原内容不会保留 >> 是把输出附向到文件的后面,文件原内容会保留下来...原创 2019-01-30 23:13:39 · 1835 阅读 · 0 评论 -
keil mdk b __main不进入C语言main函数入口
在调试的时候发现,从startup.s中逐步运行到b __main,但下一步就是不跳转到main函数,后来发现问题出现在以下两个函数:1、void _mutex_acquire(void *m) 2、void _mutex_release(void *m)为了保证malloc是线程安全的,必须重写这两个方法,保证开关中断,但千万不能在函数里加printf打印,因为这时候还没有初始化串口...原创 2018-09-17 15:14:00 · 4751 阅读 · 0 评论 -
stm32 bootloader更新固件重启 IWDG独立看门狗
问题现象:直接从固件soft reset到bootloader更新中途,pcb板子会重启问题原因:固件程序中开启了IWDG(独立看门狗),在进行固件更新的时候没有喂狗,导致计数计到0,看门狗重进行reset。问题解决:1、因为独立看门狗一旦开启是不能关闭的,所以要么在bootloader中喂狗要么不启动。2、改用窗口看门狗,在soft reset之前将看门狗关闭。...原创 2018-04-20 09:53:58 · 3210 阅读 · 5 评论 -
LPC2468配置PWM
1、根据LPC2468用户手册配置,步骤如下:2、原创 2014-06-20 16:07:25 · 788 阅读 · 0 评论 -
破坏STM32中断机制引发的异常
http://blog.sina.com.cn/s/blog_908da74601011zq8.html转载 2015-01-28 18:27:50 · 683 阅读 · 0 评论 -
单片机定时器作用功能
1、单片机的定时器其实是个计数装置,用于对单片机的机器周期或者外部输入的时钟信号进行计数。2、当对单片机的机器周期进行计数叫定时器,对外部输入的时钟信号进行计数叫计数器。3、每计一个机器周期,定时器+1,当计到最大数时计数完毕通知单片机;每计一次外部输入时钟信号,计数器+1,当计到最大数时计数完毕通知单片机。4、如果知道单片机的机器周期或者外部输入时钟信号周期,可以根据定时器的计数来计原创 2015-04-16 15:28:06 · 14359 阅读 · 2 评论 -
KEIL升级或者版本问题导致调度Bug Ulink2问题
问题原因:由于Ulink2固件版本无法被当前Keil所识别解决办法:1、在安装目录(..\Keil\ARM\ULINK\Utilities)下找到UL2_Configure.exe。2、进入“..\keil\arm\Ulink\Utilities”目录,在该目录中Shift+鼠标右键,以命令行形式打开。如果是win7/8尽量以管理员权限运行命令行。3、执行 UL2_Configur原创 2015-06-18 16:12:21 · 3119 阅读 · 0 评论 -
STM32的BootLoader 从SD卡更新固件
预备知识 我们这里是为ARM的Cortex-M3单片机写的BootLoader,需要了解一下M3内核的架构,并且要了解M3单片机是怎么启动的等等。这个方面的知识,可以参考《Cortex-M3权威指南》,这里的话我只是为了实现BootLoader简单介绍一下,大家有什么不清楚的请参考权威指南。并且这里是以STM32为例说明问题的,使用的开发环境是RVMDK(Keil)。 这里参考的是《Cort原创 2015-08-05 17:47:59 · 3420 阅读 · 0 评论 -
STM32 malloc HardFault
现象:上电初始化要分配一个堆空间,但直接跳到了HardFault。原因:没有在编译的时候分配堆空间解决办法:在Keil的Asm中Define HEAP_SIZE=0x1800原创 2015-11-09 20:08:44 · 1456 阅读 · 0 评论 -
svnversion 不是内部命令或外部命令,也不是可运行的程序或批处理文件
下载Slik-Subversion-1.8.13-x64.msi,并且安装在C盘目录,然后重启电脑即可。原创 2016-01-05 23:39:24 · 3286 阅读 · 0 评论 -
STM32中断向量表偏移量0x200详解
ST公司重定位向量表的库函数:void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset){ assert_param(IS_NVIC_VECTTAB(NVIC_VectTab)); assert_param(IS_NVIC_OFFSET(Offset));原创 2016-02-25 09:43:29 · 9472 阅读 · 0 评论 -
MDK在链接时提示空间不够(No space in execution regions with .ANY selector... )的解决方案总结
RealView MDK具有强大的编译、链接功能。嵌入式设备拥有的资源往往有限,如果一个程序编译、链接之后的可执行文件大小略大于存储大小时,则不能生成可执行文件进行调试或固化到Flash中。在这种情况下我们一般不去从硬件上调整存储空间的大小(有些存储空间在片内,实在无法调整),而是去修改程序,试图将程序简化、将缓存减小、减少全局变量、少用大数组多用指针等等人工方法,有些时候这些方法很有效。但如果使原创 2016-09-23 17:46:09 · 52169 阅读 · 7 评论 -
Keil不能正确生成.bin文件的解决办法
1、打开keil IDE,然后打开help->uVison Help,搜索fromelf关键字如下图1: 然后再进入到右下角的索引找到fromelf命令行的语法和选项,找到—bin的说明如下,如红色标注所说,正是症结所在,即如果链接文件中定义了多个加载段的话,fromelf会以目标文件名来创建一个文件夹并将每个加载段都生成一个相应的文件存放在该文件夹下,问题的原因是找到了,但原创 2016-11-27 16:39:45 · 5422 阅读 · 0 评论 -
基于飞思卡尔imx6 sabrelite开发板的android lvds屏幕驱动调试
一、概述 1、 飞思卡尔 imx6的显示屏驱动架构: 2、目标: 因sabrelite开发板本身已提供LVDS接口,目标屏幕是LG的LP101WX1-SLN2,其主要参数为:分辨率:1280*800色彩:18位色彩数:262K时钟频率:69.3M Hz 二转载 2017-04-11 17:48:52 · 505 阅读 · 0 评论 -
UART中的硬件流控RTS/CTS和软件流XON/XOFF
UART中的硬件流控RTS与CTS5/23/2013 5:13:04 PM at rock-chips inshenzhen最近太忙了,没时间写对Ucos-II的移植,先将工作中容易搞错的一个知识点记录下来,关于CTS与RTS的。在RS232中本来CTS 与RTS 有明确的意义,但自从贺氏(HAYES ) 推出了聪明猫(SmartModem)后就有点混淆了,不过现在这种意义原创 2017-12-20 13:50:08 · 8153 阅读 · 1 评论 -
Keil RealView MDK在链接时提示空间不够的解决方案总结 keil: Error: L6406E: No space in execution regions with
1、问题原因:程序编译后的FLASH和RAM容量大于芯片容量2、解决办法:1)在设置->Target->勾选Use microLib2)在设置->C/C++->将优化选成Level 33)如果确认是RAM超了,可以将数组更改为CONST类型4)修改链接脚本的方法有两种一种是直接修改分散加载文件,另一种是使用默认分散加载文件,这时仅需修改Project->Options->Tar原创 2017-12-18 17:42:09 · 2256 阅读 · 0 评论 -
眼图
中文名称:眼图英文名称:eye diagram;eye pattern定义:示波器屏幕上所显示的数字通信符号,由许多波形部分重叠形成,其形状类似“眼”的图形。“眼”大表示系统传输特性好;“眼”小表示系统中存在符号间干扰。一.概述“在实际数字转载 2018-01-08 20:19:37 · 1098 阅读 · 0 评论 -
嵌入式程序烧写方式ISP和IAP区别
1、字义区别:ISP:In SystemProgramming 在系统编程IAP:In ApplicationProgramming 在应用编程2、工作方式:ISP:用烧写器将code写入Flash,芯片在目标开发板,不脱离系统,即称在系统编程。IAP:芯片本身将code写入Flash,比如一款支持IAP模式的单片机,将Flash分为3部分,1作为引导程序区原创 2014-06-19 19:54:24 · 2725 阅读 · 0 评论