自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

终南樵夫

厚积而薄发,积跬步以至千里(QQ:1130730531)

  • 博客(50)
  • 资源 (6)
  • 收藏
  • 关注

原创 总线驱动模型

总线:#include <linux/init.h>#include <linux/module.h>#include <linux/device.h>int mybus_match(struct device *dev, struct device_driver *drv){ printk(KERN_ALAR "mybus matching!\n"); return 0;}s

2017-09-29 17:10:13 299

原创 WeChat

# -*- coding: utf-8 -*-from Tkinter import *import tkMessageBoxfrom PIL import Image, ImageTkfrom ftplib import *from wxpy import *import osfrom collections import OrderedDictimport datetime...

2017-08-31 20:33:43 726

原创 用Python写的基于Tkinter 的FTP客户端

基于Tkinter的FTP客户端

2017-08-31 15:54:51 1979 1

原创 Git 基本使用方法总结

git 的基本用法

2016-12-16 16:33:53 446

原创 混杂设备驱动

基于混杂设备驱动模型的LED驱动程序

2016-12-04 13:00:46 836

原创 字符设备驱动应用---LED设备驱动实现

编写基于字符设备的LED驱动,并且编写用户代码测试驱动

2016-12-01 15:21:43 1081

原创 字符设备驱动

相关概念设备号设备号概念Linux系统将所有的字符设备抽象成文件呈献给用户,用户可以在/dev 目录下找到绝大部分的字符设备文件,比如/dev/tty等。应用程序访问设备的途径正是这些设备文件。这产生了一个问题:如何将这些设备文件跟具体的设备联系起来呢?事实上,Linux系统内部为了管理字符设备,给每个字符设备设置了唯一的“编号”,也叫设备号(其实就是一个32位的整数),通过这个设备号,内核可以知道

2016-11-30 15:38:06 638 1

原创 26.Remove Duplicates from Sorted Array

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this in place with

2016-04-05 18:57:54 200

原创 2016CVTE面试题(嵌入式实习)

1、找出1~1000 内的回文素数

2016-03-30 15:30:21 2111

原创 浅析操作系统----3、进程与线程

一、进程的定义一个进程就是一个正在执行程序的实例,由控制线程和地址空间组成。控制线程包括运行代码、数据段和堆栈段,地址空间就是一个进程所能访问到的内存地址的集合。为了方便管理,操作系统往往将一个进程用一个结构描述,有关进程的所有信息都放在这个结构里。例如在Linux系统里的,这样的结构就是task_struct。这个结构通常很大,因为进程的所有信息都在这个结构里,包括状态、性质、资源、和组织等

2016-03-13 22:12:31 289

原创 浅析操作系统----2、操作系统概述

一、参考书籍        《Modern Operating Systems》----Third Edition。为什么是它?理由很简单,博主手上就只有这一本介绍操作系统原理的书,当然博主也百度、知乎了一番,发现还是很多大牛推荐的,而且本人也预先看了两个章节,觉得讲的挺详细,就决定以这一本为主要教材吧。二、操作系统概述        对于怎么才能高效地学习这一门课,博主思考了很久,最

2016-03-13 11:56:21 369

原创 浅析操作系统----1、学前自我批判

转眼就大三了,时间飞快啊,学习嵌入式相关的知识也有一年多了。从一开始学习如何使用Linux到运用Linux进行开发,到现在学习Linux 内核的知识,虽然中间经历过了很多坎,但也长了大姿势。但是问题来了,对于很多知识都是只知道表象而不得其中的真谛,总感觉很虚。总结起来就是内功修炼的不够深厚,具体到知识的积累就是:数据结构、算法、编程语言、操作系统,计算机网络这些最重要的计算机课程都没有认真、系统地

2016-03-13 10:39:00 307

原创 Linux 多进程编程

一、知识背景学习Linux 进程控制理论无非就是学习进程的几个方面:创建、退出、等待其他进程结束、执行新的程序。但是在学习这些理论知识以及具体实现方法之前,有必要了解一下进程其他的基本知识点1、Linux 系统以进程为基本单位分配资源,以线程为基本单位进行调度;2、进程拥有自己的地址空间,进程相关所有的信息都存放在进程的地址空间里,换句话说,进程所能访问到的地址空间的集合就是进程的地址

