- 博客(27)
- 资源 (2)
- 收藏
- 关注
原创 C语言段错误
当我在linux下写c语言的时候经常会遇到段错误.所以就来细究一下. 段错误或段违规(segmentation violation)查看Expert C Programming(Peter Van Der Linden) Pg.156解释到段错误是由于内存管理单元(MMU)的异常所致,而该异常则通常是由于解除引用一个未初始化或非法的指针引起. 就是指针正在引用一个并
2012-03-02 11:13:15
1554
原创 android基础学习笔记1
数据存储l 创建数据库的步骤Ø 通过Helper建立数据库表结构 à onCreate,onuØ 调用helper实例,通过get***Database()得到DB对象Ø 通过DB对象实例调用增删改查方法进行操作l SQLiteOpenHelper使用方法 Ø getReadableDatabase() 得到一个可读的dbØ getWri
2012-02-25 08:43:51
1034
转载 copy_from_user 详解
copy_from_user函数的目的是从用户空间拷贝数据到内核空间,失败返回没有被拷贝的字节数,成功返回0.这么简单的一个函数却含盖了许多关于内核方面的知识,比如内核关于异常出错的处理.从用户空间拷贝数据到内核中时必须很小心,假如用户空间的数据地址是个非法的地址,或是超出用户空间的范围,或是那些地址还没有被映射到,都可能对内核产生很大的影响,如oops,或被造成系统安全的影响.所以
2011-11-11 14:34:05
51109
原创 ARM11 Peripheral port setup
今天在UBOOT代码前面加了个点灯程序但是却点不起来,很诧异.后来发现原来要在这部分代码之后才能点灯 ldr r0, =CONFIG_PERIPORT_BASE orr r0, r0, #CONFIG_PERIPORT_SIZE mcr p15,0,r0,c15,c2,4 在网上查了查,就是下面这个博客http://blog.youkuaiyun.com/a
2011-10-26 21:33:05
1487
转载 uboot 的nand驱动
s3c2410移植nand支持到uboot, 使用nand.c ,linux mtd 架构 【2】u-boot-1.1.6与1.1.4相比,两者有较大的不同,1.1.6 更像是复制了 kernel 的方法来实现。下面对nand flash的初始化代码nand_init()进行分析:1.如果定义(CONFIG_COMMANDS & CFG_CMD_NAND)没定义(C
2011-10-19 20:51:35
5447
转载 Arm 系统中常用的段分类说明
.text段是代码段。它用来放程序代码(code)。它通常是只读的。 .data段是数据段。它用来存放初始化了的(initailized)全局变量(global)和初始化了的静态变量(static)。它是可读可写的。.bss段是全局变量数据段。它用来存放未初始化的(u
2011-10-14 13:28:57
626
转载 S3C6410启动模式介绍
目前的ARM处理器都支持多种启动模式,S3C6410和以前的Samsung的ARM处理器一样,通过外部管脚OM[4:0]的拉高拉低来决定是从哪个存储设备上启动。我认为S3C6410的User Manual并没有说的很清楚,所以我在最开始使用的时候,也对其启动模式有一些误解,下面就
2011-10-13 18:26:00
538
转载 S3C6410系统控制
S3C6410系统控制器包括两部分:系统时钟控制和电源管理。 一、系统时钟将产生系统所需的时钟信号。共有三个PLL(锁相环)。其中第一个(ARM PLL)为ARMCLK专用,第二个(MAIN PLL)用于HCLK和PCLK,第三个(EXTRA PLL)用于外围设备,特别是
2011-10-13 18:24:08
1606
转载 ARM926EJ-S/ARM920T 协处理器 CP14, CP15详解
ARM 微处理器可支持多达 16 个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略 ARM 处理器和其他协处理器的指令。ARM 的协处理器指令主要用于 ARM 处理器初始化 ARM 协处理器的数据处理操作,以及在ARM 处理器的寄存
2011-10-06 09:51:12
1013
转载 cdev_alloc和cdev_add
转自:http://blog.chinaunix.net/u3/101356/showart_2050054.html内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct
2011-09-29 10:16:14
3087
转载 TASK_KILLABLE:Linux 中的新进程状态
来源:ibm 作者:Avinesh Kumar Linux® kernel 2.6.25 引入了一种新的进程状态,名为 TASK_KILLABLE,用于将进程置为睡眠状态,它可以替代有效但可能无法终止的 TASK_UNINTERRUPTIBLE 进程状态,以及易
2011-09-24 09:01:26
1434
原创 nfs服务器的搭建
宿主机:ubuntu9.04目标:fl2440在安装之前 先打开DNW或者超级终端,PC机和FL2440连好网线.确保 ubuntu下的 IP地址与开发板的 IP地址在同一网段。二者皆可以通过 ifconfig查询,以及通过它设置 IP地址。如果不在同一网段,请手动设置为同一网段。先ping一下如果成功则OK如果不行,则有可能是很多问题,特别是虚拟机.
2011-06-29 01:43:00
1454
转载 linux-2.6.26内核中ARM中断实现详解(3)
<br />四、中断处理模型 <br />要想弄清楚desc->handle_irq(irq, desc)和我们注册的中断有什么关联,就要了解中断处理模型了。 <br />4.1 中断处理模型结构 <br />中断处理模型如下图所示,<br /> <br />其中NR_IRQS表示最大的中断号,在include/asm/arch/irq.h中定义。 <br />irq_desc[]是一个指向irq_desc_t结构的数组, irq_desc_t结构是各个设备中断服务例程的描述符。Irq_desc_t结构体中
2011-05-14 11:12:00
466
转载 linux-2.6.26内核中ARM中断实现详解(2)
<br />三、中断处理过程 <br />这一节将以S3C2410为例,描述linux-2.6.26内核中,从中断开始,中断是如何一步一步执行到我们注册函数的。 <br />3.1 中断向量表 arch/arm/kernel/entry-armv.S<br />__vectors_start:<br /> swi SYS_ERROR0<br /> b vector_und + stubs_offset<br /> ldr pc,
2011-05-14 11:11:00
526
转载 linux-2.6.26内核中ARM中断实现详解(1)
<br />看了一些网络上关于linux中断实现的文章,感觉有一些写的非常好,在这里首先感谢他们的无私付出,然后也想再补充自己对一些问题的理解。先从函数注册引出问题吧。<br />一、中断注册方法<br />在linux内核中用于申请中断的函数是request_irq(),函数原型在Kernel/irq/manage.c中定义:<br />int request_irq(unsigned int irq, irq_handler_t handler,<br />
2011-05-14 11:10:00
605
转载 linux2.6.28和linux2.6.3xx内核 的struct device 中,bus_id的改变
按照国嵌的代码(LDD那本书上的代码也一样):struct device my_bus = { .bus_id = "my_bus0", .release = my_bus_release,};<br />static int my_match(struct device *dev, struct device_driver *driver){return !strncmp(dev->bus_id, driver->name, strlen(driver->name));}<br />编译时
2011-05-12 13:49:00
1077
转载 kobject&kset
简介:关于kobject和kset的介绍 kobjectTable of Contents1 Kobject 1.1 简介 1.2 定义 1.3 相关函数 2 Kobj type 3 kset 3.1 简介 3.2 定义 3.3 相关函数 1 Kobject1.1 简介Kobject 是Linux 2.6 引入的新的设备管理机制,在内核中由struct kobject数据结构 进行描述通过这个数据结构使所有设备在底层都具有统一的接口,kobject提供基本的对象管 理,是构成Linux2.6设备模型的核心结
2011-05-12 09:57:00
615
转载 往寄存器的相应位写值的函数
<br />/*s3c2410_gpio_cfgpin()函数*/<br />/*在寄存器的相应位添加功能值的函数*/<br />/*这个函数非常重要*/<br />/*比如,在寄存器GPH的[13:12]位添加10,就要用到此函数*/<br />/*[13:12]两位共有4种状态,10是S3C2410_GPH6_TXD2,00是S3C2410_GPH6_INP,<br />01是S3C2410_GPH6_OUTP,11是S3C2410_GPH6_nRTS1*/<br />/*<br />#define S
2011-05-11 19:15:00
2158
转载 关于LINUX某些驱动程序如GPIO编译的时候提示未定义的问题
<br />从网上下载了DS18B20的驱动,在编译的时候总是提示 S3C2410_GPF0,S3C2410_GPF0_INP,S3C2410_GPF0_OUTP未定义问题,在网上找了一些,原来是内核版本问题, 在2.6.29和2.6.32中定义不同,如下: <br />在移植mini2440的驱动到2.6.31的时候,编译提示S3C2410_GPB5、S3C2410_GPB5_OUTPUT等类似的定义缺失。遂在内核中相关的部分arch/arm/mach-2410/include/mach中的头文件寻觅
2011-05-10 09:46:00
1722
转载 s3c2410_gpio_setpin()
<br />s3c2410_gpio_setpin()在gpio.c中<br />作用:设置相应GPIO口的值,<br />如pin=S3C2410_GPB5 to=0 则:设置S3C2410_GPB5的输出值为0<br />如pin=S3C2410_GPB5 to=1 则:设置S3C2410_GPB5的输出值为1<br />void s3c2410_gpio_setpin(unsigned int pin, unsigned int to)<br />{<br /> void __i
2011-05-10 09:10:00
2889
转载 container_of 理解
<br />问题:如何通过结构中的某个变量获取结构本身的指针???<br />关于container_of见kernel.h中:<br />/**<br />* container_of - cast a member of a structure out to the containing structure<br />* @ptr: the pointer to the member.<br />* @type: the type of the container struct this
2011-04-06 00:32:00
470
原创 2.4基于虚拟机的Linux内核编译
<br />今天把linux的内核重新编译了一下,周折颇多.<br />我是用vmware虚拟机,linux是redhat9.0.<br />编译的是自带内核2.4.28-8.主要是想把模块加载的选中.<br />再就是体验下linux内核编译.<br /> <br />1、 在/usr/src/linux-2.4.28-8清楚下配置文件make distclean<br />2、 把arch/x86_64/defconfig 拷贝到linux-2.4.28-8的目录下配置内核make menuconf
2011-03-31 00:35:00
772
1
原创 编程珠玑读书笔记——出现次数为多次位图法的实现
是书上的一道问题,文件中保护至多10000000个记录,每条记录都是一个7位整数.你只有1mb的主存(我的编码完成所需内存会略大于1mb,可以用多通道解决,这里暂不实现)每个整数至多只能出现10次.只是把位图法的存储空间变为4bit即用4bit来表示该数的出现次数为0则文件中无此数以下是我自己用c实现的 编译器是vc6.0#define BITSPERWORD 32#define SHIFT 3#define MASK 0x07#define N 10000000int a[4*N/BITSPERWORD
2011-03-28 18:45:00
627
原创 编程珠玑读书笔记——串的转置算法
将一个具有n个元素的一维向量向左旋转i个位置.假若n = 8, i = 3, 那么向量abcdefgh 旋转后为defghabc.1、将待旋转的向量看作是ab两段,假设a比b短,将b分割为b1和b2使b2长度与a相等.交换a、b2,这样ab1b2变为b2b1a这样a已经在自己最终的位置上了.下面的工作就变成了旋转b2b1./********************************** Fction:将字符串按条件转置 char * p:字符串首地址 int t:所
2011-03-28 01:47:00
637
转载 S3c2440ALCD控制器配置实例
<br /> <br /> <br />发布: 2009-8-15 12:20 | 作者: master | 查看: 0次<br /> <br />本文转自:http://blog.ednchina.com/lihailin560/252722/message.aspx<br /><br />本文所用的是东华TFT液晶屏(WXCAT35),配置为常用的16BPP(5:6:5)模式。<br />先看一下TFT屏的操作时序图:<br /><br />图一 一般TFT型LCD时序图<br />外部引脚信号:
2011-03-25 09:00:00
731
原创 位图排序
这种表示法一般符合3个属性:1、输入范围相对要小2、不包含重复数据3、没有数据与单个整数(主键)以外的每一记录相关联Jon Bentley给出的实现#define BITSPERWORD 32#define SHIFT 5#define MASK 0x1f#defien N 10000000//如果要连续的静态内存空间 还是数组比较好 我用的时候用的是malloc//感觉没有数组好 而且 malloc还容易忘free int a[1+N/BITSPERWORD];//我自己写的时候 用的是 i/32 和
2011-03-24 22:57:00
411
原创 今天开通博客~
<br />今天正式开通我的技术博客~ <br />本博客仅用于记录学习过程、学习资料、学习感想.<br />备忘~<br />希望以后可以以此为平台和大家沟通交流学习方面的经验.<br />文笔不是太好.<br />也希望借此可以锻炼自己~<br />
2011-03-21 20:04:00
383
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人