自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (2)
  • 收藏
  • 关注

原创 交叉编译器的安装过程

1、下载交叉编译器arm-linux-gcc-4.3.2.tar.bz22、解压到根目录下linux@ubuntu:~/arm-linux-gcc$ lsarm-linux-gcc-4.3.2.tar.bz2#解压到根目录linux@ubuntu:~/arm-linux-gcc$ sudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C /效果显示(4...

2019-10-27 17:33:50 1131

原创 Linux内核urb接口函数详解

1. urb简介        usb总线是一种轮询式总线,协议规定所有的数据传输都必须由主机发起,usb主机与设备之间是通过管道(pipe)传输的,管道两边分别对应主机中的数据缓冲区和设备侧的端点(endpoint),端点是通信的发送和接收点,要发送数据,只要把数据发到对应的端点就可以,而这个数据发送的动作由usb主机实现,驱动中只需确定接收端点,然后把数据提交给主机控制器,主机会把数据发送给接收端点,原理同i2c,uart类似。每

2020-05-28 17:06:11 1697

原创 设置ubuntu让它从串口0输出printk信息

第一步:设置vmware添加serial port, 使用文件作为串口第二步:sudo vim /etc/default/grub进行修改内容:GRUB_CMDLINE_LINUX_DEFAULT=""GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"第三步:sudo update-grubsudo reboot...

2020-05-26 13:10:26 677

原创 QT 仪表控件的设计与实现

实物图本设计实现对程序的鼠标拖动,点击右键实现关闭应用程序部分关键代码void Widget::paintEvent(QPaintEvent *ev){ QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing);// 抗锯齿 float scale = qMin(width(),height()); // 获取窗口最小值 //设置缩放比例和原点的先后顺序很重要

2020-05-21 16:57:58 1690

原创 QT中TCP实现文件传输功能

实物图:客户端(发送端)和服务端(接受端)为一体部分代码详情(注释详细):widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QFile>#include <QTcpServer>#include <QTcpSocket>namespace Ui {class Widget;}class Widget : public QWidget{

2020-05-20 12:55:43 957 1

原创 矢量字体的操作过程

第一步:解压 freetype-2.4.10.tar.bz2linux@ubuntu:~$ cd toollinux@ubuntu:~/tool$ mkdir freetypelinux@ubuntu:~/tool$ cd freetype#在此目录下添加矢量字体工具包 freetype-2.4.10.tar.bz2linux@ubuntu:~/tool/freetype$ tar -...

2019-11-29 22:57:26 237

原创 NFS挂载kernel和文件系统

步骤1:在电脑上安装nfs服务器1.执行命令 sudo apt-get install nfs-kernel-server2.执行命令:mkdir /home/linux/nfs 建立一个nfs服务的专有的文件夹,这里路径依自己喜好而定! 不过要记得这个路径3.建立好文件夹后,接着执行命令:sudo vim /etc/exports 配置nfs4.在文章的最后一行添加:/home/s...

2019-11-24 20:01:51 805

原创 linux内核parameters配置

默认配置:bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0bootdelay=2baudrate=115200ethaddr=08:00:3e:26:0a:5bipaddr=192.1...

2019-11-24 19:47:32 540

原创 没想好名字

video_manager.h#ifndef _VIDEO_MANAGER_H#define _VIDEO_MANAGER_Hstruct VideoDevice;struct VideoOpr;typedef struct VideoDevice T_VideoDevice, *PT_VideoDevice;typedef struct VideoOpr T_VideoOpr, *...

2019-11-03 22:45:50 122

原创 USB摄像头驱动

1、简单字符设备操作流程2、复杂字符设备操作流程(LCD)如何写分层驱动:分配某个结构体设置注册硬件相关操作3、V4L2字符设备操作流程(复杂字符设备)V4L2框架: video for linux version 23.1 虚拟视频驱动vivi.c分析:1.分配video_device2.设置3.注册:video_register_devicevivi_ini...

2019-10-11 23:20:03 938

原创 NAND FLASH驱动程序

NAND FLASH是一个存储芯片那么: 这样的操作很合理"读地址A的数据,把数据B写到地址A"问1. 原理图上NAND FLASH和S3C2440之间只有数据线,怎么传输地址?答1.在DATA0~DATA7上既传输数据,又传输地址当ALE为高电平时传输的是地址,问2. 从NAND FLASH芯片手册可知,要操作NAND FLASH需要先发出命令怎么传入命令?答2.在DATA0~D...

