自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 资源 (4)
  • 收藏
  • 关注

原创 git的学习笔记链接

https://app.yinxiang.com/fx/1449037f-819f-4ee2-b026-93775e9e9d0e

2020-02-06 20:14:16 259

原创 git远程仓库的管理

git仓库远程管理要把本地仓库提交到远程仓库1 git和github(代码托管平台建立连接) 本地创建 ssh key 成功的话会在 ~/ 下生成 .ssh 文件夹,复制里面的key回到github上,进入 Account Settings(账户配置),左边选择SSH Keys,Add SSH Key,title随便填, 粘贴在你电脑...

2020-02-06 20:12:48 349

原创 git工作的基本流程

git的工作区域向仓库中添加文件的基本流程git初始化及仓库创建和操作基本信息设置gitconfig --globaluser.name'yuxiangss'设置用户名邮箱gitconfig --globaluser.email'[email protected]'注意:该设置在github仓库主页显示谁提交了该文件...

2020-02-06 20:04:22 294

原创 git的安装

安装gitgit官网下载:https://www.git-scm.com/download/win双击下载的安装包选择工作的目录选择组件开始菜单目录名设置选择使用命令行环境以下三步默认,直接点击next等待安装检验是否成功安装...

2020-02-06 20:01:13 176

原创 git用户在仓库创建删除,修改, 下载上传文件

在仓库中新建文件添加文件成功修改文件修改文件成功删除文件如何查看被删除文件历史信息上传文件(不适用git)搜索仓库文件文件的下载...

2020-02-04 20:23:02 136

原创 git用户的注册和仓库的创建

Git可以使用四种主要的协议来传输数据: 本地传输、SSH协议、Git协议和HTTP协议 注意,除了HTTP协议外,其他所有协议都要求在服务器端安装并运行Git。所谓的远程仓库在协议中的表示,就是硬盘上的另一个目录github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开基本概念:仓库(repository):仓库用...

2020-02-03 18:13:27 574

转载 linux摄像头虚拟驱动vivi彻底分析3

1、上一节测试的摄像头驱动程序的缺陷(我把缺陷给避免了,在上一篇)(1)依次装载驱动程序,出现错误如下(2)用dmesg命令查看详细输出(某些函数没有识别),可见我们的vivi.ko还依赖于其他驱动程序,上一节直接使用这些命令没有问题,是因为在做虚拟摄像头vivi之前。我们先接上USB摄像头,ubuntu里面自动给我们安装了其他驱动程序。所以在使用vivi的时候,没有出现问题。...

2019-12-23 17:21:36 997

原创 ubuntu下安装摄像头应用程序xawtv2(usb摄像头的测试,虚拟摄像头的测试)

准备安装xawtv的应用程序: 1 在线获取sudo apt-get install xawtv /* 在线获取安装包,如果你的的ubuntu版本是太老的话,这里就不能正确安装,只能采取第二种方法 */ 2 在这个 http://www.kraxel.org/releases/xawtv/网站创建新的sources.list如下图,使...

2019-12-23 11:11:39 1490

原创 Linux摄像头V4L2驱动框架分析1

学习V4L2(V4L2:vidio for linux version 2)摄像头驱动框架,需要分析vivi.c(虚拟视频硬件相关)驱动源码程序,vivi.c(虚拟视频驱动程序的分析)https://download.csdn.net/my通过分析vivi.c结构如下vivi_init -->vivi_create_instance -->v4...

2019-12-22 21:39:51 782

原创 进程的详解(进程和程序,进程调度,进程同步和互斥(经典同步问题) )

经过上一文对进程和线程有一个简单的理解,下面详细的介绍进程:进程:是程序的一次执行,具有动态性,动态性还表现在:“它由创建而产生,由调度而执行,由撤消而消亡”可见,进程实体有一定的生命期,而程序则只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的。(并发性是进程重要的特征)进程的状态和转化关系还可以添加进程的创建和结束孤儿进程:若父进程先结...

2019-11-21 21:54:16 750

转载 进程和线程的图解

进程(process)和线程(thread)它们比较抽象,不容易掌握。使用一种图示的方式进行理解,然后进行单个详细的解释计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。进程就好比工厂的车间,它代表CPU所能...

2019-11-21 21:19:24 1547

转载 FATFS文件系统学习笔记

