1.Linux_常识

UNIX、Linux、GNU

1、UNIX

UNIX是一个分时操作系统,特点是多用户、多任务

实时操作系统:来了请求就去解决请求

分时操作系统:来了请求先存着,通过调度轮到执行时执行

2、Linux

Linux是一个操作系统内核

发行版本:Debian、Ubuntu、RHEL、Centos、Slackware等

操作系统 = 操作系统内核+各种软件

3、GNU

GNU是一个操作系统,其内容软件以GPL方式发布。

口头上说的Linux实际上是GNU/Linux,它是一款类UNIX操作系统,是一个基于POSIX的多用户、多任务、多线程、多CPU的操作系统。因为Linux操作系统包含了Linux内核与其他自由软件项目中的GNU组件和软件,因此可以被称为GNU/Linux

相关环境

1、VMware虚拟机

VMware是一个能够使机器同时运行多个系统的软件

2、Ubuntu

Ubuntu是以桌面应用为主的Linux操作系统

环境配置

1、VMware Tools

VMware Tools是VMware提供的增强虚拟显卡、硬盘性能、同步虚拟机与主机时钟的驱动程序。

安装VMware Tools后,可以在主机与虚拟机之间进行文件共享、自由拖拽、全屏虚拟机。

2、网路配置

2.1 模式

模式 默认网卡能否与主机通信能否与外部网络通信能否访问局域网内部机
桥接模式Vmnet0可以可以可以
nat模式Vmnet8可以可以不可以
仅主机模式Vmnet1可以不可以不可以

2.1.1 桥接模式(与开发板通信首选)

当设备以桥接模式接入网络时,就相当于一个主机。

例如下图的主机1、2、3在同一个局域网中,虚拟机由主机3创建,开发板与虚拟机都是以桥接的方式进行连接。那么虚拟机、开发板、三个主机之间就可以互相通信。

注意:当网络为校园网、有限定的公司的网络时,不能访问外网。但局域网中访问都是可以的。

2.1.2 net模式(上外网首选)

当设备以net模式接入网络时,不能对局域网的设备进行访问。

例如下图的主机1、2、3在同一个局域网中,虚拟机由主机3创建,虚拟机以net模式接入网络。那么虚拟机是不能访问主机1、主机2。但虚拟机此时可以访问外网。

注意:在当网络为校园网、有限定的公司的网络时,想要访问外网,需要先调成net模式

2.1.3 仅主机模式

当设备以仅主机模式接入网络时,只能与创建它的主机进行访问,不能访问局域网和外网。

例如下图的主机1、2、3在同一个局域网中,虚拟机由主机3创建,虚拟机以仅主机模式接入网络。那么虚拟机只能与主机3通信,不能访问主机1、2和外网。

2.2 配置步骤

关机虚拟机,点击编辑-虚拟网络编辑器

点击" 更改设置 ",之后点击" 还原默认设置 "

查看网卡:点击当前的wifi,右键属性

查看网卡:找到" 描述 ",这个就是网卡

在虚拟网络编辑器中配置相应的网卡,之后点击确定

打开" 编辑虚拟机设置 ",设置网络适配器为桥接模式,点击确定。开机虚拟机

软件包

1、概述

类型:

  • 二进制软件包(deb):直接拿来用的可执行文件
  • 源码包(deb-src):功能实现的源码,需要编译生成可执行文件后才能使用

使用 " file + 文件名 " 查看文件类型:

命名规则:

软件包名称_软件版本-修订版本_体系架构.deb

如:sogoupinyin_4.0.1.2800_x86_64.deb

  • sogoupinyin:软件包名称
  • 4.0.1.2800:软件版本
  • x86_64:体系架构
  • .deb:软件包后缀

2、配置软件源

APT工作原理:

Ubuntu采用集中式的软件仓库机制。软件存放的位置会有好多个,存放软件的地方被称为软件源,如图中的Apt Repository

配置软件源:

在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最合适访问的镜像站点地址,即:从哪一个软件源进行下载文件。

更新软件源的方式:

1、修改/etc/apt/sources.list

2、可视化修改:在1位置处找到"软件和更新",修改下载路径

更新软件源路径之后,需要使用sudo apt-get update命令去更新一下,之后才可使用。在使用更新命令之前,首先ping www.baidu.com来看看网络是否是通的,之后再去更新。

3、在线软件包APT

下载的指令有apt-get、apt-cache、apt,其中apt是apt-get、apt-cache的兼容命令。

4、离线软件包dpkg

