- 博客(27)
- 资源 (8)
- 收藏
- 关注
原创 busybox中mkfs工具报lseek错误的问题
解决方案记录:默认busybox没有开启LFS,也就是 large file system 支持,开启后重新编译即可,在config文件里面添加:CONFIG_LFS=y
2020-07-01 17:42:22 279
原创 ActivePerl PPM提示超时问题
主要还是国内被墙的问题,同时PPM又不会自动使用系统代理,所以一方面需要SS启用系统代理,另外还要配置PPM的代理:在cmd命令行中输入:set http_proxy=http://127.0.0.1:1080SS中不需要开启反向代理,1080是系统代理的对应端口,打开服务器设置即可看到然后重新打开ppm即可另外去activeperl上去下ppmx包不知道有什么用,反正不好用。...
2020-06-28 21:27:06 397
原创 ChibiOS 同优先级周期调度问题
ChibiOS的任务如果优先级不同会按优先级来进行调度,高优先级的就绪任务能够block低优先级的当2个任务的优先级相同时,ChibiOS的默认配置不支持周期轮训调度,此时就需要修改配置文件我们可以观察os/rt/src/chschd.c文件中函数chSchDoReschedule的实现,可以看到里面涉及到一个特殊的参数配置:CH_CFG_TIME_QUANTUM该参数>0时,将会调用chSchReadyI函数从任务就绪队列中取出一个任务,由于这个队列是循环的,所以每个同等优先级的任务将能平
2020-05-11 22:27:37 531
原创 Github重定向源
在日常开发中经常会遇到这种问题,先是下载了一个别人的版本库,然后用着用着发现了一些问题,然后自己尝试修改掉,完善了原有的版本库后,觉得可以发起一个PullRequest,于是就得在网页端去fork,再重新下载一份新的。这个过程相对比较繁琐,我们可以通过直接在第一次下载的、源为别人的版本库进行重定向源的操作,完成源之间的切换,从而实现提交代码至自己的fork版本库中,最后在完成PR操...
2020-04-29 11:25:17 936
原创 Delphi控件的默认值
在property关键词的最后面加上default xxx就可以指定默认值,该默认值是用于在Object Inspector栏中显示非粗体的默认属性用的,选择其他值后,对应的属性内容将会变粗(以说明该项被modify了)而控件的部署到窗体上的时候所自动给定的默认值不是用上面的default的值的,而是来自于控件类中的构造函数Create,这一点要注意...
2020-04-16 22:56:42 713
原创 Delphi中类的向前声明
在Delphi中需要对多个类进行交叉引用时,就需要用到类的向前声明,实际使用中,如果仍然报错,要检查一下这部分声明和使用是否是在同一个type关键字的下面type TClassA = class; TClassB = class(xxx) FB1: Integer; FB2: Integer; FBA: TClassA;typ...
2020-04-16 09:44:00 477
原创 Delphi VaComm串口使用(TMS Async32控件)
断开连接:VaComm1.Close;连接:VaComm1.Baudrate := TVaBaudrate.br115200;VaComm1.Parity := TVaParity.paNone;VaComm1.Databits := TVaDatabits.db8;VaComm1.Stopbits := TVaStopbits.sb1;VaComm1.PortNum := 1...
2020-04-10 10:32:48 825
原创 ChibiOS如何建立独立工程(linux)
在ChibiOS的使用过程中,我们往往需要利用ChibiOS来完成我们的开发但不想要提交ChibiOS本身的代码(比如需要提交代码到github上),因为如果在ChibiOS的目录下开发就会带来这个问题。前面已经有一篇讲到了如何在ChibiOS的目录下进行自定义工程的创建,链接如下:https://blog.csdn.net/jtd9009001/article/details/10261...
2020-03-25 23:48:56 381
原创 Delphi XE兼容注意要点
1、早期版本中Char默认是指向AnsiChar,XE版本后是指向WideChar,所以修改所有的Char为AnsiChar2、早期版本中WinAPI函数默认是指向xxxxxxA,XE版本后是指向xxxxxW,所以修改所有的WinAPI函数尾部加上A...
2019-11-12 21:52:01 337
原创 ChibiOS使用hal库之PAL
PAL全称是I/O Ports Abstraction Layer,即“IO硬件抽象层”。ChibiOS通过对GPIO进行抽象,使得不同的平台不同的MCU能够用同样风格的代码进行IO的操作,本节我们来简单介绍一下PAL的使用一、开启PAL配置一般来说,大部分的ChibiOS工程都会用到GPIO,所以自然会将PAL的配置开启。我们打开halconf.h文件,确认一下HAL_USE_PAL这个...
2019-10-25 22:42:45 1743
原创 ChibiOS使用hal库之I2C
之所以使用ChibiOS,是因为其有强大完整的HAL库支持,能够对不同平台的硬件设备进行抽象描述,屏蔽了底层细节,使得开发人员能把更多的目光和精力集中在应用层开发和软件逻辑上面,本节我们学习使用ChibiOS的I2C一、开启I2C配置像很多的其他RTOS一样,ChibiOS的HAL中的组件一般都是可裁剪的,需要我们去配置才能开启某些组件功能。为了能够在我们的工程中使用I2C,我们需要修改工...
2019-10-25 00:13:15 881
原创 ChibiOS如何建立自己的板级(board)配置
一、ChibiOS的编译体系背景:ChibiOS的编译体系是非常清晰的,由如下几部分构成:APP层、HAL层、BOARD层、OS层、PLATFORM层、CPU层等,每层一般都有对应的makefile文件分别构建。比如在demo中的STM32F4 DISCOVERY板子的工程中,platform使用了/os/hal/ports/STM32/STM32F4xx/platform.mkboa...
2019-10-21 23:21:58 1168
原创 ChibiOS如何建立自己的工程(linux)
一、源码准备首先我们需要下载ChibiOS的源码工程,可以在Github上找到,链接如下:https://github.com/ChibiOS/ChibiOS或者可以到ChibiOS的官网进行下载,链接是这个:http://www.chibios.org/dokuwiki/doku.php?id=chibios:downloads:start下载下来是一个压缩包,我这边的版本以...
2019-10-18 10:46:24 1188
原创 ChibiOS关闭Idle功能后,跑入异常的问题
在chconf.h中设置CH_CFG_NO_IDLE_THREAD为FALSE后,可以关闭ChibiOS的Idle线程功能。此时main函数将会变成Idle线程,而ChibiOS的调度器要求就绪表中必须至少要有一个任务存在,因此main函数(也就是现在的Idle线程)不能主动放弃资源,也就是不能调用类似于系统延时、资源等待等可能发生主动任务切换并将自身从就绪表中删除的函数。所以官方的说法写...
2019-10-17 14:15:43 169
原创 ChibiOS系统启动调度过程
ChibiOS是一个来自日本的小型嵌入式操作系统,由于其包含了STM32全系列、AVR等MCU的驱动支持,所以对STM32、AVR等MCU的RTOS开发来说非常友好,这篇文章记录并探索一下ChibiOS在STM32内核下的启动调度过程(版本4.0.0,RT函数库): 我们先从main函数入手,ChibiOS的demos目录下有很多的例程,我们随便选择一个STM32的,可以看到在main函...
2019-09-29 10:41:05 2035 2
原创 ARM gcc 反汇编bin文件
先通过objdump --help查看支持的目标“supported targets”然后找到你的目标体系并加到-m参数后面,ARM-M核的thumb命令应该加上-Mforce-thumb来强制使用thumb模式命令例子: objdump -D -b binary -m armv7 -Mforce-thumb xxx.bin > xxx.asm...
2019-09-15 14:34:25 968
原创 Delphi Byte、PByte、TBytes的转换
PByte转TBytes: a:PByte; b:TBytes; b := TBytes(a);PByte转Byte:其实就是指针操作 a:PByte; b:Byte; b := a^;Byte转PByte:也是指针操作 a:Byte; b:PByte; b := @a;...
2019-08-06 15:35:59 4104
原创 Delphi XE8下 Indy使用:IdTCPClient
IdTCPClient这个控件在XE8里面和以前的代码感觉完全不一样了,研究了一下,基本通讯模式如下:首先防止IdTCPClient和IdAntiFreeze在界面上,uses里面包含一下IdGlobalTCP连接:begin IdTCPClient1.Host := '127.0.0.1'; IdTCPClient1.Port := 10000; try...
2019-08-05 20:10:38 2226
原创 GCC下实现宏注册handler结构模板方法
1、定义一个handler结构:typedef struct XX_handler{ u32 index; x1_t x1; x2_t x2; x3_t x3; x4_t x4; ........ void (*handler)(void);}XX_HANDLER;2、构造专用section声明:#define _xx_secti...
2019-07-05 14:26:15 138
原创 VaComm控件支持COM10以上串口的方法
VaComm2005的代码对COM口的支持不能超过COM10,根据Windows对COM10以上的串口的打开方法,需要修改VaComm的源码:将函数 TVaCustomComm.GetDeviceName的实现修如下:function TVaCustomComm.GetDeviceName : string;begin if PortNum <= 10 then Res...
2019-06-20 11:52:21 455
转载 VS编译DLL文件的简单实例
创建DLL工程文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。增加并编写源文件: a.c: #include "a.h" ...
2019-05-24 10:56:40 3977
原创 C的enum与Delphi中枚举的转换问题
当Delphi调用一个来自C的接口时,比如dll。C中的函数参数可能是枚举类型,由于Delphi默认枚举长度为2字节、C为4字节,则将会在调用时产生意外,因此需要解决该问题: Delphi中的枚举定义示例如下,这里以对接OpenSSL的point_conversion_form_t类型为例:type Tpoint_conversion_form = (POINT...
2019-04-09 15:57:11 737
原创 OpenSSL的错误机制
在我们使用OpenSSL的过程中,可能会遇到函数返回值为0的情况,由于OpenSSL大部分的函数返回值规定1为返回正确,0为错误,因此,我们需要借助OpenSSL的错误处理函数对我们的代码进行进一步的分析,找到错误原因。 OpenSSL使用一个叫做ERR_STATE的结构体来维护其错误信息,其本质上就是一个深度为16单位的环形缓冲区,里面可以存放错误数据、文件、标...
2019-04-09 15:11:37 1863
原创 解决OpenSSL调用EVP_EncryptUpdate进行解密,返回长度少一个block_size的问题
最近在参考OpenSSL的man3中的调用示例调用EVP_EncryptUpdate的解密功能时,发现返回的长度总是少16字节(以AES-128-ecb为例),于是看OpenSSL源码,遂发现在evp_enc.c中的EVP_DecryptUpdate函数中在发现ctx->flags若有PADDING的情况下可能对解密返回的数据长度减去一个block_size的大小,应该是没有...
2019-04-08 22:12:01 8514 5
原创 python的hex转换函数
BIN转HEX: 输入: import binascii print(binascii.b2a_hex("abcdefghijklmn")) 输出: 6162636465666768696a6b6c6d6e 扩展:hexlify也可以实现同样的效果:binascii.hexlify("abcdefghijklmn")HEX...
2019-03-28 10:50:25 9234
原创 Visual Studio笔记 之 那些年跳过的坑
1、字符集问题:CString 无法向char*进行转换,这是由于VS2013之后关闭了ASCII方式,而默认开启了unicode方式,字符集的设置可以在项目->属性->配置属性->常规->字符集(Character Set)找到,修改为 多字节字符模式(Use Mult-Byte Chracter Set)即可。另外需要到微软官方下载多字节模式的支持包才可以正常编译,...
2019-03-16 21:46:56 121
原创 FreeRTOS heap 4 机制解析
FreeRTOS提供了几个内存管理的方案,其中一个实现较好的方式是heap4。本篇就来形象讲述heap4的工作原理。本文暂时只用作自己对heap4的工作机制的总结和记录,有空了再修改成教程吧,所以,很多临时的图片就直接往上贴了 基本原理:ucHeap是一块由bss段分配的内存区域,heap4的核心内存管理特点是只监控空闲块(free block),不直接监控分配块。不管是空闲块...
2018-11-25 19:42:06 3908
CloudQQ密保助手 源代码
2012-08-22
Delphi7关于MessageBox函数的使用
2012-04-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人