2016-03-11 14:23:50 969

原创 ARM开发板系统移植-----rootfs的制作

前面两篇文章分别介绍了mini2440开发板上运行的bootloader和kernel,到这里系统启动后其实是停留在一个“僵死”的状态---无法挂载根文件系统。  这里将介绍如何制作一个根文件系统,并且挂载到内核中---即让内核能够访问到文件系统中的目录和文件。从用户的角度来看文件系统无非就是各个目录和文件,注意,这些目录和文件可以存在内存中,也可以存在Nand Flash 或者NOR Fla

2016-03-11 09:30:15 3142 1

原创 ARM开发板系统移植-----kernel的编译

前面一篇文章http://www.cnblogs.com/linzizhang/p/4817336.html介绍了开发板上系统软件的第一部分--bootloader的编译方法。  背景:把bootloader烧写到开发板的Nand Flash中后,开发板从Nand启动,硬件会自动将bootloader加载到内存中运行,bootloader将板载资源都初始化完成后,会停留在一个命令行界面,接收并

2016-03-11 09:30:12 1566

原创 ARM开发板系统移植-----u-boot的编译

本文和另外两篇姊妹篇都是为了说明如何裁剪出适合在mini2440 开发板上运行的Linux系统,以记录自己的学习成果。其中本文先介绍了嵌入式系统的软件组成部分,然后介绍编译出适合在mini2440开发板上运行的uboot的方法步骤。  说明:笔者使用的开发平台---RetHat linux系统,开发板---Friendly mini2440   在开始讲述系统移植的具体方法之前,先大致了解

2016-03-11 09:30:10 613

原创 Linux 消息队列编程

消息队列、信号量以及共享内存被称作 XSI IPC,它们均来自system V的IPC功能,因此具有许多共性。键和标识符:  内核中的每一种IPC结构(比如信号量、消息队列、共享内存)都用一个非负整数的标识符加以标示(如共享内存的shmid、信号量的semid、以及消息队列的msgid)。不同于文件描述符,IPC标识符不是一个小的非负整数,它是一个int型的整数,当一个标识符被创建,以后又

2016-03-11 09:30:08 319

原创 Linux 共享内存编程

共享内存允许系统内两个或多个进程共享同一块内存空间,并且数据不用在客户进程和服务器进程间复制,因此共享内存是通信速度最快的一种IPC。实现的机制简单描述如下:一个进程在系统中申请开辟了一块共享内存空间,然后使用这个共享内存空间的各个进程分别打开这个共享内存空间,并将这个内存空间映射到自己的进程空间上,这样各个进程就可以共同使用这个共享内存空间,就如同使用自己进程地址空间的内存一样。要实现共

2016-03-11 09:30:05 298

原创 Linux 信号量同步编程

前一篇文章概述了Linux 系统中信号量互斥编程,这篇文章正好是前一篇的姊妹篇----信号量同步。说它们是姊妹篇是因为它们都是利用了内核的信号量机制实现了进程间的通信。因为两者所解决的问题不同,因此它们使用的场景就会有所区别。信号量互斥主要解决的问题是:进程间需要同时访问某种资源,但是它们对资源的操作会互相影响对方的操作结果,因此需要一种机制实现让进程在访问资源时能禁止其他进程访问相同的资源。

2016-03-11 09:30:03 382

原创 Linux 信号量互斥编程

所谓信号量,其实就是一个数字。内核给这个数字赋予一定的含义,让它等于不同的值时所表示的意义不同。这样就可以用它来标示某种资源是否正被使用。信号的分类其实挺多的,主要还是二值和计数器。这里讨论二值现在有个文件,有两个进程要同时访问它。进程A 要往里面写入 "Math class is cancel",进程B 要往里面写入“English test”。正常情况下这两个信息会被完整的写入文件中。但是

2016-03-11 09:30:00 309

原创 Linux 字符设备驱动模型

Linux 字符设备驱动模型

2016-03-11 09:29:58 339

原创 Linux 内核链表

