上位机图像处理和嵌入式模块部署(f103 mcu获取唯一id)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
对于stm32f103系列mcu来说,一般每一颗原厂的mcu,都会对应一个唯一的id。那这个id可以用来做什么用呢?个人认为,可以用来做激活使用。举个例子,第一次mcu模块使用的时候,一般可以通过认证的上位机激活。激活的时候,模块把自己的id告诉上位机,等上位机根据id生成一串校验码之后传给模块,模块收到这个检验码,并且保存到自己的flash上面。下次模块启动的时候,就会确认当前模块是不是合法认证过,如果是,继续启动;反之,则拒绝启动运行。这样,即使别人把flash里面的程序和数据都copy走,换到新的设备上,也是启动不起来的。
1、芯片id的获取
103系列的芯片id主要就是从三个地址获取三个32位数据就可以了。这三个地址分别是0X1FFFF7F0、0X1FFFF7EC、0X1FFFF7E8。
void Get_ChipID(void)
{ChipUniqueID[0] = *(__IO uint32_t *)(0X1FFFF7F0); // highChipUniqueID[1] = *(__IO uint32_t *)(0X1FFFF7EC); // ChipUniqueID[2] = *(__IO uint32_t *)(0X1FFFF7E8); // low
}
2、flash容量的获取
flash容量的获取和id的获取其实是一个模式,也是从一个固定地址0X1FFFF7E0获取。虽然我们的mcu是c8t6,但是实际获取的大小是128k。按照道理,只有cbt6才是128k,根据网上的介绍,说这两颗mcu是共线生产的,一般情况下,不推荐c8t6使用后面的64k,最好按照厂家实际说明书标明的大小来使用。
3、测试代码
测试代码就比较简单了。一般就是初始化一下时钟、初始化串口、获取id和flash大小之后,打印一下即可,
int main(void)
{SystemClock_Config();DEBUG_USART_Config();Get_ChipID(); printf("\r\nID: 0x%08X-%08X-%08X\r\n",ChipUniqueID[0],ChipUniqueID[1],ChipUniqueID[2]);printf("\r\nflash size: %dK \r\n", *(__IO uint16_t *)(0X1FFFF7E0));while(1) {}
}
最后打印的效果如下所示,

