自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无名小卒

如果觉得自己会输其结果,那就试着赢得过程。

  • 博客(60)
  • 资源 (3)
  • 收藏
  • 关注

原创 NAS折腾

外网访问:黑群晖外网访问不要用群晖官方的QC,由于我安装(电信)宽带时候顺便让宽带师傅把光猫设为了桥接模式,因此我的宽带是拥有外网IP的,直接设置下群晖的DDNS就行。通过抖音、B站了解了绿联、极空间、群晖、威联通、DIY等不同类型的NAS后,发现群晖是比较符合我的需求的,但是群晖的缺点就是贵,所以我选择DIY+黑群晖。组装NAS和组装电脑没区别,我之前从来没有组装过电脑,组装时要仔细阅读各个模块说明书,再三确认各接口连接,不懂就百度。稳定性:对NAS稳定性影响最大的是电源和硬盘。以下是我个人安装的套件。

2023-10-25 23:53:55 189

转载 SPI通信协议

什么是SPI?SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口(Synchronous Serial Port) 的模块(Module)来实现的...

2020-03-06 10:47:29 1019

原创 linux串口操作

man termios:http://www.man7.org/linux/man-pages/man4/tty_ioctl.4.html串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。串口...

2020-03-06 10:45:51 564

原创 leds-gpio驱动移植

概述leds-gpio封装得十分好,只需要提供可正常使用的GPIO即可。另外还具备触发器功能,其实就是控制LED的亮灭(及频率)。比如default-on是点亮LED灯的触发器,没有取消前一直亮着。heartbeat是心跳触发器,经笔者实践,此触发器是快速闪烁2次,然后灭掉,灭掉时间较亮的时间长。timer为定时触发器,即1HZ内亮灭。其它还有如ide硬盘、mmc、CPU触发器,就不一一介绍了。...

2020-03-06 10:44:58 678

原创 GPIO Buttons移植

这个设备驱动适用于,每个按键是连接到一个io口, 而且这个io口还有中断功能的驱动移植需要在linux内核配置里选上相关的配置。在内核源码目录下:# make menuconfigDevice Drivers ---> Input device support ---> [*] Keyboards ---> ...

2020-03-06 10:43:52 215

原创 eeprom驱动的移植

转载至:https://blog.csdn.net/ZhengNice/article/details/50070435这篇文章主要是总结一下eeprom的驱动制作以及测试程序的编写。开发环境开发环境:Centos6.5内核版本:Linux3.0交叉编译器版本: buildroot-2012.08以下为旧内核,新版内核需要修改设备树。原理图部分上面的图中,左图是eeprom的...

2020-03-06 10:42:47 629

原创 Linux下GPIO的使用

内核文档:https://www.kernel.org/doc/Documentation/gpio/sysfs.txt概述Linux内核中gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0~MAX_INT之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gp...

2020-03-06 10:40:58 658

原创 OPKG软件包管理

Opkg 是一个轻量快速的套件管理系统,目前已成为 Opensource 界嵌入式系统标准。常用于路由、交换机等嵌入式设备中,用来管理软件包的安装升级与下载。opkg 工具 (一个 ipkg 变种) 是一个用来从本地软件仓库或互联网软件仓库上下载并安装 OpenWrt 软件包的轻量型软件包管理器。GNU/Linux 用户可能会对 apt-get,aptitude,pacman,yum 等比较熟...

2020-03-06 10:37:06 3041

原创 Openwrt设置开启自启动

详情见:官方文档以application为例1.在/etc/init.d/下编写service脚本#!/bin/sh /etc/rc.commonSTART=99STOP=15 start() { echo start #commands to launch application, such as above application &} stop() {...

2020-03-06 10:34:54 3156

原创 shell传参

shell 中传参相关:./a.sh a b c d$# :是传给脚本的参数个数$0 :是脚本本身的名字$1 :是传递给该shell脚本的第一个参数$2 :是传递给该shell脚本的第二个参数$@ :是传给脚本的所有参数的列表$ :是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个*$$ :是脚本运行的当前进程ID号$? :是显示最后命令的退出状态,0表示没...

2020-03-06 10:33:57 1443

原创 z命令跳转

github: https://github.com/rupa/z检测cd命令的跳转频次,方便跳转常用目录安装# wget https://github.com/rupa/z/archive/v1.9.tar.gz# tar xvf v1.9.tar.gz# mv z-1.9/ /opt/# vi /etc/profile 在最后一行添加 . /opt/z-1.9/z.sh# s...

