自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

森子格

森子格

  • 博客(39)
  • 问答 (1)
  • 收藏
  • 关注

原创 《linux内核设计与实现》进程管理

文章目录1. 进程2. 进程描述符及任务结构2.1 分配进程描述符2.2 进程描述符的存放2.3 进程状态1. 进程进程:执行期的程序线程:进程中活动的对象不过在linux中,进程和线程并不特别区分,线程只是一种特殊的进程。在创建进程时,父进程会调用fork()创建子进程,fork系统调用会返回两次:一次回到父进程(返回子进程pid),另一次回到新产生的子进程(返回0)。int mai...

2020-03-04 17:26:44 480

原创 《linux内核设计与实现》从内核出发

文章目录1.内核源码树2.内核开发特点2.1 无libc库和无标准头文件2.2 GNU C2.3 没有内存保护机制2.4 不要轻易在内核中使用浮点数2.5 容积小而固定的栈1.内核源码树目录描述arch特定体系结构的源码block块设备I/O层crypto加密APIDocumentation内核源码文档drivers设备驱动程序fir...

2020-03-04 15:56:16 253

原创 《linux内核设计与实现》内核简介

文章目录1.应用程序、内核与硬件关系2.linux内核版本1.应用程序、内核与硬件关系在任何时候,处理器的活动都可以概括为以下三种之一:运行与用户空间,执行用户进程运行于内核空间,处于进程上下文,代表某个特定的进程执行运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定中断。2.linux内核版本其中从版本号如果是奇数,此内核就是开发版。如果是偶数,此内核则是稳定版...

2020-03-04 14:38:40 226

原创 命令行选项解析

文章目录1.getopt_long()函数2.option结构体有时候在linux上运行程序的时候,对后面跟着的-h -r --help等等选项的解析方法充满好奇,现在就来了解一下完成这个任务的函数吧。1.getopt_long()函数在了解具体函数前我们需要约定一些事情,文章开头-h -r --help虽然都是选项,但是我们需要把它分为两类,分别是双横的长选项--help和一横的短选项-h...

2019-10-12 16:38:33 471

原创 《数据结构》红黑树

文章目录1.红黑树性质2.基础2.1 节点结构内核版本为 linux4.2.1本文主要从红黑树的代码实现入手,来讨论linux内核中是如何实现红黑树的(主要是插入和删除操作),其中涉及到的函数有三个__rb_insert __rb_erase_augmented ____rb_erase_color,本文将用图示的方式解析这三个函数。1.红黑树性质节点是红色或者黑色根节点是黑色所有叶...

2019-10-10 11:24:53 496

原创 《2440裸机》UART

文章目录1.原理分析2.代码编写1.原理分析  UART(Universal Asynchronous Receiver/Transmitter),也叫做通用异步收发传输器(异步全双工收发)。一般UART可以用来打印调试信息,也可以外接模块。  由于是异步的方式,它们没有一个可以共同参照的时钟,所以收发双方要约定好发送数据的速率(也就是波特率),如果没有约定波特率的话就会发生这种情况:AR...

2019-08-30 13:11:33 331

原创 《2440裸机》时钟体系

