首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 串口基本用法

查看Linux本机串口: 1、查看串口是否可用 如果需要查看这个串口设备输出: cat ttyUSB0 如果需要对这个设备输入: echo yaoxu > ttyUSB0 常用调试工具有: minicom...cutecom Linux系统可视化串口应用软件,使用上与Windows系统串口调试工具。 picocom 效果上类似 minicom 精简版,设置比较简单,还可以有背景颜色。...PC上串口一般是ttyS,板子上Linux串口一般叫做ttySAC; 串口权限问题 临时调试解决 在使用串口进行通信时,经常需要使用指令来赋予用户读写权限 $ sudo chmod 777 /dev...查看linux所有用户 使用 /etc/passwd 文件 使用任何一个像 cat、more、less 等文件操作命令来打印 Linux 系统上创建用户列表。.../etc/passwd 是一个文本文件,其中包含了登录 Linux 系统所必需每个用户信息。

9.8K41

使用picocm来进行Linux串口调试

主要原因就是minicom没有彩色文字,看着难受,特别是调试ARM Linux时候233 安装 因为正常是在Debian系列Linux发行版上面使用(deepin或者ubuntu这些,解决方案比较完善...然后使得这个设备能被picocom工具访问使用 sudo chmod 777 /dev/ttyUSBx 请自行将ttyUSBx替换为当前使用串口设备 连接串口设备 下面是一般连接一个串口设备说使用命令...参数讲解 -b: 设置波特率参数 /dev/ttyUSBx:串口设备,请替换为当前使用串口设备 打开帮助提示页面 ?...+h打开,所以其他命令也是同理 发送接收文件 如果直接使用上面的连接串口设备命令直接去进行文件发送的话,你就会发现Ctrl a+s进行发送时候根本没办法确定使用哪种协议进行,很让人摸不着头脑...(其实默认传输发送接收模式之前连接截图已经有曝光了,就是z模式233),其实只要仔细点阅读picocomman文档的话就能够看到相关发送接收小节里面有提及相关内容 ?

9.2K60
您找到你想要的搜索结果了吗?
是的
没有找到

LINUX串口非标准波特率更改

LINUX库提供波特率是标准波特率,应用时有时会用到非标准波特率。以下试验使用xilinxzynq7020,linux内核是4.14版本。以增加波特率100k为例。...先说为什么增加波特率使用0020001而不在B4000000后面递增使用0010020,这是因为这个低位20已经被占用了,如下图3,所以找了没被占用位置,0020000中2这个bit位置在c_cflag...第一处0030017也是这个原因,就是将波特率即可使用这些宏定义包含进去。...图4 修改函数speed_t tty_termios_baud_rate(struct ktermios *termios),图5 图5 其中圈起来地方是新加,这就是根据刚才新加部分进行波特率修改...|= 0020001; (其余配置省略) tcsetattr(fdcom, TCSANOW, &termios_new); 这样串口波特率即更改为100k,如需其他波特率在头文件处增加,应用端赋值对应数值即可

3.6K30

详解Linux系统调用fork()函数

Linux系统中,fork()是一个非常重要系统调用,它作用是创建一个新进程。...如果返回一个正整数,表示当前进程是父进程,并且返回整数就是新创建出来子进程进程ID。 此外,如果fork()返回值为-1,表示创建子进程失败。...fork()函数本质是在内核中创建一个新进程控制块(PCB),然后将原来进程PCB中大部分内容都复制到新PCB中去,然后让两个进程同时运行。...由于新进程是从原来进程所复制而来,因此新进程会继承原来进程所有资源和信息,包括内存、文件描述符、信号处理方式等。 需要注意是,fork()函数并不保证父进程和子进程执行顺序。...一般情况下,父进程和子进程之间是相互独立,它们各自运行各自代码,共享只有一部分内存空间,而其他资源则是分别使用

51430

linux 系统调用 write 原子性

那么就是进程启动后,全部竞争某个锁,竞争到该锁 worker 执行 log worker 代码,其余 worker 继续运行相应程序,这个方案看上去是一个不错方案,如果是单 worker 的话...,那么就无需使用该锁即可 利用周末空闲时间,终于进行了一番探究,究竟 nginx 使用是上述方案中哪一个呢?...Single UNIX Specification 标准对此进行了详细说明,内核在调用 write 前会对文件进行加锁,在调用 write 后会对文件进行解锁,这样保证了文件写入原子性,也就无需担心数据交错发生了...linux 系统默认使用 O_NONBLOCK 标识打开文件,而 bsd 等 unix 系统则恰恰相反。 3.2....3.3. socket linux 2.6.14 内核对 tcp socket 写操作进行了说明,他并不是原子

1.6K60

Linux下select调用引发血案

Select采用一个bit表,每个fd对应表中一个bit位,宏FD_SETSIZE为表大小,添加到fd_set中fd值必须小于FD_SETSIZE,否则就会越界,假设有如下一段代码: fd_set...通过ulimit命令和setrlimit函数来修改进程内句柄数限制,并不会影响FD_SETSIZE值,所以即使通过ulimit命令或setrlimit函数将进程允许句柄改成很大了,但如果FD_SETSIZE...较容易发生在服务端程序中,因为服务端程序同一时刻连接数很容易超过默认FD_SETSIZE值,而服务端代码可能是使用epoll使用,所以它本身并不会存在问题,但是程序中可能还有个客户端,比如使用了...select来实现超时连接,这个时候问题就来了,当连接数超过FD_SETSIZE时,超时连接处select调用就发生了越界,进程就会在某个可能完全不相干地方crash,要定位这个问题成本是很高,...如何避免这个问题了?那就是尽量不使用select,而应当使用更安全poll函数来替代,因为poll使用数组是调用者自己维护,完全可以保证不越界。

1.9K20

Linux:system 调用引发 getcwd 异常

我们有个功能是这样:有个以 root 运行 python 程序,它需要以 test 用户执行 linux 命令,所以就通过 subprocess 库 + sudo 来执行,也就是下面的关系图: image.png...凭借过硬英语水平,我们可以看到这个错误应该在 shell 初始化时候报,这样很明显啦,搜 bash 代码。...System 源码 带着不甘心搜它实现: int system(const char * cmdstring) { pid_t pid; int status; if...那现在其实一目了然了,system调用了 /bin/sh, 触发shell 初始化了, 在初始化变量时候调用了 get_working_directory,因为获取父目录失败了,所以输出了那段错误。...族函数,它们是将新程序内容替换当前进程内容运行,具体大家可以谷歌看看,这边就不多说了~ 我们对 system 实现已经有一定熟悉了,在后面使用这个方法时候,不管是在资源使用还是问题排查,都应该多一些意识

1.3K20

Linux被中断系统如何调用详解

前言 慢系统调用,指的是可能永远无法返回,从而使进程永远阻塞系统调用,比如无客户连接时accept、无输入时read都属于慢速系统调用。...在Linux中,当阻塞于某个慢系统调用进程捕获一个信号,则该系统调用就会被中断,转而执行信号处理函数,这就是被中断系统调用。...然而,当信号处理函数返回时,有可能发生以下情况: 如果信号处理函数是用signal注册,系统调用会自动重启,函数不会返回 如果信号处理函数是用sigaction注册 默认情况下,系统调用不会自动重启...,函数将返回失败,同时errno被置为EINTR 只有中断信号SA_RESTART标志有效时,系统调用才会自动重启 下面我们编写代码,分别验证上述几种情形,其中系统调用选择read,中断信号选择SIGALRM...由于对被中断系统调用处理方式差异性,因此对应用程序来说,与被中断系统调用相关问题是: 应用程序无法保证总是知道信号处理函数注册方式,以及是否设置了SA_RESTART标志 可移植代码必须显式处理关键函数出错返回

2.5K10

串口怎么操作核心板Linux?ADB(以点灯为例)

介绍 我们在平时开发中,很有可能遇见有的核心板没有串口,但我们却想操作板子搭建Linux,那么这时候应该怎么办呢?可以使用ADB,下面我们来具体介绍一下ADB。...它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间交互。常常用于手机端Android调试,但也可以使用在Linux开发板调试。...服务器一旦发现 adb 守护程序 (adbd),便会与相应端口建立连接。请注意,每个模拟器都使用一对按顺序排列端口 - 用于控制台连接偶数号端口和用于 adb 连接奇数号端口。...输入adb shell进入到板子linux系统命令行 点灯 查看IO复用情况表 cat /sys/kernel/debug/pinctrl/2000000.pinctrl/pinmux-pins...打开LED echo 1 > value 可以看到核心板最左侧小灯已经打开。 5. 关闭LED echo 0 > value 可以看到核心板最左侧小灯已经关闭。

1.6K40

基于intLinux经典系统调用实现

1,  Linux系统调用:2.6.19版内核提供了319个系统调用。...我们暂时把API和系统调用等同起来 3,  Linux中,每个系统调用对应一个系统调用号,内核维护了一个系统调用表,通过这张表可以找到对应系统调用函数。...用户态要切换到内核态,操作系统一般是通过中断来完成 3,  Linux使用0x80中断作为系统调用入口,Windows采用0x2E号中断作为系统调用入口 4,  中断是一个硬件或软件发出请求,要求CPU...三 基于intLinux经典系统调用实现(进入正题) 1,  以fork为例  void main(void) { fork(); } 2, 大概流程就是这样:用户调用fork  ->  ...从中断处理程序中返回时,再切换回用户栈 (4)       “当前栈”指的是ESP值所在栈空间,若ESP值位于用户栈范围内,那个当前栈就是用户栈,反之就是内核栈。

1.2K90

安防视频结构化智能分析平台EasyNVR串口功能作用及调用方法

EasyNVR在前期开发中增加了一个串口功能,这个功能我们不常提起,算是比较小众一个功能,但是对需要通过一个链接来切换视频通道项目来说,是非常实用功能。...EasyNVR内串口功能作用是假如EasyNVR接入硬盘录像机,通过开启串口,即可通过一个通道来切换硬盘录像机内任意一个视频通道播放。 本文则分享一下串口功能使用方法。...2.拉取从硬盘录像机中输出流,在硬盘录像机下面还有其他通道,我们需要使用串口来进行更改; 3.此时需查看串口状态是否正常; ? 4.确定串口状态之后开启调用,改变EasyNVR里播放画面。...其中串口信息可以通过网址来进行分辨,如下图中标注: ? 5.可以看到视频流调用成功,EasyNVR播放通道已经转换成了其他通道视频流。 ?...EasyNVR通过串口即可达到我们上文所述功能,此外,EasyNVR还具备其他丰富接口,可以在测试中自由调用

35040

安防视频结构化智能分析平台EasyNVR串口功能作用及调用方法

EasyNVR内串口功能作用是假如EasyNVR接入硬盘录像机,通过开启串口,即可通过一个通道来切换硬盘录像机内任意一个视频通道播放。 本文则分享一下串口功能使用方法。...开启EasyNVR串口功能后,登录EasyNVRWeb页面,选择一个通道并且进入该通道播放界面; image.png 2.拉取从硬盘录像机中输出流,在硬盘录像机下面还有其他通道,我们需要使用串口来进行更改...; 3.此时需查看串口状态是否正常; image.png 4.确定串口状态之后开启调用,改变EasyNVR里播放画面。...其中串口信息可以通过网址来进行分辨,如下图中标注: image.png 5.可以看到视频流调用成功,EasyNVR播放通道已经转换成了其他通道视频流。...EasyNVR通过串口即可达到我们上文所述功能,此外,EasyNVR还具备其他丰富接口,可以在测试中自由调用

40320

Linux 内核 内存管理】mmap 系统调用源码分析 ① ( mmap 与 mmap2 系统调用 | Linux 内核中 mmap 系统调用源码 )

文章目录 一、mmap 与 mmap2 系统调用 二、Linux 内核中 mmap 系统调用源码 一、mmap 与 mmap2 系统调用 ---- mmap 创建 " 内存映射 " 系统调用 有...mmap2 ; 2 者区别是 : mmap 偏移单位是 " 字节 " , mmap2 偏移单位是 " 页 " , 但是在 arm 64 体系架构中 , 没有实现 mmap2 , 只实现了 mmap 系统调用...; 二、Linux 内核中 mmap 系统调用源码 ---- arm64 架构体系中 , 使用 mmap 系统调用 创建 " 内存映射 " , 调用 mmap 系统调用函数 , 执行如下操作 : 先检查..." 偏移 " 是否是 " 内存页大小 " " 整数倍 " , 如果偏移不是内存页大小整数倍 , 返回 -EINVAL 错误 ; 如果偏移是内存页大小整数倍 , 则调用 sys_mmap_pgoff...return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT); } 参考路径 : linux

