- 博客(64)
- 资源 (11)
- 收藏
- 关注
翻译 MDK-KEIL 调试神器: 不产生硬件复位的情况下debug运行中的设备
嵌入式老鸟们,不知道你是否有这样的经历,测试的设备运行一段时间,可能半个月、可能半年都没啥问题,突然它就死机或运行错误,这种时候想排查问题,除了看日志,恐怕就只有进入单步调试的模式看寄存器状态。问题来了,进入调试时设备复位的经历你肯定有过,但在这里,复位就碍事了,怎么办?运行中的设备,能不能不产生复位且不破坏寄存器已有数据的情况下,进入调试?
2023-12-22 17:52:26
646
1
原创 MDM9205开发环境搭建与编译调试
如题,这篇文章说的就是高通mdm9205这颗物联网芯片,从官方资源的获取(包括文档、代码、软件工具等等)到如何编译出可运行固件的方法。对经历了不止一次这颗芯片开发的我来说,在过程中遇到问题,除了寄希望于可能在工作日第二天凌晨得到的case回复,有一篇最新的有指导方向的文档真的太重要了。希望这篇文章可以帮助到正在看的你。
2023-11-14 19:00:00
531
原创 我的创作纪念日
最初写那是我参加工作的第一个年头,接手的第一个项目。做成了,非常兴奋,而且过程中搞懂了非常多之前似懂非懂的概念,最终让项目落地成果。想着看了那么多大佬的文章,自己是不是也能试着记录一下这次的收获,就这么得来第一篇文章。这也促使我能坚持在后几年都记录下自己的成长。现在接触的芯片型号已经非常丰富了,各式各样的开发方式也都经历过,希望在更垂直的领域,比如设备管理MDM方向更加精进,毕竟技能总要有些长处嘛。
2023-11-07 16:11:27
164
原创 【填坑】ESP32 bootloader初探(下)
我由于做软件业务的需要,在这几年开发经历中,发现一个现象:各家芯片厂商boot开放的资料较少,不支持或少量支持定制化功能。可能也是需求少吧,毕竟对基线的改动需要的工作量也不小。但这也导致各家芯片的boot开发体验都不是太顺畅,开发者要自己摸索boot的一些定制化实现方案。这篇内容接着上一篇 =>,看看bootloader里我是怎么搞定外设使用的。
2022-09-13 21:18:07
4241
2
原创 【填坑】ESP32 bootloader初探(上)
大名鼎鼎的乐鑫ESP8266 WIFI模组你应该不陌生,不用我多说了。在这之后乐鑫还更迭了更多高性能的芯片型号,比如这次我要记录的ESP32-C3,搭载近期很火的RISC-V指令集处理器,支持2.4G wifi、BLE-5,拥有丰富应用场景。是的,它很好。至少硬件很强大,不过再牛批的硬件也需要众多开发者的实践经验来不断完善它的生态。
2022-09-04 09:43:00
6085
1
原创 MDK中使用$Sub$$和$Super$$组合
在MDK中,有时拿到别人已经封装成库的代码,会希望在已经固定不能动的流程前,加入一些自己想要的流程那就可以用到这个MDK自带的,非常好用的为函数打补丁的方法
2022-01-29 16:44:16
1024
转载 Git怎么把SVN拍在沙滩上的?
Git和SVN是大家都比较熟知的版本管理,近几年Git越来越受到大家的喜欢。下面就来分享下关于Git和SVN的内容。--------------------------------------------------------------------------------------Git vs SVNGit 和 SVN 孰优孰好,每个人有不同的体验。一、Git是分布式的,SVN是集中式的这是 Git 和 SVN 最大的区别。若能掌握这个概念,两者区别基本搞懂大半。...
2021-05-01 18:15:05
170
原创 RSA+AES的下发过程,可算看明白了
知道HTTPS的都知道它是安全传输协议的代表,涉及的SSL等等就不介绍了这里重点说下最基本的安全通信过程原理RSA+AES,也就是对称加密和非对称加密结合使用的具体过程这是一次我在公司内部分享的文稿内容,可作为复习使用需要介绍一下 ,对称加密AES比较快,密钥短,而非对称加密RSA速度慢,密钥长对称加密中,一旦客户端密钥泄露整个传输内容泄密就会发生非对称加密中,公私钥成对出现,公钥通常在客户端,私钥在服务器端。这过程中不存在传输密钥的情况,不会造成密钥丢失服务器向客户端发送数据,
2021-01-06 10:55:34
815
原创 【填坑】海思wifi平台Hi3861开发(上) -- 搭建环境篇
背景近期在海思的一款wifi模组Hi3861上开发,想来和ESP模组应该很像,心情还是很放松的,但… …后面就有点郁闷了处处坑1. 编译环境一上来搭建Ubuntu编译环境就遇到了阻碍,至今还是个谜… …好在文档还是很全的,满满一个文件夹的指南手册和API的文档(很走心)上图一起感受一下 :)Ubuntu跟着上图在列的《…SDK开发环境搭建 用户指南》,看着就有点蒙圈… 这内容有点多啊[/汗],包括交叉编译链、Python环境和Scons的安装,每个里面还有各种小步骤… 跟着做吧。
2020-09-20 10:49:13
11111
20
原创 【填坑】海思wifi平台Hi3861开发(下) -- SDK开发篇
背景上篇说到开发Hi3861平台时搭建编译环境的一些坑,点这里可以直达回顾。在稍微放松过后,开始下一步工作,SDK的开发。这里的经历也是坎坷曲奇,山回路转~又一坑1. 开发appSDK要知道,在linux下编译通常需要执行shell脚本或者是py脚本让SDK自行去编译。那么我们自己开发的SDK适配进原有工程,也是需要做相应配置才能在编译时被链接进去的。修改app编译SDK链接属性在Hi3861平台中编译使用的命令是./build.sh all,可以看出来执行了一个shell脚本,但实际
2020-08-03 17:50:20
6764
9
原创 NRF52832打印不出LOG的神秘原因
Nordic SDK中的LOG坑背景上个月做新项目,拿到Nordic52832的15.3.0 SDK。在打印LOG这件事上着实蛋疼了好一阵。遇到几个问题,最疼的一个在此记录。几个问题,不是sdk_config.h中的宏没开,就是打开的工程中.h里有些宏压根没有,小问题,略…情况想通过RTT打印出从通信模组返回的数据内容用了两种方式一个大数组做缓存空间一个指针申请缓存空间不管用什么方式,用完数据不是清空就是要释放的嘛,那好啦,如图所示当然,这些动作都是在调用NRF_LO
2020-07-03 21:49:06
2950
原创 看完就明白了GPL、MIT、Mozilla、LGPL这些开源许可是怎么一回事
开源许可协议的故事某百科:自由软件/开源软件是自由的,源代码开放的,我们可自由下载安装和使用。同时,为了维护作者和贡献者的合法权利,保证这些软件不被一些商业机构或个人窃取,影响软件的发展,开源社区开发出了各种的开源许可协议。接触过别人分享的工程项目或者使用过官方代码的都对开源协议不陌生,通常这些代码我们拿起来就能直接用,还能按照自己需求改改多亏了有开源协议撑腰。但也一定看过不少的开源...
2020-04-26 11:54:36
1368
原创 IAR弹出Source Browser Log,显示Failed to parse input files的问题
IAR运行奇慢,编译后无法跳转定义,关闭软件出错的问题IAR版本为:ARM 8.40.2 工程使用中文路径而出错出问题了有时需要把在公司做的一些工程拿回家接着弄,就copy了一份。使用ctrl+c v还是那么熟练,哈哈哈…打开工程运行非常慢昨天拷贝了个工程准备回家弄,但回家打开发现不论是Clean还是Rebuild All都奇慢无比,电脑风扇使劲转,查看任务管理器发现下图:...
2020-04-24 12:39:35
7272
7
转载 谁说8位MCU不能跑Linux?
看到一篇大神级的文章,居然说linux能在8位MCU上跑,不免有点激动,进去一看果然是神操作,转载一下,致敬!正文我们经常可以看到初学者在单片机论坛中询问他们是否可以在他们微不足道的小的8位微机中运行Linux。这些问题的结果通常是带来笑声。我们也经常看到,在Linux论坛中,询问Linux运行的最低要求是什么。常见的答案是Linux需要一个32位架构和一个MMU(存储器管理单元),并至...
2020-04-09 17:02:21
1955
原创 贪吃蛇(链表实现)
正好有需要的材料,做条蛇玩一下,顺便巩固链表知识1. 硬件准备STM32F103开发板TFT9320屏幕双轴按键遥感传感器2. 软件分析蛇身包含的信息:x轴,y轴,蛇身上一个点、下一个点产生食物的随机函数,吃到食物后增加蛇身让蛇动起来就是让每个点的( x,y)信息一个一个替换下去,并需要获得方向信息LCD屏幕一个像素点太小了,需要扩充蛇身宽度的函数、显示游戏边界的函数检查...
2020-04-06 16:32:55
3309
12
原创 看这里就知道ws2812B怎么用了(PWM+DMA)
近期用RGB三色灯WS2812B做了个彩虹灯的小玩意,记录下使用过程网上文档等资料都很齐全,在此不再具体介绍此IC芯片&工具STM32F030STM32CubeMXIAR编码使用了CubeMX初始化TIM3的Channel4作为PWM的DMA输出功能外设初始化配置先让灯亮起来//用于打开PWM,void WS281x_Show(uint16_t se...
2020-03-24 15:43:23
13096
8
转载 NorFlash和NandFlash有什么区别
FLASH存储器又称闪存,主要有两种:NorFlash和NandFlash。在实际开发中,设计者可以根据产品需求来进行闪存的合理选择。下面我们从多个角度来对比介绍一下。NorFlash和NandFlash区别接口对比容量和成本对比可靠性性对比寿命对比升级对比读写性能对比文件系统比较接口对比NorFlash带有通用的SRAM接口,可以轻松地挂接在CPU地址、数据总线上,对CPU接口要求...
2020-03-18 10:56:24
1030
原创 《C标准库》中可变参数函数的具体含义和使用
预防下次不知哪里的文章能解释清楚,这里Mark一下此文章-> 文章链接大致内容C 库宏 - va_start()C 标准库 - <stdarg.h>** 描述C 库宏 void va_start(va_list ap, last_arg) 初始化 ap 变量,它与 va_arg 和 va_end 宏是一起使用的。 last_arg 是最后一个传递给函...
2020-03-04 16:32:29
447
原创 关于ADC从STOP模式唤醒后的坑
之前写过关于MCU内部参考电压的文章,不熟悉的话可以点击直达MCU内部参考电压几种妙用你都知道嘛近期回顾测试中却发现唤醒后测量内部电压的数值是有问题的,带问题运行这么久也真是…[捂脸(*/ω\*)]发现问题进入停止模式前为了更节省能源,对ADC进行了HAL_ADC_DeInit(&hadc),并在唤醒后对其进行了MX_ADC_Init()重新开启再测量。本以为就OK了,实际运...
2020-01-15 18:22:46
4179
8
原创 BCD码转HEX(C语言)
如题最近因项目需要将BCD码数据转成HEX格式而编写,大小端概念相关知识自行补充即可。输出的十进制数hexindec_val可满足所有32位数可表达的bcd_data输入转换输出的十六进制数组hex_data可满足32位和64位数可表达的hex_data输入转换输入:存放大端格式HEX数据的缓冲区指针小端格式BCD数据缓冲区指针BCD数据长度输出:HEX数据十进制表示...
2019-12-31 12:05:11
2630
原创 【新发现】MDK中生成.bin文件方式
MDK生成bin文件今天看RT-Thread工程,意外发现它工程使用的生成bin文件方式更简单得多,果然还是才学浅陋啊…1. 我知道的生成bin文件方式就如网上所教,通常是根据一大串格式写出如下命令:[fromelf.exe文件路径] --bin -o [BIN路径] [AXF文件路径]写完一推,如果在option的output中改了axf文件名还得跑到这里来拉到命令框最后,修改两次文件...
2019-11-26 11:53:55
382
转载 1 - FreeRTOS入门指南
FreeRTOS可以被移植到很多不同架构的处理器和编译器。每一个RTOS移植都附带一个已经配置好的演示例程,可以方便快速启动开发。更好的是,每个演示例程都附带一个说明网页,提供如何定位RTOS演示工程源代码、如何编译演示例程、如何配置硬件平台的全部信息。演示例程说明网页还提供基本的RTOS移植细节信息,包括如何编写FreeRTOS兼容的中断服务例程,不同架构的中断处理会稍有不同。通过下面的简...
2019-11-10 15:56:08
568
转载 2 - FreeRTOS在Cortex-M3上的移植
FreeRTOS下载包的文件结构在FreeRTOS官方网站可以下载到最新版的FreeRTOS包,我这里使用的是V8.2.3版本。下载包内的总文件数量多的令人生畏,但文件结构却很简洁。《FreeRTOS入门指南》一文的第3节详细描述了下载包文件结构,我们这里只是简单提一下。下载包根目录下包含两个子目录:FreeRTOS和FreeRTOS-Plus。其中,FreeRTOS-Plus文件夹中包含...
2019-11-10 15:47:54
567
转载 3 - FreeRTOS内核配置说明
FreeRTOS内核是高度可定制的,使用配置文件FreeRTOSConfig.h进行定制。每个FreeRTOS应用都必须包含这个头文件,用户根据实际应用来裁剪定制FreeRTOS内核。这个配置文件是针对用户程序的,而非内核,因此配置文件一般放在应用程序目录下,不要放在RTOS内核源码目录下。在下载的FreeRTOS文件包中,每个演示例程都有一个FreeRTOSConfig.h文件。有些例程的配...
2019-11-10 15:31:13
467
转载 4 - Cortex-M内核使用FreeRTOS特别注意事项
在阅读本文之前,有两个定义在FreeRTOSConfig.h中的宏,你必须先明白它们是什么意思,《FreeRTOS内核配置说明》一文中,讲解了这两个宏:configKERNEL_INTERRUPT_PRIORITYconfigMAX_SYSCALL_INTERRUPT_PRIORITYFreeRTOS与Cortex-M内核可谓是绝配,以至于让移植和使用FreeRTOS都变得更简单起来...
2019-11-10 15:00:32
301
转载 5 - FreeRTOS内存管理
FreeRTOS提供了几个内存堆管理方案,有复杂的也有简单的。其中最简单的管理策略也能满足很多应用的要求,比如对安全要求高的应用,这些应用根本不允许动态内存分配的。FreeRTOS也允许你自己实现内存堆管理,甚至允许你同时使用两种内存堆管理方案。同时实现两种内存堆允许任务堆栈和其它RTOS对象放置到快速的内部RAM,应用数据放置到低速的外部RAM。每当创建任务、队列、互斥量、软件定时器、信号...
2019-11-10 14:53:13
640
转载 6 - FreeRTOS任务概述
任务和协程(Co-routines)应用程序可以使用任务也可以使用协程,或者两者混合使用,但是任务和协程使用不同的API函数,因此在任务和协程之间不能使用同一个队列或信号量传递数据。通常情况下,协程仅用在资源非常少的微处理器中,特别是RAM非常稀缺的情况下。目前协程很少被使用到,因此对于协程FreeRTOS作者既没有把它删除也没有进一步开发。所以本系列文章以后不会对协程过多描述,包括其AP...
2019-11-10 14:41:31
291
转载 7 - FreeRTOS任务创建和删除
在FreeRTOS移植到Cortex-M3硬件平台的文章中,我们已经见过任务创建API,但那篇文章的重点在于如何移植FreeRTOS,本文将重点放在任务的创建和删除API函数上面。任务创建和删除API函数位于文件task.c中,需要包含task.h头文件。任务创建函数描述 BaseType_t xTaskCreate( TaskFunction_t pvTa...
2019-11-10 14:33:02
332
转载 8 - FreeRTOS任务控制
FreeRTOS任务控制API函数主要实现任务延时、任务挂起、解除任务挂起、任务优先级获取和设置等功能。相对延时函数描述void vTaskDelay( portTickTypexTicksToDelay )调用vTaskDelay()函数后,任务会进入阻塞状态,持续时间由vTaskDelay()函数的参数xTicksToDelay指定,单位是系统节拍时钟周期。常量portTICK_...
2019-11-10 14:28:56
305
转载 9 - FreeRTOS任务应用API
任务应用函数是一组辅助类函数,一般用于调试信息输出、获取任务句柄、获取任务状态、操作任务标签值等等。获取任务系统状态函数描述 UBaseType_t uxTaskGetSystemState( TaskStatus_t * constpxTaskStatusArray, const UBaseTy...
2019-11-10 14:21:45
352
转载 10 - FreeRTOS内核控制
内核控制的一些功能需要移植层提供,为了方便移植,这些API函数用宏来实现,比如上下文切换、进入和退出临界区、禁止和使能可屏蔽中断。内核控制函数还包括启动和停止调度器、挂起和恢复调度器以及用于低功耗模式的调整系统节拍函数。强制上下文切换宏taskYIELD:用于强制上下文切换的宏。在中断服务程序中的等价版本为portYIELD_FROM_ISR,这也是个宏,其实现取决于移植层。用于上下文...
2019-11-10 14:03:53
220
转载 11 - FreeRTOS任务通知
每个RTOS任务都有一个32位的通知值,任务创建时,这个值被初始化为0。RTOS任务通知相当于直接向任务发送一个事件,接收到通知的任务可以解除阻塞状态,前提是这个阻塞事件是因等待通知而引起的。发送通知的同时,也可以可选的改变接收任务的通知值。可以通过下列方法向接收任务更新通知:不覆盖接收任务的通知值覆盖接收任务的通知值设置接收任务通知值的某些位增加接收任务的通知值相对于用前必...
2019-11-10 13:58:21
279
转载 12 - 使用任务通知实现命令行解释器
虽然这是介绍FreeRTOS系列的文章,但这篇文章偏重于命令行解释器的实现。这一方面是因为任务通知使用起来非常简单,另一方面也因为对于嵌入式程序来说,使用命令行解释器来辅助程序调试是非常有用的。程序调试是一门技术,基本上我们需要两种调试手段,一种是可以单步仿真的硬件调试器,另外一种是可以长期监视程序状态的状态输出,可以通过串口、显示屏等等手段输出异常信息或者某些关键点。这里的命令行解释器就属于后...
2019-11-10 11:41:00
288
转载 13 - 可视化追踪调试
使用RTOS编程,为每个任务分配多大的堆栈空间就成了一项技术活:分配多了浪费系统资源,分配少了又恐怕会发生堆栈溢出。由于中断和抢占式调度器的存在,我们要估算出一个任务需要多少堆栈是非常困难的,今天我们就介绍一种方法,来获取每个任务的剩余堆栈空间。本文以NXP LPC177x_8x系列微控制器为例。我们将这个功能做成一个命令,添加到《15 - 使用任务通知实现命令行解释器》一文介绍的命令解释列表...
2019-11-10 11:25:17
420
转载 14 - FreeRTOS队列
FreeRTOS队列队列是主要的任务间通讯方式。可以在任务与任务间、中断和任务间传送信息。大多数情况下,队列用于具有线程保护的FIFO(先进先出)缓冲区:新数据放在队列的后面。当然,数据也可以放在队列的前面,在下一篇讲队列API函数时,会涉及到数据的存放位置。使用模型:最简单、最灵活通常情况下,鱼和熊掌是不可兼得的,但FreeRTOS的队列用户模型管理却兼顾简单和灵活。发送到队列的消息...
2019-11-10 11:15:28
229
ws281x.rar
2020-06-07
贪吃蛇F103ZET6_LCD_Pro.rar
2020-04-06
ws2812b中文资料_数据手册_参数-004ee048162ded630b1c59eef8c75.pdf
2020-03-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人