void init_DTC(void) { //Enable DTC interrupt LoopMuxRegs.DTCCTRL.bit.FLT_INT_EN = 1; //Set the number of consecutive detected faults before a fault step utilized LoopMuxRegs.DTCCTRL.bit.FLT_MAX_CNT = 3; //Set the fault step size to be -75*4ns LoopMuxRegs.DTCCTRL.bit.FLT_STEP = 5; //Set the fault threshold to be 3*4ns LoopMuxRegs.DTCCTRL.bit.FLT_THRESH = 3; //Select DPWM1A to be controlled by DTC Phase A LoopMuxRegs.DTCCTRL.bit.PWM_A_SEL = 2; //Select DPWM1B to be controlled by DTC Phase B LoopMuxRegs.DTCCTRL.bit.PWM_B_SEL = 6; //Set the signal polarity of DTC pin to be active low LoopMuxRegs.DTCCTRL.bit.A_POL = 0; LoopMuxRegs.DTCCTRL.bit.B_POL = 0; //Phase A and Phase B operates on separate inputs LoopMuxRegs.DTCCTRL.bit.INPUT_MODE = 0; //Automatic control mode LoopMuxRegs.DTCCTRL.bit.MODE = 0; //Enable DTC module LoopMuxRegs.DTCCTRL.bit.DTC_EN = 1; //Set body diode conduction time detection window blanking time LoopMuxRegs.DTCTARGET.bit.DETECT_BLANK = 30; //Set body diode conduction time detection window length LoopMuxRegs.DTCTARGET.bit.DETECT_LEN = 120; //Set DTC control target offset. Target offset + target low = target high LoopMuxRegs.DTCTARGET.bit.TARGET_OFFSET = 2; //Set DTC control target low LoopMuxRegs.DTCTARGET.bit.TARGET_LOW = 15; //Set maximum accumulator clamp LoopMuxRegs.DTCLIMIT.bit.ADJ_MAX = 50; //Set minimum accumulator clamp LoopMuxRegs.DTCLIMIT.bit.ADJ_MIN = -400; //Initialize IOMUX //DTC Phase A input from TDI pin MiscAnalogRegs.IOMUX.bit.DTC_A_SEL = 0; //DTC Phase B input from TDO pin MiscAnalogRegs.IOMUX.bit.DTC_B_SEL = 0; //Initialize DTC registers in DPWM module //Both DTC phase adjust A and B are utilized in edge adjustments Dpwm1Regs.DPWMCTRL2.bit.DTC_MODE = 2; //Enable DTC in DPWM module Dpwm1Regs.DPWMCTRL2.bit.DTC_EN = 1; }
09-14
bool SerialPort_open(SerialPort self) { self->fd = open(self->interfaceName, O_RDWR | O_NOCTTY | O_NDELAY | O_EXCL); if (self->fd == -1) { self->lastError = SERIAL_PORT_ERROR_OPEN_FAILED; return false; } struct termios tios; speed_t baudrate; tcgetattr(self->fd, &tios); switch (self->baudRate) { case 110: baudrate = B110; break; case 300: baudrate = B300; break; case 600: baudrate = B600; break; case 1200: baudrate = B1200; break; case 2400: baudrate = B2400; break; case 4800: baudrate = B4800; break; case 9600: baudrate = B9600; break; case 19200: baudrate = B19200; break; case 38400: baudrate = B38400; break; case 57600: baudrate = B57600; break; case 115200: baudrate = B115200; break; default: baudrate = B9600; self->lastError = SERIAL_PORT_ERROR_INVALID_BAUDRATE; } /* Set baud rate */ if ((cfsetispeed(&tios, baudrate) < 0) || (cfsetospeed(&tios, baudrate) < 0)) { close(self->fd); self->fd = -1; self->lastError = SERIAL_PORT_ERROR_INVALID_BAUDRATE; return false; } tios.c_cflag |= (CREAD | CLOCAL); /* Set data bits (5/6/7/8) */ tios.c_cflag &= ~CSIZE; switch (self->dataBits) { case 5: tios.c_cflag |= CS5; break; case 6: tios.c_cflag |= CS6; break; case 7: tios.c_cflag |= CS7; break; case 8: default: tios.c_cflag |= CS8; break; } /* Set stop bits (1/2) */ if (self->stopBits == 1) tios.c_cflag &= ~CSTOPB; else /* 2 */ tios.c_cflag |= CSTOPB; if (self->parity == 'N') { tios.c_cflag &= ~PARENB; } else if (self->parity == 'E') { tios.c_cflag |= PARENB; tios.c_cflag &= ~PARODD; } else { /* 'O' */ tios.c_cflag |= PARENB; tios.c_cflag |= PARODD; } tios.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); if (self->parity == 'N') { tios.c_iflag &= ~INPCK; } else { tios.c_iflag |= INPCK; } tios.c_iflag &= ~(IXON | IXOFF | IXANY | ICRNL); tios.c_iflag |= IGNBRK; /* Set ignore break to allow 0xff characters */ tios.c_iflag |= IGNPAR; tios.c_oflag &= ~OPOST; tios.c_cc[VMIN] = 0; tios.c_cc[VTIME] = 0; if (tcsetattr(self->fd, TCSANOW, &tios) < 0) { close(self->fd); self->fd = -1; self->lastError = SERIAL_PORT_ERROR_INVALID_ARGUMENT; return false; } return true; } 分析这一段代码,详细说明
10-17
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值