最近在看Linux内核的代码,第一个想了解的是Linux内部所使用的数据结构:链表。事实上Linux 内核使用的链表是双向循环链表.跟普通的链表一样,它的每个节点包含两个域:数据域和指针域,其中数据域很明确,就是用户自己的数据,没啥好说的,具体得看用户想通过链表组织什么数据。指针域是一个结构体如下:struct list_head{ struct list_hea

2016-03-11 09:29:56 270

原创 C++ 语法规则

C++ 中的布尔类型:布尔类型只占用一个bit ,但是如果连续定义多个布尔类型时,编译器可能会多个布尔类型定义在一起。true  编译器用1来表示。false  编译器用0来表示。将一个其他类型的数据赋给布尔类型变量:C++编译器会将所有的非0的值转换为true(1),将0 转化为false(0)。三木运算符   ? :    :将一个三目运算符作为左值: (a>b?a:b) = 3 C语

2016-03-11 09:29:53 3009

原创 Linux socket编程基础

一、Socket简介Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。几个定义:(1)IP地址:即依照TCP/IP协议分配给本地主机的网络地址,两个进程要通讯,任一进程首先要知道通讯对方的位置,即对方的IP。(2)端口号:用来辨别本地通讯进程,一个本地的进程在通讯时均会占用一个端口号,不同的进程端口号不同,因此在通讯前必须

2016-03-11 09:29:51 270

原创 ARM 平台上的Linux系统启动流程

开始学习嵌入式开发就一直在使用Linux系统作为学习的平台,到现在无论是PC机还是ARM开发板都已经能顺利地跑起了Linux系统,但是对Linux 的启动流程还是不甚了解。于是开始各种百度谷歌,当然看到了各路大神写的介绍。总的来说就是:bootloader ---->kernel---->root filesystem,当然还介绍了哪个阶段完成了哪些工作。比如bootloader 是一上电就拿到c

2016-03-11 09:29:48 293

原创 Linux 系统调用过程

系统调用是操作系统提供给用户(应用程序)的一组接口,每个系统调用都有一个对应的系统调用函数来完成相应的工作。用户通过这个接口向操作系统申请服务,如访问硬件,管理进程等等。但是因为用户程序运行在用户空间,而系统调用运行在内核空间,因此用户程序不能直接调用系统调用函数,我们经常看到的比如fork、open、write 等等函数实际上并不是真正的系统调用函数,他们都只是c库,在这些函数里将执行一个软中断

2016-03-11 09:29:46 400

原创 Linux 内核模块编写与安装

     Linux 系统一直在不断地发展,而相应地她的代码量也在不断的增大,直接导致的结果就是她的可执行镜像就变得越来越庞大。那么问题来了,如果将所有的镜像文件一次性地复制到内存中,那么所需的空间就非常大。但是有些服务是暂时或者很长时间内是不会被使用到的,那么就造成了空间的极大浪费。内核模块化就是为了解决这一个问题而被提出的一种解决方案。它通过一种机制,允许程序员将内核的一部分服务通过模块的方式...

2016-03-11 09:29:43 488

原创 不用比较语句比较两个数的大小

要求:编写函数求两个整数 a 和 b 之间的较大值。要求不能使用 if, while, switch, for, ?: 以及任何的比较语句。代码实现如下:int compare(int p1, p2){    int d = (unsigned int )(p1-p2)>>31;    int array[] = {p1,p2};    return array[d

2016-03-10 17:06:43 565

原创 华为笔试题

1、通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);【输入】 pInp

2016-03-10 15:28:03 425

原创 结构体大小的计算

结构体大小的计算需要遵循两个原则:1、结构体成员变量的偏移量必须是此变量大小的整数倍;2、整个结构体的大小必须是所有最大成员变量的整数倍如:struct A{    int I;    short  S;    float F;};sizeof(struct A) =  12。计算过程:I 的偏移量是0,0是4的整数倍,S的偏移量是4,4是1的整数倍;F的偏移量是5

2016-03-10 15:20:17 352

原创 交换两个数

1、使用中间变量c=a;a=b;b=c;缺点:浪费空间2、相加后相减a=a+b;b=a-b;a=a-b;缺点:可能溢出3、使用位运算a=a^b;b=a^b;a=a^b;缺点:无使用宏定义:#define swap(a,b)  ((a)^=(b)^=(a)^=(b))

2016-03-10 14:54:22 207

原创 数据结构----单链表分析及实现

一、 链表特点链表,即物理结构上非连续的顺序表,拥有顺序表的所有特点:1、n 个相同类型元素的有限集合;2、除了第一个元素只有一个后继、最后一个元素只有一个前驱以外,其他所有元素都有一个直接前驱和一个直接后继(类似于排队)。除此之外,链表相比于顺序存储的顺序表(例如数组)还有自己的特点:1、逻辑结构相邻的两个元素在物理上并非一定相邻;2、除了需要空间存储数据本身,还需要一个

2016-03-06 14:18:19 996

原创 基于mini2440 的 bootloader 设计 ---- 9、中断初始化

开发环境:               电脑系统:RedHat Enterprise Linux6   kernel version : linux-2.6.32               交叉工具链:arm-linux-xxx4.3.2                开发板版本:mini2440 S3C2440处理器  64M SDRAM   256M nand fla

2015-11-17 17:05:51 343

原创 基于mini2440 的 bootloader 设计 ---- 8、NandFlash 初始化

开发环境:               电脑系统:RedHat Enterprise Linux6   kernel version : linux-2.6.32               交叉工具链:arm-linux-xxx4.3.2                开发板版本:mini2440 S3C2440处理器  64M SDRAM   256M nand fla

2015-11-17 16:18:26 658

原创 基于mini2440 的 bootloader 设计 ---- 7、进入C大门

开发环境:               电脑系统:RedHat Enterprise Linux6   kernel version : linux-2.6.32               交叉工具链:arm-linux-xxx4.3.2                开发板版本:mini2440 S3C2440处理器  64M SDRAM   256M nand fla

2015-11-16 20:24:52 562

原创 基于mini2440 的 bootloader 设计 ---- 6、C程序运行环境搭建

开发环境:               电脑系统:RedHat Enterprise Linux6   kernel version : linux-2.6.32               交叉工具链:arm-linux-xxx4.3.2                开发板版本:mini2440 S3C2440处理器  64M SDRAM   256M nand fla

2015-11-16 19:32:40 478

原创 基于mini2440 的 bootloader 设计 ---- 5、内存初始化

开发环境:               电脑系统:RedHat Enterprise Linux6   kernel version : linux-2.6.32               交叉工具链:arm-linux-xxx4.3.2                开发板版本:mini2440 S3C2440处理器  64M SDRAM   256M nand fla

2015-11-12 09:10:01 595

原创 基于mini2440 的 bootloader 设计 ---- 4、CPU核心初始化

开发环境:               电脑系统:RedHat Enterprise Linux6   kernel version : linux-2.6.32               交叉工具链:arm-linux-xxx4.3.2                开发板版本:mini2440 S3C2440处理器  64M SDRAM   256M nand fla

2015-11-10 19:12:26 571

原创 基于mini2440 的 bootloader 设计 ---- 3、ARM指令学习

开发环境:               电脑系统:RedHat Enterprise Linux6   kernel version : linux-2.6.32               交叉工具链:arm-linux-xxx4.3.2                开发板版本:mini2440 S3C2440处理器  64M SDRAM   256M nand fla

2015-11-10 18:34:43 424

原创 基于mini2440 的 bootloader 设计 ---- 2、处理器介绍

开发环境:               电脑系统:RedHat Enterprise Linux6   kernel version : linux-2.6.32               交叉工具链:arm-linux-xxx4.3.2                开发板版本:mini2440 S3C2440处理器  64M SDRAM   256M nand fla

2015-11-10 13:36:45 498

GNUmake。pdf

GNU make的官方文档,详细介绍了make 工具以及Makefile 的编写。

2015-11-13

Embedded.Linux.Primmer.2nd.Edition

最近在看的一本关于嵌入式的书籍,虽然是英文版的,但是内容很详细,正在学习嵌入式的同学们可以下来看看

2015-11-06

supervivi-128M

友善之臂supervivi-128M 版本,本人的mini2440 正是用的这个

2015-11-06

UNIX环境高级编程

UNIX 及类UNIX环境编程的经典书籍。由W.Richard Stevens编写

2015-10-25

理电池管理芯片ds2762b

锂电池管理芯片ds2762b,可以对锂电池的电流,电压,电量和温度进行实时的监测。

2014-08-27

空空如也

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

TA关注的人

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