- 博客(34)
- 收藏
- 关注
原创 IAR调试时输出文本数据到电脑(未使用串口)
其实就是用写入文件的办法,把数据从内存写到文件里。这个文件是建立在调试主机(也就是PC机)硬盘上的。接口是调试器的半主机接口(细节不用管,只要按照打开文件、读写文件、关闭文件的方法操作即可)。因为板子没引出串口引脚,没法接USB转TTL,又想要长时间运行程序并保存某些特定数据,所以找到了这个办法。为了写数据到本机,所以板子必须运行在IAR的debug模式下。虽然没测过,但我想这种方式应该会拖慢运行速度,所以能用串口还是用串口吧。覆盖写入,我根据自己需要改成了追加写入。原帖里的代码 写文件fopen是。
2024-11-15 16:47:13 310
原创 华大HC32F460移植FreeRTOS
文件需要配置include path进行引入,右键工程打开Options–》C/C++ Compiler–》Preprocessor进行配置。将下载好的FreeRTOS源码解压,进入源码下的Source目录开始移植。文件移植就到这里,接下来需要打开IAR工程添加文件夹和文件,如下图所示。函数【因为原有库里的函数与FreeRTOS内函数重复定义了】主要参考这位大佬的,照做就行了,用的也是IAR。,可以下载各版本源码及查看帮助文档,有简中翻译。【注:Demo和源码Source是同级目录】中配置的四个钩子函数。
2024-09-04 18:12:49 797
原创 IAR编译报错[no definition for “__basic_free“]
其实IAR工程一开始就是Automatic,之前为了解决某个问题查了下资料改了这项配置(改了也没有效果),又忘记改回来了。解决:右键工程进入工程配置Options–>General Options–>Library Options 2选项卡。配置Heap selection为Automatic即可解决。
2024-09-04 14:10:53 373
原创 华大HC32F460 TimerA输出可调节PWM
3、配置项里那个Func_Tima0/1/2使我困惑了很久(宏定义里配置的),搜帮助文档也没搜出什么名堂,后来发现可能是对应数据手册2.2引脚功能表的Func4/5/6。2、输出PWM建议使用锯齿波,并配置周期匹配和比较匹配时输出确定的高/低电平,而不是像官方例程里那样反转电平,看了别人博客说有问题自己也试过了,确实有问题= =。代码的结果是每隔2秒钟输出的占空比会增加20%,增加到100%后变回0%(输出的PWM占空比含100和0)代码使用官方库2.2.0版本的。(不确定是不是对的,没试过)
2024-07-25 18:09:50 843
原创 DBC文件的标准帧与扩展帧
DBC文件实际上是将该ID数值视为一个32位无符号数值,根据最高位是否为1判断是否为扩展帧。也就是说最高位为1即为扩展帧,反之为标准帧。DBC文件是CAN数据库文件,可以使用记事本等文本工具以文本形式打开进行编辑。这里介绍在文本编辑器中修改的方法,首先需要了解DBC文件如何解析的。如下图以文本打开dbc,高亮部分为名为M1的报文对应的报文ID数值。使用candb++打开可以看到这条报文是标准帧,ID是。【实际上标准帧的ID范围在0~0x7FF,11位】,再使用CANdb++打开,可以看到该报文。
2024-05-30 16:11:50 766
原创 TSMaster发送CAN报文
打开TSMaster工程从菜单栏打开CAN报文发送窗口:【分析】->【报文发送】->【添加CAN/CAN FD发送】可以选择【从CAN数据库添加报文】或者是【添加新的原始报文】
2024-05-22 14:56:04 1642
原创 极海APM32F003F6P6烧写问题解决记录
工作中遇到的,折腾了好久,因为电脑重装过一遍系统,软件也都重新安装了,所以不知道之前的配置是什么,旧项目代码编译没问题,烧写时疯狂报错,用的是JLink。keil版本v5.14win10版本JLink版本 7.82a(64位)
2023-08-07 13:34:59 1374
原创 LRC校验(纵向冗余校验)
参考 https://wenku.baidu.com/view/c9e03958312b3169a451a438.html。最近用Modbus-ASCII用到了,py简单实现一下仅作了解,实际工程中用c写。在线LRC计算 http://www.ip33.com/lrc.html。
2023-04-15 10:11:28 1744
原创 迅为iTop4412精英板运行QT程序触摸/鼠标失灵
问题描述错误情况描述:鼠标出现重影,移动鼠标会花屏,点击鼠标会跳转开发板自带的应用。(QT版本4.7.1)错误情况如下图:超级终端显示自己写的qt程序仍然在运行,界面却显示了其他应用程序,像是和自己的程序叠在了一起,并且带有花屏现象。按照开发手册第十一章调整了也无效。(开发手册指资料盘中的《iTOP-4412开发板之精英版使用手册_V2.9》)无论是使用鼠标还是触摸屏都不行(手册中说二者不可同时使用)解决问题解决方法很简单(我是傻*):运行程序之前先点击开发板自带的“Exit Embe
2022-04-24 16:55:45 646
原创 迅为iTop4412使用OTG烧写Linux系统
软件准备超级终端,PL2303驱动(win10/win11),ADB驱动并且要将该目录下的platform-tools文件夹解压到桌面上,以便后续使用将本机c盘里的cmd命令行源文件复制粘贴到解压好的platform-tools文件夹里,本机cmd路径如下图将烧写系统需要的四个文件也复制粘贴到platform-tools文件夹中这里uboot和zImage根据自己开发板的型号选择,我用的是精英板,选的是POP 1GDDR。开始烧写将开发板的OTG和串口接入电脑,串口接入电脑会显示端口
2022-04-03 21:41:29 1505
原创 迅为iTop4412开发板的TF卡烧写
不小心把实验室的开发板搞坏了,插入串口线时超级终端没有任何反应orz,用TF卡烧写uboot挽救一下。参考文章:https://blog.csdn.net/u012867916/article/details/58598751?spm=1001.2014.3001.5506https://blog.csdn.net/Lazy_Goat/article/details/121429099https://blog.csdn.net/zxy131072/article/details/89292865
2022-04-03 20:43:30 1050
原创 迅为iTop4412在Ubuntu18.04的arm交叉编译器安装
做实验用的,本来装好了结果虚拟机被我误删了只能重装一遍,顺便记录一下。参考资料:《iTOP-4412开发板之精英版使用手册_V2.9》的5.2章节在讯为官方的百度网盘里下这个东西直接拖进虚拟机右键终端输入以下命令可以看到桌面上的所以文件以及文件夹cd Desktopls接下来执行以下命令su rootmkdir /usr/local/armcp arm-2009q3.tar.bz2 /usr/local/armcd /usr/local/armtar -vxf arm-200
2022-04-03 17:31:21 1187
原创 普中PZ6808L-F4开发板TFTLCD显示屏使用笔记
这学期学的STM32开发,实验室里的开发板型号为PZ6808L-F4整个板子是这样的这块板子是F301和F407双核的,但我学的一直就是F407,所以本文所有问题只针对F407。由于期末实践需要用到这一块4.3寸TFT屏幕显示图片,过程遇到了一些问题,在此做个记录。首先是尝试使用了普中给的例程【42. 数码相框-BMP图片显示实验】(提示:普中例程里的库tftlcd需要替换,否则屏幕无法正常点亮)普中的【普中STM32F4XX开发攻略】内对该实验例程有一些说明,但也有一些不符。比如这个攻略
2021-12-06 13:59:11 3756 10
原创 [Python笔记] 十进制-二进制-十六进制之间字符串与数值之间的转换
写脚本常用老是忘,故在此记录二进制(str)转十进制(int)如有二进制字符串'11000000'要转成十进制数值s = '11000000'n = int(s, 2)print(n)结果为192ps:二进制字符串可为'0b'开头十六进制(str)转十进制(int)如有十六进制字符串'FF00'要转成十进制数值s = 'FF00'n = int(s, 16)print(n)结果为65280ps: 十六进制字符串可为'0x'开头十进制(int)转二进制(str)n = 15
2021-07-19 02:03:57 903
原创 凯撒密码python及c++实现
Python3# 凯撒密码def CaesarCode(Str, key): s = [] #将字符串转为ascii数组 for i in range(len(Str)): s.append(ord(Str[i])) for i in range(len(s)): #遍历字符串 if s[i]>=65 and s[i]<=90: #大写 if s[i]+key>9
2021-05-24 21:11:19 317
原创 Python中base64编码解码结果为b‘xxx‘
python中使用base64库进行base64编码解码运算结果格式通常为b'xxxxx'。字串前的字母b表示bytes,该字符串为bytes类型。而python默认字符串是Unicode编码的,二者为不同类型。使用如下方法可以将b'xxxx'格式转化为普通字符串:import base64s = 'test'.encode('utf-8')f = base64.b64encode(s)print(f)f = str(f, encoding = 'utf-8')print(f)运行结
2021-02-18 22:15:52 3139
原创 XCTF攻防世界_Reverse_IgniteMe
文件用IDA打开,反编译主函数int __cdecl main(int argc, const char **argv, const char **envp){ void *v3; // eax int v4; // edx void *v5; // eax int result; // eax void *v7; // eax void *v8; // eax void *v9; // eax size_t i; // [esp+4Ch] [ebp-8Ch] cha
2021-02-18 14:14:48 266
原创 XCTF攻防世界_Reversing-x64Elf-100
文件为64位ELF文件,用IDA64打开,反编译主函数signed __int64 __fastcall main(__int64 a1, char **a2, char **a3){ signed __int64 result; // rax char s; // [rsp+0h] [rbp-110h] unsigned __int64 v5; // [rsp+108h] [rbp-8h] v5 = __readfsqword(0x28u); printf("Enter the
2021-02-17 20:27:23 635 1
原创 XCTF攻防世界-Reverse-Shuffle
很简单的一道题。用IDA打开,反编译主函数int __cdecl main(int argc, const char **argv, const char **envp){ time_t v3; // ebx __pid_t v4; // eax unsigned int v5; // ST18_4 unsigned int v6; // ST1C_4 char v7; // ST20_1 signed int i; // [esp+14h] [ebp-44h] char
2021-02-17 19:49:27 247
原创 [MISC]Base64隐写
隐写原理在我之前的文章里写过Base64编码的原理:Base64编码原理及Python实现在对长度非3的倍数的字符串进行Base64编码过程中,进行转换为二进制字串这一步骤会在末尾添加0,而解码过程中之前添加的0则会被舍弃。而base64隐写产生的原因就在于,添加的0字符在进行base64解码时会被舍弃,这意味着在这一步骤添加的二进制值可以不全为0,这并不影响解码结果。Terra这一字符串的长度为5,非3的倍数,在转为6位二进制字串时添加了两个0(红色加粗部分)。编码后的结果为VGVycmE=:
2021-02-17 19:08:52 6874 3
原创 Base64编码原理及Python实现方法
BASE64介绍该算法被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式,达到一眼望去完全看不出内容。此算法的复杂程度要小,效率高。如果是基于以上两点,那么我们使用最简单的单字母代替法等即可,实际上Base64要稍微复杂些,这是因为在Email的传送过程中,由于历史原因,Email只被允许传送ASCII字符,即一个8位字节的低7位。编码规则把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),再根据每个字节的值,用base64编码表中的值替换。编码后字符串长度为死的倍数,不足
2021-02-15 22:42:21 2038
原创 XCTF攻防世界 - Reverse - 666
题目文件为ELF格式,用IDA64打开,反编译主函数:int __cdecl main(int argc, const char **argv, const char **envp){ char s; // [rsp+0h] [rbp-1E0h] char v5; // [rsp+F0h] [rbp-F0h] memset(&s, 0, 0x1EuLL); printf("Please Input Key: ", 0LL); __isoc99_scanf("%s", &am
2021-02-03 15:36:25 825
原创 XCTF攻防世界-Reverse新手区WP
XCTF-Reverse新手区(攻防世界)open-source题目附件为一段C语言代码#include <stdio.h>#include <string.h>int main(int argc, char *argv[]) { if (argc != 4) { printf("what?\n"); exit(1); } unsigned int first = atoi(argv[1]); if (first !=
2021-01-24 15:28:44 691 1
原创 BugKu-Reverse-游戏过关
BugKu-Reverse-游戏过关打开exe文件,是一个文字游戏,使所有行都变化(亮灯)就算通关其实从1到8输入一遍就能通关得到flag啦方法一 计算flag用IDA打开,在流程图中找到主函数,F5反编译获取C伪代码在伪代码最底端能看到判断是否通关的函数 sub_458054() ,猜测其后的 sub_457AB4 为flag输出函数双击进入该函数,又发现内含 sub_45E940() 函数进入函数,发现该函数即为生成flag的函数伪代码内容如下int sub_45E940()
2021-01-24 15:12:13 1006
原创 pikachu漏洞测试平台之SQL注入(新手向)
pikachu漏洞测试平台之SQL注入(新手向)以这篇博文简单记录一下我这个小菜鸡用pikachu靶场学习SQL注入的过程。工具:火狐浏览器,burp suite。SQL 注入概述 哦,SQL注入漏洞,可怕的漏洞。 在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。 一个严重的SQL注入漏洞,可能会直接导致一...
2020-02-28 20:52:40 6832
原创 VMware中删除虚拟机
今天在使用VMware时要删除不再使用的虚拟机时,直接在左侧的我的计算机列表内右键,移除了不需要使用的虚拟机。移除完才后知后觉的发现移除!=删除虚拟机,只是移除的话根本无法释放其原本占用的磁盘空间。在网上查了下发现,点击左上角 文件>扫描虚拟机 即可找回已被移除的那些虚拟机。路径就是当初默认安装虚拟机的路径,因此直接点下一步就行了。扫描出的虚拟机就是曾被移除的虚拟机(因为我已经加回...
2020-02-20 08:13:34 71312 33
HC32F460-DDL-Rev2.2.0.zip
2024-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人