自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 为何Android普通APP可以执行私有数据中的so文件,而system app却不可以?

本文基于Android 10的Sepolicy进行分析。在热更新或者减少安装包的大小实践中,可以看到普通APP可以在安装以后下载共享库文件,也就是.so文件,然后进行动态加载动作。同样的,如果是一个system app,想要执行类似地加载动态库的动作为什么会不行?首先普通APP的私有数据区的数据标签为app_data_file,而在selinu的源码中,可以找到如下策略:#Some apps ship with shared libraries and binaries that they

2020-12-28 13:19:27 916 2

原创 STM32外设驱动篇——DHT11温湿度传感器

已在STM32上进行过测试。//数据定义: //----以下变量均为全局变量-------- //----温度高8位== U8T_data_H------ //----温度低8位== U8T_data_L------ //----湿度高8位== U8RH_data_H----- //----湿度低8位== U8RH_data_L----- //----校验 8位 == U8

2016-01-03 19:03:38 24234 1

原创 Linux驱动移植——ENC28J60以太网控制器

开发板:E9(飞思卡尔的imx6q主控)内核:Linux 3.0.35PC OS:Ubuntu 11.04本文对ENC28J60模块的驱动移植进行简单梳理。该模块购于淘宝。按照一般移植要素,有如下几个步骤:1. 按照各引脚所对应的功能进行初始化操作。2.确定总线类型,在bsp中注册相应的主控制器信息。3.在bsp中添加设备信息。设备信息1. 硬件

2015-04-30 21:25:11 6149 2

原创 基于S3C2440的嵌入式Linux驱动——MMC/SD子系统解读(二)

在阅读本文之前,请先阅读以下基本知识,不然请略过本文。预备知识:熟读LDD3前十章节的内容。熟悉内核驱动模型(sysfs)和platform总线。简要了解过SD卡规范。本文的内容基于如下硬件和软件平台:目标平台:TQ2440 CPU:s3c2440内核版本:3.12.5基于SD规范4.10,即《SD Specifications Part 1 Phy

2014-05-15 22:53:36 3340

原创 基于S3C2440的嵌入式Linux驱动——MMC/SD子系统解读(一)

本文将介绍Linux中SD卡驱动。目标平台:TQ2440 CPU:s3c2440内核版本:3.12.6

2014-05-08 23:07:42 5373 1

原创 Linux字符设备驱动模版

本文将给出Linux字符设备驱动模版。驱动名为hello,内部提供一个简单的buffer,用户可以调用write向设备写入数据,并调用read从设备读出数据。请注意,若连续调用N次write,buffer中之保留最后一次write中的数据。每次read都将清空buffer。因此,必选写write设备,再read设备。下面的驱动代码适用于内核版本2.6.32,未在其他内本版本

2014-02-15 15:46:07 2563 2

原创 基于S3C2440的嵌入式Linux驱动——AT24C02(EEPROM I2C接口)驱动解读

本文将介绍Linux中AT24C02驱动。AT24C02是一种EEPROM,使用I2C接口来访问。在开发板中,使用I2C控制器0和AT24C02连接,这里就不给出原理图了,如需要,可以搜索TQ2440开发板的原理图。目标平台:TQ2440 CPU:s3c2440内核版本:2.6.32本文所有的代码均位于内核源码:linux/drivers/misc/eeprom/at24.

2014-01-12 16:23:31 13417 2

原创 S3C2440 Linux驱动移植——AT24C02(EEPROM)驱动

开发板:TQ2440内核:Linux 2.6.32PC OS:Ubuntu 11.041.配置内核打开I2C功能:打开杂项设备,该选项打开后,EEPROM也就打开了。  2. 修改代码修改文件: linux/arch/arm/mach-s3c2440/mach-smdk2440.c增加如下代码片段:#include stat

2014-01-11 19:04:51 10205 2

原创 STM32外设驱动篇——AT24C02(I2C接口)

SOC:STM32F103RCT6软件平台:STM官方库V3.5.0开发工具:Keil1. 摘要  本文章将给出STM32F103RCT6控制AT24C02的代码。如有疑问和错误,欢迎留言告之。2.硬件连接AT24C02使用I2C进行数据访问,板子上使用STM32的I2C控制器和AT24C02进行连接。具体来说,PB10作为SCL和AT24C02相连

2013-11-22 15:03:22 20196 4

原创 STM32导航篇

待续。。。。

2013-11-22 14:36:26 4031

原创 S3C2440 Linux驱动移植——SD卡驱动

