- 博客(27)
- 资源 (2)
- 收藏
- 关注
原创 lighttpd 配置
1.安装http://www.lighttpd.nettar -zxvf lighttpd-1.4.41.tar.gzcd lighttpd-1.4.41./configure (如果出现pcre-config的错误,请先执行yum install pcre-devel ,再执行./configure)makemake install2. 配
2016-09-12 13:56:06
2306
原创 使用NandFlash、ubi文件系统时需要的问题
使用nandflash、ubi文件系统,有时候会出现下面的情况,用uboot命令行烧写ubi文件系统后,第一次启动没有问题,但之后的启动就都会出问题,一般是因为多检测到了几个坏块导致的启动不了。可能的原因是写nandflash时没有跳过空页,也就是说在写某页数据之前,没有判断该页数据是否全是0xff。可以在uboot(版本1.1.6)中做如下修改:在drivers/nand/n
2015-04-09 16:39:17
2356
原创 FL2440开发板spi驱动分析(3)
本文分析SPI发送数据的过程,首先构造spi_ioc_transfer结构,再调用ioctl函数发送。 如测试程序中的transfer函数。
2014-10-04 09:40:21
677
原创 FL2440开发板spi驱动分析(2)
根据上文中的移植步骤,可以看出主要工作由两方面,一是定义SPI控制器(struct platform_device s3c_device_spi0,struct s3c2410_spi_info s3c2410_spi0_platdata)。二是定义SPI从设备(spi_board_info s3c2410_spi0_board[]),因为SPI总线上可以接多个从设备,所以是个结构体数组。
2014-10-03 20:11:16
453
原创 FL2440开发板spi驱动分析(1)
1.配置内核 内核是用的开发板里的2.6.28.7,需要选上 Device Drivers->SPI support->Debug support for SPI drivers Bitbanging SPI master Samsung S3C24XX series SPI User mode SPI device driver support2.修改arc
2014-09-14 15:57:56
488
转载 个人对kobject的一点研究
在LINUX中最让人不解的大概就是/sys下面的内容了下面首先让我们来创建一个简单的platform设备,并从这个设备的视角进行深入,在此篇文章的深入过程中,我们只看kobeject的模型我所使用的内核版本号为2.6.26,操作系统的内核版本号为2.6.27-7,暂未发现2.6.27-7与2.6.26的重大不同首先写一个简单的模块#include #include
2014-07-18 17:56:25
328
原创 platform设备和驱动的注册(2)
上篇文章中分析了platform_device_register()函数,本文接着分析platform_driver_register()函数。static struct platform_driver driver = { .driver = { .name = "spi-pnx8xxx", .owner = THIS_MODULE, .bus = &platform_bus_
2014-07-18 17:51:49
465
原创 platform设备和驱动的注册(1)
SPI、I2C等集成的外设控制器可以认为是platform设备,这些设备的注册过程以及其驱动的注册过程都会用到platform_device_register()和platform_driver_register()函数,本文就分析这两个函数。首先,先看下我自己在用的开发板内核源代码中和SPI控制器有关的代码。a.SPI控制器用platform_device结构表示,本例中的CPU
2014-07-18 17:51:40
676
原创 platform初始化
在linux设备驱动中,有一类设备被称为"平台设备",通常Soc系统中集成的独立外设单元都被当做平台设备处理。如I2C,SPI等都归纳为平台设备。我正在用的开发板,就将SPI控制器作为平台设备进行注册,其注册时会调用platform_device_register()进行注册。
2014-07-17 17:41:40
921
原创 设备初始化及/sys下devices等目录的建立
设备初始化和总线初始化类似,需要建立devices_kset和/sys/devices目录。不同点是设备初始化还会建立/sys/dev、/sys/dev/block和/sys/dev/char目录代码如下,kset_create_and_add()的分析见上篇文章,kobject_create_and_add比较简单这里不再分析了,只讲下第二个参数,如果是NULL,表示在/sys下
2014-07-17 12:07:15
1767
原创 总线初始化及/sys下bus目录的建立
设备模型中,关心总线,设备,驱动这三个实体,总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动。相反,在系统每注册一个驱动的时候,寻找与之匹配的设备,匹配是由总线来完成的。本文分析总线的初始化,即bus_kset的建立过程。bus_kset是基础,其他总线如platform,SPI,I2C初始化时都会调用bus_register()进行总线注册,他们都会将自己的父kse
2014-07-17 11:19:19
1526
原创 实际根文件系统的挂载-sys_mount()
实际根文件系统的挂载是在prepare_namespace()中实现的。init/do_mounts.c首先调用mount_root()将实际的根文件系统挂载在rootfs文件系统的"/root"目录下,并将当前目录切换到实际根文件系统的根目录下;接着调用sys_mount(".", "/", NULL, MS_MOVE, NULL)将实际文件系统的挂载点移到(MS_MOVE)ro
2014-07-05 16:14:49
3405
原创 sys_mknod()
上篇文章中讲到rootfs文件系统挂载后,会先创建”/dev”目录,之后会创建设备文件"/dev/console",本文就分析下该设备文件的建立过程,文中还会见到与字符设备密切相关的chrdev_open()函数1.default_rootfsnoinitramfs.c-->default_rootfs()static int __init default_rootfs(void)
2014-06-29 14:41:31
2182
原创 rootfs下目录的建立--sys_mkdir()
参考文章http://blog.youkuaiyun.com/new_abc/article/details/7688880http://blog.youkuaiyun.com/new_abc/article/details/7689137http://blog.youkuaiyun.com/new_abc/article/details/7712715a.rootfs注册和挂载后,会先建立几个目录,之后
2014-06-29 10:21:55
2703
原创 rootfs文件系统的注册和挂载
Rootfs文件系统是由init_rootfs()完成的。 int __init init_rootfs(void){int err; err = bdi_init(&ramfs_backing_dev_info);if (err)return err;err = register_filesystem(&rootfs_fs_type);if (err)
2014-06-21 11:06:21
595
原创 sysfs文件系统注册-sysfs_init()
Sysfs文件系统的注册由sysfs_init()函数完成的。int __init sysfs_init(void){int err = -ENOMEM; sysfs_dir_cachep = kmem_cache_create("sysfs_dir_cache", sizeof(struct sysfs_dirent), 0, 0, NULL);
2014-06-20 10:49:18
1089
原创 近期学习计划
1.sysfs文件系统注册和挂载2.rootfs文件系统注册和挂载3.设备模型kobject、kset、ktype4.open系统调用5.字符设备驱动程序, 分析chrdev_init(),chrdev_open(),cdev_init(),cdev_add()等函数。 戮仙>>一天一更新,Running man一周一更新,希望我的学习也能这样,不断更新,天天向上。
2014-06-20 10:47:57
388
转载 解析 Linux 中的 VFS 文件系统机制
本文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS 中的各实际文件系统,例如 ext2,jffs 等。本文侧重于通过具体的代码分析来解释 Linux 内核中 VFS 的内在机制
2014-06-20 10:43:50
442
原创 uboot中nand flash代码分析(3)
上文中提到第一次调用nand_block_isbad()函数时,会建立BBT。下面分析该函数的执行流程。nand_block_isbad(&nand_info[0], offset);该函数的作用如注释中所说"Check if block at offset is bad"该函数的第一个参数指向nand_info[0],之前的nand_init()会初始化该数组。
2014-05-15 16:11:55
2371
原创 uboot中nand flash代码分析(2)
本例中,nand flash BBT(Bad Block Table)的建立是在读取环境变量时建立的。先看下uboot环境变量的处理流程start_armboot() arch/arm/lib/board.c-->init_sequence[] arch/arm/lib/board.c-->env_init() common/en
2014-05-08 10:18:30
839
原创 uboot中nand flash代码分析(1)
一、和nand flash 相关的参数#define CONFIG_CMD_NAND1#define NAND_MAX_CHIPS1#define CONFIG_SYS_MAX_NAND_DEVICE1#define CONFIG_SYS_NAND_BASE0xB0000000#define CONFIG_SYS_NAND_ALE_ADDR(1 #define CONFIG
2014-05-06 19:33:19
1629
转载 (整理)LDAP安装和使用
1.Windows安装使用OpenLDAP 参照http://www.micmiu.com/enterprise-app/sso/openldap-windows-config/ a.下载openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.rar b.打开控制台,切换到openLDAP安装目录,启动openLDAP,命令
2014-05-04 09:35:22
678
原创 浅析uboot网络程序结构
这篇文章主要讲解uboo/net目录下的部分源代码。主要是 net.c,eth.c,ip3912.c 中的代码。本例用的是xxxx公司yyyy系列的zzzz的CPU, 网卡是IP173(和IP3912兼容)。 本文主要分三部分 网口设备的检测,网口设备的注册,应用程序(ping)的执行流程(一) 检测网口设备先从Arch/arm/lib/board.c讲起,uboot执行完汇编程
2014-04-02 11:42:02
4534
原创 fw_printenv 配置文件 nand flash
(一)、概述Linux应用程序可以通过uboot/tools/env目录下的fw_printenv程序,查看,修改,删除Uboot的环境变量。如:system("/usr/sbin/fw_setenv ipaddr 192.168.17.100");或者在命令行 # /usr/sbin/fw_setenv ipaddr 192.168.17.100(二)、编译1
2014-03-26 10:49:13
2452
Practical Fast 1-D DCT Algorithms with 11 Mutltiplications
2018-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人