- 博客(101)
- 资源 (72)
- 收藏
- 关注
原创 pip更新速度慢的解决办法
python安装库一般会用到pip,但是更新时经常会碰到超时的情况,在这里介绍一种加快更新的方法:建议先更新pip工具:pip3 install -i https://pypi.douban.com/simple --upgrade pip在更新对应的应用:pip3 install -i https://pypi.douban.com/simple django==1.9...
2019-09-05 22:48:37
8956
1
原创 树莓派4显示处理器温度
使用watch命令每秒打印一次cpu温度信息watch -n 1 cat /sys/class/thermal/thermal_zone0/temp
2019-07-31 00:05:19
4364
原创 lua第一个运行实例
跟学习c语言一样,首先来个hello world使用lua工具,这里就不在介绍lua开发工具了,因为上一篇文章已经介绍了使用lua的工具,作为一个开发人员安装软件可是必备技能。接下里运行第一个实例,hello world程序在lua环境中输入:print("hello world!")然后运行,就会在屏幕上出现hello world!
2016-10-07 00:29:25
557
原创 为什么学习lua语言
本来也不打算学习lua语言,但是近期学习openwrt中luci大部分都是由lua语言写的随便看了一下lua的介绍,不看不知道,一看吓一跳,原来lua的应用非常广泛,而且lua解析器非常小可以再嵌入式开发环境中很好的运行,可以与c完美的兼容,因为lua解析器是由c语言编写的。先巴拉巴拉一下lua是什么吧?lua是一种轻量小巧的脚本语言,用标准c语言编写并以源代码形式开放,其设计目的
2016-10-07 00:22:52
4695
原创 MAC搭建svn服务器方法
MAC版本10.9.1默认带有svn工具1、打开终端输入svn --versionlaoyuliangdeiMac:hello laoyuliang$ svn --versionsvn, version 1.7.10 (r1485443) compiled Aug 13 2013, 15:31:22Copyright (C) 2013 The Apache Software
2014-01-18 23:08:19
2663
原创 linux内核设计与实现(第十二章)----内存管理
内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决问题)。所有内核的内存管理必须要简洁而且高效。主要内容:内存的管理单元获取内存的方法获取高端内存内核内存的分配方式总结1 内存的管理单元内存最基本的管理单元是页,同时按照内存地址的大小,大致分为3个区。1.1 页页的大小与体系结构有关,在x86架构中,页的
2013-07-10 18:32:40
1529
原创 linux内核设计与实现(第十一章)----定时器和时间管理
系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要。主要内容:系统时间定时器定时器相关概念实现程序延迟的方法定时器和延迟的例子1 系统时间系统中管理的时间有2种:实际时间和定时器。1.1 实际时间实际时间就是现实中钟表上显示的时间,其实内核中并不常用这个时间,主要是用户空间的程
2013-07-08 11:04:35
1503
原创 linux内核设计与实现(第十章)----内核同步方法
内核中提供了多种方法来防止竞争条件,理解了这些方法的使用场景有助于我们在编写内核代码时选用合适的同步方法,从而即可保证代码中临界区的安全,同时也让性能的损失降到最低。主要内容:原子操作自旋锁读写自旋锁信号量读写信号量互斥体完成变量大内核锁顺序锁禁止抢占顺序和屏障总结1 原子操作原子操作是由编译器来保证的,保证一个线程对数据的操作不会被其他线程打断。原子操作有2类
2013-07-07 10:00:30
1032
原创 linux内核设计与实现(第九章)----内核同步介绍
存在共享资源(共享一个文件,一块内存等等)的时候,为了防止并发访问时共享资源的数据不一致,引入了同步机制。主要内容:同步的概念同步的方法-加锁死锁锁的粒度1 同步的概念了解同步之前,先了解另外2个概念:临界区 - 也称为临界段,就是访问和操作共享数据的代码段。竞争条件 - 2个或2个以上线程在临界区里同时执行的时候,就构成了竞争条件。 所谓同步,其实防止
2013-07-05 20:38:08
875
原创 linux内核设计与实现(第八章)----中断下半部的处理
在前一章节已经提及过中断会分成上下两部分,是由于中断对时限的要求非常高,需要尽快的响应硬件。主要内容中断下半部处理实现中断下半部的机制总结中断下半部的实现中断实现实例1 中断下半部处理那么对于一个中断,如何划分上下两部分呢?哪些处理放在上半部,哪些处理放在下半部?这里有一些经验可供借鉴:如果一个任务对时间十分敏感,将其放在上半部如果一个任务和硬件有关,将其放在上
2013-07-05 20:32:54
961
原创 linux内核设计与实现(第七章)----中断处理
中断处理一般不是纯软件来实现的,需要硬件的支持。通过对中断的学习有助于更深入的了解系统的一些底层原理,特别是驱动程序的开发。主要内容:什么是中断中断类型中断相关函数中断处理机制中断控制方法总结1 什么是中断为了提高CPU和外围硬件(硬盘,键盘,鼠标等等)之间协同工作的性能,引入了中断的机制。没有中断的话,CPU和外围设备之间协同工作可能只有轮询这个方法:CPU定期检查硬
2013-07-04 15:57:38
954
原创 linux内核设计与实现(第六章)----内核数据结构
作为一个合格的linux驱动工程师,在查看linux内核代码中,发现内核数据结构贯穿于整个内核代码。在这里介绍4种最基本的数据结构,可以在内核代码编写中节约大量的时间。主要内容:链表队列映射1 链表链表是linux内核中最简单的,同时也是使用最广泛的数据结构,内核中使用的是一种双向链表。1.1头文件简介内核中关于链表定义的代码位于: include/linux/
2013-07-04 15:48:08
1364
原创 linux进程的挂起和恢复
进程的挂起及恢复#ctrl+z:挂起,程序放到后台,程序没有结束。#jobs:查看被挂起的程序工作号恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前台执行;用bg命令将挂起的作业放到后台执行格式:fg 工作号;bg 工作号进程:正在执行的一个程序程序:是一种写好的代码或脚本&:后台执行,不占用终端如:xeyes &ps命令进程查看命令ps命令:p
2013-06-21 22:24:15
3796
原创 linux内核设计与实现(第五章)----系统调用
主要内容:什么是系统调用Linux系统调用实现原理一个ARM体系架构的系统调用实现1、什么是系统调用简单来说,系统调用就是用户程序和硬件设备之间的桥梁。用户程序在需要的时候,通过系统调用来使用硬件设备。系统调用的存在,有以下重要的意义:1)用户程序通过系统调用来使用硬件,而不用关心具体的硬件设备,这样大大简化了用户程序的开发。 比如:用户程序通过write
2013-06-17 15:21:04
1066
原创 linux内核设计与实现(第四章)----进程的调度
主要内容:什么是调度调度实现原理Linux上调度实现的方法调度相关的系统调用1、什么是系统调度现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。这个管理程序就是调度程序,它的功能说起来很简单:决定哪些进程运行,哪些进程等待决定每个进程运行多长时间此外,为了获得更好的用户体验,运
2013-06-12 21:21:26
909
原创 linux内核设计与实现(第三章)----进程管理
进程是所有操作系统的核心概念,同样在linux上也不例外。主要内容:进程和线程进程的生命周期进程的创建进程的终止1、进程和线程 进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作(比如,创建,销毁等)都是有内核来实现的。Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程,线程不过是一种特殊的进程。所以下面只讨论进程,只有当
2013-06-12 21:13:29
879
原创 linux内核设计与实现(第二章)----内核开发准备
主要内容:获取内核源码内核源码结构编译内核方法内核开发特点1、获取内核源码linux是一个开源的内核,linux源码随手可得,想要获取内核源码非常的方便,可以通过网站下载或者git方式下载。http://www.kernel.org2、内核源码结构目录说明arch特定体系结构的代码block块设备I/O层
2013-05-27 17:27:23
972
原创 linux内核设计与实现(第一章)----linux内核简介
主要内容:单内核和微内核内核版本号1、单内核和微内核 原理优势劣势单内核整个内核都在一个大内核地址空间上运行。1. 简单。2. 高效:所有内核都在一个大的地址空间上,所以内核各个功能之间的调用和调用函数类似,几乎没有性能开销。一个功能的崩溃会导致整个内核无法使用。
2013-05-27 15:26:56
987
原创 linux线程介绍
进程是系统中程序执行和资源分配的基本单位,线程是系统调度的最小单位。每个进程有自己的数据段(data)、代码段(text)和堆栈段(bss)。线程通常叫做轻量的进程。线程是在共享内存空间中并发执行的多道执行路径,他们共享一个进程的资源。因为线程和进程比起来很小,所以相对来说,线程花费更少的CPU资源。 线程按照其调度者可分为用户级线程和内核级线程两种。 (1
2013-05-06 14:40:09
1201
原创 linux 0.11内存管理
内存管理概述;主要代码分析;内存管理概述:linux 0.11内核,最大支持16M物理内存。如果以最大内存16M讲解内核将其分块管理分别为:--内核区[0~end] (从物理0地址开始,存放内核代码)--缓冲区[end~4M] (面向文件系统,为文件缓冲机制提供缓冲区,从640K~1M为显存和BIOSrom信息存放点)--虚拟盘[4M~4.5M] (虚拟
2013-05-04 20:00:23
2640
原创 libjpeg库的简单使用使用----jpeg图片解压
libjpeg库其实已经可以满足我们日常处理日常简单图片之间的转换了。下面就来介绍一下jpeg库的解压和压缩过程。首先来讲解压操作过程:1、分配jpeg对象结构体空间,并初始化。2、指定解压数据源。3、获取解压文件信息。4、为解压设定参数,包括图像大小和颜色空间。5、开始解压缩。6、取数据。7、解压完毕。8、释放资源和退出程序。1、分配jpeg对象结
2013-04-19 22:47:47
9398
原创 libjpeg移植arm
运行环境:ubuntu10.04交叉编译器:arm-linux-gcc 4.5.1libjpeg版本:V8源码下载地址:http://download.youkuaiyun.com/detail/laoylhuli/5029006点击打开链接一、拷贝源码 将源码拷贝至/tmp目录下,解压源码 # tar zxvf jpegsrc.v8b.tar.gz
2013-04-19 22:03:13
2087
转载 QT编程QString类详解
每一个GUI程序都需要string,这些string可以用在界面上的提示语,也可以用作一般的数据结构。C++语言提供了两种字符串的实现:C 风格的字符串,以'\0‘结尾;std::string,即标准模版库中的类。Qt则提供了自己的字符串实现:QString。QString以16位 Uniode进行编码。我们平常用的ASCII等一些编码集都作为Unicode编码的子集提供。关于编码的问题,我们会到
2013-04-19 16:43:09
1527
转载 Boa服务器移植
Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。下面给大家介绍一下Boa服务器移植的具体操作步骤,希望能够有帮助。环境 主机:ubuntu8.10
2013-04-13 14:53:36
1180
转载 linux设备驱动归纳总结(十三):1.触摸屏与ADC时钟
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这节的内容说不上是驱动,只是写个代码让触摸屏能够工作,随便介绍一下时钟子系统(我不知道这样叫合不合适),仅次而已。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2013-03-28 11:25:50
1003
转载 linux设备驱动归纳总结(十二):简单的数码相框
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx其实代码很简单,实现lcd驱动,使lcd能够显示图片,当按下按键后切换图片。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2013-03-28 11:24:13
1045
转载 linux设备驱动归纳总结(十一):写个简单的看门狗驱动
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx设备驱动的归纳已经差不多了,趁着知识点还没有遗忘,写点代码巩固一下,来个简单的看门狗驱动——静态平台类的杂设备看门狗驱动,有定时和重启两个基本功能。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2013-03-28 11:22:14
1141
转载 linux设备驱动归纳总结(十):1.udev&misc
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx不知不觉我的总结已经写得七七八八了,这一章节只是补充一下两个知识点:动态创建设备节点和杂设备类的注册。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2013-03-28 11:20:23
744
转载 linux设备驱动归纳总结(九):1.platform总线的设备和驱动
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这一节可以理解是第八章的延伸,从这节开始介绍platform设备驱动。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2013-03-28 11:19:15
891
转载 linux设备驱动归纳总结(八):4.总线热插拔
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx上一节介绍设备管理中的分层思想和面向对象思想(名字是我自己瞎编的)。接下来说一下热插拔的操作。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2013-03-28 11:17:46
922
转载 linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx前面的内容介绍了总线、设备和驱动函数的关系和操作。从这节开始,介绍设备管理中的分层思想和面向对象思想(名字是我自己瞎编的,《LDD》上指的是结构体内嵌)。可以理解是平台类设备(platform)的一个过度。xxx
2013-03-28 11:16:09
914
转载 linux设备驱动归纳总结(八):2.总线、设备和驱动的关系
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx上一节介绍了总线、设备和驱动函数的注册,这节着重介绍它们三者的关系,和上一节一样,我模拟一条usb总线,一个usb鼠标设备和一个usb鼠标驱动函数,当然,只是名字是usb,里面并没有实质的操作,只是通过这样来介绍一下三者
2013-03-28 11:14:00
845
转载 linux设备驱动归纳总结(八):1.总线、设备和驱动
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这几天一直在看设备模型,内核的代码看得我越来越沮丧,特别是kboject、kset和ktype之间的关系。但是,设备模型的归纳我打算先跳过这几个重要结构体,先介绍总线、设备和驱动——设备管理的相关内容。先介绍如何使用,有
2013-03-28 11:12:18
992
转载 linux设备驱动归纳总结(七):2.内核定时器
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这节将介绍内核定时器的使用。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2013-03-28 11:09:56
990
1
转载 linux设备驱动归纳总结(七):1.时间管理与内核延时
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这节将介绍一些很枯燥的内核,大体是内核中时间的概念和内核延时的使用,并没有源代码。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2013-03-28 10:56:10
861
转载 linux设备驱动归纳总结(六):3.中断的上半部和下半部——tasklet
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx一、什么是下半部中断是一个很霸道的东西,处理器一旦接收到中断,就会打断正在执行的代码,调用中断处理函数。如果在中断处理函数中没有禁止中断,该中断处理函数执行过程中仍有可能被其他中断打断。出
2013-03-28 10:55:34
945
转载 linux设备驱动归纳总结(六):3.中断的上半部和下半部——工作队列
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这节介绍另外一种的下半部实现——工作队列。相对于软中断/tasklet,工作对列运行在进程上下文,允许睡眠,接下来慢慢介绍。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2013-03-28 10:54:31
845
转载 linux设备驱动归纳总结(六):2.分享中断号
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx上一节介绍的内容是,调用接口request_irq(),使中断号与中断处理函数对应。但是,有时候会有这样的情况,如果开发板上按键的中断已经被另外的驱动程序注册中断了,而我现在又想再注册一次这个中断,这就出现了一个中断号不
2013-03-27 09:44:51
916
转载 linux设备驱动归纳总结(六):1.中断的实现
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx一、什么是中断中断分两种:1)中断,又叫外部中断或异步中断,它的产生是由于外设向处理器发出中断请求。其中外部中断也有两种,这是由配置寄存器设定的:普通中断请求(IRQ)和快速中断请
2013-03-27 09:44:09
996
source insight经典配置文件
2013-08-04
TCP/IP详解 卷1完整版
2013-07-28
飞思卡尔智能车摄像头组程序
2013-05-03
stm32驱动无线NRF24L01带出错检测
2012-07-31
Docker技术入门与实战(第2版)- 2017
2019-04-21
第一本Docker书 修订版 - 2015
2019-04-21
花生壳sdk‘源代码
2014-07-05
Excel 读写库 QtXlsx
2014-06-29
C语言二维码编解码代码
2014-06-29
freeNas8.3教程
2013-09-08
【win】VLC播放器2.0.8
2013-09-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人