2020-03-06 10:31:15 547

原创 Ubuntu下两个gcc版本切换

Ubuntu系统使用的gcc版本随着发布版本的不同而不同,在编译Android系统时不同的版本推荐用不同的gcc去编译,那么可不可以改变系统的gcc来适应android编译环境的需求呢?答案是可以的。先看看我们系统用的gcc和g++是什么版本gcc -v可以获得的信息如下gcc version 4.4.6 (Ubuntu/Linaro 4.4.6-11ubuntu2)如果我们想使用g...

2020-03-06 10:30:17 377

原创 ubuntu下的apt内网本地源的正确搭建

为什么说正确搭建,是因为搭建过程照搬网上的遇坑了,而且一次就是100g的量。不仅如此,16.04的系统使用14.04的源,提示执行apt-get install -f,这条命令千万不要执行,我以后感觉都不敢使用这条命令了。在此记录一下参考至->,如果你系统是ubuntu14.04,照搬完全没问题,但是现在ubuntu都18.04了,还要继续更新,下面教你如何搭建所有版本的apt本地源。...

2020-03-06 10:28:46 5312 5

原创 Ubuntu16.04和18.04安装pfring

官方wiki: http://www.ntop.org/guides/pf_ring/index.html其他: 高速的网络抓包库PF_ring介绍及编译安装Ubuntu 16.04 LTS 安装pfringPF_RING 总结https://blog.csdn.net/ygm_linux/article/category/6802624下载pfring源码包下载地址:https:...

2020-03-06 10:26:17 1139

原创 thttpd的移植与注意事项

1.官网下载​ 最好下载自己熟悉的版本2.解压​ tar -zxvf thttpd-2.25b.tar.gz3. ./configure注意./configure --host=编译链前缀,指定交叉编译链并不能改变Makefile中的编译链,所以直接./configure4.修改Makefile​ 修改三个Makefile,分别是thttpd/Makefile、thttpd/c...

2020-03-06 10:25:07 341

原创 让你可以装逼的算法技巧总结

参考转载至:https://blog.csdn.net/m0_37907797/article/details/84960402今天和大家讲讲,在做算法题时常用的一些技巧。对于平时没用过这些技巧的人,或许你可以考虑试着去看看在实践中能否用的上这些技巧来优化问题的解。巧用数组下标数组的下标是一个隐含的很有用的数组,特别是在统计一些数字,或者判断一些整型数是否出现过的时候。例如,给你一串字母,让...

2020-03-03 16:35:08 179

转载 gcc/g++使用自定义的同名函数覆盖C库函数

前言其实这问题以前就想过,每次都没有深究到底。原因在于无论是哪本Linux C编程的书,基本都会使用可靠语义的signal函数来覆盖相应的库函数。比如在《Unix网络编程》中是如下定义的:对被SIGALRM以外的信号中断的系统调用自动重启,并且不阻塞其他的信号。(虽然信号掩码是空,但是POSIX保证被捕获的信号在其信号处理函数运行期间总是阻塞的)但是书中并未提及具体怎么覆盖库函数的定义, 毕竟...

2020-03-03 16:34:31 1026

原创 内联函数-C中关键字inline用法解析

一、什么是内联函数​ 在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗。​ 为了解决这个问题,特别的引入了inline修饰符,表示为内联函数。​ 栈空间就是指放置程式的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足所造成的程式出错的问题,函数的死循环递归调用...

2020-03-03 16:33:34 156

原创 可变参数的宏定义

printf()和fprintf()这些输出函数的参数是可变的,在调试程序时,你可能希望定义自己的参数可变的输出函数,那么可变参数宏会是一个选择。如何定义C99中规定宏可以像函数一样带有可变参数,比如#define LOG(format, ...) fprintf(stdout, format, __VA_ARGS__)其中,…表示参数可变,__VA_ARGS__在预处理中为实际的参数...

2020-03-03 16:32:54 591

原创 函数不定参数实现方式

函数如何实现不定参数:由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦,即使采用C++,如果参数个数不能确定,也很难采用函数重载。对这种情况,提出了指针参数来解决问题。所用函数和结构体1. va_list定义了一个指针arg_ptr, 用于指示可选的参数.2. va_start(arg_ptr, argN)使参数列表指针arg_ptr指向函数参数列表中的第一个可选参数,a...

2020-03-03 16:32:14 335

原创 c语言-计算结构体成员偏移量