什么是文件系统 负责管理和存储文件信息的软件机构,在磁盘上组织文件的方法。常用的文件系统 FAT/FATFS 小型嵌入式系统 NTFS WINDOWS CDFS 光盘 exFAT 更适用于闪存FATFS优点:免费开源,专门为小型嵌入式系统设计,c编写,支持FAT12, FAT16 与 FAT32,支持多种存储媒介,有独立的缓冲区...

2019-11-20 21:25:49 2206

转载 stm32串口发送数据的配置,以及通过串口发送结构体数组总是多一个00字节的问题

最近用stm32编写串口发送程序,在硬件方面需要做如下准备:1.stm32开发板,这里我的是stm32f030f4p4开发板,单片机的串口发送的引脚为PA9-TX,PA10-RX。2.为了调试串口,我们需要用到串口调试助手,实现单片机的串口和串口助手的通信。3.如何实现软件串口助手和硬件单片机的连接呢,我们还需要一个 USB-TTL,即 没有串口的 电脑,用 USB 接口 与 TTL ...

2019-11-13 08:53:13 3843

原创 驱动程序中(4种I/O模型)

1 阻塞:在应用层调用read函数的时候,如果硬件中的数据没有准备好,此时进程会进入休眠状态,当硬件的数据准备好的时候会给驱动发送中断。驱动收到中断之后,唤醒休眠的进程。这个被唤醒的进程在driver_read读取硬件的数据,并把数据 返回到用户空间。(模型中断)可以使用队列,把整个进程进入到队列中,使进程进入阻塞的状态,当有数据产生的时候,产生中断,唤醒在队列中的进程,从而读取数据....

2019-11-10 10:05:27 533

原创 linux串口编程设置(USB转串口)

在嵌入式Linux中,串口是一个字设备,访问具体的串行端口的编程与读/写文件 的操作类似,只需打开相应的设备文件即可操作。串口编程特殊在于串 口通信时相关参数与属性的设置,还有必须有串口驱动程序(提供设备节点),在linux系统中一般都自带有的串口驱动程序,我们只需要配置就可以使用串口的设置节点 配置串口驱动:串口配置完成后,插上usb转串口设备,...

2019-11-08 09:07:59 2985

原创 查找排序的图示法(冒泡排序,直接插入排序,希尔排序,快速排序,顺序查找,折半查找,分块查找)

2019-10-14 12:15:57 620

原创 linux内核并发和竟态 (解决竟态的5种方式屏蔽中断,原子操作,自旋锁,信号量,互斥体,)

linux内核并发和竟态 :并发(Concurrency) 指的是多个执行单元同时、 并行被执行, 而并发的执行单元对共享资源(硬件资源和软件上的全局变量、 静态变量等) 的访问则很容易导致竞态(Race Conditions)引起竟态的方式: 1对称多处理器(SMP) 的多个CPU ...

2019-10-14 12:08:13 1223

转载 JetBrains PyCharm开发工具快捷键

1、编辑(Editing)Ctrl + Space 基本的代码完成(类、方法、属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctrl + P 参数信息(在方法中调用参数)Ctrl + Q 快速查看文档F1 外部文档Shift + F1 外部文档,进入web文档主页Ctrl + ...

2019-10-11 14:06:06 249

原创 SPI,IIC和USART的协议

2019-10-10 15:14:51 234

原创 I/O模型之异步(在中断基础上------jz2440)

异步通知 在应用层使用signal为一个信号绑定一个处理函数,应用层执行signal之后接着往下执行。当硬件中的数据准备好的时候硬件会给驱动发送中断,驱动收到中断后给应用程序发送信号,应用程序收到信号后执行信号处理函数,并在信号处理函数中调用read函数读取数据。#include <signal.h>sighandler_t signal(int signum, ...

2019-09-20 19:53:32 127

原创 I/O模型之多路复用epoll(在中断基础上------jz2440)

epoll的使用(现在常用的是epoll)功能:创建epoll的实例int epoll_create(int size);参数:@size:无效了 返回值:成功返回epoll实例的文件描述符,失败-1;//功能:向epoll实例中添加文件描述符,或者从中删除文件描述符int epoll_ctl(int epfd, int op, int...

2019-09-20 19:48:43 650

原创 I/O模型之多路复用select(在中断基础上------jz2440)

int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);功能:select用于监测是哪个或哪些文件描述符产生件; 参数:nfds: 监测的最大文件描述个数 ...

2019-09-20 19:31:21 104

原创 I/O模型之多路复用poll(在中断基础上------jz2440)