文章目录1. 原理分析2. 程序编写1. 原理分析S3C2440A有两个锁相环(PLLs):一个(MPLL)用于FCLK、HCLK和PCLK,另一个(UPLL)专用于USB。其中FCLK用于CPU,HCLK用于AHB总线,PCLK用于APB总线。AHB(Advanced High performance Bus)高级高性能总线,用于高性能模块的连接。APB(Advanced Periph...

2019-08-29 17:45:46 304

原创 《2440裸机》基础知识

文章目录1.启动过程2.汇编知识1.启动过程从两种方式来简单介绍启动方式,分别是Nor启动和Nand启动Nor启动使用Nor启动时,NorFlash的基地址为0,片内RAM地址为0x4000,0000CPU读出Nor上第一个指令(前4个字节)执行。Nand启动使用Nand启动时,片内RAM的基地址为0,NorFlash是不可访问的状态。2440的硬件把Nand前4K内容搬移到片...

2019-08-24 22:38:24 438

原创 《LINUX设备驱动程序》读书笔记---------字符设备(三)

文章目录1.scull_load和scull_unload2.scull.c和scull.h3.scull测试这一节没有新的内容,只是将前面(一)(二)中的代码整合起来,形成一个让我们可以运行测试的scull驱动程序(补充了scull_unload脚本)。经过测试,按照如下流程可以在ubuntu14.04上正常运行。1.scull_load和scull_unloadscull_load#!...

2019-08-19 17:03:56 207

原创 《LINUX设备驱动程序》读书笔记---------字符设备(二)

文章目录1.scull内存使用1.scull内存使用1.1 内存管理函数定义在 <linux/slab.h>void *kmalloc(size_t size,int flags);void kfree(void *ptr);kmalloc:size代表的是分配空间的大小,flags代表分配方式(第八章讲细节),先默认它的值为GFP_KERNEL。kfree:用来释放内...

2019-08-09 16:34:18 245

原创 《LINUX设备驱动程序》读书笔记---------字符设备(一)

文章目录

2019-08-07 17:52:16 346

原创 《Zedboard》启动分析

文章目录1.概述1.概述POR/non-POR发生之后,PS的时钟PLLS使能,PS将开始运行片上POM中的 BOOTROM来引导系统。BOOTROM的主要任务就是将第一阶段引导加载程序(first stage boot loader 简称FSBL)加载到片上内存(OCM)中,之后程序转到OCM中运行。FSBL接过接力棒,主要完成两个任务,其一便是为PL部分加载bitstream,其二...

2019-08-06 15:09:31 999 1

原创 《Zedboard》第一个工程helloworld

文章目录打开VIVADO后 点击创建工程(Create Project)在进入工程创建引导窗口后,按照官方教程中第一个工程进行如下配置。需要注意的地方都已经用红色框框圈住。其中 Project name、Project Location 可根据需要进行自定义设置Board 选择与官方文档不同,需要选择 zedboard工程创建好了之后,接下来创建嵌入式处理器项目,点击左侧...

2019-08-02 15:48:25 1558 1

原创 《Zedboard》环境搭建

文章目录1. Vivado下载2. Cypress CY7C64225 驱动下载3. PetaLinux下载1. Vivado下载方式1.登录官网下载最新版http://www.xilinx.com/support/download.html无论是否在官网下载,都需要到官网用邮箱注册一个账号,安装时会用到这个账号方式2.百度网盘下载链接:https://pan.baidu.com/s...

2019-08-02 15:17:40 1780

原创 《LINUX设备驱动程序》读书笔记---------模块接口(存疑)

文章目录1.module_init和module_exit1.1 函数调用方式1.2 内核引导时加载1.3 模块加载1.module_init和module_exit1.1 函数调用方式#ifndef MODULE#define module_init(x) __initcall(x);#define module_exit(x) __exitcall(x);#else /* MO...

2019-07-23 14:32:03 528

原创 《LINUX设备驱动程序》读书笔记---------环境搭建

文章目录1.下载内核源码2. 安装基本工具软件3.编译内核环境:Ubuntu16.04 + Linux 4.15.0-54-generic注:书中所用内核是Linux 2.6,而我用的内核版本是Linux 4.15,可能之后书中一些代码需要根据内核更新而进行相应的改变。1.下载内核源码1.查看当前内核版本方法一:使用命令 uname -a 查看系统内核版本号及系统名称方法二:使用命...

2019-07-12 11:35:39 464

原创 System V IPC对象

文章目录

2019-05-31 16:30:22 618

原创 线程

文章目录1.线程介绍1.1线程的共享和私有资源2.NPTL线程库2.1创建线程 pthread_create1.线程介绍轻量级进程在同一进程中创建的线程共享该进程的地址空间LINUX里同样用task_struct来描述一个线程。进程和线程都参与统一的调度。1.1线程的共享和私有资源共享资源1.可执行的指令2.静态数据3.进程中打开的文件描述符4.信号处理函数5.当前...

2019-05-28 15:39:27 176

原创 I2C

文章目录1. 平台简述2. I2C介绍3. I2C配置3.1 I2C初始化1. 平台简述所用开发板为基于ARM Cortex-M0 的LPC111x/LPC11Cxx 系列微控制器低功耗,32 位微控制器家族中的一员,面向8、16 位微处理应用,具有高性能,低功耗,简单指令集,统一编址寻址等优点,而且,相对于现在市场上存在的8/16 位架构来说,它有效的降低了代码长度。2. I2C介绍...

2019-05-24 11:06:39 1212

原创 7.驱动小知识点

文章目录1.linux内核内存的使用1.1 整体结构图1.linux内核内存的使用1.1 整体结构图vmalloc 物理上不连续 会睡眠, 效率低,一般不得已在分配大块内存时才使用kmalloc(<128k) 基于kmem_cache 物理连续 常用GFP_KERNEL, 中断时要用GFP_ATOMIC(不可睡眠) 适合分配小于128K的get_free_pages(...

2019-05-21 17:23:10 307

原创 驱动中定时器例子

驱动代码#include <linux/module.h>#include <linux/types.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/mm.h>#include <linux/sched.h>#include &lt...

2019-05-20 21:30:57 541

原创 zigbee网络分析

一个zigbee网络是由什么决定的?PAN ID其全称是Personal Area Network ID,意即网络的ID(即网络标识符)。ZigBee协议使用一个16位的个域网标志符(PAN ID)来标识一个网络。ZStack允许用两种方式配置PAN ID:当ZDAPP_CONFIG_PAN_ID值不设置为0xFFFF时,那么设备建立或加入网络的PAN ID由ZDAPP_CON...

2019-05-20 21:30:45 958

原创 6.延时相关

jiffies  全局变量jiffies是用来记录自系统启动以来产生的节拍的总数,Linux核心每隔固定周期会发生一次timer interrupt(IRQ 0),Jiffies会相应的加1  启动时,内核会将该变量初始化为0,此后,每次时钟中断处理程序都会增加该变量的值。  一秒内时钟中断的次数等于HZ,所以jiffies一秒增加的值也就是HZ短延时  需要接近或者短与一个ji...

2019-05-17 20:03:44 683

原创 zigbee初始化流程

首先看zmain.c 中的main函数main函数里主要完成了系统的各种初始化,最后启动系统。 int main( void ) { osal_int_disable( INTS_ALL );// 关闭中断 HAL_BOARD_INIT();// 初始化系统时钟 zmain_vdd_check();// 检查芯片电压 InitBoard...

2019-05-17 18:53:34 3200

原创 中断下半部测试代码

#include <linux/init.h>#include <linux/module.h>#include <linux/platform_device.h>#include <linux/of.h> #include <linux/interrupt.h>#include <linux/fs.h> //f...

2019-05-16 20:29:23 233

原创 中断上半部测试代码

#include <linux/init.h>#include <linux/module.h>#include <linux/platform_device.h>#include <linux/of.h> #include <linux/interrupt.h>struct resource *key_res=NULL;...

2019-05-16 20:20:53 232

原创 5.中断机制

linux中断机制和其他操作系统的异同   相同的: 中断上下文切换,如保留现场,中断向量表跳转,调用中断处理程序,恢复现场等。  linux 特有的: 中断上半部,中断下半部...

2019-05-16 19:55:14 392

原创 4.阻塞,非阻塞和异步通知

驱动中阻塞和非阻塞,异步通知是什么? ---------- | | -------- | 进程 | <-------------->| 设备 | | | -------- ---------- 阻塞: 进程等待设备资源可用, 等...

2019-05-15 20:05:03 1189

原创 3.linux设备驱动中的并发控制

为什么要进行并发控制?  并发会导致竞态的发生。 竞态: 一个资源被并发执行的任务同时访问时,就会出现竞争。此时的状态就是竞态。  需保证一个资源在一个时间只能被一个任务访问,才能避免混乱。即并发控制并发控制机制有哪些?互斥体互斥体是专门用来做互斥的, 和二元的信号量类似, static struct mutex lock; /* 定义mutex */ mutex_i...

2019-05-15 19:28:01 502

原创 2.简单的平台设备

代码pwm_buzzer平台设备驱动

2019-05-14 22:55:58 244

原创 pwm_buzzer平台设备驱动

设备树节点pwm0_buzzer { compatible = "pwm0,buzzer"; reg = <0x114000A0 0x1>,<0x139D0000 0x5>; };驱动文件#include <linux/init.h>#include <linux/module.h>#include <linux/...

2019-05-10 20:04:42 607

原创 led字符设备驱动

#include <linux/init.h>#include <linux/module.h>#include <linux/fs.h> //for MKDEV register_chrdev_region#include <linux/cdev.h> //字符设备头文件#include <asm/io.h> #def...

2019-05-10 16:42:54 457

原创 1.简单的字符设备

首先

2019-05-10 16:13:35 429

原创 0.内核模块

实验所用硬件开发板为exynos4412什么是内核模块? 可在运行时添加到内核中的代码被称为“模块”。使用内核模块有什么优点?  1、减小内核体积,因为模块本身不被编译到内核镜像里面。  2、可以在内核中添加或删除功能而不用重新编译内核内核模块和应用程序有什么不同?应用程序内核模块从头到尾单任务预先注册进内核,被动的被调用的运行空间在应用空间运行空...

2019-05-10 16:03:20 347

原创 进程

并发程序设计:同一时刻实现不同的功能多进程机制和多线程机制程序:磁盘中存储的代码文件,是静态的。进程:程序一次执行的过程,是动态的。(程序执行和资源管理的最小单位)主要进程标识  进程号 (PID)  进程号(PPID)  PID唯一的标识一个进程Linux中的进程包含三个段  数据段:存放全局变量,常数以及动态数据分配的数据空间  正文段:存放的是程序中的代码  堆栈段...

2019-05-06 13:13:40 232

原创 动态库和静态库制作

库: 可执行代码的二进制形式静态库:编译时会被链接到目标代码中,程序运行时将不再需要该静态库,因此体积较大动态库:编译时不会链接到目标代码中,而是在运行时才被载入,运行时需要该动态库,因此体积较小创建静态库:# gcc main.c -L. -lfunc 创建静态库用ar命令,它将.o转换成.a  # gcc -c func.c 生成目标文件 (func.o)  # ar ...

2019-04-30 18:49:17 219

原创 目录和文件

目录: 打开目录函数 #include<sys/types.h> #include<dirent.h> DIR *opendir(const char *name); DIR *fdopendir(int fd); 两个函数返回:若成功则返回一个目录流,若出错则为NULL,并设置erron opendir用于打开一个给定路径的目录...

2019-04-30 18:24:58 147

原创 文件I/O

文件I/O:不带缓冲通过文件描述符来访问文件常用函数:open()/creat()close()read()write()lseek()open()函数原型int open(const char *pathname,int flags,mode_t mode)函数功能打开由pathname指定的文件,以flags方式。如果文件不存在,则由mode指...

2019-04-30 17:23:01 121

原创 标准I/O

标准I/O介绍标准I/O在系统调用(文件I/O)的基础上构造,便于用户使用,但相对与系统调用多了缓冲机制。文件缓冲文件系统给有两类:带缓冲文件系统(高级磁盘IO)和 非缓冲文件系统(低级磁盘IO)。缓冲文件系统是为了减少 系统调用(system call)read write的调用频率,降低操作系统负担。缓冲文件系统,系统自动在内存中为每一个正在使用的文件开辟一个缓冲区,...

2019-04-30 17:02:53 261

空空如也

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

TA关注的人

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