转载至:http://www.runoob.com/cprogramming/c-macro-offsetof.htmlhttps://blog.csdn.net/encourage2011/article/details/52463857一、C 库宏 - offsetof()描述C 库宏 offsetof(type, member-designator) 会生成一个类型为 size_t...

2020-03-03 16:31:36 3781 1

原创 内存字节对齐

写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧.​ 如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?​ 体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假设一个体系结构的字长为w,那么它同...

2020-03-03 16:30:51 98

原创 volatile用法

volatile 易变、易失的一个定义为volatile的变量是说这变量可能会被意想不到地改变。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。常用于:并行设备的硬件寄存器(如:状态寄存器)、硬件、中断、RTOS。一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)多线程应用中被几个任务共享...

2020-03-03 16:30:07 90

原创 float和double在内存存储解析

C语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储。float数据占用32bit,double数据占用64bit。我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而double...

2020-03-03 16:29:23 400 2

原创 c语言中weak的作用

转载至:https://blog.csdn.net/q2519008/article/details/82774774在u-boot源码中看到__weak关键字,在移植过程中遇到了问题。用例weak在不同的环境中用法不同,在stm32源码中也比较常见,在u-boot和linux中用法都不一样。u-boot中的weak关键字:__weak用例:int __weak fpga_load...

2020-03-03 16:27:49 9376

原创 boost库中的program_options

本文基本从官方文档中摘录出来的,便于查看。官方文档:https://www.boost.org/doc/libs/1_57_0/doc/html/program_options.htmlGithub:https://github.com/boostorg/program_options.git简介boost库时c++常用的工具库,地位仅次于c++标准库,Boost库的掌握是C++工程师的基...

2020-03-02 14:48:30 992

原创 正则表达式规则

正则表达式规则正则表达式 由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。元字符字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,‘n’ 匹配字符 “n”。’\n’ 匹配一个换行符。序...

2020-02-28 13:58:16 3179

原创 linux进程监控和自动重启的简单实现

目的:linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能。实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志。crontab修改# crontab -e*/5 * * * * /mnt/bindmonitor.sh/mnt/bindmonitor.sh 的实现#! /bin/...

2020-02-28 13:56:56 304

原创 git命令速查表

常用 Git 命令清单廖雪峰的官网Git 服务器搭建: http://www.runoob.com/git/git-server.html菜鸟教程: http://www.runoob.com/git/git-tutorial.html

2020-02-28 13:56:07 99

转载 如何使用 systemd 中的定时器

转载:https://linux.cn/article-3996-1.html我最近在写一些执行备份工作的脚本,我决定使用systemd timers而不是对我而已更熟悉的cron jobs来管理它们。在我使用时,出现了很多问题需要我去各个地方找资料,这个过程非常麻烦。因此,我想要把我目前所做的记录下来,方便自己的记忆,也方便读者不必像我这样,满世界的找资料了。在我下面提到的步骤中有其他的选...

2020-02-28 13:55:31 293

原创 nc 命令详解

英文原文:Linux Netcat command – The swiss army knife of networkingnetcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像...

2020-02-28 13:54:10 981

转载 Linux 查看服务器开放的端口号

参考转载至:https://www.cnblogs.com/kerrycode/p/5609010.html在讨论这个问题前,我们先来了解一下物理端口、逻辑端口、端口号等计算机概念。端口相关的概念:在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型。物理端口指的是物理存在的端口,如ADSL Modem、集线器、交换机、路由器上用 于连接其他网络设备的接口,如RJ-45端口、SC端口...

2020-02-28 13:53:29 1193

原创 Linux分区方案

摘要:linux分区方法,不同的人有不同的方法,反正没有统一的方法。在分区方面,我觉得根据自己的实际情况来分是最好的。玩linux也有好几年了,下面说一下,我在分区方面的一些经验。一,个人用如果是个人用,就没必要分那么多区,分一个区,或者二个区就行了。分一个区,就要一个根分区就行了/,我的多系统里面的linux都是一个分区。分二个区,一个/boot分区,一个根分区/二,服务器用关于服务器的分区...

2020-02-28 13:52:26 437

原创 i2c-tools

i2c-tools工具是一个专门调试i2c的,开源,可获取挂载的设备及设备地址,还可以在对应的设备指定寄存器设置值或者获取值等功能。一、下载i2c-tools,交叉编译1、从开源网站http://dl.lm-sensors.org/i2c-tools/releases/下载i2c-tools,a. 解压后:b. 修改makefile文件。c. 然后保存退出。直接make,进行编译。编...

2020-02-28 13:51:39 230

转载 Linux下SVN客户端使用教程

