- 博客(67)
- 收藏
- 关注
原创 硬件电路逆向
1 划分模块: 输入模块 输出模块 电源转换模块 数据发送点 数据接收点。2 上电用示波器找波形变化,引线出关键点看波形。4 根据丝印反查型号,找到就找原理图看原理,3 取下元器件测量值,取下后看波形,1 断电用万用表找同一点,4 所有点都遍历一遍,找答案。3 头尾往中间挤出答案。
2024-11-11 15:02:26
154
原创 问题定位和解决方法
3 猜想可能的实现方案:方案1 方案2 方案3。4 验证猜想: 发现方案2可行,方案1 3失败。2 分析 对比数据:异同点 关键点。1 抓取数据:各状态 各型号。5 编码实现方案2.
2024-11-11 14:54:23
436
原创 嵌入式产品开发流程
2 需求分解:分解为模块 模块边界划清楚 模块间通信确认理清楚。1 需求确认和理解:用户需求 产品需求 功能需求 产品经理需求。5 开发:给出详细方案 给出计划和质量要求。7 测试和bug修复:解决25%bug。6 编码和调试: 解决70%bug。3 设计方案:硬件 软件方案。4 验证方案:确认可行。9 维护和升级,优化等。
2024-11-11 14:47:07
100
原创 RTOS IOT 结构
device driver:音视频编解码 通信收发器 采集信息的传感器 用户交互的屏幕显示按键等。MCU + 通信收发器(WIFI BLE NET) + 通信接口(UART)phy层: 通信的编码方式 效率 质量 速度 频率 等。net层: ip分配 路由表的保存 路由寻找 转发。lib:BLE WIFI LWIP ZIGBEE ROLA 等协议栈。mac层: 通信链路的建立 mac地址的获取和保存。数据收发缓存支持: list buff。APP: 多个运行的业务线程。
2024-11-11 14:11:39
273
原创 产品的流程
原装芯片逆向出电路和flash数据。flash数据分为可执行文件和数据。根据可执行文件和运行时数据线的状态值分析出汇编指令集,根据指令集分析出代码逻辑和数据的用处。 IC设计设计数字和模拟部分,根据设计的逻辑做出原型机,原型机验证通过则可以交后端设计实际的芯片制造相关内容。 制造好的芯片需调整各个数字和模拟模块的参数,使芯片运行在最佳状态。 开发出软件并写入芯片,测试芯片功能是否正常,良率是否高。 设计产品的PCB,做出最终用户可用的产品。 量产,维护。
2024-01-10 19:09:51
367
原创 产品开发流程
从市场上的用户获取需求,或者获取竞争对手的产品,来决定自己的产品需求。 产品经理把产品需求交给项目经理,项目经理组织研发团队准备开发。 项目技术负责人根据产品需求提出实现的各种技术路线和优缺点,交给产品经理做决策后项目经理整理出详细技术需求。 项目技术负责人把详细技术需求分配给研发人员去开发。 项目经理在开发阶段跟进进度,解决资源和冲突问题。 开发完成后经单元测试、集成测试、系统测试、整机测试,产品可以试产。 试产之后可以量产,量产后维护。
2024-01-10 18:59:14
415
原创 如何带一个啥都不会的新人?
第一阶段 软件开发基础 三天产品了解:采集控制分析的产品介绍,产品目的介绍,基本实现原理介绍。软件工程相关:产品的需求分析 设计 实现 测试 发布 维护。知道代码是啥如何变成程序跑起来:源文件头文件 编译 可执行文件 运行 调试。第二阶段 c语言基础 两周基本数据类型程序控制结构结构体 联合 枚举内存编译问题解决调试手段第三阶段 单片机和芯片驱动 两周原理图和pcb图能读懂。mcu的了解和跑起来。串口能打印东西。mcu资源使用:gpio spi adc timer pwm i
2021-08-28 23:29:54
159
原创 单片机开发 学习步骤 分享
一 初级 功能简单程序和硬件。1 c语言基础: 数据类型 基本语句2 操作寄存器控制单片机:GPIO USART ISR。3 去控制硬件:LED灯和点阵 按键 数码管 。简单的芯片通信。4 硬件调试工具:万用表,示波器,逻辑分析仪。5 软件调试: 单步调试 打印 堆栈。二 进阶 复杂点的软硬件。1 库函数控制stm32外设资源:GPIO USART SPI IIC TIMER ISR。2 硬件驱动调试 控制硬件通信芯片 传感器芯片 内存芯片 存储芯片。spi iic usart通信...
2021-08-22 22:08:10
1083
原创 嵌入式c编程常用套路总结
状态机 动作有超时和重复次数。主循环添加定时任务。结构体表示模块化后的变量聚合体 文件为单位。先确定方案然后自顶向下定义接口和函数,最后实现。变量初始化值,设置和复位值。防止栈溢出:局部变量尽量小,中断内快进快出,只设置标志,不要太多嵌套。...
2020-12-19 23:15:07
237
1
原创 arm-gcc 指定变量地址
https://www.cnblogs.com/RegressionWorldLine/p/11968467.html
2020-11-09 09:33:59
3586
原创 简单的链接脚本例子
3.3 简单的链接脚本例子 很多链接脚本都非常简单。 最简单的链接脚本只有一个命令:"SECTIONS"。你用这个命令去描述输出文件的内存的布局。 "SECTIONS"命令是一个非常强大的命令。我们在这会描述一个它的简单的使用。让我们假设你的程序只包含了代码,初始化了的数据,和没有初始化的数据。它们将会分别在'.text','.data'和'.bss'分区内。让我们进一步假设你的输入文件只有一个。 对于这个例子,让我们假设代码会加载在地址 0x10000,然后数据会从地址 ...
2020-10-31 12:24:39
512
原创 arm core m3 手册地址
arm core m3 手册地址:https://developer.arm.com/documentation/ddi0337/e?lang=en
2020-09-15 09:31:24
223
原创 hmos
源码下载:LiteOS 开源代码路径:https://github.com/LiteOS/LiteOS里面有md文件的系统的详细介绍:消息 内存池 定时器 任务等等开始一个移植的教程:https://liteos.github.io/porting/evb-and-tools.html移植例子https://liteos.github.io/porting/stm32-makefile.html#%E7%BC%96%E8%AF%91-stm32cube-%E7%94%9F%E6%88%90%E.
2020-09-12 11:51:44
403
原创 ubuntu 安装vm虚拟机时 启动失败 How to sign a kernel module Ubuntu 18.04
失败提示信息如下:vboxdrv.sh: Stopping VirtualBox services.vboxdrv.sh: Starting VirtualBox services.vboxdrv.sh: Building VirtualBox kernel modules.vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.There were problems setting up
2020-08-27 12:16:48
750
原创 c union test
typedef union { uint8_t name; uint8_t place;} u_test_t; u_test_t u_test = {0}; printf("u test name:%d place:%d\r\n", u_test.name, u_test.place); u_test.place = 8; printf("u test name:%d place:%d\r\n", u_test.name, u_test.place);..
2020-07-27 09:44:28
119
原创 RIOT 学习资源地址
1 简单介绍:http://www.riot-os.org/api/index.html#the-quickest-start2 git 源码库 地址: git://github.com/RIOT-OS/RIOT.git3 make的方法,加上board 的类型 比如:make BOARD=samr21-xpro4 写代码时用到新的MCU模块时 使用新增的mcu模块资源时, Makefile修改 FEATURES_PROVIDED += 模块名 比如 periph_i2c...
2020-06-29 20:46:16
311
原创 RAK7258 end node 配置相关
参考文档路径:https://downloads.rakwireless.com.cn/LoRa商业化网关/室内型-RAK7258/应用笔记/RAK7258快速使用手册.pdfhttps://downloads.rakwireless.com.cn/LoRa商业化网关/室内型-RAK7258/应用笔记/RAK_LoRaWAN商业网关配置指南.pdf1 添加应用 (2): 如何使用网关内置的 Network Server(标准固件)? 1. 确保 LoRa Gateway-...
2020-06-22 21:00:54
643
原创 RolarWAN协议
参考资料:http://murata.eetrend.com/node/10020601 end node节点的认证或者叫激活,有两种模式1)OTTA2)ABP2 报文格式 PHY MAC FHDR Fctrl Fopts MACCommand3 三种终端类型 class A: class B:在支持CLassA类型的接收方式之外,还需周期性监测网络下行的ping slot,而为了实现周期性的同步,引入beacon来携带时间信息,终端可以利...
2020-06-22 20:38:36
238
原创 RIOT OS 学习记录
0 学习RIOT的源码结构。去官网看模块和函数的介绍和例子。下载源码看下。1 MCU的板上资源的使用。GPIO:UART:TIMER:IIC:SPI:2 多线程编程。创建:线程优先级设置最好不同 0为最高优先级 -1为最低,栈大小设置。任务执行,线程间通信,同步,互斥。3 MCU裸奔和有系统的区别是啥?上系统的价值很大?从软件工程的开发和维护难度、开发速度和软件性能方面考虑。...
2020-06-20 09:42:55
694
原创 软件工程开发考虑
一致性:和之前好的保持一致,好的不要改。兼容性:之前的老产品功能ok,同时满足新的产品功能需求。可维护:代码易懂简单,修改时改动小,新增时耦合小。代码复用:少修改。开发速度代码量 实现复杂度:c++ c的选择函数和模块的定义:设计 加一层算法:提高效率 优化。...
2020-06-12 18:07:39
137
原创 软件里模块如何划分?
嵌入式软件层次划分如下:APP可能的Clib系统层驱动硬件每一层里都分为下面三层上层用户要调用的API本层的功能实现下层API调用功能实现可以分为下面几部分自动化测试日志外部调用基本模块的实现增删改查通信的初始化收发 分析协议部分server和client部分dbg部分通用部分common...
2020-06-12 18:04:28
1403
原创 robotframework+ssh库 自动化单元测试实现
1 需要的东西:robotframework ride ssh库 python2 运行方式:ride里编码check数据3 优点:能可视化的单步调试 可以加tag选择用例是否执行。4 缺点:编码环境不友好 容易卡死。
2020-06-12 17:24:10
407
原创 stl list algorithm
list push_back for_each merge unique#include <iostream>#include <list>#include <algorithm>using namespace std;void outString(string str){ cout << str << " ";}int main(){ list <string> MetFriend; list &l.
2020-06-12 17:00:31
123
原创 stm32开发总结
1 给功能需求 给原理图和位图,评审需求是否合理和修改。主要如下:功能需求搞清楚。引脚够用不 是否需要换引脚,功能模块是否还有剩余可以满足的。合理的话确认开发实现方式。2 给板子和相关器件 单板调试。主要如下确认硬件电路是否正确 ,有问题请硬件的确认修改。MCU功能模块能否正常工作,主要是驱动编码。3 给硬件的功能设计的控制策略 功能调试 。主要如下根据策略编码功能代码,测试功能是否正常。4 给整机装好 整个产品在用户角度各个功能都测试一遍,作为最后的确认 整机调试.
2020-06-12 10:09:36
679
原创 文件IO和标准IO
linux应用程序多用标准IO,fopen fclose 等,因为它有缓存效率高,是C库的函数。unix系统实现了文件IO函数,open read write close 等,是系统函数到内核执行,不缓存的,所以效率低。应用程序——行缓存———标准IO——文件IO——内核缓存...
2020-06-10 23:01:55
120
原创 用malloc的原因
1.malloc是用来进行内存分配,事先不知道大小时2.需要重新分配(增加)内存,前面最好用malloc分配,然后用realloc3.分配较大内存时,因为栈空间有限4.从函数返回结果时,由于生命周期的原因注意malloc比较耗时,效率低。...
2020-06-10 09:34:55
877
原创 git遇到问题解决
序号 功能 命令 1 单独使本地某个文件和远端一致 git checkout -- file 2 忽略文件权限比较 git config core.fileMode false 3 回退到某个版本 git reset --hard log_num ...
2020-06-10 09:34:46
352
原创 linux读写锁
读写锁是"写模式加锁"时, 解锁前,所有对该锁加锁的线程都会被阻塞。 读写锁是"读模式加锁"时, 如果线程以读模式对其加锁会成功;如果线程以写模式加锁会阻塞。 读写锁是"读模式加锁"时, 既有试图以写模式加锁的线程,也有试图以读模式加锁的线程。那么读写锁会阻塞随后的读模式锁请求。优先满足写模式锁。读锁、写锁并行阻塞,写锁优先级高...
2020-06-10 09:34:27
542
原创 windows相关问题解决
序号 功能 方法 1 git bash密码 很多时候我们容易在Git Bash操作的时候,不慎输入错误的用户名或密码,此时一直提示: remote: Incorrect username or password ( access token ) 解决办法: 1.打开控制面板(快捷打开win+R,输入contr...
2020-06-10 09:34:18
402
原创 进程前后台切换
1. command &让进程在后台运行2. jobs –l 查看后台运行的进程3. fg %n 让后台运行的进程n到前台来4. bg %n 让进程n到后台去;PS:“n”为jobs查看到的进程编号。
2020-06-10 09:34:03
374
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人