2019-10-06 23:51:15 237

原创 块设备驱动程序

linux下有三大设备:字符设备,块设备,网卡设备字符设备的控制流程字符设备程序编写流程:主设备号file_operation()register_chrdev()入口函数出口函数应用层对字符设备的操作方式有:查询方式:应用层不断查询状态的改变,(太累)休眠-唤醒:在状态未改变的情况下,应用层休眠,当状态发生改变时,发出中断对应用层进行唤醒。poll机制:设置一个定时...

2019-10-05 22:10:24 201

原创 网卡驱动

linux下有三大设备:字符设备,块设备,网卡设备回忆:字符设备的控制流程字符设备程序编写流程:主设备号file_operation()register_chrdev()入口函数出口函数块设备的控制流程1、网卡驱动1.1网卡驱动程序框架网卡驱动程序编写流程:分配一个 net_device 结构体设置2.1 发包函数: hard_start_xmit2.2...

2019-10-04 21:38:18 453

原创 linux的USB驱动分析

USB(UniversialSerial Bus通用串行总线)它是一种串行总线。在USB的接口协议中,USB被划分为USB主机和USB设备两部分,主机是USB的核心,他管理着每个USB设备,每一次USB数据通信都是必须由USB主机发起。本文也是针对USB主机部分展开介绍。1、Linux下的USB分层架构USB设备指具体的物理设备,如U盘、鼠标、键盘等。它通过物理USB线或集线器连接到USB...

2019-10-04 11:27:41 383

原创 USB驱动程序

1、概念介绍现象:把USB设备接到PC右下角弹出"发现android phone"跳出一个对话框,提示你安装驱动程序问1. 既然还没有"驱动程序",为何能知道是"android phone"答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你        &n...

2019-10-03 22:56:19 643

原创 输入子系统

之前自己写input子系统

2019-09-17 19:27:38 102

原创 字符设备驱动程序之异步通信

①查询:极度消耗资源②中断:read()函数,如果未发生中断将会一直等待③poll机制:指定超时时间以上共同特点:应用程序主动去读。有没有什么方法可以用驱动程序去提醒应用程序了?异步通信进程间发信号:要点;①注册信号处理函数②谁发③发给谁④怎么发目标;按下按键时,驱动通知应用程序;①应用程序:注册信号处理函数②谁发:驱动③发给谁:...

2019-09-11 22:35:37 155

原创 按键驱动----poll机制

应用程序:open,read,write,poll驱动程序:open,read,write,poll所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数。比如系统调用open、read、write、poll,与之对应的内核函数为:sys_open、sys_read、sys_write、sys_poll。static struct file_operation...

2019-09-08 23:40:38 163

原创 构建根文件系统

①u-boot:目的是启动内核②内核 :目的是启动应用程序③启动应用程序:需要构建根文件系统内核如何启动第一个应用程序1、第一个应用程序:标准输入,输出,错误if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0) printk(KERN_WARNING "Warning: unable to op...

2019-08-25 23:20:51 157

原创 内核启动流程分析

一、内核打补丁、编译、烧写、试验1、解压缩linux@ubuntu:~/linux$ tar -xjf linux-2.6.22.6.tar.bz22、打补丁linux@ubuntu:~/linux/linux-2.6.22.6$ patch -p1 < ../linux-2.6.22.6_jz2440_v2v3.patch ...

2019-08-13 23:02:32 202

原创 从零开始写bootloader2---第二阶段

从零开始写bootloader1—第一阶段第一节课,通过5大步骤完成了uboot得硬件初始化,下面开始uboot的第二阶段。第二阶段,主要任务是通过C语言,完成跳转内核,并执行内核...

2019-08-11 21:14:12 417

原创 从零开始写bootloader1---第一阶段

bootloader 目标:启动内核①从FLASH上把内核读入内存      a.能读flash      b.初始化内存/时钟/其他②启动      a.设置参数      b.跳转执行...

2019-08-09 22:04:48 590

原创 u-boot分析3---源码分析

硬件相关初始化          U-Boot 属于两阶段的 Bootloader,第一阶段的文件为 cpu/arm920t/start.S 和 board/100ask24x0/lowlevel_init.S,前者是平台相关的,后者是开发板相关的.1、U-Boot 第一阶段代码分析...

2019-08-08 10:20:58 219

原创 u-boot分析2---u-boot功能、结构、结合makefile

配置过程分析make 100ask24x0_config相当于执行(Makefile)MKCONFIG := $(SRCTREE)/mkconfig.........SRCTREE := $(CURDIR) /*CURDIR为当前目录*/.........100ask24x0_config : unconfig @$(MKCONFIG) $(@:_config=)...

2019-08-06 22:12:47 148

原创 u-boot分析1---u-boot打补丁、编译、烧写、试验

bootload主要作用引导linux内核uboot打补丁的制作流程u-boot文件打补丁的方法:解压官网下载好的uboot文件linux@ubuntu:~/uboot/uboot-1.1.6$ tar -xjf u-boot-1.1.6.tar.bz2打补丁diff -urN u-boot-1.1.6/board/100ask24x0/100ask24x0.c u-boot...

2019-08-06 15:35:49 690

原创 typedef函数指针用法

1.简单的函数指针的应用形式1:返回类型(*函数名)(参数表)char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); }第一行定义了一个指针变量pFun。首先我们根据前面提到的“形式1”认识到它是一个指向某种函数的指针,这种函数参数是一个int型...