10.5K40

Linux动态为内核添加新系统调用

本文主题依然不是劫持系统调用,而是添加系统调用,并且是动态添加系统调用,即在不重新编译内核前提下添加系统调用,毕竟如果可以重新编译内核的话,那实在是没有意思。...我问题是: Linux系统中如何获取以及修改当前进程名字??...你搜一下这个topic,一堆冗余繁杂方案,大多数都是借助procfs来完成这个需求,但没有直接让人感到清爽方法,比如调用一个getname接口即可获取当前进程名字,调用一个modname接口就能修改自己名字...text接口,而不是自己修改页表权限。...// 这是因为内核函数之间互调使用是rel32调用,这就需要校准偏移,太麻烦。// 记住:作为例子,不调用printk,也不调用memcpy/memset...如果想秀花活儿,自己校准吧。

1.7K30

Linux bridge使用dummy接口调用IPVS问题

Linux bridge使用dummy接口调用IPVS问题 在IPVS: How Kubernetes Services Direct Traffic to Pods一文中,作者给出了一个简单组网(...如下)来模拟kubernetes是如何使用IPVS进行通信。...问题描述 当在netns_leah命名空间中测试通过VIP访问netns_dustin中服务时,发现如果不创建一个类型为dummy,且IP为VIP(10.100.100.100)接口时,访问是不通...作者怀疑bridge_home接口并没有调用IPVS规则。 如下图,IPVS规则实际是iptables处理路径上挂载钩子。 ?...如果不配置dummy接口,将不会执行上述第四步,即bridge_home不会发起到netns_dustinARP广播请求,由此可以怀疑,从netns_leah到bridge_homeSYNC报文并没有经过

1.2K10
领券