上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 23 下一页

2013年9月20日

字符设备驱动笔记(二)

摘要: 怎么写LED驱动:①写框架②完善硬件的操作1>看原理图2>看2440手册3>单片机:直接操作物理地址 驱动程序:操作虚拟地址,物理地址用iorremap映射为虚拟地址myleds.c#include #include #include #include #include #include #include #include #include #include #define DEVICE_NAME "leds" /* 加载模式后,执行”cat /proc/devices”命令看到的设备名称 */#define LED_MAJOR 231 /* 主设备号 * 阅读全文

posted @ 2013-09-20 11:28 屁屁侠 阅读(667) 评论(0) 推荐(0) 编辑

2013年9月19日

字符设备驱动笔记(一)

摘要: 1.调用关系 应用程序:open read write 应用层 ----------------------------------------- c库 (swi val)================================================= 内核: system call interface (在异常处理函数里面,根据发生中断的原因,调用 不同的处理函数) ----------------------------------------- sys_open sys_read sys_write (VFS Virtua... 阅读全文

posted @ 2013-09-19 23:21 屁屁侠 阅读(469) 评论(0) 推荐(0) 编辑

2013年9月18日

.balignl 16,0xdeadbeef浅析

摘要: http://zqwt.012.blog.163.com/blog/static/12044684201031102956976/最近在分析u-boot的源代码,看到这一行: .balignl 16, 0xdeadbeef不知道为什么要这样写,0xdeadbeef,明显是个单词组,写在这里有何意义呢?查阅了众多资料的时候才晃然大悟。下面我一步步来说明:首先要弄明白.balignl的意思,这其实应该算是一个伪操作符,伪操作符的意思就是机器码里,并没有一个汇编指令与其对应,是由编译器来实现其功能的。.balign是意思是:以当前地址为开始开始,找到第一次出现的以第一个参数为整数倍的地址,并将其作为 阅读全文

posted @ 2013-09-18 15:29 屁屁侠 阅读(4842) 评论(0) 推荐(0) 编辑

2013年9月16日

securecrt5序列号

摘要: securecrt5序列号Name: Apollo InteractiveCompany: Apollo InteractiveSerial Number: 03-50-023223License Key: ABMVSR NA46JN V3D2GG TJDKFQ ACS3S4 B18P54 ZPCQWM 9756P2Issue Date: 01-20-2006=====================================V5.5.0 Build 371这个是5.0的可用 阅读全文

posted @ 2013-09-16 22:24 屁屁侠 阅读(5661) 评论(0) 推荐(0) 编辑

为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈

摘要: http://www.cnblogs.com/myblesh/archive/2012/04/07/2435737.html之前看了很多关于uboot的分析,其中就有说要为C语言的运行,准备好堆栈。 而自己在Uboot的start.S汇编代码中,关于系统初始化,也看到有堆栈指针初始化这个动作。但是,从来只是看到有人说系统初始化要初始化堆栈,即正确给堆栈指针sp赋值,但是却从来没有看到有人解释,为何要初始化堆栈。所以,接下来的内容,就是经过一定的探究,试图来解释一下,为何要初始化堆栈,即: 为何C语言的函数调用要用到堆栈,而汇编却不需要初始化堆栈。 要明白这个问题,首先要了解堆栈的作用。 关于堆 阅读全文

posted @ 2013-09-16 11:32 屁屁侠 阅读(3797) 评论(1) 推荐(0) 编辑

2013年9月15日

输入子系统框架

摘要: drivers/input/input.c input_init > err = class_register(&input_class);static const struct file_operations input_fops = { .owner = THIS_MODULE, .open = input_open_file,};怎么读按键?input_open_file struct input_handler *handler = input_table[iminor(inode) >> 5]; new_fops = fops_get(handler-> 阅读全文

posted @ 2013-09-15 18:22 屁屁侠 阅读(340) 评论(0) 推荐(0) 编辑

2013年9月13日

一条进程的栈区、堆区、数据区和代码区在内存中的映射

摘要: 一条进程的栈区、堆区、数据区和代码区在内存中的映射 1>栈区:主要用来存放局部变量, 传递参数, 存放函数的返回地址。.esp 始终指向栈顶, 栈中的数据越多, esp的值越小。 2>堆区:用于存放动态分配的对象, 当你使用 malloc和new 等进行分配时,所得到的空间就在堆中。动态分配得到的内存区域附带有分配信息, 所以你 能够 free和delete它们。 3>数据区:全局,静态和常量是分配在数据区中的,数据区包括bss(未初始化数据区)和初始化数据区。注意: 1)堆向高内存地址生长; 2)栈向低内存地址生长; 3)堆和栈相向而生,堆和栈之间有个临界点,称为stkbr 阅读全文

posted @ 2013-09-13 17:00 屁屁侠 阅读(5051) 评论(0) 推荐(2) 编辑

加载时域和运行时域

摘要: 我们经常用到“存储地址和连接地址不同”(术语上称为加载时域和运行时域)的情况:大多机器上电时是从地址0开始运行的,但是从地址0运行程序在性能方面总有很多限制,所以一般在开始的时候,使用与位置无关的指令将程序本身复制到它的连接地址处,然后使用向pc寄存器赋值的方法跳到连接地址开始的内存上去执行剩下的代码。http://zqwt.012.blog.163.com/blog/static/120446842010113002939616/ 阅读全文

posted @ 2013-09-13 15:20 屁屁侠 阅读(6503) 评论(0) 推荐(0) 编辑

bss段和.data的是是非非

摘要: 一般情况下,一个程序本质上都是由 bss段、data段、text段三个组成的——本概念是当前的计算机程序设计中是很重要的一个基本概念。而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题。在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域,一般在初始化时bss 段部分将会清零(bss段属于静态内存分配,即程序一开始就将其清零了)。比如,在C语言程序编译完成之后,已初始化的全局变量保存在.data 段中,未初始 阅读全文

posted @ 2013-09-13 15:08 屁屁侠 阅读(445) 评论(0) 推荐(0) 编辑

2013年9月12日

使用B或BL跳转时,下一条指令的地址的计算

摘要: 1.text2.global _start3_start:4 b step15 step1:6 ldr pc, =step27 step2:8 b step2反汇编代码:0: eaffffff b 0x44: e59ff000 ldr pc, [pc, #0] ; 0xc8: eafffffe b 0x8c: 30000008 tsteq r0, #8 ; 0x8b跳转指令:它是个相对跳转指令,其机器码格式如下:[31:28]位是条件码;[27:24]位为"1010"(0xeaffffff为... 阅读全文

posted @ 2013-09-12 16:41 屁屁侠 阅读(2138) 评论(0) 推荐(0) 编辑

上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 23 下一页

导航