2019-08-06 11:13:29 219

原创 jz2440裸机开发与分析:S3c2440ARM异常与中断体系详解8---定时器中断程序示例

这节课我们来写一个定时器的中断服务程序使用定时器来实现点灯计数查考资料就是第10章PWM TIMER我们先把这个结构图展示出来这个图的结构很好这里面肯定有一个clk(时钟),1 、每来一个clk(时钟)这个TCNTn减去12、 当TCNTn == TCMPn时,可以产生中断,也可以让对应的SPWM引脚反转,(比如说原来是高电平,发生之后电平转换成低电平)3、 TCNTn继续减1,当...

2019-08-04 22:24:03 379

原创 jz2440裸机开发与分析:S3c2440ARM异常与中断体系详解7---按键中断程序示例完善

首先main.c中我们初始化中断控制器初始化中断源假设按键按键就会产生中断,CPU就会跳到start.S 执行.text.global _start_start: b reset /*vector 0 一上电复位,是从0地址开始执行,跳到reset*/ ldr pc, und_addr /*vector 4 如果发生未定义指令异常,硬件就会在自动跳转0x04地址未定义指令异常处...

2019-08-02 12:54:24 194

原创 jz2440裸机开发与分析:S3c2440ARM异常与中断体系详解6---按键中断程序示例概述与初始

在前面的视频里我们举了一个例子,母亲看书被声音打断,远处的声音来源有多种多样,声音传入耳朵,再由耳朵传入大脑,整个过程涉及声音来源耳朵大脑,为了确保这个母亲看书的过程能够被声音打断,我们必须保证声音来源可以发出声音,耳朵没有聋,脑袋没有傻。中断处理流程1、中断初始化:①我们需要设置中断源,让它能够发出中断②设置中断控制器,让它能发出中断给CPU③设置CPU,CPSR有I位,是总开关2、...

2019-08-01 23:02:05 208

原创 jz2440裸机开发与分析:S3c2440ARM异常与中断体系详解5---_swi异常模示程序示例

这节我们再来演示swi的处理流程swi软件中断:software interrupt在前面的视频中我们讲过ARMCPU有7中模式(下图为7种模式),除了用户模式以外,其他6种都是特权模式,这些特权模式可以直接修改CPSR进入其他模式usr用户模式不能修改CPSR进入其他模式Linux应用程序一般运行于用户模式APP运行于usermode,(受限模式,不可访问硬件)APP想访问硬件...

2019-08-01 13:18:08 279

原创 MRS和MSR指令

一:下面先来说说状态寄存器ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器。每个位的含义如下图分成了4部分:1,条件标志位N(Negative), Z(Zero), C(Carry), V(Verflow)统称为条件标志位。ARM指令可以根据CPSR中的这些条件标志位来选择性的执行。2,Q标志位ARM v5的...

2019-08-01 09:11:47 4889 1

原创 jz2440裸机开发与分析:S3c2440ARM异常与中断体系详解4---_und异常模示程序示例

1、异常向量表 /******下面这些就是异常向量表*****/ .globl _start _start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, ...

2019-07-29 00:07:08 251

原创 Source Insight 快捷键

Source Insight 快捷键退出程序 : Alt+F4重画屏幕 : Ctrl+Alt+Space完成语法 : Ctrl+E复制一行 ...

2019-07-28 22:09:51 113

