
Linux
文章平均质量分 75
铍镁钙锶钡镭
志合者,不以山海为远;道乖者,不以咫尺为近。
展开
-
ubuntu支持32位交叉编译工具链记录
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 (有的还需要32位stdc++库 lib32stdc++6-4.8-dbg)sudo apt-get dist-upgrade ( #这一步是更新所有的软件,如果你对新版本软件的需求不是那么迫切,可以不执行)如此这般你就拥有了64位系统对32位的支持。其次是安装gcc multilab。原创 2024-08-15 19:46:02 · 349 阅读 · 0 评论 -
localtime函数使用
localtime是获取当前时间的tm结构体的值,返回一个指针,如果多次调用,返回的地址是一样的。这样就会出现一个小问题,如果你先获取任意一个时间点time_t time1对应的tm tm1时间,这时使用了一次localtime。这是如果你在此使用localtime来获取tm tm2时间time2,这时localtime返回的指针所指向的内容就会改变,这时tm1和tm2其实是一样的。如何避免这种情况呢,就是调用完一次localtime获取到tm后就去使用,或者备份起来。才在去调用localtime。原创 2020-06-27 15:04:55 · 4870 阅读 · 0 评论 -
hid-multitouch_Modify.c
/* * HID driver for multitouch panels * * Copyright (c) 2010-2012 Stephane Chatty <chatty@enac.fr> * Copyright (c) 2010-2013 Benjamin Tissoires <benjamin.tissoires@gmail.com> * C...原创 2019-12-23 19:30:20 · 1834 阅读 · 0 评论 -
进程
fork,创建一个子进程。失败返回-1;成功时:父进程fork()的返回值是子进程的进程ID,子进程fork()返回0根据返回值判断fork之后是子进程还是父进程。注意返回值,不是fork函数能返回两个值,而是fork后,fork函数变为两个,父子需【各自】返回一个。用fork创建一个子进程。#include <stdio.h>#include <uni...原创 2019-03-21 18:15:07 · 337 阅读 · 0 评论 -
Linux信号
信号的概念信号在我们的生活中随处可见, 如:古代战争中摔杯为号;现代战争中的信号弹;体育比赛中使用的信号枪......他们都有共性:1. 简单 2. 不能携带大量信息 3. 满足某个特设条件才发送。信号是信息的载体,Linux/UNIX 环境下,古老、经典的通信方式, 现在依然是主要的通信手段。Unix早期版本就提供了信号机制,但不可靠,信号可能丢失。Berkeley 和 AT&...原创 2019-03-29 14:49:32 · 245 阅读 · 0 评论 -
Linux系统编程IO/文件/目录操作
IO函数open close read write lseek fcntl文件操作函数:原创 2019-03-19 10:40:42 · 227 阅读 · 0 评论 -
进程间通信pipe
管道管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。有如下特质:1. 其本质是一个伪文件(实为内核缓冲区)2. 由两个文件描述符引用,一个表示读端,一个表示写端。3. 规定数据从管道的写端流入管道,从读端流出。管道的原理: 管道实为内核使用环形队列机制,借助内核缓冲区(4k)实现。管道的局限性:① 数据自...原创 2019-03-26 15:24:15 · 366 阅读 · 0 评论 -
Linux exec函数族
fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。将当前进程的.text、.data替换为所要加载的程序的.text、.data,然后让进程从新的.t...原创 2019-03-23 13:23:04 · 162 阅读 · 0 评论 -
进程通信FIFO
FIFOFIFO常被称为命名管道,以区分管道(pipe)。管道(pipe)只能用于“有血缘关系”的进程间。但通过FIFO,不相关的进程也能交换数据。FIFO是Linux基础文件类型中的一种。但,FIFO文件在磁盘上没有数据块,仅仅用来标识内核中一条通道。各进程可以打开这个文件进行read/write,实际上是在读写内核通道,这样就实现了进程间通信。创建方式:1. 命令:mkfi...原创 2019-03-26 17:13:39 · 498 阅读 · 0 评论 -
Linux网络TCP服务器和客户端
只能接收一个连接请求的TCP服务器。#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <ctype.h>#include <sys/types.h>#include <sys/stat...原创 2019-04-10 14:11:38 · 343 阅读 · 0 评论 -
linux终端、进程组、会话、守护进程
终端在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal),进程中,控制终端是保存在PCB中的信息,而fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。默认情况下(没有重定向),每个进程的标准输入、标准输出和标准错误输出都指向控制终端,进程从标准输入读也就是读用户的键...原创 2019-04-01 16:48:34 · 240 阅读 · 0 评论 -
epoll三种工作模式
水平触发模式-根据读来解释只要fd对应的缓冲区有数据epoll_wait返回返回的次数与发送数据的次数没有关系epoll默认的工作模式边沿触发模式 - ETfd - 默认阻塞属性客户端给server发数据: 发一次数据server 的 epoll_wait返回一次 不在乎数据是否读完 如果读不完, 如何全部读出来? while(recv...原创 2019-04-22 11:08:23 · 1660 阅读 · 0 评论 -
使用本地套接字实现无血缘关系的进程间的通信
文件格式:○ 管道: p○ 套接字伪文件头文件: sys/un.h#define UNIX_PATH_MAX 108__kernel_sa_family_t sun_family;char sun_path[UNIX_PATH_MAX];struct sockaddr_un {};服务器端创建套接字socket绑定bind设置监听listen等待接收连接请求...原创 2019-04-22 13:44:32 · 331 阅读 · 0 评论 -
Linux 输入子系统input分析
分析input.cinput_initinput_init(void) //注册一个class err = class_register(&input_class); //在/proc项下创建input子项 err = input_proc_init(); proc_bus_input_dir = proc_mkdir("input", proc_bus); //...原创 2019-04-24 14:49:54 · 261 阅读 · 0 评论 -
Linux下gcc和动态静态库
gcc:静态库:有sub.c add.c div.c mul.c ,将他们编译成静态库gcc -c *.c生成了相应 *.o 文件,使用ar打包.ar rcs libCalc.a *.o使用nm查看库信息nm libCalc.a使用库:lib下存放libCalc.a,include 下存放头文件。gcc main.c -o main -I include ...原创 2019-03-18 11:04:23 · 174 阅读 · 0 评论 -
Linux内核timer使用
内核中用一套timer函数的:主要是围绕struct timer_list来做的。struct timer_list:其中重要的成员:unsigned long data:传递到超时处理函数的参数,主要在多定时器同时使用时,区别是哪个timer超时。unsigned long expires:超时时间,以jiffies来衡量。如设置超时时间为1s, timer.expires = ...原创 2019-02-27 13:22:44 · 652 阅读 · 0 评论 -
ok6410 烧写linux
制作用于一键烧写 Linux 的 SD 卡将 SD 卡格式化为 FAT32 格式通过 SD_Writer.exe 将 mmc.bin 烧写到 SD 卡中,管理员身份打开 SD_Writer.exe把需要的文件复制到 SD 卡中,改名为正确的文件名拨码开关设置为 SD 卡启动方式将拨码开关设为SD卡启动 8-1:11111000调试串口跟 PC 串口连接,开机按空格键会进入m...原创 2018-10-11 14:22:59 · 443 阅读 · 0 评论 -
OK6410 点亮LED,按键点灯,按键让蜂鸣器响
通过汇编来点亮LED1查看底板原理图和芯片手册 知道,LED1-4分别对应 下面是汇编语言写的点亮led4的start.S程序及说明://启动代码:关看门狗 .globl _start_start:/* 硬件相关的设置 */ /* Peri port setup */ ldr r0, =0x70000000 orr r0, r0, #0x13 ...原创 2018-10-29 10:17:56 · 1390 阅读 · 0 评论 -
nfs 挂载
挂载到开发板上mount -t nfs -o nolock,vers=2 10.168.10.227:/home/rootfs /mnt启动nfs,修改etc/exports配置文件,添加挂载目录/home/psplash,/home/rootfs,/home/samba,/home/rootfs_backupcat /etc/exports# /etc/exports: the ...原创 2018-12-04 11:11:31 · 173 阅读 · 0 评论 -
mdev支持热拔插,u盘自动挂载
使用命令:fdisk -l,查看系统硬盘和分区情况 使用df查看挂载情况[root@iTOP-iMX6]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/root 15017904 440472 13814552 3% /tmpfs ...原创 2018-12-04 19:41:15 · 708 阅读 · 0 评论 -
应用调试strace
编译strace,使用strace-4.11.tar.xz版本,使用的编译器是arm-2009q3tar -xvf strace-4.11.tar.xzcd strace-4.11/./configure --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc LD=aarm-none-linux-gnueabi-ldma...原创 2018-12-12 15:15:23 · 230 阅读 · 0 评论 -
字符编码,linux使用指定的编码方式编译程序-finput-charset,-fexec-charset
相同的字符用不同的编码方式保存,数据不同。源文件用不同的编码方式编写,会导致执行结果不一样。编译程序时,要指定字符集就可以解决这个问题。在Linux下:man gcc , /charset-finput-charset=charset 表示源文件的编码方式, 默认以UTF-8来解析-fexec-charset=charset 表示可执行程序里的字时候以什么...原创 2018-12-05 19:27:14 · 4226 阅读 · 1 评论 -
Busybox 制作最小文件系统
设置编译器arm-linux-4.3.2,使用busybox版本busybox-1.22.1.tar.bz2.解压tar -jxf busybox-1.22.1.tar.bz2。make menuconfig 设置好编译器前缀:Busybox Settings --->Build Options --->Cross Compiler prefix 输入:arm-...原创 2018-12-04 09:40:17 · 521 阅读 · 0 评论 -
应用调试使用gdb
编译,使用的编译器:arm-2009q3编译gdbtar -zxvf gdb-7.11.1.tar.gzcd gdb-7.11.1/./configure --target=arm-none-linux-gnueabi --prefix=/work/system/gdb_install/makemake install或者make install prefix=/work/sy...原创 2018-12-14 15:02:56 · 449 阅读 · 0 评论 -
ubuntu16.04下编译ok6410 linux-3.0.1 arm-linux-gcc 4.3.2
使用官方提供的Linux内核,编译时出错。 CC kernel/panic.o CC kernel/printk.o CC kernel/cpu.o CC kernel/exit.o CC kernel/itimer.o TIMEC kernel/timeconst.hCan't use 'defined(@ar...原创 2018-12-20 14:55:18 · 285 阅读 · 0 评论 -
如何写一个通用的Makefile
本文目的只是为了方便自己以后查看。通用Makefile有三个文件 a.c b.c a.h,内容://a.c#include <stdio.h>#include "a.h"int main(){ printf("hello, world!\n"); printf("A= %d\n", A); test_fun(); return 0;}//a....原创 2019-01-10 13:37:06 · 649 阅读 · 0 评论 -
虚拟机和主机之间共享文件夹
先安装VMware Tools设置共享目录进入虚拟机设置界面,选择“选项”→“共享文件夹” 使用apt-get update 更新下载链接文档,再次使用命令apt-get install openvm-dkms 安装插件使用命令“mount -t vmhgfs .host:/ /mnt/hgfs”挂载共享目录 ...原创 2019-01-15 10:25:09 · 723 阅读 · 0 评论 -
vi的一些常用操作
配置当前用户的vi环境,使配置的vi只对当前用户起作用而不影响其他用户。cd /etc/vim //进入vi配置文件目录cp vimrc ~/.vimrc //复制配置文件到我们自己的家目录(这样配置文件只会对我们自己有效,不会影响其它用户)cd ~ //进入到家目录gedit .vimrc //使用gedit编辑器编辑.vimrc配置文件...原创 2018-09-07 11:41:11 · 161 阅读 · 0 评论