开发板:TQ2440内核:Linux 2.6.32PC OS:Ubuntu 11.04本文将对SD卡驱动的移植做简要介绍。1.  添加板级信息打开arch/arm/mach-s3c2440/mach-smdk2440.c。添加如下结构体:/* Added by Yan Jun for SD/MMC driver *//***************

2013-09-20 18:08:38 4679 2

原创 S3C2440 Linux驱动移植——NAND驱动

开发板:TQ2440内核:Linux 2.6.32PC OS:Ubuntu 11.04    本文将对NAND驱动的移植进行简单介绍。其中,将对NAND控制器所需要的参数进行详细说明。1.  修改分区表打开文件arch/arm/plat-s3c24xx/common-smdk.c,修改mtd_partition结构体数组。修改后如下: static struct

2013-09-19 18:47:35 4267

原创 内核线程与普通进程的区别

内核线程与普通进程的区别1. 内核线程没有地址空间,这通过将mm指针设为NULL来实现。也就是说内核线程是没有用户上下文的进程。(Kernel threads do not have a process address space and therefore do not have an associatedmemory descriptor.Thus, the mm fi

2013-09-18 10:18:00 5242

原创 S3C2440 Linux驱动移植——LED heartbeat

开发板:TQ2440内核:Linux 2.6.32PC OS:Ubuntu 11.04    本文将对LED驱动的移植进行说明,本文的LED用于实现heartbeat,也就是系统启动以后,led会想人类的心脏一样,按固定频率进行闪烁。除非系统死机,否则LED是不会停止闪烁的。1. 配置内核,如下图2. 修改代码TQ2440开发板提供了4个LED可

2013-09-14 11:33:33 3834

原创 守护进程使用syslog函数打印信息(基于ARM-Linux)

本文将描述在使用inetd守护进程时,如何通过syslog函数打印消息到日志文件。为什么需要这样做呢?根据《UNIX网络编程 卷1:套接字联网API》一书第13章的描述:由于守护进程没有控制终端,它们不能把消fprintf到stderr上。从守护进程中登记消息的常用技巧就是调用syslog函数。而sysolog函数需要syslogd服务的支持。因此在编译busybox时需要使能sysl

2013-07-23 13:15:33 7895

原创 交叉编译alsa-lib

1. tar -xvf alsa-lib-1.0.27.1.tar.bz2 2. cd alsa-lib-1.0.27.13. CC=/home/yj423/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc ./configure --target=arm-=linux --host=i686-linux

2013-07-17 22:00:52 4103

原创 建立busybox的ftpd服务

开发板:TQ2440首先,在开发板建立一个目录用于传输文件的存放: mkdir /ftpdir修改inetd.conf并启动inetd服务:# vi /etc/inetd.conf21 stream tcp nowait root ftpd ftpd -w /ftpdir# inetd         // inetd会执行/etc/inetd.conf脚本

2013-06-05 14:01:02 12104 1

原创 ARM平台建立JFFS2根文件系统

开发板:TQ2440内核版本:2.6.32Nand flash:K9F2G08U0A本文将对JFFS2文件系统的编译和烧写做简单记录,本文的内容建立在如下三个基础上:1.  完成使用Busybox编译出所需要的工具。2.  完成添加根文件系统所需的目录和配置文件。3.  开发平台上有mkfs.jffs2工具(ubuntu自带该工具)。第一步:配置内核

2013-04-15 21:40:47 4880

原创 ARM平台下Uboot启动Linux内核前的必备条件

Linux内核是由Uboot进行调用的,在执行内核前,需要满足什么条件呢?我们来看下内核文档Documentation/arm/booting。内核版本为3.7.6。。。。。。。5. Calling the kernel image---------------------------Existing boot loaders:        MANDATORY

2013-02-06 16:38:37 3856

原创 网络子系统关键函数分析(未完待续)

内核版本:2.6.30CPU:S3C2440根据>一书,本文将对网络子系统用到的关键函数进行一一分析。下文将简称该书为>。本文还将提及另一本书:>,下文将简称>。函数列表及添加日期:alloc_netdev_mq        2013.1.29ether_setup                  2013.1.301.alloc_netdev_

2013-01-29 16:56:08 4357

原创 网络子系统——notifier测试程序

最近在看>,其中讲到了notifier,也就是通知链的使用。特别是在第八章,讲到了在注册链时,register_netdevice_notifier会重放当前系统已注册设备所有过去的NETDEV_REGISTER和NETDEV_UP。处于好奇,写了个测试程序,来看看是否的确这样。有关通知链的概念和使用请参看的第四章和第八章。测试程序如下:#include #include

2013-01-28 11:17:07 2805

原创 修正无法正常从SD卡加载根文件系统

本文假设参照ARM Linux使用SD卡根文件系统一文对SD卡进行分区,然后试图从SD加载EXT3文件系统。但是,在加载过程中会有如下报错:.......VFS: Cannot open root device "179:2" or unknown-block(179,2)Please append a correct "root=" boot optionKernel

2013-01-24 13:29:13 4822

转载 ARM Linux使用SD卡根文件系统

ChinaUnix网友:bluedrum      因此指导学员在arm-Linux使用JPT-7模块来跑GPS应用.Nand Flash 空间太小,而且所用的板经常烧不了根文件系统.所以决定用SD卡来跑根文件系统。 1.PC机上格式化SD卡         在桌面的PC机上用SD读卡器操作SD卡:      一般情况下PC机上第一个U盘整体设备结点是/dev/sda,第二

2013-01-24 13:08:56 5001

原创 Linux系统节拍定时器(system tick timer)

内核版本2.6.30CPU:S3C2440本文主要说明节拍定时器是如何添加到内核中的,不对定时器实现进行说明。ARM 平台的节拍定时器对象使用sys_timer来表示,该结构体位于arch/arm/include/asm/mach/time.h。/* * This is our kernel timer structure. * * - init *

2013-01-04 14:23:02 9258

原创 基于S3C2440的嵌入式Linux驱动——看门狗(watchdog)驱动解读

本文将介绍看门狗驱动的实现。目标平台:TQ2440 CPU:s3c2440内核版本:2.6.301. 看门狗概述   看门狗其实就是一个定时器,当该定时器溢出前必须对看门狗进行"喂狗“,如果不这样做,定时器溢出后则将复位CPU。   因此,看门狗通常用于对处于异常状态的CPU进行复位。   具体的概念请自行百度。2. S3C2440看门狗   s

2013-01-01 23:11:35 5084 2

原创 S3C2440 Linux驱动移植——按键

开发板:TQ2440内核版本:2.6.321. 硬件链接图   四个输入引脚:                            EINT0-----( GPF0  )----INPUT---K4                            EINT2-----( GPF2  )----INPUT---K3

2012-10-22 20:06:36 2873

原创 S3C2440 Linux驱动移植——LCD

PC主机:Ubuntu 10.4 和redhat 9.0目标板:TQ2440开发板 Linux内核:2.6.30屏幕型号:WXCAT35-TG3#001F 分辨率: 320X240本文将介绍如何移植LCD设备。在移植前,先配置下内核,将LCD设备编译进内核。1.移植移植LCD设置只须修改位于arch/arm/mach-s3c2440/mach-smdk2

2012-08-17 20:09:20 4430 3

转载 LCD调色板

LCD之调色板         对于一个显示设备,数据的更新率正比于画面的像素数和色彩深度的乘积。在嵌入式Linux系统中,受处理器资源配置和运算能力的制约,当使用大分辨率显示时(如在一些屏幕尺寸较大的终端上,往往需要640×480以上),需要降低显示的色彩深度。否则,由于数据处理负担过重会造成画面的抖动和不连贯。这时,调色板技术将发挥重要作用。ARM9内核的S3C2410在国

2012-08-11 14:50:29 1761

原创 排序算法

本文对学习过的排序算法做简要的总结。如发现错误,欢迎纠正。本文排序默认为升序。1. 插入排序插入排序也称为冒泡排序,学过C语言的应该都学习过。程序在下面。冒泡排序使用了两个for循环:外循环for和内循环for。原理如下:外循环for在第i次循环时,arr[0]至arr[i-1]已经排序完毕。第i次执行完以后,arr[0]至arr[i]排序完毕。也就是说,外循环fo

2012-08-05 11:29:24 1013

原创 基于S3C2440的嵌入式Linux驱动——Framebuffer子系统解读

本文将介绍Framebuffer子系统目标平台:TQ2440 CPU:s3c2440LCD设备:3.5英寸,分辨率320X2401. 概述Framebuffer,中文名字是帧缓冲,这个帧也就是一副图像所需要的数据。因此,帧缓冲其实就是LCD设备的驱动程序。Linux中,framebuffer子系统框架如下:核心层的代码以fbmem.c为主,核心层包括许多与具体硬

2012-08-04 14:55:55 5893 4

原创 使用GDB进行嵌入式远程调试

PC主机:Ubuntu 10.4 目标板:TQ2440开发板,linux内核2.6.30NOTE:为了使用gdb进行调试,强烈建议使用nfs服务,否则调试会非常麻烦。使用nfs服务可以参考:S3C2440挂载NFS文件系统1. 概述所谓远程调试,就是开发板上建立一个gdb服务端,同时待调试的程序也位于开发板,然后在PC机上使用gdb发起远程连接来进行调试。也就是说,在P

2012-08-04 12:40:30 7304

原创 Linux设备模型——设备驱动模型和sysfs文件系统解读

本文将对Linux系统中的sysfs进行简单的分析,要分析sysfs就必须分析内核的driver-model(驱动模型),两者是紧密联系的。在分析过程中,本文将以platform总线和spi主控制器的platform驱动为例来进行讲解。其实,platform机制是基于driver-model的,通过本文,也会对platform机制有个简单的了解。内核版本:2.6.301. What is

2012-07-29 19:34:15 21433 12

原创 Uboot烧写内核镜像和yaffs2文件系统

PC主机:Ubuntu 10.4 和redhat 9.0目标板:TQ2440开发板,linux内核2.6.30本文将简单记录烧写内核镜像和yaffs文件系统的步骤。本文假设你已经编译好内核,yaffs2已经制作好,同时Uboot中已经支持yaffs2。在开始烧写之前,PC平台必须开启TFTP服务,详见:Ubuntu-10.10下tftp服务器搭建 1.  烧写内核

2012-07-28 17:43:05 4730

原创 S3C2440 Linux驱动移植——SPI

PC主机:Ubuntu 10.4目标板:TQ2440开发板,linux内核2.6.32本文将从原理上讲解如何进行SPI驱动移植。作者希望在移植SPI驱动之前,您已对SPI子系统有所了解。本文的讲解将基于我所写的spi子系统分析:基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一)基于S3C2440的嵌入式Linux驱动——SPI子系统解读(二)

2012-07-24 10:03:08 4612

转载 DM644x达芬奇平台交叉编译工具链的制作

最近在做davinci平台的系统开发,用的是ti公司的dm6446芯片,这款芯片比较经典所以资料也挺多的,而且ti官方给提供一个dvsdk的软件包,里面包含了包括bootloader、kernel、fs、DSP算法及各种编解码codec,可谓给开发者提供了很多便利。当然里面也包含了arm-linux的交叉编译工具链,但是版本比较旧了,是基于gcc-4.2.0版本的,现在最新的gcc的版本已经到了4

2012-07-20 14:19:37 2374 2

原创 etc配置文件解读——inittab

PC主机:Ubuntu 和 redhat 9.0目标板:TQ2440开发板 cpu:s3c2440 linux内核:2.6.30NOTE:这里的讲解将针对嵌入式Linux,而不是一般的PC平台。如发现错误欢迎指正。首先,先来看下我的/etc/inittab是怎么样的,然后再详细说明。[root@yj423 /]#cat /etc/inittab ::sysin

2012-07-18 11:50:23 7371

原创 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(四)

本系列文章对Linux设备模型中的SPI子系统进行讲解。SPI子系统的讲解将分为4个部分。   第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一)   第二部分,该文将对SPI的主控制器(master)驱动进行描述。          基于S3C2440的嵌入式Linux驱动

2012-07-17 17:41:33 5592 3

原创 etc配置文件解读——fstab

PC主机:Ubuntu 和 redhat 9.0目标板:TQ2440开发板 cpu:s3c2440 linux内核:2.6.30下文中所输入的命令就是在开发板中执行。1. fstab的作用    fstab包含了需要挂载的设备,相应的挂载点,以及属性等。在两种情况下,fstab中的内容将被读取。    1) 当执行mount -a的时候,fstab配置文件中的所有条目将被一

2012-07-17 11:40:56 3752

原创 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(三)

该系列文章将分为四个部分:   第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一)   第二部分,该文将对SPI的主控制器(master)驱动进行描述。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(二)   第三部分,即本篇文章,该文将对SPI设备驱动,也称p

2012-07-16 14:49:30 4348

原创 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(二)

该系列文章将分为四个部分:   第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一)   第二部分,即本篇文章,该文将对SPI的主控制器(master)驱动进行描述。   第三部分,该文将对SPI设备驱动,也称protocol 驱动,进行讲解。基于S3C2440的嵌入式Linu

2012-07-16 13:52:16 4432

重大机械原理考研复习

很不错的复习资料 对考研很有帮助的 希望大家看看

2009-09-25

空空如也

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

TA关注的人

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