- 博客(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 955 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 24513 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 6160 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 3358
原创 基于S3C2440的嵌入式Linux驱动——MMC/SD子系统解读(一)
本文将介绍Linux中SD卡驱动。目标平台:TQ2440 CPU:s3c2440内核版本:3.12.6
2014-05-08 23:07:42 5393 1
原创 Linux字符设备驱动模版
本文将给出Linux字符设备驱动模版。驱动名为hello,内部提供一个简单的buffer,用户可以调用write向设备写入数据,并调用read从设备读出数据。请注意,若连续调用N次write,buffer中之保留最后一次write中的数据。每次read都将清空buffer。因此,必选写write设备,再read设备。下面的驱动代码适用于内核版本2.6.32,未在其他内本版本
2014-02-15 15:46:07 2573 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 13450 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 10227 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 20243 4
原创 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 4700 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 4278
原创 内核线程与普通进程的区别
内核线程与普通进程的区别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 5262
原创 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 3851
原创 守护进程使用syslog函数打印信息(基于ARM-Linux)
本文将描述在使用inetd守护进程时,如何通过syslog函数打印消息到日志文件。为什么需要这样做呢?根据《UNIX网络编程 卷1:套接字联网API》一书第13章的描述:由于守护进程没有控制终端,它们不能把消fprintf到stderr上。从守护进程中登记消息的常用技巧就是调用syslog函数。而sysolog函数需要syslogd服务的支持。因此在编译busybox时需要使能sysl
2013-07-23 13:15:33 7917
原创 交叉编译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 4111
原创 建立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 12135 1
原创 ARM平台建立JFFS2根文件系统
开发板:TQ2440内核版本:2.6.32Nand flash:K9F2G08U0A本文将对JFFS2文件系统的编译和烧写做简单记录,本文的内容建立在如下三个基础上:1. 完成使用Busybox编译出所需要的工具。2. 完成添加根文件系统所需的目录和配置文件。3. 开发平台上有mkfs.jffs2工具(ubuntu自带该工具)。第一步:配置内核
2013-04-15 21:40:47 4890
原创 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 3869
原创 网络子系统关键函数分析(未完待续)
内核版本:2.6.30CPU:S3C2440根据>一书,本文将对网络子系统用到的关键函数进行一一分析。下文将简称该书为>。本文还将提及另一本书:>,下文将简称>。函数列表及添加日期:alloc_netdev_mq 2013.1.29ether_setup 2013.1.301.alloc_netdev_
2013-01-29 16:56:08 4370
原创 网络子系统——notifier测试程序
最近在看>,其中讲到了notifier,也就是通知链的使用。特别是在第八章,讲到了在注册链时,register_netdevice_notifier会重放当前系统已注册设备所有过去的NETDEV_REGISTER和NETDEV_UP。处于好奇,写了个测试程序,来看看是否的确这样。有关通知链的概念和使用请参看的第四章和第八章。测试程序如下:#include #include
2013-01-28 11:17:07 2837
原创 修正无法正常从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 4839
转载 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 5018
原创 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 9279
原创 基于S3C2440的嵌入式Linux驱动——看门狗(watchdog)驱动解读
本文将介绍看门狗驱动的实现。目标平台:TQ2440 CPU:s3c2440内核版本:2.6.301. 看门狗概述 看门狗其实就是一个定时器,当该定时器溢出前必须对看门狗进行"喂狗“,如果不这样做,定时器溢出后则将复位CPU。 因此,看门狗通常用于对处于异常状态的CPU进行复位。 具体的概念请自行百度。2. S3C2440看门狗 s
2013-01-01 23:11:35 5095 2
原创 S3C2440 Linux驱动移植——按键
开发板:TQ2440内核版本:2.6.321. 硬件链接图 四个输入引脚: EINT0-----( GPF0 )----INPUT---K4 EINT2-----( GPF2 )----INPUT---K3
2012-10-22 20:06:36 2881
原创 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 4446 3
转载 LCD调色板
LCD之调色板 对于一个显示设备,数据的更新率正比于画面的像素数和色彩深度的乘积。在嵌入式Linux系统中,受处理器资源配置和运算能力的制约,当使用大分辨率显示时(如在一些屏幕尺寸较大的终端上,往往需要640×480以上),需要降低显示的色彩深度。否则,由于数据处理负担过重会造成画面的抖动和不连贯。这时,调色板技术将发挥重要作用。ARM9内核的S3C2410在国
2012-08-11 14:50:29 1770
原创 排序算法
本文对学习过的排序算法做简要的总结。如发现错误,欢迎纠正。本文排序默认为升序。1. 插入排序插入排序也称为冒泡排序,学过C语言的应该都学习过。程序在下面。冒泡排序使用了两个for循环:外循环for和内循环for。原理如下:外循环for在第i次循环时,arr[0]至arr[i-1]已经排序完毕。第i次执行完以后,arr[0]至arr[i]排序完毕。也就是说,外循环fo
2012-08-05 11:29:24 1024
原创 基于S3C2440的嵌入式Linux驱动——Framebuffer子系统解读
本文将介绍Framebuffer子系统目标平台:TQ2440 CPU:s3c2440LCD设备:3.5英寸,分辨率320X2401. 概述Framebuffer,中文名字是帧缓冲,这个帧也就是一副图像所需要的数据。因此,帧缓冲其实就是LCD设备的驱动程序。Linux中,framebuffer子系统框架如下:核心层的代码以fbmem.c为主,核心层包括许多与具体硬
2012-08-04 14:55:55 5909 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 7339
原创 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 21513 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 4740
原创 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 4628
转载 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 2384 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 7410
原创 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(四)
本系列文章对Linux设备模型中的SPI子系统进行讲解。SPI子系统的讲解将分为4个部分。 第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一) 第二部分,该文将对SPI的主控制器(master)驱动进行描述。 基于S3C2440的嵌入式Linux驱动
2012-07-17 17:41:33 5611 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 3771
原创 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(三)
该系列文章将分为四个部分: 第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一) 第二部分,该文将对SPI的主控制器(master)驱动进行描述。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(二) 第三部分,即本篇文章,该文将对SPI设备驱动,也称p
2012-07-16 14:49:30 4362
原创 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(二)
该系列文章将分为四个部分: 第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一) 第二部分,即本篇文章,该文将对SPI的主控制器(master)驱动进行描述。 第三部分,该文将对SPI设备驱动,也称protocol 驱动,进行讲解。基于S3C2440的嵌入式Linu
2012-07-16 13:52:16 4452
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人