1、说明
本文针对Linux系统上如何对各类串口硬件进行出厂测试进行硬件连接和软件使用说明,提供的软件测试工具wchsertest,适用于USB、PCI、PCIe转串口设备等、同样也适用于原生ttyS串口。
2、串口测试硬件连接
在测试前,需要制作单独的硬件治具,按下表连接信号线:
引脚连接示意图:
3、软件使用方法
(1)插入待测试USB/PCI/PCIe转串口设备。
(2)以CH342F(USB转2串口芯片)为例,安装对应VCP厂商驱动程序,进入/dev目录查看出现如下设备节点:
以CH382为例,安装对应VCP厂商驱动程序,进入/dev目录查看出现如下设备节点:
(3)运行软件,输入命令格式:
./[可执行文件] –D [设备节点路径]
实例1(测试CH342的UART0):sudo ./serial_port_test -D /dev/ttyCH343USB0
实例2(测试CH382的UART0):sudo ./serial_port_test -D /dev/ttyWCH0
4、测试错误码说明
根据输出的错误码和终端输出信息可判断故障信号线,下表为错误码和说明。
错误码 | 错误码说明 |
---|---|
0 | DTR--DSR线错误 |
1 | DTR--DCD线错误 |
2 | RTS--CTS线错误 |
3 | RTS--RI线错误 |
4 | TXD--RXD线错误 |
5、测试实例
(1)测试成功实例
软件分别以2400bps、9600bps、115200bps各测试一次。
(2)测试错误实例
根据输出信息可知,DTR—DSR信号通讯存在错误,错误码:0。
6、wchsertest工具源码
/*
* serial port factory test utility.
*
* Copyright (C) 2023 Nanjing Qinheng Microelectronics Co., Ltd.
* Web: http://wch.cn
* Author: WCH
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define termios asmtermios
#include
#undef termios
#include
#define DTR_ON 1
#define DTR_OFF 0
#define RTS_ON 1
#define RTS_OFF 0
#define BUF_SIZE 64
#define DTR_ON_CMD 0x0
#define DTR_OFF_CMD 0x1
#define RTS_ON_CMD 0x2
#define RTS_OFF_CMD 0x3
extern int ioctl(int d, int request, ...);
static const char *device = "/dev/ttyCH343USB0";
static int hardflow = 0;
static int verbose = 0;
static FILE *fp;
static const struct option lopts[] = {
{ "device", required_argument, 0, 'D' },
{ NULL, 0, 0, 0 },
};
static void print_usage(const char *prog)
{
printf("Usage: %s [-DSvf]
", prog);
puts(" -D --device tty device to use
");
exit(1);
}
static void parse_opts(int argc, char *argv[])
{
int c;
while (1) {
c = getopt_long(argc, argv, "D:S:h", lopts, NULL);
if (c == -1) {
break;
}
switch (c) {
case 'D':
if (optarg != NULL)
device = optarg;
break;
case 'h':
default:
print_usage(argv[0]);
break;
}
}
}
/**
* libtty_setcustombaudrate - set baud rate of tty device
* @fd: device handle
* @speed: baud rate to set
*
* The function return 0 if success, or -1 if fail.
*/
static int libtty_setcustombaudrate(int fd, int baudrate)
{
struct termios2 tio;
if (ioctl(fd, TCGETS2, &tio)) {
perror("TCGETS2");
return -1;
}
tio.c_cflag &= ~CBAUD;
tio.c_cflag |= BOTHER;
tio.c_ispeed = baudrate;
tio.c_ospeed = baudrate;
if (ioctl(fd, TCSETS2, &tio)) {
perror("TCSETS2");
return -1;
}
if (ioctl(fd, TCGETS2, &tio)) {
perror("TCGETS2");
return -1;
}
return 0;
}
/**
* libtty_setopt - config tty device
* @fd: device handle
* @speed: baud rate to set
* @databits: data bits to set
* @stopbits: stop bits to set
* @parity: parity to set
* @hardflow: hardflow to set
*
* The function return 0 if success, or -1 if fail.
*/
static int libtty_setopt(int fd, int speed, int databits, int stopbits, char parity, char hardflow)
{
struct termios newtio;
struct termios oldtio;
int i;
bzero(&newtio, sizeof(newtio));
bzero(&oldtio, sizeof(oldtio));
if (tcgetattr(fd, &oldtio) != 0) {
perror("tcgetattr");
return -1;
}
newtio.c_cflag |= CLOCAL | CREAD;
newtio.c_cflag &= ~CSIZE;
/* set data bits */
switch (databits) {
case 5:
newtio.c_cflag |= CS5;
break;
case 6:
newtio.c_cflag |= CS6;
break;
case 7:
newtio.c_cflag |= CS7;
break;
case 8:
newtio.c_cflag |= CS8;
break;
default:
fprintf(stderr, "unsupported data size
");
return -1;
}
/* set parity */
switch (parity) {
case 'n':
case 'N':
newtio.c_cflag &= ~PARENB; /* Clear parity enable */
newtio.c_iflag &= ~INPCK; /* Disable input parity check */
break;
case 'o':
case 'O':
newtio.c_cflag |= (PARODD | PARENB); /* Odd parity instead of even */
newtio.c_iflag |= INPCK; /* Enable input parity check */
break;
case 'e':
case 'E':
newtio.c_cflag |= PARENB; /* Enable parity */
newtio.c_cflag &= ~PARODD; /* Even parity instead of odd */
newtio.c_iflag |= INPCK; /* Enable input parity check */
break;
default:
fprintf(stderr, "unsupported parity
");
return -1;
}
/* set stop bits */
switch (stopbits) {
case 1:
newtio.c_cflag &= ~CSTOPB;
break;
case 2:
newtio.c_cflag |= CSTOPB;
break;
default:
perror("unsupported stop bits
");
return -1;
}
if (hardflow)
newtio.c_cflag |= CRTSCTS;
else
newtio.c_cflag &= ~CRTSCTS;
newtio.c_cc[VTIME] = 10; /* Time-out value (tenths of a second) [!ICANON]. */
newtio.c_cc[VMIN] = 64; /* Minimum number of bytes read at once [!ICANON]. */
tcflush(fd, TCIOFLUSH);
if (tcsetattr(fd, TCSANOW, &newtio) != 0) {
perror("tcsetattr");
return -1;
}
/* set tty speed */
if (libtty_setcustombaudrate(fd, speed) != 0) {
perror("setbaudrate");
return -1;
}
return 0;
}
/**
* libtty_open - open tty device
* @devname: the device name to open
*
* In this demo device is opened blocked, you could modify it at will.
*/
static int libtty_open(const char *devname)
{
int fd = open(devname, O_RDWR | O_NOCTTY);
int flags = 0;
if (fd < 0) {
perror("open device failed");
return -1;
}
if (fcntl(fd, F_SETFL, 0) < 0) {
printf("fcntl failed.
");
return -1;
}
if (isatty(fd) == 0) {
printf("not tty device.
");
return -1;
}
return fd;
}
/**
* libtty_close - close tty device
* @fd: the device handle
*
* The function return 0 if success, others if fail.
*/
static int libtty_close(int fd)
{
return close(fd);
}
/**
* libtty_tiocmset - modem set
* @fd: file descriptor of tty device
* @bDTR: 0 on inactive, other on DTR active
* @bRTS: 0 on inactive, other on RTS active
*
* The function return 0 if success, others if fail.
*/
static int libtty_tiocmset(int fd, char bDTR, char bRTS)
{
unsigned long controlbits = 0;
if (bDTR)
controlbits |= TIOCM_DTR;
if (bRTS)
controlbits |= TIOCM_RTS;
return ioctl(fd, TIOCMSET, &controlbits);
}
/**
* libtty_tiocmget - modem get
* @fd: file descriptor of tty device
* @modembits: pointer to modem status
*
* The function return 0 if success, others if fail.
*/
static int libtty_tiocmget_check(int fd, unsigned long *modembits, int cmd)
{
int ret = 0;
ret = ioctl(fd, TIOCMGET, modembits);
if (ret == 0) {
switch (cmd) {
case DTR_OFF_CMD: // DTR--DSR/DCD
if ((*modembits & TIOCM_DSR) != 0) {
printf("[error code: %d] DTR--DSR ERROR
", 0);
ret = -1;
}
if ((*modembits & TIOCM_CD) != 0) {
printf("[error code: %d] DTR--DCD ERROR
", 1);
ret = -1;
}
break;
case DTR_ON_CMD:
if ((*modembits & TIOCM_DSR) == 0) {
printf("[error code: %d] DTR--DSR ERROR
", 0);
ret = -1;
}
if ((*modembits & TIOCM_CD) == 0) {
printf("[error code: %d] DTR--DCD ERROR
", 1);
ret = -1;
}
break;
case RTS_OFF_CMD: // RTS--CTS/RI
if ((*modembits & TIOCM_CTS) != 0) {
printf("[error code: %d] RTS--CTS ERROR
", 2);
ret = -1;
}
if ((*modembits & TIOCM_RI) != 0) {
printf("[error code: %d] RTS--RI ERROR
", 3);
ret = -1;
}
break;
case RTS_ON_CMD:
if ((*modembits & TIOCM_CTS) == 0) {
printf("[error code: %d] RTS--CTS ERROR
", 2);
ret = -1;
}
if ((*modembits & TIOCM_RI) == 0) {
printf("[error code: %d] RTS--RI ERROR
", 3);
ret = -1;
}
break;
default:
break;
}
}
return ret;
}
static void sig_handler(int signo)
{
printf("capture sign no:%d
", signo);
if (fp != NULL) {
fflush(fp);
fsync(fileno(fp));
fclose(fp);
}
exit(0);
}
void start_test(int fd)
{
int ret, i, times, num, nwrite, nread, len;
int len_w, pos_w, ret1, ret2, ret3;
int total = 0, off_w, off_r;
char c;
unsigned long modemstatus;
unsigned char buf_write[BUF_SIZE];
unsigned char buf_read[BUF_SIZE];
memset(buf_write, 0x00, BUF_SIZE);
memset(buf_read, 0x00, BUF_SIZE);
for (times = 0; times < 64; times++) {
for (i = 0; i < BUF_SIZE; i++)
buf_write[i] = i + BUF_SIZE * (times % 4);
/* Send 64 bytes */
off_w = 0;
len = BUF_SIZE;
while (len > 0) {
nwrite = write(fd, buf_write + off_w, len);
if (nwrite < 0) {
perror("write");
exit(1);
}
off_w += nwrite;
len -= nwrite;
}
/* Receive and judge */
off_r = 0;
while (nwrite > 0) {
nread = read(fd, buf_read + off_r, nwrite);
if (nread < 0) {
printf("read error!
");
exit(1);
}
off_r += nread;
nwrite -= nread;
}
total += nread;
/* compare the buffer contents */
if (memcmp(buf_read, buf_write, BUF_SIZE) != 0) {
printf("[error code: %d] TXD/RXD test error
", 4);
goto exit;
}
}
printf("TXD/RXD test passed
");
/* Set DTR invalid */
if (libtty_tiocmset(fd, DTR_OFF, RTS_OFF) != 0)
goto exit;
usleep(10000);
ret1 = libtty_tiocmget_check(fd, &modemstatus, DTR_OFF_CMD);
/* Set DTR valid */
if (libtty_tiocmset(fd, DTR_ON, RTS_OFF) != 0)
goto exit;
usleep(10000);
ret2 = libtty_tiocmget_check(fd, &modemstatus, DTR_ON_CMD);
/* Set RTS valid */
if (libtty_tiocmset(fd, DTR_OFF, RTS_ON) != 0)
goto exit;
usleep(10000);
ret3 = libtty_tiocmget_check(fd, &modemstatus, RTS_ON_CMD);
if ((ret1 || ret2 || ret3) == 0)
printf("DTR/RTS/DSR/CTS/DCD/RI test passed
");
printf("
");
exit:
return;
}
int main(int argc, char *argv[])
{
int fd, ret, i, num, nwrite, nread;
int len_w, pos_w, ret1, ret2, ret3, ret4;
int total = 0, off = 0;
char c;
unsigned long modemstatus;
unsigned char buf_write[BUF_SIZE];
unsigned char buf_read[BUF_SIZE];
parse_opts(argc, argv);
signal(SIGINT, sig_handler);
fd = libtty_open(device);
if (fd < 0) {
printf("libtty_open: %s error.
", device);
exit(0);
}
/* 2400bps test */
ret = libtty_setopt(fd, 2400, 8, 1, 'n', hardflow);
if (ret != 0) {
printf("libtty_setopt error.
");
exit(0);
}
start_test(fd);
/* 9600bps test */
ret = libtty_setopt(fd, 9600, 8, 1, 'n', hardflow);
if (ret != 0) {
printf("libtty_setopt error.
");
exit(0);
}
start_test(fd);
/* 115200bps test */
ret = libtty_setopt(fd, 115200, 8, 1, 'n', hardflow);
if (ret != 0) {
printf("libtty_setopt error.
");
exit(0);
}
start_test(fd);
ret = libtty_close(fd);
if (ret != 0) {
printf("libtty_close error.
");
exit(0);
}
return 0;
}
-
usb
+关注
关注
56文章
6321浏览量
254452 -
Linux
+关注
关注
83文章
9019浏览量
204314 -
PCI
+关注
关注
3文章
487浏览量
128920 -
串口
+关注
关注
13文章
1036浏览量
72315 -
PCIe
+关注
关注
12文章
690浏览量
79309
发布评论请先 登录
相关推荐
Rockchip 量产烧录指南
文档介绍 RK 平台的量产烧录方案,包括如何制作烧录镜像、烧录工具使用和常见问题处理。1.量产烧录方案1.1 方案一(USB 升级方案)步骤 1:制作 update.img 升级固件步骤 2
发表于 06-24 15:38
请问CH579有效率比较高的量产烧录工具吗?
CH579有效率比较高的量产烧录工具吗? 用这个WCHISP通过串口效率太低了,用USB烧录还需要专门为烧录每个板子焊接一个USB座子,太浪费了
发表于 08-08 07:18
USB量产工具下载,rar文件
教程:phison-UP10量产工具成USB-cdrom1、将下载的phison-UP10量产工具v1.78.00解压到任一目录。2、运行F1_B4_v178.exe或F2_v178.exe点击
发表于 04-20 23:43
u***量产工具怎么用,即使用方法
u***量产工具怎么用,即使用方法phison-UP10量产工具成USB-cdrom1、将下载的phison-UP10量产工具v1.78.00解压到任一目录。2、运行F1_B4_v178.exe或
发表于 04-20 23:44
可批量处理图片的工具[JPEG Imager]
可批量处理图片的工具[JPEG Imager]为了要更改一些图片的分辨率和明暗度,需要处理图片的工具,这样的工具很多,为什么我推荐这一款呢?也许处理图片的工具很多,但是可以批量处理图片的工具就很
发表于 06-04 10:44
Linux操作系统是同样需要清理工具的
对于广大Linux用户来说,Linux操作系统是同样需要清理工具的。 Linux同样需要清理工具 下面给大家推荐几款清理工具,能够帮助大家更好的维护Linux系统。 1.Synaptic
发表于 01-18 14:03
12-03-25 最新量产工具合集
USBCDROM(可以用U盘来安装系统)和USB HDD,它是最安全也是最容易的量产工具,具体使用方法,可以搜索一下:Universal Customizer教程下载页面:http
发表于 03-25 21:24
《嵌入式Linux系统开发技术详解》
Linux的串行通信 30411.8.1 Linux下的串口操作 30411.8.2 Linux串口编程实例 309第12章 系统集成测试 31412.1 系统集成测试 31412.1.1 系统
发表于 08-15 22:53
Linux系统下DNW下载工具V1.0版
本帖最后由 eehome 于 2013-1-5 09:59 编辑
由广州天嵌技术开发的Linux系统环境下下载工具DNW正式提供给大家使用,可以在linux环境下烧录arm9、arm11、A8
发表于 12-26 12:06
【U盘量产问题】常见U盘量产的七大问题
心中有数再动手。另外量产前要先备份U盘的数据,因为一旦量产就会破坏U盘上的所有文件。 2、操作系统:因为量产工具的读写需涉及到硬件方面,所以尽量不要用精简版的系统、不要用Vista/Windows7等新出
发表于 06-24 10:54
nRF51822蓝牙芯片量产烧录工具
最近做了一款nRF51822低功耗蓝牙产品,针对nRF51822头疼的量产烧录问题,采用LabVIEW开发了一个烧录工具.可一键烧录nRF51822和CSR蓝牙芯片,适用于结合以上两种芯片的产品量产烧录,有需要的赶紧下载了.
发表于 09-14 10:18
Linux版本串口调试助手设计
苦于Linux下没有类似「串口调试助手」之类的小软件,工作起来不是太方便,最终下决心写一个串口调试助手,界面就不用重新设计了,直接照着Windows下一个叫sscom的串口调试助手工具界面进行设计(非盈利,应该不涉及到版权吧 ;) )。使用Qt5进行编写。
发表于 07-22 06:44
linux如何批量处理图片
有时候我们需要对很多的图片或文件进行处理,如数据集,如果一个一个图片处理就会非常麻烦,这时候我们可以采用批量操作。linux 自带的ImageMagick能够很方便地对图片进行批量处理,比如,批量
发表于 07-22 08:00
基于Linux下kermit工具操作流程概述
U-Boot使用loadb下载程序--基于Linux下Kermit工具——西伯利亚的风 初步移植好U-Boot,还没有研究网络、USB等高级功能,想试试通过串口下载程序的功能。经过一番倒腾之后,终于
发表于 09-03 02:06
请问CC2540批量生产的烧录工具用什么比较好?
我们想自己烧录.请问一下:量产的时候,CC2540的烧录工具用什么比较好呢?能给推荐一个具体的烧录工具吗?另外原厂有这样的烧录工具卖吗?有一拖多的或者批量的烧录工具吗?另外,CC2540有几种包装形式
发表于 10-18 08:39
Linux系统启动卡制作及系统固化
NAND FLASH的方法,另见文档。1.Linux系统启动卡制卡工具包说明1.1制卡工具包版本说明产品资料“4-软件资料\Linux\Makesdboot\”目录
发表于 09-17 16:16
[充电桩计费控制单元主板]如何一键烧写启动Linux系统
”。下图为运行HPUSBFW工具后的图片:二、拷贝Linux系统镜像文件拷贝以下文件到格式化完成的SD卡中:bin目录下的MLOu-boot.imguImageubi.imelogo.bmptest 目录
发表于 04-13 16:46
Linux的系统启动卡制作及系统固化
。本文档主要演示Linux系统启动卡制作,以及将Linux系统固化至eMMC的方法。1 Linux系统启动卡制卡工具包说明1.1 制卡工具包版本说明产品资料“4-软件资料\Linux
发表于 06-08 14:51
嵌入式Linux开发工具相关资料下载
嵌入式Linux开发工具一、嵌入式Linux开发工具-gdb、make学习目标:了解gdb学习目标:编写makefile(.c——>.o)——Linux内核——makefile总控
发表于 11-05 07:52
Linux下可用的串口助手在linux下使用串口终端
!!!如果使用的是虚拟机,确保串口设备挂载到虚拟机里!!!1.Linux下可用的串口助手在linux下使用串口终端有两个选择:基于命令行的minicom图形界面的putty(xshell没有
发表于 11-05 08:48
怎样使用petalinux工具去制作linux系统呢
基于xilinx zcu102开发板我用的开发板的xilinx zcu102开发板,使用xilinx公司提供的petalinux工具制作linux系统。当linux系统加载之后发现,无论如何都不能
发表于 12-15 09:04
为什么要配置Linux系统嵌入式设备的串口通信
Linux系统嵌入式设备的串口通信一. 为什么要配置串口通信 在嵌入式开发或者物联网开发过程中,串口输出数据是开发过程中初始过程,这一步方便我们看到设备产生的数据,可以直接通过串口调试助手帮助
发表于 12-16 07:24
嵌入式Linux开发工具
嵌入式系统课堂小结3.24嵌入式Linux开发工具-gcc、gdb、make学习目标:了解gdb学习目标:编写makefile(.c–.o)–Linux内核 – makefile自动生成
发表于 12-22 07:42
嵌入式linux系统与主机通过串口传输文件的方法
机下载东西到开发板的嵌入式linux系统里面,很多人首先会想到用tftp sftp等网络工具从网口下载。但如果网络用不了,只能通过串口下载怎么办呢?这个时候有两个工具能帮到你:一个是zmrx、zmtx
发表于 12-27 06:56
求助imx6q操作系统通过串口工具输入没有任何反应
开发板:imx6q操作系统:linux4.1.15默认调试串口是uart1,现在我要把uart5改为调试串口。硬件修改:uart1的tx、rx线断开,然后把uart5的tx、rx线连接上去。软件修改
发表于 01-10 07:31
Tina Linux 系统介绍
源码、驱动、工具、系统中间件与应用程序包。*openwrt 是知名的开源嵌入式 Linux 系统自动构建框架,是由 Makefile 脚本和 Kconfig 配置文件构成的。使得用户可以通过
发表于 03-11 15:05
芯邦u盘量产工具下载
芯邦u盘量产工具:
V4.045版本的量产工具增加了对K9HBG08U1M双片FLASH的支持,另外对于MLC FLASH也支持启动盘; 这版量产工具是采用格式化比较慢的方式。
&
发表于 01-26 22:00
•8次下载
金士顿u盘量产工具下载
金士顿u盘量产工具:
使用phison-UP10量产工具成USB-cdrom1、将下载的phison-UP10量产工具v1.78.00解压
发表于 01-26 22:11
•2275次下载
金士顿4g量产工具
金士顿4g量产工具:SK62XX_FA_20070928成功量产金士顿4G工具,本工具经过测试已经成功修复了一个金士顿4GU盘。量产的意思也叫修复。意思差不多意思。注意:你要使用本软件,需
发表于 04-21 00:57
•308次下载
金士顿4g u盘量产工具
金士顿4g u盘量产工具:
金士顿4g量产工具:SK62XX_FA_20070928成功量产金士顿4G工具本工具经过测试已经成功修复了一个金士顿4GU盘。量产的意思也叫修复。意思差不多意思。注意
发表于 04-22 22:21
•14次下载
串口通讯调试器工具 -下载
串口通讯调试器工具 -下载:是一款功能灵活,操作方便的串口调试程序。适用于Win9X/2000系统平台,可有效的提高串口程序的开发效率,免除工控软件及单片机开发人员的串口调
发表于 05-26 08:59
•63次下载
嵌入式 Linux系统的研究及其在串口通信中的应用
研究了典型的嵌入式Linux 操作系统,概述了如何构建嵌入式Linux 开发环境,分析了Linux 内核的修改和剪裁,并在开发板上实现串口通信。关键字:嵌入式系统;linux;内核;裁
发表于 12-15 14:59
•39次下载
MCU51的串口调试工具
MCU51的串口调试工具:本站会员 gxujjd 及sltian 推荐的Mcu51网站的免费串口调试工具。此版本使用C++Builder编写.
发表于 01-16 11:53
•124次下载
F820批量工具使用简介
•F820批量升级工具V1.6实际上是一个批量telnet工具,共有四个选项卡,分别是:
•1、节点管理:添加、删除F820管理ip节点
•2、版本下载:通过
发表于 09-26 16:49
•15次下载
Linux下串口编程下载
linux 中的串口设备文件存放于/dev 目录下,其中串口一,串口二对应设备名依次为/dev/ttyS0、/dev/ttyS1。在linux 下操作串口与操作文件相同。
发表于 11-15 17:39
•107次下载
最新串口通讯调试工具_支持:串口通讯 下载
实现了对计算机串口进行操作,并进一步可以实现两台电脑之间的通讯,及控制IC卡机,单片机等,是工业控制人士的必备工具. 串口调试工具是一款计算机串口通信调试工具,本工具集功能
发表于 09-17 08:39
•69次下载
Linux系统EXAR方案扩展串口
本文以Toradex基于NXP i.MX6D/6Q处理器的Apalisi.MX6D/QARM计算机模块,在Linux系统下通过EXAR方案扩展8路串口。
发表于 09-18 08:40
•16次下载
Batchplot免费版下载(CAD批量打印工具)
Batchplot是一个专门针对AutoCAD2000以上版本设计的单DWG多图纸的批量打印、批量生成布局、批量分图工具。Batchplot根据自己判定的图框位置与尺寸,根据当前的打印机设置,自动
发表于 12-07 18:29
•25次下载
cad批量修改工具免费版下载
CAD批量修改是一款能够批量修改当前CAD激活页面所有字体的工具,可修改字体名称、字宽比例、箭头样式、箭头大小、全局显示比例,有需要的赶快下载吧! 功能介绍 1、批量修改文字样式的字体; 2、批量
发表于 12-08 10:27
•0次下载
LINUX系统教程之如何在Linux系统下进行编程
本文档的主要内容详细介绍的是LINUX系统教程之如何在Linux系统下进行编程主要内容包括了:程序开发过程 ,Linux编程环境和开发工具 ,Linux下C语言编程,Linux下C++语言编程 ,Linux下JAVA语言编程
发表于 12-18 19:09
•9次下载
嵌入式Linux操作系统安装及相关工具使用
本书全面介绍了嵌入式Linux系统开发过程中,从底层系统支持到上层GUI应用的方方面面,内容涵盖Linux操作系统的安装及相关工具的使用、配置,嵌入式编程所需要的基础知识(交叉编译工具的选项设置、Makefile语法、ARM汇编指令等)。
发表于 03-26 14:30
•15次下载
搭建嵌入式Linux开发环境(一) 串口调试工具
简介UART串口是嵌入式设备最为常用的调试和通讯接口之一,无论是RS232还是RS422/485都有着非常广泛的应用,因此本文就基于嵌入式Linux演示在Linux环境下使用minicom进行串口
发表于 10-20 19:36
•6次下载
嵌入式Linux UART
文章目录前言串口连接串口测试C代码微信公众号前言这是前篇:嵌入式Linux i.MX开发板嵌入式Linux NFS嵌入式Linux 交叉编译工具链嵌入式Linux LED GPIO嵌入式Linux
发表于 11-01 16:26
•8次下载
嵌入式Linux_C语言开发工具
C语言开发工具开发工具和操作系统之间是相互促进的、相互发展的,操作系统离不开软件开发的支持,软件开发工具也离不开操作系统这个平台。Linux操作系统下Linux开发工具的开源方式,可以让大家拥有更多
发表于 11-01 16:57
•13次下载
嵌入式Linux环境搭建及工具介绍
目录前言平台工具源码查看工具远程登录控制台串口SSH文件传输解决不能ping通问题解决虚拟机不能连接问题 未安装SSH服务权限问题Windows 与 Linux下程序开发比较Makefile 规则
发表于 11-01 17:06
•8次下载
嵌入式Linux系统uart串口编程详解及实例分析
近来在一个项目开发中,在一个新的硬件平台下的linux系统,使用uart串口进行通讯,结果通讯不畅。代码是以前在其他硬件平台下验证完全没问题的代码,为什么会出问题呢?经过各方面查资料,最终定位为
发表于 11-01 17:37
•14次下载
课堂笔记五之嵌入式Linux开发工具
嵌入式Linux开发工具一、嵌入式Linux开发工具-gdb、make学习目标:了解gdb学习目标:编写makefile(.c——>.o)——Linux内核——makefile总控
发表于 11-02 12:36
•11次下载
【嵌入式Linux(环境篇)】Linux下的串口助手 —— minicom或putty
!!!如果使用的是虚拟机,确保串口设备挂载到虚拟机里!!!1.Linux下可用的串口助手在linux下使用串口终端有两个选择:基于命令行的minicom图形界面的putty(xshell没有
发表于 11-02 12:50
•10次下载
实用的Linux网络配置工具netconf
实用的Linux网络配置工具netconf
很多用户不使用Linux网络的原因是配置的复杂性与困难性,下面的内容介绍使用Linux下的GUI环境下的网络配置工具netconf
发表于 01-29 11:24
•826次阅读
每个系统管理员都要知道的 30 个 Linux 系统监控工具
本文详细介绍了每个系统管理员都要知道的 30 个 Linux 系统监控工具。您需要监控 Linux 服务器的性能吗?试试用这些内置命令和附加工具吧!大多数 Linux 发行版都附带了大量的监控工具。
基于嵌入式linux系统下的串口编程具体设置详解
本文基于嵌入式linux下串口应用编程进行了研究,详细介绍了串口设置的步骤,可以更好的理解串口的工作原理。
发表于 09-17 17:10
•6258次阅读
英创信息技术嵌入式Linux串口通讯的C++设计概述
进行数据收发。各个串口的驱动均已经包含在嵌入式Linux操作系统的内核中,EM9160在嵌入式Linux系统启动完成时,各个串口已作为字符设备完成了注册加载,用户的应用程序可以以操作文件的方式对串口进行读写,从而实现数据收发的功能。
linux命令轻松把单个工具变成批量执行工具
我们经常遇到这样的业务场景,我们开发了一个线上工具,需要在Linux操作系统下面执行处理某些事情,例如我们开发了一个将用户某个活动数据清0的工具,命令如下:。/clearTools -v 12306,意思是将用户id为12306的使用次数清零。
嵌入式Linux串口扩展的驱动设计方案解析
本方案介绍WK2X系列UARTs在嵌入式Linux(Android)下扩展多串口方案,尤其是嵌入式Linux串口扩展的驱动设计方案的思路和原则。
发表于 08-31 15:35
•924次阅读
从串口驱动到Linux驱动模型
本文通过对Linux下串口驱动的分析。由最上层的C库。到操作系统系统调用层的封装。再到tty子系统的核心。再到一系列线路规程。再到最底层的硬件操作。 对Linux中的tty子系统进行简要的说明。从
常规的串口调试工具
做嵌入式相关工作的一定都和串口工具打过交道,比如我们经常使用的串口调试助手。但是今天要介绍的这款串口工具你大概率没用过,它和一般的串口工具有很大的不同:
评论