Linux系统
文章平均质量分 66
Linux系统操作编程
Quan略略略
君子爱色取之有道
展开
-
【Linux】System Calls
man syscallsThe system call is the fundamental interface between an application and the Linux kernel.原创 2021-09-30 11:22:57 · 461 阅读 · 0 评论 -
【Linux开发】JNI for Android实验
这是一项拖延了很久没做的事,为什么实验Android平台下的JNI实验?安卓系统现在太成熟了,开发人员也很多,相对于闭源的IOS系统来说,安卓系统在消费电子、医疗电子、工业控制等方面上的优势太大了,因为不可能在工业控制器上嵌入一个好几千的iPad。以我熟悉的工业控制方向为例,现在有很多基于Android系统的工控一体机(一体机指带有显示器工控板),可以做出非常友好且功能强大的人机交互软件,侵占了一...原创 2019-10-22 17:42:29 · 396 阅读 · 0 评论 -
Ubuntu使用apt-get命令遇到的问题
tq@ubuntu:~$ apt-get install nfs-kernel-serverE: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)E: Unable to lock the administration directory (/var/lib/dpkg/), are you roo原创 2016-11-16 14:02:58 · 825 阅读 · 0 评论 -
Linux执行Shell脚本问题
在Windows系统上编写了Shell脚本,运行的时候出现问题:root@orangepione:/mnt/nfs_server/orangePi# ./backup.shbash: ./backup.sh: /bin/bash^M: bad interpreter: No such file or directory从错误的意思上貌似是:/bin/bash执行的时候遇到了^M字符,这原创 2016-11-16 14:42:48 · 694 阅读 · 0 评论 -
linux目录结构详细介绍
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yangrong.blog.51cto.com/6945369/1288072目录1、树状目录结构图2、/目录3、/etc/目录4、/usr/目录5、/var/目录6、/proc/目录7、/dev/目录转载 2016-11-16 17:11:08 · 509 阅读 · 0 评论 -
Windows下创建NFS服务器
创建方法在PDF详细介绍,在我的开发板上的linux系统中挂载NFS时,出现以下错误:root@orangepione:/# mount -t nfs 192.168.1.221:/nfsroot /mntmount: wrong fs type, bad option, bad superblock on 192.168.1.221:/nfsroot,missing codepage原创 2016-11-10 11:39:18 · 12753 阅读 · 0 评论 -
【Linux开发】使用/dev/mem内存映射的方式操作GPIO口
使用的是全志H3的芯片,运行Debian Desktop系统的ARM版本Armbian,要控制外部几个IO口,可以使用很多种方法,如果对GPIO的操作速度有要求就需要使用直接操作内存寄存器的方式来控制GPIO口。AllWinner的官方数据手册文档上介绍了GPIO的寄存器内容:GPIO寄存器映射表GPIO配置寄存器GPIO的寄存器在内存的基地址是0x01C20800,所以要...原创 2016-11-14 17:16:58 · 19990 阅读 · 6 评论 -
Linux下使用/dev/mem控制GPIO模拟SPI时序控制LCD5110
关于如何使用/dev/mem直接控制GPIO口参见我的另一篇博客:http://blog.csdn.net/tq384998430/article/details/53161192。这篇文章将使用GPIO的操作模拟出SPI时序来控制诺基亚LCD5110屏幕,关于该屏幕可以自行百度,网上资料很全。使用GPIO模拟SPI是单片机开发中常用的一种手段,GPIO还可以模拟IIC等总线的时序,可以用在没原创 2016-11-18 11:18:33 · 2819 阅读 · 0 评论 -
Linux下使用LCD5110显示中文(ASCII+GB2312字库)
关于如何在Linux下使用LCD5110参见另一篇blog:http://blog.csdn.net/tq384998430/article/details/53214273。在这篇博客的基础上需要添加屏幕绘点的函数:void LCD_DrawDot(int x,int y,int onoff){ int a = y / 8,b = y % 8; if(onoff) { LCD_B原创 2016-11-20 21:22:03 · 3969 阅读 · 0 评论 -
64位Ubuntu下使用arm-linux-gcc交叉编译器
arm-linux-gcc是用于交叉编译ARM平台上Linux程序的编译器,在32位的宿主Linux计算机上运行时是正常的,但是在我的64位Linux发行版Ubuntu系统上却无法运行,报错:/usr/local/arm/4.3.3/bin/arm-linux-gcc: 3: /usr/local/arm/4.3.3/bin/arm-linux-gcc: arm-none-linux-gnueab原创 2016-11-21 14:11:22 · 2492 阅读 · 0 评论 -
Linux下make menuconfig出错解决办法
64位Ubuntu16.04下使用menuconfig配置linux内核,但是刚安装的Ubuntu使用make menuconfig时出现下面的错误: *** Unable to find the ncurses libraries or the *** required header files. *** 'make menuconfig' requires the ncurses li原创 2016-11-21 14:51:38 · 909 阅读 · 0 评论 -
Ubunt16.04下编译Linux遇到的问题
编译环境为64位Ubunt16.04,arm-linux-gcc版本为4.3.3,再make menuconfig玩之后进行make zImage的时候出现下面的错误:Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.我也不知道什么原创 2016-11-21 15:08:14 · 824 阅读 · 0 评论 -
Image uImage与zImage的区别【转】
1,内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImag转载 2016-11-21 15:32:14 · 490 阅读 · 0 评论 -
Linux配置防火墙,开启特定端口
http://www.myhack58.com/Article/48/66/2012/34999.htm编辑iptables文件:vi /etc/sysconfig/iptables,添加下面两行话:-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙) -A INPUT -m原创 2016-11-22 18:05:34 · 1651 阅读 · 0 评论 -
windows下通过VNC图形化访问Ubuntu桌面环境
要在windows下图形化访问Ubuntu或其它Linux系统桌面环境有很多方法,我比较喜欢的是使用VNC服务,需要在Ubuntu下安装vncserver和在windows下安装客户端访问工具。 1. windows下客户端访问工具对于VNC,客户端访问工具也有不少,比如RealVNC、VNCViewer等,我比较喜欢的是VNCViewer,比较小巧轻量级,使用也十分简单,转载 2016-11-23 09:26:23 · 806 阅读 · 0 评论 -
ubuntu下搭建JAVA开发环境
参考链接:http://jingyan.baidu.com/article/86fae346b696633c49121a30.html安装步骤:1、根据机子的参数从官网下载JRE包。2、解压JDK包,注意不能再共享目录中解压,因为共享目录是Windows格式的,不支持连接文件,需要转到Linux文件系统分区解压。3、设置环境变量。4、生效配置。5、使用java -versi原创 2016-11-23 09:37:49 · 696 阅读 · 0 评论 -
Linux查看程序端口占用情况
使用下面命令:netstat –apn | grep 8080即可查看占用端口8080的进程ID号,使用kill命令可以杀死该进程,也可以kill -9 强制杀死。原创 2016-11-23 17:47:22 · 387 阅读 · 0 评论 -
linux下解压命令大全
.tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压:tar zxv转载 2016-11-23 17:55:06 · 395 阅读 · 0 评论 -
Linux下使用math函数
Linux 下使用常用的 数学函数时需要包含math.h头文件,但是仅仅包含math.h头文件是不够的,还需要在Makefile文件中添加“-lm”,这个是表示链接数学函数库,相似的使用线程编程的时候需要链接thread库: -lpthread。原创 2016-12-09 11:08:16 · 3151 阅读 · 0 评论 -
上传文件到远程Linux服务器
使用命令scp,使用范例如下:ryscp filename username@host_addr:remotedirector这个命令其实是使用ssh登录到远程服务器host_addr,然后将filename传送到remotedirectory路径,这个命令需要账号的密码。原创 2016-11-27 23:00:33 · 511 阅读 · 0 评论 -
Putty打印时只有CR回车符时的问题
Putty是一个非常小巧的终端连接软件,拥有SecureCRT以及串口调试助手的功能。偶然在使用Putty的时候遇到一个问题就是一个GPS模块发送的每两行数据之间的换行符使用的是CR回车符而不是,也就是Linux下的标准,而Putty作为Windows下的软件识别CR+LF即回车加换行作为换行标准,所Putty接收到来自GPS模块的数据时不会进行换行操作而是在同一行不断地刷新数据导致无法查看完整的原创 2016-12-16 10:19:25 · 3522 阅读 · 0 评论 -
Linux下串口程序设计
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2016-12-15 13:53:57 · 682 阅读 · 0 评论 -
Makefile:3: *** missing separator. Stop.
编写驱动时执行make出现: Makefile:3: * missing separator. Stop. 这个是由于空格和TAB捣鬼的,Makefile文件规定命令都是以TAB开头的,但是有的地方复制过来的内容中的TAB被替换成了空格,所以会导致这个问题,解决办法就是把所有命令前的空格改成TAB。原创 2017-01-03 14:32:03 · 2059 阅读 · 0 评论 -
编译模块出错:insmod: ERROR: could not insert module module.ko: Invalid parameters
编译一个最简单的驱动模块的时候遇到问题:insmod: ERROR: could not insert module module.ko: Invalid parameters从网上的内容来看有两个问题,第一个是编译模块时选择的Linux头文件目录与当前运行的系统版本不匹配,使用命令:uname -r查看当前运行的内核版本,然后选择正确的Linux头文件路径。第二个就是生成的模块名原创 2017-01-03 15:21:01 · 37084 阅读 · 1 评论 -
Linux驱动开发①--Linux基础及hello模块
驱动程序是系统的重要组成部分,Linux中所有对硬件的的操作都是基于驱动程序的。驱动程序可以直接编译进内核也可以使用module的方式手动添加到内核之中,为了学习方便,我将使用模块module的方式将模块加载到内核。 编写驱动的第一步是搭建环境,我有一台运行Ubuntu16的虚拟机,可以直接在Ubuntu上进行驱动模块的编写工作,因为Ubuntu下已经有完整的Linux源代码和头原创 2017-01-03 16:55:04 · 571 阅读 · 0 评论 -
Linux工具tmux快捷键
详情可以通过man手册查看tmux的命令。下面是常用命令: tmux #开启tmux tmux ls #显示已有tmux列表(C-b s) tmux attach-session -t 数字 #选择tmux C-b c 创建一个新的窗口 C-b n 切换到下一个窗口 C-b p 切换到上一个窗口 C-b l 最后一个窗口,和上一个窗口的概念不一样哟,谁试谁知道 c-b w 通过上下键原创 2017-01-05 10:12:01 · 409 阅读 · 0 评论 -
Linux驱动开发②--为2440开发板编译hello模块
上一篇文章http://blog.csdn.net/tq384998430/article/details/53995396介绍了如何在本地编写驱动模块,由于本地的Ubuntu系统中带了系统源码,一般在/lib/modules/或者/usr/src/目录下,所以直接指定头文件路径到Linux源码路径即可对驱动程序进行编译。但是由于2440开发板运行的Linux系统中没有源码,也没有编译器,所以无法原创 2017-01-05 10:41:38 · 839 阅读 · 0 评论 -
Linux驱动开发③--LED流水灯驱动示例
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define DEVICE_NAME "FLOWLED"#define LED_MAJOR 246 /* 主设原创 2017-01-06 16:58:01 · 1601 阅读 · 0 评论 -
Linux驱动开发④--unknown field ‘ioctl’ specified in initializer .ioctl = xxx
在linux-2.6.36内核上加载编译驱动时,出现error:unknown field 'ioctl' specified in initializer原因是:在2.6.36内核上file_operations发生了重大的改变:原先的 int (*ioctl)(struct inode*, struct file*, unsigned int, unsigne原创 2017-01-09 11:49:37 · 488 阅读 · 0 评论 -
ARM-Linux定时器、中断驱动--超声波测距初试
原文地址:http://www.cnblogs.com/guxiangtao/p/4076103.html最近要实验用到超声波测距,一下子着手驱动设计,简直无从下手。由于没有接触过裸板程序,arm板底子薄弱,所以很多东西写的不完善,在加上这是自己的第一个驱动程序,写起来也比较吃力。多亏了很多前辈分享的一些代码,参考学习下,写了一个自己的驱动程序,下面特此分享出来。目前还转载 2017-01-13 13:59:45 · 1548 阅读 · 0 评论 -
Linux framebuffer简介及操作
Framebuffer简介 : 帧缓冲(framebuffer)是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。framebuffer是LCD对应的一中HAL(硬件抽象层),提供抽象的,统一的接口操作,用户不必关心硬件层是怎么实施的。这些都是由Framebuffer设备驱动来完成的。原创 2017-01-13 15:01:34 · 4077 阅读 · 0 评论 -
Linux应用层下定时器函数setitimer
Lin1.介绍 在linux下如果定时如果要求不太精确的话,使用alarm()和signal()就行了(精确到秒),但是如果想要实现精度较高的定时功能的话,就要使用setitimer函数。 setitimer()为Linux的API,并非C语言的Standard Library,setitimer()有两个功能,一是指定一段时间后,才执行某个function,二是每转载 2017-01-09 22:04:02 · 732 阅读 · 0 评论 -
Linux内核定时器的使用
内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 和kernel/timer.c 文件中。被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是处于非进程的上下文中,所以调度函数必须遵守以下规则:1) 没有 current指针、不允许访问用户空间。因为没有进程上下文,相关代码和被中断的进程没有任何联系。2) 不能执转载 2017-01-10 13:11:41 · 1368 阅读 · 0 评论 -
编译警告:ISO C90 forbids mixed declarations and code
编译警告: ISO C90 forbids mixed declarations and code。原因如下: 变量定义之前任何一条非变量定义的语句(注意:语句是会带分号的)都会引起这个警告!解决方法: 将非变量的定义移到变量定义之后即可。在内核中还需要将printk的打印放在变量定义之后原创 2017-01-10 15:16:20 · 9993 阅读 · 0 评论 -
Linux从控制台一次读取一个字符,无需等待回车键
原文:http://www.cnblogs.com/zhouyinhui/archive/2010/10/12/1849011.html读取字符嘛,可以使用getchar(),getch()等等函数,但它们都需要等待回车键以结束输入,而不是按下键盘时立即响应,看上去不那么“实时”。如果是在windows平台下的话,可以使用conio.h下的_getch()函数,注意是以下划线开转载 2017-01-11 09:35:34 · 2194 阅读 · 1 评论 -
Linux下使用class_create,device_create自动创建设备文件结点
从linux 内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它。加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_device_cr转载 2017-01-11 11:41:01 · 10717 阅读 · 0 评论 -
Linux驱动开发⑤--在驱动程序中测试CPU中断
在《linux设备驱动开发详解第二版》一书中的第7章介绍了设备驱动中的并发控制,其中有一个自旋锁,可以在加锁的同时将系统中断关闭,我对这个关闭系统中断比较感兴趣,自旋锁的功能完全能自己通过变量来实现。这时候我有一个想法就是测试这个中断关闭功能,于是写了一个测试驱动,在驱动的read接口函数中调用spin_lock_irq函数,这个函数就是在加锁的同时关闭了系统中断,具体实现如下。我将虚拟机的C原创 2017-01-12 14:15:18 · 494 阅读 · 0 评论 -
Linux中管道命令的用法
原文地址:http://blog.csdn.net/wirelessqa/article/details/8968381一. 管道命令管道命令操作符是:”|”,它只能处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入.管理命令的输出说明:【指令1】正确输出,作为【指令2】的输入转载 2017-02-08 13:25:45 · 34160 阅读 · 0 评论 -
linux下/dev/dsp:No such file or directory解决方法
进行Linux音频设备驱动实验的时候,教材上说明dev下有一个dsp设备文件,其是音频的编解码器,可以使用命令cat test.wav > /dev/dsp进行音频播放,但是在我的Ubuntu16.04下并没有找到dsp文件,网上有说现在Linux版本将音频相关的设备文件都搬到/dev/snd目录下面去了,然而并没有发现/dev/snd有dsp文件,估计也是一些与音频有关的文件,但转载 2017-01-18 10:57:08 · 15021 阅读 · 3 评论 -
Linux设备驱动之字符设备驱动
原文地址:http://www.cnblogs.com/lihuidashen/p/4426129.htmlLinux设备驱动之字符设备驱动一、linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序:字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的转载 2017-01-18 15:12:47 · 430 阅读 · 0 评论