1、Svn介绍SVN全名Subversion,即版本控制系统。SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subvers...

2020-02-28 13:50:42 356

原创 在 Linux 中找出所有在线主机的 IP 地址

参考转载至:​ https://www.tecmint.com/find-live-hosts-ip-addresses-on-linux-network/​ https://linux.cn/article-8021-1.html你可以在 Linux 的生态系统中找到很多网络监控工具,它们可以为你生成出网络中所有设备的摘要,包括它们的 IP 地址等信息。然而,实际上有时候你只需要一个...

2020-02-28 13:49:37 791

原创 firewalld的基本使用

1、firewalld的基本使用启动: systemctl start firewalld关闭: systemctl stop firewalld查看状态: systemctl status firewalld开机禁用 : systemctl disable firewalld开机启用 : systemctl enable firewalld2.systemctl是CentOS7的...

2020-02-28 13:48:23 143

转载 Linux定时任务工具Cron

crond简介crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分为两类,系统任务调度和用户任务调度。系统任务调度:系统周期性所要执行的工作...

2020-02-28 13:47:19 909

转载 cron运行原理

参考转载至:http://blog.chinaunix.net/uid-28621203-id-5740442.html1. 前言本文介绍的是由Paul Vixie开发的运行在SuSE Linux上的Cron。可以通过“man cron”进行确认。2. 示例# 示例用来配合本文的说明*/1 * * * * echo hello >> /tmp/hello.txt3. 工作过...

2020-02-28 13:46:18 780

原创 云服务器被攻击-加固云服务器

Connecting to 106.12.80.64:22...Connection established.To escape to local shell, press 'Ctrl+Alt+]'.Last failed login: Thu Jan 10 19:21:09 CST 2019 from 89.46.223.79 on ssh:nottyThere were 70 fai...

2020-02-28 13:43:19 582

鸟哥的私房菜第四版

鸟哥的私房菜第四版、第三版基础篇、第三版服务器篇 (文字版非图片)

2018-09-14

vtysh源码,一个类似于zebra的本地shell

/* VTY shell main routine. */ int main (int argc, char **argv, char **env) { char *line; int opt; int eval_flag = 0; int boot_flag = 0; char *eval_line = NULL; char *config_file = CONFIG_DIR "/" CONFIG_FILE; if(getenv("VTYSH_CONFIG")) config_file = getenv("VTYSH_CONFIG"); while (1) { opt = getopt_long (argc, argv, "be:c:hv", longopts, 0); if (opt == EOF) break; switch (opt) { case 0: break; case 'b': boot_flag = 1; break; case 'e': eval_flag = 1; eval_line = optarg; break; case 'h': usage (argv[0], 0); break; case 'c': config_file = optarg; break; case 'v': printf("Ver:%s %s\n", __DATE__, __TIME__); exit(0); default: usage (argv[0], 1); break; } } /* Signal and others. */ signal_init (); /* Init config. */ config_init(); /* Init the cmd */ cmd_init(); /* Init the vtysh */ vtysh_init_vty (); /* Install command and node view */ cmd_parse_init(); //TODO load the dynamic so /* sort the node */ cmd_sort_node(); /* If eval mode */ if (eval_flag) { vtysh_execute("enable"); vtysh_execute("config terminal"); exit(vtysh_execute(eval_line)); } /* Boot startup configuration file. */ if (boot_flag) exit(vtysh_boot_config (config_file)); in_show_welcome(); host.config = config_file; vtysh_load_config(config_file); /* Main command loop. */ while ((line = vtysh_readline()) != NULL) vtysh_execute (line); printf ("\n"); exit (0); }

2018-09-03

epson-rx8130ce芯片手册+linux下的驱动程序

Installing the Driver To install the driver source: 1. Copy the file rtc-rx8130.c into the directory ./linux-3.8.x/drivers/rtc. "linux-3.8.x" refers to the base of the linux kernel source tree. 2. Add the following lines into the drivers/rtc/Kconfig file: config RTC_DRV_RX8130 tristate "Epson RX8130CE" help If you say yes here you get support for the Epson RX8130CE RTC chips. This driver can also be built as a module. If so, the module will be called rtc-rx8130. 3. Add the following line to the drivers/rtc/Makefile: obj-$(CONFIG_RTC_DRV_RX8130) += rtc-rx8130.o 4. During the rebuild, make sure to include the 'Epson RX8130CE' option in the Kernel Configuration window under 'Device Drivers' -> 'Real Time Clock'

2018-06-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除