4、固件和芯片id
其实,不管是mcu,还是linux soc,很多时候我们都希望固件里面可以包含一些芯片id的信息。不然,要是没有这些信息的话,这意味着固件或者linux程序可以被随意拷贝、复制。而一旦有了这些id之后,那我们就可以通过固件下载、校验的方法来判断,当前的模块是不是合法、正版的模块,这对保护开发者的权益来说,还是大有裨益的。
相关文章:
上位机图像处理和嵌入式模块部署(f103 mcu获取唯一id)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于stm32f103系列mcu来说,一般每一颗原厂的mcu,都会对应一个唯一的id。那这个id可以用来做什么用呢?个人认为&…...
运筹学_3.运输问题(特殊的线性规划)
目录 前言3.1 平衡运输问题中初始基可行解确定运输问题平衡运输与非平衡运输平衡运输问题的数学模型单纯形法解决平衡运输问题,初始可行基的确认 3.2 平衡运输问题的最优解判别求检验数表上作业法 3.3 产销不平衡的运输问题运输问题中产大于销的问题运输问题中产小于…...
科研项目书写作学习(持续更新中...)
写好一个科研项目书也是科研中很重要的一部分,所以借这篇博客做一个积累。还是以模块化的方式吧,后面慢慢那再整合逻辑。可能写的也不是很好,慢慢提升吧~ 背景 科研项目书的背景怎么写?首先要突出问题的价值(也就是做此研究的动…...
男士内裤哪个品牌好一点?2024热门男士内裤推荐
男人的内裤保质期只取决于被别人看见的次数,如果某条内裤从未被别人看见过,那它永远都是你的新内裤。也就是说,只要穿着破内裤这尴尬的瞬间没被目击,男人就能永远和一条内裤在一起。 实际上如果长时间不更换男士内裤,…...
Llama模型家族之RLAIF 基于 AI 反馈的强化学习(六) RLAIF 代码实战
LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 基于 LlaMA…...
计算机tcp/ip网络通信过程
目录 (1)同一网段两台计算机通信过程 (2)不同网段的两台计算机通信过程 (3)目的主机收到数据包后的解包过程 (1)同一网段两台计算机通信过程 如果两台计算机在同一个局域网中的同…...
42.开发中对String.format()的使用之空位补齐
用于空位补齐 Int x1; //对于传入的数字做处理,如果传入的数字不足三位,则使用数字0自动补齐 String numString.format(“%”3”d”,x); System.out.println(“num”num);//输出结果为:001 也可以简写成: String num2String…...
通用代码生成器应用场景四,跨编程语言翻译
通用代码生成器应用场景四,跨编程语言翻译 如果您有一个Java工程,想把它移植到Rust或Golang语言中去,希望尽可能加快研发速度。 如果您的系统是通用代码生成器开发的,保留了系统的SGS源文件或者SGS2的Excel模板,您可…...
β-烟酰胺单核苷酸(NMN)功能不断得到验证 市场规模呈增长态势
β-烟酰胺单核苷酸(NMN)功能不断得到验证 市场规模呈增长态势 β-烟酰胺单核苷酸(β-Nicotinamide mononucleotide,NMN)是一种生物活性分子,是一种辅酶Ⅰ(NAD)的前体,也是…...
深入理解 Go 语言中的字符串不可变性与底层实现
文章目录 前言1 字符串类型的数据结构组成2 为什么要这么设计数据结构?3 为什么说字符串类型不可修改?4 如何实现字符串的修改?5 为什么字符串修改的字面量用单引号?6 如何判断字符串的修改新建了一个字符串?7 字符串的…...
采购订单审批和取消例子
文章目录 1 Introduction2 Example 1 Introduction This is a exmaple for releaseing po and reseting po. 2 Example DATA:lw_in TYPE zmms015,lw_out TYPE zmms015_out,lt_head LIKE TABLE OF ZMMT003_head,lw_head TYPE ZMMT003_head,lt_item TYPE zmmt003_item_t,lt…...
PHP:集成Xunsearch生成前端搜索骨架
如果是安装宝塔,我们在集成xunsearch的时候就会比较简单,后面我们在介绍其他的接入方式; 首先我们进入到宝塔管理后台:【软件商店】-【输入xun】-【点击xunsearch】直接安装即可 安装成功之后,会自动在www/server中创…...
ThreadLocal详解,与 HashMap 对比
ThreadLocal原理,使用注意事项,解决哈希冲突方式->和HashMap对比 ThreadLocal 原理: ThreadLocal 是 Java 中的一个线程级别的变量,它允许您在不同线程之间存储和访问相同变量的不同副本,每个线程都拥有自己的副本&…...
flask流式接口
一、接口封装 from flask import Flask, request, Response, stream_with_context app Flask(__name__) app.logger.disabled Truedef chat_stream_(prompt):for new_text in [1,2,3]:yield new_textapp.route(/chat_stream, methods[POST]) def chat_stream():prompt requ…...
MatLab命令行常用命令记录
文章目录 MatLab常用命令行MatLab常用按键标点说明 MatLab常用命令行 Matlab常用命令用来管理目录、命令、函数、变量、工作区、文件及窗口。常用命令如下表 命令作用cd显示或改变当前文件夹load加载指定文件的变量dir显示当前文件夹或指定目录下的文件diary日志文件命令type…...
Linux —— MySQL操作(1)
一、用户与权限管理 1.1 创建与赋予权限 create user peter% identified by 123465 # 创建用户 peter,# %:允许所有用户登录这个用户访问数据库 刚创建的新用户是什么权限都没有,需要赋予权限 grant select on mysql.* to peter%; # 赋予…...
TCP四次握手与http协议版本区别
TCP四次挥手(图解)-为何要四次挥手 当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那 对于TCP的断开连接,这里就有了神秘的“四次挥手”。 第一次挥手:主机1(可以使客户端…...
【机器学习】洞悉数据奥秘:决策树算法在机器学习中的魅力
在机器学习的分类和回归问题中,决策树是一种广泛使用的算法。决策树模型因其直观性、易于理解和实现,以及处理分类和数值特征的能力而备受欢迎。本文将解释决策树算法的概念、原理、应用、优化方法以及未来的发展方向。 🚀时空传送门 &#x…...
redis(17):什么是布隆过滤器?如何实现布隆过滤器?
1 布隆过滤器介绍 布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否在一个集合中。它基于位数组和多个哈希函数的原理,可以高效地进行元素的查询,而且占用的空间相对较小,如下图所示: 根据 key 值计算出它的存储位置,然后将此位置标…...
STM32自己从零开始实操03:输出部分原理图
一、继电器电路 1.1指路 延续使用 JZC-33F-012-ZS3 继电器,设计出以小电流撬动大电流的继电器电路。 (提示)电路需要包含:三极管开关电路、续流二极管、滤波电容、指示灯、输出部分。 1.2数据手册重要信息提炼 联系排列&…...
5步构建适合你的Yuzu版本管理系统:写给模拟器玩家的效率指南
5步构建适合你的Yuzu版本管理系统:写给模拟器玩家的效率指南 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads 还在为Yuzu模拟器版本选择而困惑?为什么新游戏在最新版模拟器上反而卡顿&#x…...
G-Helper终极指南:华硕ROG笔记本性能优化神器完全解析
G-Helper终极指南:华硕ROG笔记本性能优化神器完全解析 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址…...
如何使用设计模式-误区
通过学习设计模式,可以使软件开发人员的面向对象分析和设计的能力得到很大的拓展和加强,即使编程人员还没有直接使用设计模式,只要真正用心理解了设计模式,那么软件开发人员的设计水平也将得到很大的提高。当然,学习设…...
MiroFish群体智能引擎部署与配置全指南
MiroFish群体智能引擎部署与配置全指南 【免费下载链接】MiroFish A Simple and Universal Swarm Intelligence Engine, Predicting Anything. 简洁通用的群体智能引擎,预测万物 项目地址: https://gitcode.com/GitHub_Trending/mi/MiroFish MiroFish作为简洁…...
TwinCAT3 PLC安装避坑指南:从EtherCAT驱动到系统配置的完整流程
TwinCAT3 PLC实战安装指南:从零搭建工业控制系统的关键步骤 第一次接触TwinCAT3的工程师往往会被其强大的功能和复杂的配置流程所震撼。作为工业自动化领域的瑞士军刀,TwinCAT3将PLC、运动控制和实时通信集成在一个平台上,但这也意味着安装过…...
Nomic-Embed-Text-V2-MoE实战:构建智能文档检索系统与MySQL集成
Nomic-Embed-Text-V2-MoE实战:构建智能文档检索系统与MySQL集成 1. 引言 想象一下,你所在的公司有成千上万份产品手册、技术文档和合同文件,它们散落在各个文件夹里,格式五花八门。当你想找一份关于“如何解决产品X在低温环境下…...
VINS-Mono跑EUROC数据集后,如何用evo工具包进行轨迹精度评估与可视化(附完整命令)
VINS-Mono轨迹精度评估实战:从EUROC数据集到evo工具包全流程解析 在完成VINS-Mono算法在EUROC数据集上的运行后,如何科学评估其轨迹精度成为算法优化和论文撰写的关键环节。本文将深入讲解使用evo工具包进行定量分析的完整流程,涵盖指标计算、…...
OpenClaw对话日志分析:GLM-4.7-Flash任务执行成功率提升
OpenClaw对话日志分析:GLM-4.7-Flash任务执行成功率提升 1. 为什么需要分析对话日志 上个月我把本地部署的OpenClaw智能体从Qwen切换到了GLM-4.7-Flash模型,本以为会获得更好的任务执行效果,结果却遇到了意想不到的问题。每天早上打开电脑&…...
二维码生成新体验:Amazing-QR核心功能与个性化应用指南
二维码生成新体验:Amazing-QR核心功能与个性化应用指南 【免费下载链接】amazing-qr 💮 amazing QRCode generator in Python (supporting animated gif) - Python amazing 二维码生成器(支持 gif 动态图片二维码) 项目地址: ht…...
探索式学习:UMA模型在水分解催化中的应用指南
探索式学习:UMA模型在水分解催化中的应用指南 【免费下载链接】ocp Open Catalyst Projects library of machine learning methods for catalysis 项目地址: https://gitcode.com/GitHub_Trending/oc/ocp 突破传统计算瓶颈:UMA模型的核心价值解析…...
