- 博客(52)
- 资源 (8)
- 收藏
- 关注
原创 ECDSA算法签名与验签的程序实现
ECDSA(Elliptic Curve Digital Signature Algorithm)是一种基于椭圆曲线密码学的数字签名算法。它利用椭圆曲线上的点构成的阿贝尔群的性质,以及椭圆曲线离散对数问题的计算难度来确保签名的安全性。ECDSA的密钥和签名相比RSA等传统算法更短,但提供相同甚至更高的安全性。例如,256位的ECDSA签名具有与3072位的RSA签名相当的安全强度。这里采用PC端验证的,也可直接移植到单片机中,
2024-08-23 18:16:20 991
原创 C语言 CJSON使用实例
JSON数据是一种轻量级的数据交互格式,在各个领域中普遍存在,如嵌入式中与上位机交互,获取某些API接口数据时,常常会使用到JSON数据,json采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交互语言,易于解析与生成。在C语言中,通常使用cJSON对数据进行封装或解析,在使用中不要求熟记于心,但起码得知道怎么用,这对于数据交互相当便利!提示:以下是本篇文章正文内容,下面案例可供参考。
2022-12-20 17:30:16 1615 1
原创 FTP服务器移植到Linux开发板
将Linux开发板作为一个小型的 FTP 服务器,这样就可以通过 FileZilla 软件直接在开发板和 windows 之间通过网络进行文件互传。在开发板上搭建 FTP 服务器很简单,就是 vsftpd 的移植。提示:以下是本篇文章正文内容,下面案例可供参考。
2022-11-23 09:55:41 2043
原创 OpenSSH移植到Linux开发板
在Linux开发中,有时候需要远程登录到开发板上对系统进行一些操作,这个时候就需要用到SSH服务。SSH(Secure Shell 安全外壳协议)是较可靠,专为远程登录会话和其他网络服务提供安全性的协议,OpenSSH是SSH协议的一个免费开源版本。zlib,openssl和openssh,可依次到官网下载对应的源码:opnssh 官网:提示:以下是本篇文章正文内容,下面案例可供参考。
2022-11-18 17:41:25 1787
原创 vmlinux Image zImag uImage 的区别
文章目录前言一、vmlinux Image zImag uImage uImage的区别总结前言学会嵌入式Linux的 都有接触过zImage,这个在Linux kernel中生成的镜像文件,而有些与它相关的文件,却很难记起与zImage的关系,如Image uImage一、vmlinux Image zImag uImage uImage的区别vmlinux是编译出来的最原始内核文件,是未压缩的文件,一般比较大,有16MB左右Image是Linux内核镜像文件,但是Image仅包含可执行的
2022-04-29 10:11:46 526
原创 uboot移植过程
uboot移植过程 IMX6ULL文章目录uboot移植过程 IMX6ULL前言一、从原厂中移植uboot进行测试二、在U-Boot中添加自己的硬件1. 添加默认配置文件2. 添加对应的头文件3. 添加对应的板级文件夹3.1 修改Makefile文件3.2 修改 mx6ull_alientek 目录下的 imximage.cfg 文件3.3 修改 mx6ull_alientek 目录下的 Kconfig 文件3.4 修改 mx6ull_alientek 目录下的 MAINTAINERS 文件4. 修改U-
2022-04-26 14:46:28 5581 3
原创 uboot启动流程分析
U-Boot启动流程分析 IMX6ULL文章目录U-Boot启动流程分析 IMX6ULL前言一、uboot是什么?二、uboot的启动流程1. 第一阶段2. 第二阶段总结前言在linux开发中,一个完整的Linux系统包含Bootloader,Linux kernel和Rootfile,而它的启动顺序也是Bootloader->Linux kernel->Rootfile,后者需要前者提供完整的功能支持。作为启动的第一步,Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成
2022-04-25 17:02:23 5317 1
原创 Makefile基础总结
Makefile基础总结文章目录Makefile基础总结前言一、Makefile是什么?二、Makefile是如何工作的三、Makefile的主要部分四、Makefile的基础语法1. Makefile规则格式2. Makefile变量3. Makefile 模式规则4. Makefile 自动化变量5. Makefile 伪目标6. Makefile条件判断7. Makefile函数总结前言如果大家以前一直使用 IDE来编写 C 语言的话肯定没有听说过 Makefile 这个东西,其实这些 IDE
2022-04-21 10:57:14 1064
原创 什么是ROM,RAM,SRAM,SDRAM,DDR,DDR2,DDR3
什么是ROM,RAM,SRAM,SDRAM,DDR,DDR2,DDR3文章目录什么是ROM,RAM,SRAM,SDRAM,DDR,DDR2,DDR3前言一、何为RAM和ROM?二、何为SRAM三、何为SDRAM四、何为DDR总结前言ROM和RAM在生活中是非常常见的,而作为学习嵌入式的一员,也更应该了解ROM和RAM的区别,如果接触到Linux的话,学习DDR是比不缺少的一部分。一、何为RAM和ROM?RAM:随机存储器,可以随时读写,速度很快,掉电后数据会丢失。一般用来保存程序数据,中间结果
2022-04-19 11:41:53 5600 1
原创 ARM 常用汇编指令
ARM 常用汇编指令1. 数据传输指令使用处理器做的最多事情就是在处理器内部来回的传递数据,常见的操作有:将数据从一个寄存器传递到另外一个寄存器。将数据从一个寄存器传递到特殊寄存器,如 CPSR 和 SPSR 寄存器。将立即数传递到寄存器。数据传输常用的指令有三个:MOV、MRS 和 MSRMOV 指令用于将数据从一个寄存器拷贝到另外一个寄存器,或者将一个立即数传递到寄存器里面MOV R0 R1 @将 R1 里面的数据复制到 R0 中MRS 指令用于将特殊寄存器(如 CPSR 和 S
2022-04-02 11:19:38 1212
原创 ARM 常用汇编语法
ARM 常用汇编语法如果使用过 STM32 的话就会知道 MDK 和 IAR 下的启动文件 startup_stm32f10x_hd.s其中的汇编语法是有所不同的,将 MDK 下的汇编文件直接复制到 IAR 下去编译就会出错,因为 MDK 和 IAR 的编译器不同,因此对于汇编的语法就有一些小区别。而我们要编写的是 ARM汇编,编译使用的 GCC 交叉编译器,所以我们的汇编代码要符合 GNU 语法。GNU 汇编语法适用于所有的架构,并不是 ARM 独享的,GNU 汇编由一系列的语句组成,汇编 每行一
2022-04-02 10:00:42 999 1
原创 Cortex-A 处理器有哪些运行模式
Cortex-A 处理器有哪些运行模式ARM的处理器模式分几种要看是ARM的哪个系列,以前的ARM 处理器有 7 种运行模型:User:用户模式,非特权模式,大部分程序运行的时候就处于此模式FIQ:快速中断模式,进入 FIQ 中断异常IRQ:一般中断模式。Supervisor(SVC):超级管理员模式,特权模式,供操作系统使用。Abort:数据访问终止模式,用于虚拟存储以及存储保护Undef:未定义指令终止模式System:系统模式,用于运行特权级的操作系统任务其中 User 是非特权模式
2022-04-01 14:27:16 1402
原创 Linux系统根目录下文件是啥
Linux系统根目录下文件是啥在linux系统,根目录“/”中的一些重要的文件夹:/bin 存储一些二进制可执行命令文件,/usr/bin 也存放了一些基于用户的命令文件。/sbin 存储了很多系统命令,/usr/sbin 也存储了许多系统命令。/root 超级用户 root 的根目录文件。/home 普通用户默认目录,在该目录下,每个用户都有一个以本用户名命名的文件夹。/boot 存放 Ubuntu 系统内核和系统启动文件。/mnt 通常包括系统引导后被挂载的文件系统的挂载点。/dev 存
2022-03-25 10:59:29 1379 1
原创 Linux文件系统有哪些
Linux文件系统有哪些1、Linux 文件系统简介操作系统就是处理各种数据的,这些数据在硬盘上就是二进制,人类肯定不能直接看懂这些二进制数据,要有一个翻译器,将这些二进制的数据还原为人类能看懂的文件形式,这个工作就是由文件系统来完成的,文件系统的目的就是实现数据的查询和存储,由于使用场合、使用环境的不同,Linux 有多种文件系统,不同的文件系统支持不同的体系。文件系统是管理数据的,而可以存储数据的物理设备有硬盘、U 盘、SD 卡、NAND FLASH、NOR FLASH、网络存储设备等。不同的存储设
2022-03-25 10:50:06 12664
原创 单片机使用C语言实现MQTT协议
单片机使用C语言实现MQTT协议在单片机使用MQTT协议非常普遍,特别是在物联网相关领域,在阿里云,华为云等公有云都提供MQTT协议连接物联网平台。本篇介绍如何用C语言实现MQTT的连接MQTT连接主要有五步骤:1. 连接云平台2. 登录用户名密码等3. 订阅主题4. 发送心跳包5. 发布主题1. 连接云平台跟其他网站一样,只要有服务器地址和端口号就行,在这里我使用了以太网口去连接代码如下:u16 AnalyTarIp(u8 *TarIp,u16 port,u8 i){ stati
2021-07-29 18:38:14 9027 6
原创 华大HC芯片实现定时器计数
HC32L130E8PA实现定时器计数功能在芯片资源紧缺的情况下,尝试了使用华大国产芯片,对于该芯片来说,有些功能确实不完善,但还是能够满足基本需求的。我在这使用的时HC32L130E8PA的芯片,采用定时器3实现计时器计数功能。代码如下:/* 定时器3初始化 用于计数 u16Period * (1/4M) * 16 12500 * (1 / 4 M) * 16 = 50000us = 50ms*/void Time3Init(u16 u16Period){ uint16_t u1
2021-07-29 08:47:12 1946
原创 C#增加嵌入的资源并进行操作
C#增加嵌入的资源并进行操作在代码实现之前,先介绍一下什么是嵌入的资源!嵌入的资源是为了将一些不能被暴露出来的资源(如文件 图片等),写入在程序体的,这样写的好处,可以将某些资源隐藏起来,提供一个对外的exe文件就可以就正常工作。值得注意的是:资源一旦被设置为嵌入的资源,那么这个资源在程序体中只能进行读操作,不能进行写操作!!实际操作如下:先添加资源文件到项目中,直接拖进去即可然后右键点击属性,将生成的操作设置为嵌入的资源接下来是程序部分,首先编写一个读取资源的函数 //将文件内容 读
2021-07-27 18:33:12 3087
原创 C#实现HMACSHA256加密算法
C#实现HMACSHA256加密算法在使用MQTT连接华为云时,发现通过密钥方式连接用了HMACSHA256加密算法,而在单片机中实现该算法还是有点困难,毕竟在单片机上运行内存有限,在项目中,我是使用了C#做一个配置软件,通过配置软件来实现它的加密,而单片机只管通过MQTT连接。首先介绍一下什么是HMACHMAC是一种使用单向散列函数来构造消息认证码的方法,其中HMAC中的H就是Hash的意思。HMAC中所使用的单向散列函数并不仅限于一种,任何高强度的单向散列函数都可以被用于HMAC,如果将来设计出
2021-07-26 18:26:50 14163 2
原创 C# 实现 HMACMD5加密
C# 实现 HMACMD5加密算法C#实现HMACMAD5加密算法比较简单,直接引用System.Security.Cryptography,然后调用HMACMD5的类即可具体实现如下string HmacMD5(string source, string key) { HMACMD5 hmaCmd = new HMACMD5(Encoding.Default.GetBytes(key)); byte[] byteArray = hmaCmd.ComputeHash(Encoding.Def
2021-07-24 16:59:48 1753 1
原创 使用MQTT连接华为云的物联网平台(二)
使用MQT为云的物联网平台文章目录使用MQT为云的物联网平台前言一、MQTT.fx连接华为云需要什么二、连接步骤1.创建连接2.订阅主题与发布主题3.实践操作总结前言上一篇说明了如何在华为云创建设备,并获取到它的DeviceID和密钥,通过这些操作,可以看出它与阿里云的不同,一下是我发觉的几个不同:阿里云支持虚拟设备进行仿真,华为云不支持华为云需要额外的自己创建服务ID,阿里云没有服务ID这一说法华为云没有deviceName,它的devicename=deviceid华为云的域名
2021-07-24 11:30:02 6539 3
原创 使用MQTT连接华为云的物联网平台(一)
**使用MQTT连接华为云的物联网平台(一)**在使用了阿里云的物联网平台后,发现连接云平台其实也就那么简单,那么这边介绍一下,华为云的设备创建与连接,该内容分两篇实现(本篇介绍如何在华为云创建设备及查看设备相关信息)。如果是一些小白,建议学会连接阿里云后,学习一下如何连接华为云,毕竟很多会连接阿里云的地方都会有连接华为云的功能,如一些网关产品,可以说阿里云,华为云都是大部分设备都会去涉及的。同样,华为云的物联网平台也是免费提供给大家使用的!进入华为云的官网注册账号后,进入控制台,找到物联网这一
2021-07-24 00:05:38 8742 1
原创 使用MQTT连接阿里云IOT每隔一段时间掉线
**使用MQTT连接阿里云每隔一段时间掉线,并且出现1911错误代码**在使用MQTT连接阿里云时,设备可以正常连接,数据格式正确,且平台可正常下发指令。但设备每隔一段时间自动掉线,通过阿里云日志查看得出是1911错误代码,但我的设备是正常工作的啊!!!为什么会出现这种情况?通过日志错误代码得1911的出错原因,但实际这种情况也很难去查找,因为设备在调试过程中,发现设备一直在发心跳ping,且云平台也有进行响应,这说明设备是一直与云平台保持联系的,然后再继续观看,发现的是云平台对设备的心跳包居然
2021-07-23 18:50:34 6670 11
原创 使用MQTT连接阿里云的物联网云平台(2)
使用MQTT连接阿里云的物联网云平台(2)上一篇讲到在阿里云的物联网平台建立物理模型(即数据点),以及如何使用虚拟设备查看设备上线时上报的JSON格式和云平台下发的JSON格式,这点对于后面项目开发来说很重要。本篇将讲述如何使用MQTT.fx连接阿里云。首先介绍MQTT.fx对于开发者来说是个什么样的东西,MQTT.fx能够有效的模拟设备连接云平台,相对于在云平台的虚拟设备,它还需要用户提供IP地址,用户名,密码等(可以通过证书或密钥方式),另外任何支持MQTT协议的云平台都可以使用MQTT.fx,对
2021-07-21 23:03:46 1893 1
原创 使用MQTT连接阿里云的物联网云平台
**使用MQTT连接阿里云的物联网云平台**对于嵌入式的小伙伴来说,使用MQTT协议貌似是一个必须经过的过程,但对于一些刚入门或对MQTT不熟悉的人来说,寻找适合使用MQTT的平台也是一个难点,有些人可能会为了验证这个MQTT协议而去买一个服务器自己搭建环境,然而也有很多大平台有这个福利供给大家免费使用云平台的,在这以阿里云为例。首先在阿里云官网上注册一个账号,使用支付宝登陆即可然后进入控制台 找到物联网平台这里我是先开通了的,刚使用的用户直接开通即可,然后进入公共实例然后在产品中创建产品
2021-07-20 22:33:44 5195 2
原创 HC32 华大芯片出现WAKE 错误
HC32 华大芯片使用出现__WAKE 错误在使用华大芯片时,采用官方案例居然跑不起来,还报错了!!!!具体错误是 __WAKE 关键字引起的在interrups_hc3213x.c 源文件中 有__WAKE void SysTick_IRQHandler(void); 起初 该文件没有对__WAKE定义,而__wake是弱函数的意思,指的是如果其他文件有对该函数进行定义,则使用其他文件所定义的内容,该文件定义的函数内容不起作用于是 本以为只要将__wake宏定义一次就好了#define _
2021-04-10 18:16:17 759 4
原创 RS485使用串口输出最后一个字节固定为FF
项目场景:将STM32或STM8L作为主控时,在板子上使用到SP3458芯片,来实现串口转RS485输出,从而可以连接其他RS485输出设备问题描述:在串口转485时,根据波特率的不同,总是出现输出最后一个字节固定为0xFF,前面字节会根据波特率丢失或更改字节大小例如:u8 buf[5] = {0x01,0x02,0x03,0x04,0x05}RS485串口输出十六进制01 02 03 04 FFUSART中输出数据代码://RS485串口输出void UART1_SendString
2021-01-28 21:18:53 3674 2
原创 SP3458芯片相关配置
SP3485芯片相关信息及软件配置SP3481和SP3485是一系列+3.3V低功耗半双工收发器,它们完全满足RS-485和RS-422串行协议的要求。这两个器件与Sipex的SP481、SP483和SP485的管脚互相兼容,同时兼容工业标准规范。SP3481和SP3485符合RS-485和RS-422串行协议的电气规范,数据传输速率可高达10Mbps(带负载)。SP3481还包含低功耗关断模式作用于使用串口实现RS485接收和发送功能sp3485特点:RS-485与RS-422收发器操作从一
2021-01-27 21:28:48 1746
原创 STM8L15X项目开发
STM8L系列的开发实例 从Active-Halt状态到唤醒在物联网网关项目中,常常需要考虑到低功耗问题,而STM8L芯片是最佳选择。在编程时,仿照官网下载的示例进入active-halt状态后,程序一直卡在halt状态,无法唤醒,这个问题困扰了我很久,调试了几天后终于调通了,希望对各位有所帮助在RTC配置中/*RTC初始化 使用RTC唤醒*/void RTC_Periph_Init(void){ RTC_InitTypeDef RTC_InitStr; CLK_Periphera
2021-01-26 21:05:23 424
原创 关于STM8L系列编程
**关于STM8L系列编程**习惯了用STM32作为主控,因项目需要做低功耗处理,便采用了STM8L151K4芯片 内存4K关于STM8L芯片相关资料可以在官网中查找www.st.comSTM8的软件编程主要在IAR中进行而Keil并没有支持STM8 的内核注意 IAR系列有很多种 STM8对应软件是 IAR for STM8采用的调试不支持J-LINK 支持ST-LINK关于STM8 的项目创建 百度有很多案例,就不详细说明了...
2021-01-21 22:06:56 1305
原创 FATFS文件系统读写案例
FATFS文件系统读写案例,亲测有效自己 本来想写一个stm32移植FATFS文件系统进行存取数据但网上能够参照的实例,实在太少,而且出现的问题还挺多于是花费了很长一段时间才将读写问题解决希望能够对一些想要进行FATFS的操作的小伙伴有一定的帮助代码如下FIL fw;FRESULT res;struct Struct_Pack Pack_Fram[5] = {'0',"----",'1',"----",'2',"----",'3',"----",'4',"----"};void Crea
2020-09-11 09:42:29 2109 3
原创 FATFS文件系统f_open()打开一次成功,再次打开程序跑飞
FATFS文件系统打开一次成功,再次打开程序跑飞f_open()FATFS能够打开一次文件,但第二次就不行了!!查阅了一些资料说FATFS的FIL,FATFS结构体太占内存了导致堆栈溢出如果在函数里定义,会跑飞最好声明全局变量定义好了全局变量之后,还是跑飞很大可能是因为读写的FIL结构对象是使用了同一个然而如果有读写功能的,FIL不要使用同一个需要分别定义读文件写文件...
2020-09-11 09:34:45 2309 2
原创 FATFS能打开文件,不能读写文件
已解决:FATFS能打开文件,不能读写文件并且返回FR_INVALID_DRIVE我在使用移植的FATFS文件系统时,想存取一段信息,但开头就遇到了一个大问题,这个问题花费了我很长的一段时间,终于在不断的尝试下,问题得到解决!不管使用f_write()还是f_read()都出现FR_INVALID_DRIVE这是我出错的代码void CreatPackFile(struct Struct_Pack *dat){ u8 i = 0,j = 0; UINT br; char p[26];
2020-09-11 09:15:38 2863 1
原创 UCOS学习
uCOS操作系统介绍uCOS系统也叫(uC/OS))由美国人 Jean Labrosse在1992年编写的一个实时操作系统,一个多任务的操作系统在学完STM32基本操作之后,真的很有必要扩展一下uCOS这个操作系统可能我们带代码中并没有涉及,但是移植了之后,更够更好的提供程序的效率,没有加系统的程序在延迟中,是等待延时结束再去做下一件事,而这个操作系统充分利用了延迟的时间去做其他的任务,准确的说,就是整个CPU都处于运行阶段,这就是实时的体现使用UCOS之前必须知道它的特点是什么,如下:uCOS-
2020-09-10 02:34:16 818
原创 STM32 实现PWM 寄存器版
STM32 实现PWM 寄存器版上一篇实现PWM 库函数版本 点我这一篇实现寄存器版本使用通道1 CH1 控制PC6小灯原理在库函数中做了相关介绍,这里就不过多说明,它的配置步骤是一样的所以直接上码观看代码如下#include "pwm.h"// pre 自动重转载值 psc预分频数void TIM3_PWM_Init(u16 pre,u16 psc){ RCC->APB1ENR |= 1 << 1; //定时器3 时钟 RCC->APB2ENR |= 1
2020-08-19 15:00:56 2676
原创 STM32 实现PWM 库函数版
TIM1和TIM7没有PWM输出TIM0和TIM8 有七路PWM输出 27 = 14通用定时器 都有4个 PWM 44 = 16一共有30个PWM输出图中,我们假定定时器工作在向上计数 PWM模式,且当 CNT<CCRx 时,输出 0,当 CNT>=CCRx 时输出 1。那么就可以得到如上的 PWM示意图:当 CNT 值小于 CCRx 的时候,IO 输出低电平(0),当 CNT 值大于等于 CCRx 的时候,IO 输出高电平(1),当 CNT 达到 ARR 值的时候,重新归
2020-08-19 14:55:41 2987
原创 STM32 实现ADC 库函数版
STM32 实现ADC 库函数版ADC 顾名思义 将模拟信号转换为数字信号ADC转换分为2个通道组:规则通道组和注入通道组。规则通道相当于正常运行的程序,而注入通道,就是中断。程序正常运行(执行规则通道),外部中断产生,执行中断代码(执行注入通道)STM32的ADC的规则通道组包含16个转换,而注入通道包含4个通道内数据存储方式:左对齐 右对齐(存储在16位数据寄存器中 左高 右低)不要将高于3.3V的接到ADC上面通道16 只在ADC1 (内部温度传感器)通道17 只在ADC1 (内部
2020-08-18 21:55:07 2241
原创 STM32实现待机唤醒 寄存器版
STM32实现待机唤醒 寄存器版上篇使用了库函数实现 待机唤醒本文将使用寄存器版本实现关机模式寄存器版本跟库函数版本实现基本一致,可以通过查看库函数版 去看底层代码 更方便去理解寄存器版本寄存器操作根据上两张图可以进行操作相关步骤设置 SLEEPDEEP 位使能电源时钟,设置 WK_UP 引脚作为唤醒源。设置 PDDS 位,执行 WFI 指令,进入待机模式最后编写 WK_UP 中断函数。实现功能如下使用 STM32 的待机模式了,并且可以通过 WK_UP来唤醒 CPU,我
2020-08-17 17:14:22 447 3
STM32项目快递存取柜
2020-10-11
基于C51单片机开发指纹门禁.zip
2020-08-18
C51单片机开发智能小车源码.zip
2020-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人