- 博客(202)
- 资源 (13)
- 收藏
- 关注
原创 docker通用安装使用指南-Ubuntu-树莓派5
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey本方法适合树莓派5,ubuntu,其他未测试过,方法是类似的,并添加目前可用镜像源。安装 docker 软件#如果以前安装了docker, 需要卸载sudo apt remove docker docker-engine docker.io containerd runc# 安装依赖sudo apt -y i...
2024-08-12 11:50:12
255
原创 年少不知docker好
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey最近因工作需要,接触了docker,发现这个东西真的非常适合开发人员,值得玩一玩。我们知道,做嵌入式软件的,经常需要使用交叉编译环境编译单片机或者linux程序,在window时,我们可能只要安装一个IDE就够了,但linux环境不同,需要安装各种软件,有的时候可能还需要自己编译交叉工具链,非常不方便。安装软件的时候,可...
2024-08-07 08:40:33
152
原创 被断言罢了一道
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey这周课上介绍断言实现的时候,莫名其妙被断言的真真假假搞晕了。起因是看到一段关于判断一段字符串的长度,使用了 ASSERT 方式,原文大概是这样写的:#define AES256_KEY "0123456789ABCDEF0123456789ABCDEF" /* 必须等于 32 ...
2024-07-29 08:40:26
368
原创 终端显示太单调?拷贝没有进度条?来试试这些技巧
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey 终端显示/etc/profile or ~/.bashrc自己制作的简单Linux 文件系统,你会发现终端显示为黑白色,很不好看因此可以采用如下方式让你的终端显示更舒服一些/etc/profile 文件修改如下:PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h...
2024-07-05 08:33:43
200
原创 只是简单采个ADC,你让我看这么多资料?
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOspreyADC采样应该是项目中最常用的外设了,比如采个电池电压,芯片工作电压、温度等,都要使用ADC外设,但是ADC看着简单,使用时却困难多多。比如adc时钟,各种规则、注入通道,内部、外部通道,转换顺序,触发方式,中断、dma等都要了解,否则你没法正确采样,涉及到的寄存器也很多,稍微不慎,就采样失败。我只是想采个样而已,咋这么...
2024-06-26 08:30:25
187
原创 百兆网速根本不够用啊
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey2018 年,对网络一窍不通,那个时候觉得百兆网速怎么样也是够用的了,因此买了一个百兆的 tp-link,这么多年,运行还算稳定,没出啥问题。100M带宽,传输速率算下来是 10MB/s,也就是说你的上传或下载速度限制在这里,而我从树莓派上传或下载时大概也是在 10MB/s 左右的速度。一般情况也够用了,但是还是想再快点...
2024-06-17 09:08:19
365
原创 遇见一个编译优化导致的 bug
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey最近在调试 can 通信,因为 c8t6 flash 很小,而鱼鹰培训工程完成的驱动越来越多,导致 flash 不足,因此把 bsp 的优化级别设置成-O2,谁知道在串口输入数据时直接 hardfault 了:进一步跟踪发现问题出在这条代码中:uint32_tcnt=*((uint32_t*)pinfo->...
2024-06-11 08:31:20
283
原创 掌握栈回溯意味着什么?
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey历时两个月(1/3),第一个完成电子表项目的学员出现了,并且顺利的掌握了栈回溯技巧,在工作中快速定位了一个任务异常挂起的bug,这种bug没有掌握方法的工程师可能需要调试好几天才可能解决,而且很多工程师对此没有头绪,只能靠笨办法一点点接近bug代码,而不是说通过栈信息直击 bug 代码现场。实用功能与驱动今年开课以来,鱼...
2024-05-26 20:30:34
283
原创 关于 STM32F1 开漏输出的误解
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey 正文有些 IO 可能作为双向输出,比如 I2C 的 SDA 引脚,如果配置成推挽输出(push-pull),那么当要读取 应答信号或者读取 i2c 数据时,需要重新配置 IO。因此,很多教程会建议配置成开漏输出(open-drain),这样就不需要来回配置输出方向。这里需要注意的一点是,不管是开漏还是推挽输出,作为...
2024-05-13 08:40:27
185
原创 开源云盘工具,你值得拥有 - 自建云盘
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey filebrowser一位道友给鱼鹰分享了一款开源云盘工具,使用体验非常好,比鱼鹰 nginx 搭建的网页资源分享方式好多了。arm 工具下载地址如下(其它平台可以在 github 主页找)https://github.com/filebrowser/filebrowser/releases/download/v2....
2024-04-15 08:40:37
200
原创 2023年代码输出总结
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey大家好,我是鱼鹰。从过年到现在,基本没什么输出,小说、微信、头条视频刷一刷,时间就悄咪咪地过去了。还好最近在准备第二期的培训课程,有外部因素推动着自己,终于可以逼着自己强行进入工作状态了。本人自制力还是比较差的,也是比较懒的那种,但是又有比较多想法,因此开了这个课,除了赚点辛苦钱,更重要的是能把自己想法实现出来。鱼鹰不想...
2024-03-16 17:30:29
873
原创 单车变摩托-自建服务器!!
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey导读前段时间家里搞了一台自用服务器家里宽带搞个服务器,YYDS(一)使用树莓派 3B+,16 G(TF卡) + 1G 配置,增加各种功能后,明显感觉不够用了。于是准备使用 树莓派5 升级一下服务器。配置如下:2.4GHz 四核 64 位 Arm Cortex-A76 CPUVideoCore VII GPU,支持 Op...
2024-03-04 08:50:44
906
原创 绝了,还能这么转化十六进制字符串-C语言骚操作
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey前段时间移植了 tinyUSB 开源库,使 STM32F013C8T6 成功模拟了 7 个串口 独立的 CDC 设备(参考了知乎上一篇文章,不过那个实现还有一些问题,并且不能单独设置每个串口的波特率)。后面又移植了 lwip ,成功实现了虚拟网络适配器:于是准备看看源码实现,突然发现一条看不懂的代码:_desc_str...
2024-01-09 08:50:10
485
原创 又是编译器的锅?全局变量怎么就从栈里取数据了?!
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey一个学员项目上需要完成app升级功能,但是跳转后直接 hardfault,项目紧急,只能找上鱼鹰加急处理(课程福利)。这种问题我都是比较自信的,M0+ 内核,感觉问题不大,只是没想到学员公司保密性比较强,不能远程控制电脑,只能微信视频进行指导调试,折腾许久,才最终定位跳转地址出现问题。static uint32_t j...
2023-12-26 08:55:16
445
2
原创 鱼鹰:理想很丰满,现实很骨感
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey从八月中旬到现在,四个月的时间,嵌入式进阶课程也快接近尾声,有些学员收获比较大,上课也很积极,但大部分学员因为各种事情,没怎么上课,感觉并没有多少提高。几乎每周都会安排答疑,但学员真正能花在学习上的时间少的可怜(鱼鹰花在这个课程的时间可能比学员还更多,写了很多代码,以帮助大家更好的学习),提问的人也比较少,就像学生时代一...
2023-12-18 09:00:31
824
原创 如何绑架C语言标准库函数?
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOspreyC语言动态内存可以使用 malloc 标准库函数,而 C++ 会使用 new 关键字申请,裸机情况下一般没有问题,但是在 RTOS 情况下,就需要考虑资源保护的情况,比如多个任务同时调用 malloc 函数申请内存,如果说不用关中断或互斥量之类的手段进行保护的,有可能同一个内存块被两个任务申请,动态内存内部维护的一些全局...
2023-11-01 08:25:49
95
原创 坑!const 声明的变量一定只能读吗?
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey鱼鹰一直以为 const 声明的变量一定是只读的,并且也一定会存放在 FLASH 中,直到在 103 的 map 文件中看到了这个变量:声明如下(函数体外):__I 声明如下:可以看到,虽然使用 const 修饰变量为只读,但是 MDK 编译器仍将这两个数组放在了 RAM 区(全局变量),这意味着这个变量仍可写(通过指针...
2023-10-07 08:58:40
135
原创 谈谈看门狗优先级
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey 前言一个学员在学习 uCOS 系统过程中,对看门狗任务的优先级产生了疑惑,到底该把喂狗任务优先级设置成最高还是最低好?这里谈谈鱼鹰个人看法,首先给出结论,最低,甚至是在空闲任务运行(使用钩子函数)。理由首先我们要知道看门狗的工作是什么?为什么要设置看门狗。很多产品出厂时,都会开启看门狗,这是产品运行的最后保障,可以...
2023-09-13 09:01:23
404
2
原创 关于 GD32 虚拟串口的两个 BUG
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey最近鱼鹰在搞调试器,折腾了好多天终于理解了 MDK 、下载算法、调试器、MCU 之间的关系。简单来说,就是,调试器作为 USB 转 SWD 协议的转换工具,MDK 通过 USB 驱动这个工具,下载算法包含了一些 MCU 内部 FLASH 擦除、编程代码,和普通代码不同的是,该代码可以下载在任意位置运行。如果需要校验,还会...
2023-07-18 17:35:12
848
原创 本跳转程序靠bug运行,请不要优化
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey图片来源于网络绝大多数产品开发,软件一般都会设计成 boot + app 的形式,这是方便后续软件更新,否则更新会变成一个很麻烦的事情。网上随处可见的跳转程序大概如下:#define APP_START_ADDR 0x08040000 voidjump2app(){typedefvoi...
2023-07-11 11:30:30
853
1
原创 动态域名服务 DDNS,YYDS(四)
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey前面的笔记《如何像访问百度一样访问家里的服务器?(三)》已经通过公网 IP +桥接,完成了基本功能,已经可以通过公网 IP在全国各地访问家里的服务器了。但是有个麻烦的地方是,虽然运营商给我的是公网 IP,但却是动态的,两三天就更换一次,因此我们需要一种服务,实时告诉我们家里宽带的当前 IP 是多少才能访问。我们可以让...
2023-06-13 11:31:00
508
原创 如何像访问百度一样访问家里的服务器?(三)
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey在前面的两篇笔记《家里宽带搞个服务器,YYDS(一)》《家里宽带申请公网 IP(二)》,介绍了如何获取公网 IP,算是打好了基础。也有很多道友说,很难获取公网 IPv4,可能每个地方政策不同,运营商不同,政策也不同,因此如果确实有需要的话,可以更换运营商,或者使用 IPv6(这个一般运营商都会给,如果没有,可以打客服问问...
2023-05-24 11:30:46
477
原创 家里宽带申请公网 IP(二)
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey在之前的《家里宽带搞个服务器,YYDS(一)》笔记中大概介绍了,因为现有的 IPv4 的地址资源枯竭,导致大部分网络都是局域网,这种联网方式可大大保护局域网中的设备,但是对于想暴露服务器到互联网中的用户来说,就很不方便了。因此,很多用户,因为有服务器的需求,不得不每年付费购买 云服务器。对于家里有宽带的用户来说,完全可以...
2023-05-17 11:31:44
1904
原创 家里宽带搞个服务器,YYDS(一)
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey拥有一个家庭宽带18 年家里弄了一根光纤,算是和全世界连通了。不过一直以来也只是家里手机上个网,看个监控,并没有很好的利用上。最近研究一款无线调试器,需要一个服务器。购买云服务器也是一个不错的选择,不过鱼鹰不想每年花那冤枉钱,毕竟鱼鹰所需的服务器性能不需要多好,够用就行。刚好最近公司项目上也在研究网络相关的问题,对网络的...
2023-05-08 11:30:30
384
原创 MDK 须知的几个特殊符号
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey有的时候,我们需要通过脚本的方式在 bin 文件前加一些头(比如版本号、校验),因此今天鱼鹰分享一点小知识。hex 转 bin 的方法太多了,就不多介绍:《功能强大的 HEX 开源转换工具,你值得拥有》《Keil 生成 Bin 文件最正确的姿势》《bin 和 axf 文件的生成》可以看到用了一个奇怪的符号 !L。另外《B...
2023-04-23 11:30:03
163
原创 数组越界是一颗隐形炸弹
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey数组越界问题大家在软件开发过程中应该都司空见惯了。如果你没见过,大概率是一个新手,工作经验不足,倒不是说你自己会生产这种 BUG,但有些同事却可能是 BUG 搬运工。在鱼鹰五年的工作开发过程中,除了在北京刚毕业那会没遇到这种隐藏问题(碰到的都是自己生产的 BUG,不过自产自销,也还行),在深圳的这几家公司都遇到了数组越界...
2023-04-17 08:30:19
166
原创 独立看门狗的一点经验
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOspreystm32基本都内置两种看门狗(另外还有外置的看门狗芯片),窗口看门狗和独立看门狗,两种看门狗的使用方法和应用场景各不相同,今天主要讲讲最常用的独立看门狗(工作这么多年,没见谁用过窗口看门狗,这种估计在时序严格的场合会用上)。所谓独立(Independent watchdog),就是该看门狗有独立的时钟源供看门狗使用,V...
2023-03-27 08:30:47
132
原创 周末两天入门 PCB 设计
最近突然想自己画点简单的板子,自己DIY一下,于是花了两天时间(2 倍速)看完了杜洋工作室的入门视频(以前付费视频,目前B站可免费观看),收获很大,觉得算是入了个门。照着视频画了一个简单的pcb,同时熟悉了一下操作,挺有成就感的事情。简单说说自己的入门心得。我觉得学习一项新技术,有老师手把手教是最好的。以前在大学创新实验室的时候,也简单的接触了AD 画图软件,基本安装软件和使用方法懂一些,所有入门...
2022-10-17 09:47:13
399
原创 FreeRTOS 中如何定位 HardFault?
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey大家好,我是鱼鹰,因为一些事情,这次更新来的有点迟。但还是争取大家每次都能从鱼鹰公众号中学到一些实实在在的技术,提高自己的核心竞争力。感谢大家一直以来对鱼鹰的支持。今天继续聊聊开发中常见的 HardFault,这个问题应该从学习 STM32 开发以来就一直伴随着我们,很多人遇到这种问题也是不知道该如何定位。如果只是独立开...
2022-09-19 08:40:45
1683
原创 KEIL 两个高效的编辑技巧
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey大家好,我是鱼鹰。今天为大家分享两个鱼鹰偶然发现的编辑技巧,可以加快大家的编辑速度。关于编辑技巧,鱼鹰在之前的笔记中有介绍《KEIL 那些编辑技巧与方法》,这里继续分享。在这里说明一下,虽然 KEIL 的编辑功能一直为人诟病,很多人转而选择 VSCode 之类的平台,总在说 KEIL/MDK 的...
2022-07-18 08:36:39
459
1
原创 强!!如何测试自制调试器的功能?
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey自制了一个调试器,该如何确定这个调试器是否正常工作呢?官方给了一个调试工程,专门用于测试调试器是否正常(所有 MDK 支持的调试器都可以使用该工程测试)。为了测试 103 的芯片,我们需要稍微修改一下工程(原来的工程不适合)。工程路径如下(这里的 5.5.1 根据实际安装版本找):C:\Keil...
2022-06-27 08:40:22
222
原创 联合体原来是这么用的!
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey不管是线程间、还是设备间通信,都需制定一个通信协议,规定数据的格式、内容等。线程间通信因为在芯片内部传输,基本可以排除数据干扰导致的异常,所以通常会设计的比较简单,但是设备间的通信(不管是无线还是有线)就会复杂一些,一般都包含帧头、校验位之类的,因此鱼鹰在一篇文章中介绍了一个基本的串口协议框架《...
2022-06-06 08:45:22
161
原创 关于自制调试器的那些事儿(一)
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey大家好,我是鱼鹰。最近鱼鹰想自制一个 CMSIS-DAP 的调试器,并且准备采用蓝牙的方式无线调试,所以把官网的关于 CMSIS-DAP 的资料大体都过了一遍。除了 SWD 通信那个 DAP_Transfer 命令之外,基本上理解都差不多了。官网 DAP 命令解释如下链接:https://www...
2022-05-23 08:45:48
444
原创 都是串口工具惹的祸
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey五一假期这几天,鱼鹰准备写一个方便使用、移植的串口框架(适用于 STM32、GD32),花了几天时间,终于把 DMA 发送、接收的框架写好了,进入了最终的测试阶段。于是鱼鹰使用 XCOM 这个串口工具准备测试一波。毕竟之前用的时候,感觉也还行,没啥大问题,比较稳定,一般串口稳定性测试的时候都用它...
2022-05-06 08:45:00
183
原创 代码调着调着就失联了???
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey不知道你是否有这样的体验:代码单步调试,调着调着,出现了下面的提示框:很多时候,莫名其妙,一般情况,只能退出调试,再重新进入。一般没啥影响,但有的时候,我们是为了抓 BUG 现场才进入的调试模式《BUG 终结者,现场抓获!|颠覆认知》,一旦因为失联导致不能继续调试,估计得骂娘了(BUG 容易复现...
2022-04-21 08:40:00
154
原创 什么,这个 C 语言大坑你没见过?
来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey开发过程中,你是否会发出“基础不牢,地动山摇”的感慨,我相信,只要有经验的工程师,应该都有过。鱼鹰曾经因为一个很基础的知识,差点毁了整个项目,这不是危言耸听。因为这个代码用于整个系统自检,一旦运行出错,整个系统就废了。为了不让别人篡改鱼鹰的代码,鱼鹰设计了多套机制,其中一个就是定时检查关键代码是...
2022-04-12 08:45:00
163
原创 如何排查串口通信问题?
传输来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey工作过程中,总是会遇到各种各样的通信问题,除了掌握软件知识,必要的硬件技能也必不可少,比如万用表、示波器、逻辑分析仪等,如此才能做到精准定位,早点打卡下班~~鱼鹰根据个人多年的嵌入式开发经验,在此斗胆总结一番,希望可以给一些新人提供排查方向。在此,以串口通信为例,介绍排查步骤或方向:红色代表...
2022-04-06 11:50:00
7517
1
C8T6 核心板 CMSIS-DAP 固件源码
2022-06-05
jz2440 linux2.6
2020-12-24
s3c2440.zip
2019-11-10
AN2668_通过过采样来提高STM32的ADC精度 - 应用笔记.pdf_英中.pdf
2019-05-09
NRF24L01+ 源码
2018-12-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人