
嵌入式开发
文章平均质量分 93
HowieXue
这个作者很懒,什么都没留下…
展开
-
LoRaWAN ADR (自适应速率) 算法简介及最新研究方向
ADR (Adaptive Data Rate) 自适应速率是LoRaWAN (https://lora-alliance.org/ )的核心功能之一。LoRa网络允许终端设备逐一使用所有可用的数据速率。LoRaWAN协议根据该特性对静态终端的数据速率进行调整优化,实现通信传输数据速率的自适应(ADR)。原创 2022-11-13 21:02:36 · 4684 阅读 · 3 评论 -
RootCause深度分析:为什么DCache常会导致LCD显示异常(数据一致性问题)
很多具备Dcache的 LCD显示设备,在MCU程序设计中,经常会发生由于使用DCache引起的数据错误/混乱等问题,导致LCD显示异常,例如出现花屏、页面显示错位、屏幕显示失真等现象。这都是属于**数据一致性问题**:>既Cache与外部存储中的数据不一致,会导致core(软件)与硬件模块(例如PXP, eLCDIF)之间配合失败,也会导致不同软件函数间协调失败(比如需要判断flag的)原创 2021-12-14 17:18:06 · 16408 阅读 · 1 评论 -
Fixture证书权限导致CSR申请证书失败的问题 [已解决]
申请证书失败解决:(证书权限问题解决)检测证书是否有问题:Cmd进入mmc,启动console如下添加证书相关console或 CMD执行 certmgr.msc查看personal-Certificate右键All Tasks -> Manage PrivateKeys ->添加当前用户个人权限是权限拦住了,并不是证书不全。...原创 2021-10-05 21:43:50 · 13348 阅读 · 0 评论 -
STM32芯片解锁读写保护:更改Option Byte [Error已解决]
解锁读保护:STLink更改Option Byte变Level从1变为0,点击Apply即可。(程序执行读保护,其实是将Level从0变为1)默认情况下该保护功能是不开启的,若要开启该功能,需要改写内部FLASH选项字节(Option Bytes)中的配置。RDP读保护级别级别0,无保护,级别1,使能读保护,这种保护下,若使用调试功能(使用下载器、仿真器)或者从内部SRAM自举时都不能对内部FLASH及备份SRAM作任何访问(读写、擦除都被禁止);当芯片处于级别1的时候,可以把选项字节原创 2021-10-05 21:46:26 · 24999 阅读 · 3 评论 -
嵌入式中断:统计各中断关键信息 (中断执行/挂起/被打断次数,中断优先级异常等)
启动起来查看BasePRI在这里插入图片描述原创 2021-09-11 12:38:10 · 17782 阅读 · 0 评论 -
IAR 指定数据存储的绝对位置
IAR 指定数据存储的绝对位置方法1:方法2原理:指定代码编译后数据的绝对地址是比较常见的需求,如程序的版本号在bin中的绝对地址:方法1:直接通过@操作符 实现(变量/函数都可以使用) :uint8_t Data[4] @ (Address) = {xx, xx, xx, xx};举个实际例子:设置版本号在bin的位置为0x400:在icf文件中要先定义有0x400这一块区域这里因为我的设备用了HyperRam,所以是0x70000xxx,正常不用HyperRam就直接定义为0x000原创 2021-09-01 17:37:00 · 23659 阅读 · 0 评论 -
嵌入式中断:如何正确设置中断优先级 (万字总结) - 基于Cortex-M和FreeRTOS
configMAX_SYSCALL_INTERRUPT_PRIORITY 中断优先级设置问题从CortexM角度Cortex-M构架自身最多允许256级可编程优先级(优先级配置寄存器最多8位,所以优先级范围从0x00~0xFF), 是绝大多数微控制器制造商只是使用其中的一部分优先级NXP 1062 使用了其中的高4bits,所以中断优先级在0-15,共16个在Cortex-M内核中,一个中断的优先级数值越低,逻辑优先级却越高从RTOS角度RTOS中断嵌套方案将有效的中断优先级分成两组:• 可以原创 2021-08-15 17:03:11 · 15857 阅读 · 2 评论 -
硬实时RTLinux安装配置详解 (二):编译运行RTLinux
硬实时RTlinux系统配置4. 配置RTLinux4.1 配置Patch4.2 配置RTLinux内核4.3. 编译Rtlinux内核4.4 制作initramfs启动引导:5. 大功告成,启动运行RTlinux6. 深入探讨下RTLinux原理: RTLinux将内核变成完全抢占式所谓的实时调度策略博主热门文章推荐:友情赞助书接上篇: https://howiexue.blog.youkuaiyun.com/article/details/1173883934. 配置RTLinux4.1 配置Patch原创 2021-06-02 13:02:57 · 30343 阅读 · 9 评论 -
硬实时RTLinux安装配置详解 (一):准备工作
更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,一起学习探讨软硬件技术知识经验,关注就有海量学习资料免费领哦:硬实时RTlinux系统配置1. Linux内核下载2. 下载与Linux内核对应的 RT Patch3. RTLinux 配置准备工作3.1 解压内核和RT Patch文件3.2 内核编译环境搭建4. 配置RTLinux4.1 配置Patch4.2 配置RTLinux内核4.3. 编译Rtlinux内核4.4 制作initramfs启动引导:5. 大功告成,启动运行RTlinux原创 2021-05-29 18:18:03 · 29581 阅读 · 0 评论 -
Linux:安装Debian最新10.x操作系统(超详细)
安装Debian最新10.x操作系统安装Debian最新10.x操作系统1.下载Debian镜像2. 镜像安装引导启动页面,选择图形化安装:选择语言、时区,选中后点击continue:选择键盘模式:配置Hostname主机名,设置Root密码创建普通用户名和密码,进入磁盘分区步骤,选择“所有文件放在同一个分区”确认分区信息磁盘配置完,进入软件安装模块:选择源:进入软件包配置,等待配置结束根据需要选择软件包安装3. 安装完成重启后登录使用安装Debian最新10.x操作系统1.下载Debian镜像下载D原创 2021-05-29 12:28:15 · 34431 阅读 · 1 评论 -
Python Tkinter - WiFi WL Test 上位机 (自动搜索Uart、执行exe/Bat)
Python Tkinter - Cypress WiFi WL Tools 测试上位机通过WiFi 通过WL命令 射频性能测试,使用Cypress的芯片,但Cypress没提供上位机,我在单独测Cmd时需要手动输各类参数,感觉不大方便,为提升效率,就在基于Tkinter做了个图形化上位机测试工具,在这里分享一下下特点:自动搜索/选择电脑可用串口,用于WL Test自动组包WiFi WL Commands,减少手动输入收发数据Log显示执行Bat文件,因为有些WL 命令是通过bat文件组合在原创 2020-12-03 20:09:01 · 23477 阅读 · 0 评论 -
Python脚本:SMT与SAT solver相互转换(.cnf <->.smt2)
1 背景:针对 SMT(Satisfiability Modulo Theories)和SAT (Boolean Satisfiability Problem)中,经常需要使用不同 的SAT和SMT solver (求解器),这时候会有需求将SAT与SMT case文件转换。所以写了python脚本实现该功能。需要注意的是, SAT只能与Bit-Vector的SMT相互转换,而针对int的不可以,这也是为什么有SMT的原因1.1 SAT /.cnfSAT 通过使用CNF(Commutative N原创 2020-10-15 21:18:49 · 1890 阅读 · 1 评论 -
IAR使用Terminal IO查看Debug Log:(无需连接硬件Uar既可查看log)
Step1: 在文件中引用#include<stdio.h>,Project ->Option中选择Stdout为via SWOStep2: IAR 进入调试Debug模式,View-Teminal IO,就可以在窗口查看printf 打印出的log原创 2021-08-05 10:24:43 · 21454 阅读 · 2 评论 -
Lua: Module 'Bit' not found / no file ./bit.so [已解决]
Lua:Module ‘Bit’ not found/no file ./bit.so[已解决]问题描述:问题解决:问题描述:执行lua程序时报错如下:Module ‘Bit’ not found/no file ./bit.so问题解决:在bitop下载最新包:http://bitop.luajit.org/download.html下载到本地后解压:然后在本机ma...原创 2020-02-01 18:09:13 · 11180 阅读 · 0 评论 -
Make linux: /usr/bin : cannot find -lncurses - [已解决]
问题描述:ncurses库是一个Linux系统下的图形支持的函数库,字符终端处理库,包括面板和菜单。在安装 Lua时,make linux时报错/usr/bin/ld: cannot find -lncurses:问题解决:首先locate看下本机有没有libncurses:发现有可用的so,然后进到目录下,创建libncurses的软连接:$ sudo ln libncurses...原创 2019-11-09 09:37:16 · 14431 阅读 · 0 评论 -
NXP i.MXRT10xx 开发板程序跑飞、下载失败、连接CPU失败 - [已解决]
问题描述在使用NXP RT10xx系列(这里我用的RT1060)开发板的童鞋,会经常遇到在某次下载SpiFlash代码后,再次Debug就连不上,提示下方:IAR无论如何也连接不上板子了, 初次遇到会误认为硬件坏掉了。。解决解决方法有两种:一、通过 清空Memory(需更改BootType)1、更改Boottype,将开发板的SW17更改为Serial 模式:SW7 to “1-O...原创 2019-11-02 11:46:57 · 19424 阅读 · 0 评论 -
嵌入式开发常用工具/软件/驱动 - 官方链接
常用串口驱动:CH340https://sparks.gogo.co.nz/ch340.htmlCP210x USB to UARThttps://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-driversPL2303 Windows Driver Downloadhttp://ww...原创 2019-10-21 21:06:57 · 831 阅读 · 0 评论 -
Android/Linux设备有线&无线 双网共存(同时上内、外网)
Shell脚本实现动态配置IP与路由:解决嵌入式Android/Linux有线和无线网卡双网共存问题(同时上内网 外网)网络环境及问题再现命令行方式实现双网共存Shell脚本自动实现双网共存(根据网络环境动态配置IP路由) –>问题:在使用某嵌入式开发板(Android 6.0系统)过程中,发现无法同时进行有线(Ethernet)和无线(WiFi)网卡同时通讯,同时产品又有需求,必须同时通过这两个网卡与内网和外原创 2017-07-23 17:17:56 · 61337 阅读 · 6 评论 -
LoRa学习:SX127x芯片数字IO引脚映射
LoRa学习:SX127x芯片数字IO引脚映射SX1276/7/8的6个DIO通用IO引脚在LoRa模式下均可用。它们的映射关系取决于RegDioMapping1和RegDioMapping2这两个寄存器的配置,如下表:从表中可以看出,DIO0最常用,主要是发送/接受/CAD完成的中断产生调制解调器状态指示符RegModemStat中的ModemStatus位显示了LoRa调制解调器的状态,这些位多原创 2017-09-21 15:41:33 · 8906 阅读 · 0 评论 -
ATECC508A芯片开发笔记(八):ECDH算法配置方法、执行过程及实现原理
AATECC508A芯片开发笔记(八):ECDH算法配置方法、过程原理及示例代码1、ECDH介绍及原理2、ECDH执行过程3、508A某一slot执行Ecdh需要配置的参数4、示例代码 508A芯片硬件可以实现ECDH算法,大大提高了算法执行效率,实际使用中,需要配置好508A使其能够执行ECDH,之后才可以调用库函数的API正确执行该算法。1、ECDH介绍及原原创 2017-11-27 22:10:35 · 24162 阅读 · 1 评论 -
嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
目录:0、引言何为嵌入式?1、单片机相关1.1 基于单片机的智能小车、智能机器人制作1.2 基于Arduino的3D打印机制作2、嵌入式Linux相关2.1 智能扫地机器人2.2 智能可穿戴类设备:智能安全头盔2.3 智能可穿戴类设备:面向空巢老人/病人的智能手环2.4 物联网智能控制系统:家居、农业、医疗2.5 基于Linux的嵌入式网络视频监控系统...原创 2017-08-04 23:09:56 · 116954 阅读 · 1166 评论 -
Android系统应用层App启动过程分析
Android系统应用层App启动过程分析Android启动App:1、 先有Lancher启动ActivityThread,ActivityThread负责onPause、onStart等调度所有MainActivity; 2、 ActivityThread为App分配栈内存,使用:AndroidStack创建一个新的任务栈。由了栈内存后,就可以启动App了。 3、 Activi原创 2017-08-11 18:51:41 · 1036 阅读 · 0 评论 -
Android 开机界面及Linux内核启动界面的修改(tiny6410)
第一开机界面替换,即内核bootloader启动小企鹅界面更换 1、首先找一个自定义120*120的png图像,这里名称linux.png,但是后面的ppm名称必须是图中所示在linux下执行下面代码将png转换为ppm:然后将生成的ppm文件拷贝到内核logo所在目录:替换既可 2、重新编译linux内核,# make zImage 将新的zIm原创 2016-05-06 11:21:38 · 9677 阅读 · 0 评论 -
一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)
0背景 1.手机USB接口通信特点 - 1.1 使用方便 - 1.2 通用性强 - 1.3 速度快 - 1.4 可采用总线供电 2. 手机USB接口通信原理 - 2.1 常见手机USB接口 - 2.2 通信过程 - 2.3 体系架构 2.4软件层次 3. 手机USB接口与外设通信方案 - 3.1 USB(手机)USB(外设) - 3.1.1 USB Host简述原创 2018-01-25 23:21:25 · 72295 阅读 · 4 评论 -
Vmware虚拟机硬盘扩容: Linux下虚拟机硬盘空间扩展及挂载配置
大家是不是会遇到最初分配linux虚拟机硬盘后期不够用的情况,(因为是我之前用友善之臂的虚拟机配ARM板学习,只有20G,根本不够用啊)下面就是解决方法:操作步骤:1、首先在打开虚拟机设置,在选中硬盘选项,选择扩展选项(expand),设置扩展大小(需要关机状态,并且不能有虚拟机快照),比如我原来是20G ,通过设置扩展到40G。这一步过后linux就多了20G空闲磁盘....原创 2016-05-05 20:42:26 · 28831 阅读 · 0 评论 -
AES/DES, Hashs, AEAD, ECDSA, RSA 算法效率和性能比较(多平台)
常见加密/签名/哈希算法性能比较 (多平台)1、 AES/DES:2、Hashs3、AEAD4、Diffie-Hellman5、ECDSA6、RSA原创 2018-02-07 18:06:30 · 23194 阅读 · 2 评论 -
IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、mac/icf/map file, FreeRTOS插件等
目录 - 使用数据断点 - Set next statement 手动执行到某行代码 - 设置堆栈大小 - 查看程序Stack栈使用情况,以及栈深度 - Call stack查看当前栈空间 - 使用Memory查看程序运行中各种过程数据 - IAR各编译文件含义 - IAR更改字体原创 2018-05-20 11:40:27 · 77674 阅读 · 8 评论 -
使用Jmeter自动化压测TCP Server经验
使用Jmeter自动化压测TCP Server经验• Jmeter简介• Jemter的主要功能• Jmeter TCP发送方式• Jmeter 测试TCP配置1、Jmeter简介Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、J...原创 2019-03-20 16:14:33 · 18092 阅读 · 4 评论 -
ATECC508A芯片开发笔记(十):ConfigZone中 SlotConfig/KeyConfig详细解释 & 配置工具Tools
ATECC508A芯片开发笔记(十):508A ConfigZone中 SlotConfig及KeyConfig详细配置 &Tools 使用前言在《https://blog.youkuaiyun.com/HowieXue/article/details/75212476 ATECC508A芯片开发笔记(四):自定义配置508功能,规划DataZone数据存储》中提到,需要根据需求配置好508A的...原创 2019-06-16 21:58:04 · 12183 阅读 · 28 评论 -
ATECC508A芯片开发笔记(七):实现数字签名(Sign)并校验(Verify)证书签名
ATECC508A芯片开发笔记(七):实现对数据数字签名(Sign)并验证(Verify)证书签名一、数据签名、验证基本流程二、利用508对数据签名并验证 代码实现:三、X.509证书验证 本节介绍利用508对证书数据进行签名、验证的步骤和原理。一、数据签名、验证基本流程由网络安全知识我们知道,对数据进行签名,其实就是用私钥加密而已,而验证签名就是用该私钥对应的公钥进行解密。而如果对整个数原创 2017-07-18 21:17:26 · 18040 阅读 · 0 评论