3 I/O多路复用(select/poll/epoll)int poll(struct pollfd *fds, nfds_t nfds, int timeout);参数1 :一个结构体指针struct pollfd *fds struct pollfd { int fd; //文件描述符...

2019-09-20 19:26:39 137

原创 I/O模型之非阻塞(在中断基础上------jz2440)

非阻塞:在应用层调用read函数的时候,不管硬件的数据是否准备好都需要立返回到用户空间 int open(const char *pathname, int flags); 参数1:文件的路径 参数2:打开的的方式如下图====================================================== user...

2019-09-20 19:18:19 122

原创 I/O模型之阻塞(在中断基础上------jz2440)

1 阻塞:在应用层调用read函数的时候,如果硬件中的数据没有准备好,此时进程会进入休眠状态,当硬件的数据准备好的时候会给驱动发送中断。驱动收到中断之后,唤醒休眠的进程。这个被唤醒的进程在driver_read读取硬件的数据,并把数据 返回到用户空间。(模型中断)可以使用队列,把整个进程进入到队列中,使进程进入阻塞的状态,当有数据产生的时候,产生中断,唤醒在队列中的进程,从而读取数据....

2019-09-20 19:15:05 146

原创 驱动传递参数/驱动符号导出

在编写内核模块的时候,经常需要在加载内核模块的时候传递一些参数,Linux内核提供了简单便捷的方法向内核模块传递参数1 定义模块参数的方法module_param(name, type, perm); name:表示参数的名字; type:表示参数的类型; ...

2019-09-15 17:04:32 345

原创 字符驱动基础知识(makefile,测试模块,__init,__exit和static,printk)

测试模块常用的命令:(1) lsmod (list module,将模块列表显示 ) 功能是打印出当前内核中已经安装的模块列表。(2) insmod(install module,安装模块 ) 功能是向当前内核中去安装一个模块, 用法是 insmod xxx.ko(3) modinfo (module information, 模...

2019-09-09 21:00:49 281

原创 字符驱动入门详解1

ARM裸机和驱动区别: arm裸机 驱动 单独编译单独执行...

2019-09-04 08:48:53 1431

转载 Linux 字符设备驱动开发基础(四)—— ioctl() 函数解析

解析完 open、close、read、write 四个函数后,终于到我们的 ioctl() 函数了一、 什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。下面是其源代码定义:函数名: ioctl功 能: 控制I/O设备用 法: int ...

2019-09-03 16:12:22 287

转载 mmc的基本命令

一:mmc的命令例如以下:1:对mmc读操作mmc read addr blk# cnt2:对mmc写操作 mmc write addr blk# cnt3:对mmc擦除操作mmc erase blk# cnt4:又一次搜索mmc设备mmc rescan5:列出mmc的分区mmc part - li...

2019-08-29 14:52:54 7796

原创 针对ji2440进行的分区的扩充方法(源于制作的内核镜像大于2M)

修改linux:sudo vi /work/system/linux3.4.2/arch/arm/mach-s3c24xx/common-smdk.c:static struct mtd_partition smdk_default_nand_part[] = {[2] = {.name = "kernel",.offset = MTDPART_OFS_APPEND,....

2019-08-25 11:23:25 162

原创 Linux通过移植linux-3.4.2,将制作好的yaffs2,通过nfs挂载根文件系统失败 解决办法

uboot-1.1.6 (根据韦东山老师进行移植)内核为linux-3.4.2 (把自己制作yaffs2放入下载到开发板上)所用开发板:JZ2440 V3(S3C2440A)BusyBox :1.7.0出现上述情况原因:1 查看sudo vi /etc/exports里面是否添加了根文件启动路径,然后启动服务器 sudo /etc/init.d/nfs-kern...

2019-08-25 11:00:56 424

原创 关于apt-get update刷新出现的问题

针对ID号有效办法是:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

2019-08-21 20:02:35 274

原创 使用swi软件中断模拟中断的流程

中断-------------外部硬件的触发软中断-----------系统调用复位-------------如死机未定义指令-------undefine数据异常---------数据越界Reset和复位---------------------SVC(超级用户模式)prefetch(预取)data abor...

2019-08-19 19:35:19 825

原创 使用TCP协议写的关于ftp_tcp上传文件下载文件显示文件的小项目(一对一)

server.c服务器端,#include<stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <linux/in.h> //sockaddr_in#include <stdlib.h>#includ...

2019-08-10 11:19:44 266

原创 移植linux3.4.2到jz2440上出现的问题和构建文件系统出现的问题(uboot没有移植,使用时uboot1.1.6)的汇总

一安装交叉编译器arm-linux-gcc-4.3.2.tar.bz2 1先查看交叉编译器arm-linux-gcc -v 不同的编译器编译不同的内核2查看环境变量echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-g...

2019-08-06 21:53:37 514

转载 Linux通过nfs挂载根文件系统失败:VFS: Unable to mount root fs via NFS, trying floppy.

简介: 本文主要介绍一种nfs挂载失败的情况,即在根文件系统中dev文件下没有设置console和null节点。如果你的文件系统中没有这种情况,这篇文章可能对你帮助不大。不过我也会将我在查找这个问题时碰到的一些其他情况进行说明。Linux内核:linux-3.4.2所用开发板:JZ2440 V3(S3C2440A)BusyBox : v1.20.0声...

2019-08-05 20:51:01 5898

转载 移植linux-3.4.2到JZ2440(下:启动文件系统、裁剪内核与制作补丁)

裁剪内核 由于之前划分的MTD里的kernel分区只有2M空间,此时我们的内核有2.35MB,所以需要对内核裁剪到小于2MB大小(当然也可以直接修改MTD分区)。查看linux-3.4.2/.config文件,执行make menuconfig命令去掉想要裁剪的内容: System Type-> SAMSUNG S3C24XX SoCs Support-&g...

2019-08-04 16:55:13 288

转载 安装交叉编译器arm-linux-gcc-4.3.2.tar.bz2

原理:下载软件包,解压到根目录,把解压文件夹下的 /usr/local/arm/4.3.2/bin加入环境变量的系统文件。 查看交叉编译工具链版本 arm−linux−gcc−v查看交叉编译工具链版本 查看环境变量 $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bi...

2019-08-04 09:43:25 382

转载 进程控制之exec函数

用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用一个全新的程序替换了当前进程的正文、数据、堆和栈段。有6种不同的exec函数可供使用,它们常常被统称为exec函数。这些exec函数使得UNIX...

2019-07-30 15:17:53 146

23vivi虚拟视频驱动的分析流程图.png

对vivi.c代码的分析使用流程图进行分析,简单明了,可以看懂,..

2019-12-22

17、触摸屏正倒计时器程序设计

使用通用定时器定时产生0.01秒时间单位,进而产生秒、分,在LCD上显示分钟、秒、秒小数各2位;用4个触摸屏按钮控制正计时、倒计时、启动、停止。在LCD上显示出当前的计时方式。 按正计时、倒计时按钮后,显示出开始的时间,分别为0和30分钟。

2018-12-24

万年历+stm32+触摸按键

22、基于定时器的万年历程序设计 使用定时器产生秒基时,编程实现万年历功能,在LCD上显示年月日、星期、时分秒。 设计触摸屏键盘校对时间,在LCD屏幕的下半部分设计出键盘,包含有“0、1、2、3、4、5、6、7、8、9、!、<”键,修改日期时间(!、<,表示确定和退格清除)。 提示:可以参考RTC例程,不能够使用RTC实现,否则成绩不及格。

2018-12-24

基于µC/OS-II的正倒计时器程序设计

使用绝对延时函数产生0.01秒基时,进而产生秒、分,在LCD上显示分钟、秒、秒小数各2位;用4个按钮控制正计时、倒计时、启动、停止。在LCD上显示出当前的计时方式。 系统任务:键盘扫描任务,键值处理任务,正计时任务,倒计时任务;优先级按此顺序。 键盘扫描任务借助邮箱,把4个按钮的按键值1~4发送出去,键值处理任务接收邮箱消息。 键值处理任务:等待接收邮箱数据;根据接收到的键值做不同处理:键值为1时对时间变量清0,显示出当前时间,设置运行任务标志为正计时任务的优先级,然后恢复当前计时的任务;键值为2时设置时间变量为30分钟,显示出当前时间,设置运行任务标志为倒计时任务的优先级,然后恢复当前计时的任务;键值为3时恢复当前计时的任务;键值为4时挂起当前计时的任务。 正计时任务用绝对延时函数延时0.01秒进行计时;在任务的循环体之前,挂起自己任务。 倒计时任务用绝对延时函数延时0.01秒做倒计时;在任务的循环体之前,挂起自己任务。

2018-12-24

空空如也

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

TA关注的人

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