原创 jz2440裸机开发与分析:S3c2440ARM异常与中断体系详解3---Thumb指令集程序示例(不重要)

在上节视频里说ARMCPU有两种状态ARM State 每条指令会占据4byteThumb State 每条指令占据2byte我们说过Thumb指令集并不重要,本节演示把一个程序使用Thumb指令集来编译它使用上一章节的重定位代码,打开Makefile和Start.SMakefile文件all: arm-linux-gcc -c -o led.o led.c arm-...

2019-07-22 23:23:58 216

原创 jz2440裸机开发与分析:S3c2440ARM异常与中断体系详解2---CPU模式(Mode)状态(State)与寄存器

这节课我们来讲CPU的工作模式(Mode) 状态(State)寄存器7种Mode: usr(用户模式) sys(系统模式) undefined(und)(未定义模式) Supervisor(svc)(管理者模式) Abort(abt)(中止模式) IRQ(irq)(中断模式) FIQ(fiq)(快速中断模式)2种State: ARM state Thumb state寄...

2019-07-22 22:57:30 237

原创 jz2440裸机开发与分析:S3c2440ARM异常与中断体系详解1---概念引入与处理流程

取个场景解释中断。假设有个大房间里面有小房间,婴儿正在睡觉,他的妈妈在外面看书。问:这个母亲怎么才能知道这个小孩醒?过一会打开一次房门,看婴儿是否睡醒,让后接着看书 一直等到婴儿发出声音以后再过去查看,期间都在读书第一种 叫做查询方式:*优点:简单*缺点: 累写程序如何:while(1){ 1 read book(读书) 2 open door(...

2019-07-22 22:02:43 252

原创 jz2440裸机开发与分析:S3c2440代码重定位详解6---重定位清除BSS段的C函数实现

在前面,我们使用汇编程序来实现了重定位和清bss段,本节我们将使用C语言,实现重定位和清除bss段。1.打开start.S把原来的汇编代码删除改为调用C函数 /* 重定位text, rodata, data段整个程序 */ mov r1, #0 ldr r2, =_start /* 第1条指令运行时的地址 */ ldr r3, =__bss_sta...

2019-07-21 23:46:17 171

原创 jz2440裸机开发与分析:S3c2440代码重定位详解5---代码重定位与位置无关码

一个程序,由代码段、只读数据段、数据段、bss段等组成。程序一开始可以烧在Nor Flash上面,运行时代码段仍可以在Nor Flash运行,但对于数据段,就必须把数据段移到SDRAM中,因为只要在SDRAM里面,数据段的变量才能被写操作,把程序从一个位置移动到另一个位置,把这个过程就称为重定位。先梳理下把整个程序复制到SDRAM需要哪些技术细节:把程序从Flash复制到运行地址,链接脚本...

2019-07-21 22:04:55 270

原创 jz2440裸机开发与分析:S3c2440代码重定位详解4---拷贝代码和链接脚本的改进

本节进行拷贝代码的改进和链接脚本的改进。前面重定位时,需要ldrb命令从的Nor Flash读取1字节数据,再用strb命令将1字节数据写到SDRAM里面cpy: ldrb r4, [r1] /*首先从flash读出一个字节*/ strb r4, [r2] /*让后把数据写到SDRAM*/ add r1, r1, #1 add r2, r2, #1 c...

2019-07-21 20:48:28 218

原创 jz2440裸机开发与分析:S3c2440代码重定位详解3---链接脚本的解析

链接脚本的语法SECTIONS {...secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { contents } >region :phdr =fill...}解释: secname :段名 start :起始地址:运行时的地址(runtime addr);重定位地址(relocate addr) AT (...

2019-07-17 22:54:37 316 2

QtSpeenPanel.zip

本设计是一个动态的仪表盘设计,适合刚入学的小白学习使用,界面大气好看。实现了仪表盘的设计,和对仪表的鼠标拖动,并点击右键可以关闭应用程序,含有移动光晖https://blog.youkuaiyun.com/weixin_44152647/article/details/106261678

2020-05-22

QTFileTransmit.zip

QT5 TCP实现文件传输功能,客户端和服务端在同一个界面,方便大气,客户端作为文件发送端,服务端作为文件接收端,代码有详细的注解,适合刚入门的小白学习使用,https://blog.youkuaiyun.com/weixin_44152647/article/details/106234035

2020-05-20

空空如也

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

TA关注的人

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