- 博客(547)
- 资源 (15)
- 收藏
- 关注
原创 linux microcom输出十六进制的方式
以下是一个例子,它将发送字符串"Hello, World!发送十六进制数据,你需要将十六进制数据转换为其等价的字节形式。:后跟两位十六进制数,表示对应的字符或字节。请根据你的实际串口设备和需要发送的数据修改。命令结合使用,发送十六进制数据。设置超时时间为100毫秒。在Linux中,使用。
2024-04-09 07:39:23 252
原创 valgrind命令
-log-file=/hdd/log-valgrind.txt :将其所有消息发送到指定文件。--tool=memcheck:内存检测。
2024-03-27 08:49:35 191
原创 linux时区、夏令时、冬令时实现
这个示例代码使用C语言中的系统调用和标准库函数来实现timeconfig命令的功能。它接受一个时区参数作为命令行参数,并根据该参数进行相应的操作来修改系统的时区设置。
2024-03-22 09:29:10 124
原创 linxu gdb调试技巧
GDB,全称GNU调试器(GNU Debugger),是一个强大的Unix系统下的源代码级调试工具。它可以帮助程序员查看程序在执行过程中的内部状态,从而更好地理解程序的运行机制。GDB主要用于调试C和C++语言编写的程序。它的存在,使得我们能够更深入地了解程序的运行过程,找出并修复程序中的错误。
2024-03-07 11:02:35 838
原创 GDB调试中将信号发送给程序的方法
比如,以下设置会告诉gdb在接收到SIGINT时不要停止、打印出来、传递给调试目标程序 (handle SIGINT nostop print pass)首先在你希望发送信号的语句处设置断点,然后运行程序,当停止到断点所在位置后,用gdb的signal命令发送信号给调试目标程序。2)使用gdb命令直接向调试的应用程序发送信号。1)改变gdb信号处理的设置。
2024-03-05 17:24:11 207
原创 linuxsocket阻塞recv怎么返回
如果socket是被对方用linger为0的形式关掉,也就是直接发RST的方式关闭的时候,recv也会返回错误,错误码是ENOENT还有一种经常在代码中常见的错误码,那就是EINTER,意思是系统在接收的时候因为收到其他中断信号而被迫返回,不算socket故障,应该继续接收。recv是socket编程中最常用的函数之一,在阻塞状态的recv有时候会返回不同的值,而对于错误值也有相应的错误码,分别对应不同的状态,下面是我针对常见的几种网络状态的简单总结。
2024-02-24 10:25:54 280
原创 linux TIME_WAIT时间变短
默认情况下,TIME_WAIT状态会持续2分钟(120秒)以确保网络上没有重复的数据包被传输到错误的目标地址。这样就将TIME_WAIT超时时间从默认的60秒调整为了30秒。需要注意的是,此修改只对新建立的连接生效,不影响正在进行的连接。无论选择哪种方法,都需要小心操作,因为缩短TIME_WAIT时间可能导致部分连接处于非正常状态或者引发其他网络相关问题。要将TIME_WAIT时间设置为更短的值,可以通过修改系统内核参数来实现。同样,这也会将TIME_WAIT超时时间设置为30秒。
2024-01-11 09:00:22 504
原创 pycharm python环境安装
点击运行安装:python-3.8.0.exeArguments中内容填写如下:Working directory内容填写如下:$FileDir$designer工具添加到Pycharm工具中如何将xxx.ui文件转换成xxx.py。
2023-12-31 23:42:26 1077
原创 MCU中断嵌套风险
例如:有两个中断,1ms的tick中断和115200波特率的通信串口,tick的优先级比串口的中断优先级高,115200bps中断接收一个字节是10us(115200/11个bit=每秒101381个字节=每10us 1个字节),假设tick中断内部加了业务,需要20us,那串口中断来不及接收字节就会存在问题。单片机中断嵌套是指在处理一个中断时,另一个中断发生,CPU会暂停当前中断的处理,转而去处理新的中断。当新的中断处理完毕后,CPU会回到之前的中断继续处理。这种方式称为中断嵌套。
2023-12-16 10:56:50 221
原创 储能标准汇总
UL 9540A是一项安全标准,用于评估储能系统(ESS)的安全性能。UL 9540A的评估包括对ESS的电气、机械和化学特性的测试,以及对其安全控制系统的审查。该规范包括机器人的电气安全、机械安全、热安全、辐射安全、化学安全、噪声安全、环境安全等多个方面的要求。UL9540是一个标准,它是由美国安全实验室(UL)制定的,用于评估电池能量储存系统(BESS)的安全性和性能的标准。该标准包括了一系列的测试,例如温度循环测试、湿热循环测试、机械载荷测试等,以评估光伏组件在不同环境下的耐久性和性能稳定性。
2023-12-16 10:20:14 221
原创 IEC60730-1 Annex-H
另外也可以使用March测试法来进行测试,简单的来说,就是将所有的内存位置填成0或1,然后逐步地一一进行读值验证,在更换填值换一个读取的起点开始一一读值测试,若读出来的参数跟事先填入的数值不同则代表内存该地址的存取有错误。测试完毕后,将原有内容恢复至缓存器。与外部设备进行通讯是许多应用的重要组成之一,但潜在的故障率也相对来的高,因为通讯非常容易受到其他电磁波或讯号源的干扰,且通讯的任一端都有可能出现工作异常的状况,透过验证对外通讯的运行可以避免其中一端设备故障时,另一端设备也出现故障。
2023-11-30 09:11:53 537
原创 海外储能认证标准
侧重于储能电池和电池系统的安全要求,不仅对电芯和电池模块进行外部短路、撞击、跌落、热滥用、过充、强制放电安全测试,而且对电池管理系统(BMS)进行过充电压保护、过充电流保护、过热保护、耐热失控蔓延等功能进行评估。侧重储能PCS安全通用标准,主要涉及防电击、防能量、防火、防热伤害、防机械与噪声伤害,以及产品在运行、存储与运输过程中可能产生的环境应力等要求;包括燃烧测试、过充保护测试、过放保护测试、温度冲击测试等。,UL9540A测试主要从电池储能系统安装参数,,关注机械测试,电器测试和环境测试。
2023-11-30 09:09:51 385
原创 OCI制作
OCI镜像是一种堆叠起来的文件系统,多层文件目录合并起来形成所需的根文件系统,多个层之间有依赖关系,这种依赖关系称为父子关系,被依赖的层为父层(parent)。但容器镜像又不仅仅是一个根文件系统镜像,容器镜像有一个OCI标准规范,而runc命令用于运行根据OCI规范打包的应用程序,也就是说,runc命令是OCI规范的兼容实现。OCI镜像、OCI包和OCI容器运行时如图11-6所示,OCI镜像可以解包(unpack)成OCI包,OCI容器运行时工具(比如runc)可以将OCI包在容器中运行起来。
2023-11-05 21:23:02 183
原创 namespace
namespace是Linux内核的一组特性,支持对内核资源进行分区隔离,让一组进程只能看到一组资源,而另一组进程只能看到另一组不同的资源。换句话说,namespace的关键特性是进程隔离。在运行许多不同服务的服务器上,将各个服务及其相关进程相互隔离能够减少系统环境变更带来的影响,以及避免系统安全性方面的问题。namespace技术是实现容器的核心技术。容器提供了一个独立的环境,看起来就像一个完整的虚拟机,但它不是虚拟机,而是正在运行的一组进程。
2023-11-05 17:46:00 133
原创 chroot
第一个参数是存放容器根文件系统的目录,第二个参数是可执行文件的路径,这个路径是相对于第一个参数而言的,原系统的绝对路径为/home/mengning/container/bin/hello。显然chroot技术只能改变进程描述符struct task_struct相关的struct fs_struct中的root,影响的是路径查找(path lookup)的起始点,是一种非常简单的隔离进程对文件系统访问范围的方法,Mount namespace则可以隔离进程的整个mount树,11.2.3节中再详细讨论。
2023-11-05 17:17:36 299
原创 linux内存水位watermark、内存保留lowmem_reserve_ratio
当系统中空闲内存低于watermark[low],开始启动kswapd进行页面回收,每个zone都有一个kswapd,直到到达high才开始停止回收。如果上层申请内存速度过快,导致空闲内存降至min一下,内核就会direct reclaim,就是直接在应用程序的上下文中进行页面回收,min以下的内存空间是给系统特殊使用的,不会给用户态程序用。
2023-05-26 16:28:04 761
原创 Code area 和Data area的区别
Data Area FLASH: 程序在这段flash运行时,每条语句都有延时, 最后的速度可能是以10M为时钟(举例) 这时候, 如果有与时序相关的语句在此执行(IIC等), 很有可能会出问题。Code Area是FLASH中零等待的部分,Data Area是FLASH中非零等待的部分,他俩之和是总的FLASH容量。Code Area代表这部分代码零等待,Data Area则不是零等待,这与整个Flash的大小有关。code flash不常用,可擦写次数不一样,存储方式,命令不一样。
2023-04-28 10:41:24 1163
原创 电池内阻计算方法
因为电池实际上等效于一个有源电阻,因此我们给电池施加一个固定频率和固定电流(目前一般使用1kHz频率、50mA小电流),然后对其电压进行采样,经过整流、滤波等一系列处理后通过运放电路计算出该电池的内阻值。但此法有明显的不足之处:(1)只能测量大容量电池或者蓄电池,小容量电池无法在2~3秒钟内负荷40A~80A的大电流;根据物理公式R=U/I,测试设备让电池在短时间内(一般为2~3秒)强制通过一个很大的恒定直流电流(目前一般使用40A~80A的大电流),测量此时电池两端的电压,并按公式计算出当前的电池内阻。
2023-04-27 20:03:24 1724
原创 allwinner boot0启动
/其中的bootcmd是上面CONFIG_SUNXI_SPRITE_ENV_SETTINGS配置。bl _main:跳转到main函数,文件位置:u-boot-2018/arch/arm/lib/crt0.S。arch/arm/cpu/armv7/start.o (.text):表示文本段被调用的文件。函数:run_command_list(s, -1, 0);//上面的参数s传给当前函数,即。//上面的参数s传给当前函数。ENTRY(_start)表示入口函数,即uboot上电启动的位置。
2023-04-17 21:33:54 413
原创 allwinner uboot boot0
机器从上电后先运行BROM中一段固定的代码,BROM会读取外部引脚来决定从何种介质来启动系统,BROM的作用是初始化储存启动系统的介质,如flash,emmc等。然后从启动介质中读取boot0代码到芯片内部的SRAM中,然后跳到boot0的boot0_entry.S(sunxi_spl/boot0/main/)
2023-04-16 17:43:41 100
http_client.txt
2019-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人