- 博客(30)
- 资源 (1)
- 收藏
- 关注
原创 Linux中断的沿触发和电平触发
Linux中断的沿触发和电平触发 初始化中断向量表时,有一个重要的操作就是set_irq_handler。这个函数参数一般为handle_edge_irq或者handle_level_irq。对于边缘中断,使用handle_edge_irq作参数;对于电平中断,使用handle_level_irq作为中断。那这两个函数有什么区别呢?1. handle_edge_irqkernel源
2013-09-29 14:28:18 11185
原创 Linux内核下进程切换
Linux内核进程切换 本文主要参考了Understanding The LinuxKernel 和水木精华区的分析进程切换宏 switch_to 。感谢相关的作者!本文中有部分内容直接从上面提到的文章中重复,仅仅是为了方便大家阅读。本文中提到的所有内核代码可以到LinuxCross Reference上查阅。欢迎转载本文,转载请保留这份声明。 本文仅讨论内核进程的切换,而不涉
2013-09-23 16:04:00 8293
原创 Linux内核下的同步
内核中的同步摘自《Linux内核之旅》内核只要存在任务交错执行,就必然会存在对共享数据的并发问题,也就必然存在对数据的保护。而内核中任务交错执行的原因归根结底还是由于内核任务调度造成的。我们下面归纳一下内核中同步的原因。同步原因l 中断——中断几乎可以在任何时刻异步发生,也就可能随时打断当前正在执行的代码。l 睡眠及与用户空间的同步——在内核执行的进程可能会睡眠,这就会唤醒
2013-09-23 16:00:22 1132
原创 泰国游玩介绍
为啥选择泰国很多朋友让我写攻略,其实谈不上攻略,顶多算个游记。因为我们两人都是第一次出境游,路线和选择都不是最优的,顶多算是最随自己心意的。我俩出游的目的就是吃喝玩乐,吃想吃的,玩要玩的尽兴,晚上随便几点睡,早上不用起大早。赶场式游玩,还不如不玩。很多人是因为没有过自助出境游,所以担心得很多,所以我这个初次者的游记可能跟很多经验者的游记不一样,尽量打消无经验者的顾虑。今年6月打定主意要出境
2013-09-18 16:48:54 1921
原创 青岛游玩介绍
4月4日:1. 如家(福州南路店)——劈柴院豆腐脑步行270米到海洋地质所站,乘坐218路空调车到河南路站下,步行150米。2. 劈柴院豆腐脑——栈桥(附近有九龙餐厅)步行290米到大沽路站,乘坐 2路(或 5路电车, 2路电车, 6路)到栈桥站下。3. 栈桥——鲁迅公园步行290米到栈桥(广西路)站,乘坐6路(或 202路环线, 26路, 隧道2路, 3
2013-09-18 16:47:52 1767
原创 厦门游玩介绍
如果确定去厦门玩了……存下来留着…… 厦门绝对是一个让你留恋往返的城市,在浪漫的鼓浪屿,你会发现时间真的是用来浪费的。男生要带一个爱笑爱吃爱拍照的女生同行,女生要找一个会摄影有方向感的男生同行。关于住: 1.强烈推荐1930咖啡旅馆http://www.1930-hotel.com/show.htm地址:龙头路245号 价格:50-390双标间B双
2013-09-18 16:42:28 2282
原创 嵌入式学习 ---- 基本概念
一、处理器的基本概念1、微处理器与微控制器2、寄存器A、通用寄存器B、浮点寄存器3、中断A、轮询B、中断4、字节序A、小端模式:低位字节存放在低地址B、大端模式:高位字节存放在低地址下图分别是小端模式和大端模式:5、边界对齐边界对齐(boundary alignment)是处理器为了提高处理性能而对存取数据的起始地
2013-09-11 19:38:36 1051
原创 学习好资源 ---- 硬件基础
1、硬件基础:http://www.allaboutcircuits.com/http://stardict.sourceforge.net/
2013-09-10 09:44:28 978
原创 南京美食一条龙
一.新街口附近 1。杨凌裤带面 面身足有两米长 美食地址:大洋百货与东方商城之间的巷子里 2。西安罐罐面,面好汤浓,价格便宜,美食地址:明瓦廊巷子到底左拐 3。酸菜猪肉饺子,采用东北特制酸菜为原料,美食地址:中山南路三元巷路口 4。下岗豆腐脑,做豆腐脑时在原材料黄豆里面加了点花生一起榨汁,所以喝起来有股清香,美食地址:张府园苏果超市对面
2013-09-04 16:03:59 5561
转载 进程和线程的联系和区别
进程和线程的联系和区别定义:一、进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。二、线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程;进程和线程的关系:
2013-08-28 20:22:22 771
转载 Linux延时函数
前言代码编写经常会涉及到延时处理,而Linux环境下系统最常用的延时函数不过如下几个sleep/usleep/nanosleep,分别提供秒级、微秒级、纳秒级延时功能,这几个函数我们几乎天天都在使用,但我们是否准确安全的使用了他们? 先来看一下几个函数的原型:unsigned int sleep(unsigned int seconds);int usleep(useconds
2013-08-28 20:19:19 11631
转载 进程上下文、中断上下文、内核代表…
《LKD2》P21对于进程上下文的解释是:当程序执行系统调用或触发了某个异常,陷入内核空间。此时我们称“内核代表进程执行”并处于进程上下文。对于此段我的理解是进程的程序代码只能运行于用户空间,只有当执行了系统调用时才会在内核空间执行。程序执行到一半的时候由于并没有结束,会产生一些资源使用情况,中间数据等,这些需要一并传递到内核空间。所以要暂存为一个进程上下文到某个地方,程序代码在内核空间执
2013-08-28 09:09:17 1201 3
原创 SIGSEGV段错误问题定位方法(踩内存)
现象: 程序死的时候出现屏幕打印如下: Program received signal SIGSEGV, Segmentation fault.定位: 1、bt,打印当前调用栈。如果不是踩了栈的内存,那么这一个命令可以看出死在哪里。 2、如果bt打印消息如下:0x00000000 in ?? () 那么基本可以确定是栈被踩了。 栈被踩一般而言是
2013-08-22 21:53:55 17497
转载 Vim 操作练级攻略
http://www.csdn.net/article/2011-09-08/304226注:有时间了再统一按照说明,一一操作,暂时留下地址。
2013-07-11 21:20:35 683
转载 expected identifier before numeric constant
1、当有下列语句时将出现此状况[cpp] view plaincopyprint?printf("\n\t\tSales as percentage of inventory:\t\t%f".\ 100*((float)total_cars_sold[brand]/(float) cars_in_st
2013-04-02 17:02:52 2896
原创 指针数组与数组指针
二维数组:int a[3][4] = {{1 , 2, 3, 4},{5, 6, 7, 8},{9, 8, 7, 6}};指针数组:int *pa[4];说明:1、指针数组实际上就是数组,只是数组里面的元素是指针,即例子中的数组存放的是pa[0],pa[1],pa[2]和pa[3]。2、与二维数组之间的赋值,需要单个赋值,即*pa = a;*(pa+
2013-02-25 11:24:07 627
原创 订票
https://github.com/zzdhidden/12306/raw/master/12306BookingAssistant.user.js是12306的证书有问题, 下载证书安装一下:http://www.12306.cn/mormhweb/ggxxfw/wbyyzj/201106/srca12306.zip或者:先开一下https://dynamic.12306.cn/o
2013-01-09 12:52:05 528
转载 u-boot分析——struct gd_t与struct bd_t
gd_t和bd_t是u-boot中两个重要的数据结构,在初始化操作很多都要靠这两个数据结构来保存或传递.分别定义在./include/asm/global_data.h和./include/asm/u_boot.h1. gd_t : global data数据结构定义,位于文件 include/asm-arm/global_data.h。其成员主要是一些全局的系统初始化参数。需要用到时用宏
2012-12-27 10:37:15 919
转载 register volatile gd_t *gd asm ("r8")
如下的两个结构,我们主要的是关心下面一行声明:#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")这个声明告诉编译器使用寄存器r8来存储gd_t类型的指针gd,即这个定义声明了一个指针,并且指明了它的存储位置。register表示变量放在机器的寄存器volatile用于指定变量的值可以
2012-12-27 10:33:55 1981
转载 Linux系统时间与RTC时间
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3637782Linux的RTC驱动相对还是比较简单的,可以将它作为一个普通的字符型设备,或者一个misc设备,也可以是一个平台设备,这都没有关系,主要还是对rtc_ops这个文件操作结构体中的成员填充,这里主要涉及到两个方面比较重要: 1. 在Linux中有
2012-12-13 16:45:20 16076 1
转载 PowerPC启动方式总结
1、基础1.1 CPU地址空间地址空间(local address map)就是core能够访问到的36bit的地址空间。这个地址空间包括各个功能模块能够访问的地址空间,DDR SDRAM空间以及CCSR地址空间。CPU core是怎么访问SOC上的各个功能模块的?比如eLBC控制器,DDR控制器,PCI控制器等等。通过LAW(Local Access Window)寄存器来配置。每个LA
2012-12-09 15:53:35 12436 4
原创 编译报request for member '***' in something not a structure or union的原因,以及解决方法
目前碰到的是将用'.'点操作符来连接结构体指针所指向的成员变量;其实用结构体指针引用其成员时只能使用'->'操作符。
2012-11-15 20:39:13 12013
原创 字符设备学习总结
字符设备驱动框架1、测试函数1)open(),打开字符设备;2)ioctl(),操作字符设备;3)close(),关闭字符设备;2、字符设备函数1)smartchip _init(),模块加载;(insmod smartChip.ko)A、register_chrdev_region(),申请设备号;B、alloc_chrdev_region(),申请设备号;C
2012-11-09 16:44:04 897
原创 冒泡排序算法
#include void bubble_sort_1(int *temp_array, int len){int i, j;int temp_num;for(i = 0; i {for(j = 0; j {if(temp_array[j] > temp_array[j+1]){temp_num = temp_array[j];tem
2012-11-04 15:29:02 504
原创 VS2008 编译出错 error C2143解决方法
1>d:\microsoft visual studio 9.0\vc\include\cstdio(39) : error C2143: 语法错误 : 缺少“{”(在“:”的前面)1>d:\microsoft visual studio 9.0\vc\include\cstdio(39) : error C2059: 语法错误 : “:”1>d:\microsoft visual stu
2012-11-04 14:12:41 5921 1
原创 通过I2C读取EEPROM中寄存器的值,获得的值越界
最近,通过I2C去读取EEPROM中寄存器的值,指定了读取两个字节的长度,同时用short型数据类型存放读出的数据,通过使用0x%x打印出数据,结果是一个四个字节的数据,即0xffffxxxx,前两个字节都是F,后面两个字节是寄存器中的数据。困惑是既然是用一个short型的数据类型来存放两个字节的数据,为什么会变成了四个字节,short型的数据类型应该是存放不下四个字节的数据的。【问题得到解决
2012-10-31 22:55:35 2692
原创 关于C语言指针(不断更新......)
1. 指针数组和数组指针int *array[10]说明:声明了array是一个拥有10个元素的数组,其中每个元素都是一个指针,该指针指向整型;(一个数组,存放着10个指针)int (*array)[10]说明:声明了*array是一个拥有10个元素的数组,其中每
2011-10-14 22:17:26 556
原创 ARM汇编二三事(不断更新......)
ARM写汇编程序时:1. AREA这一段代码不能够顶格写,可以用TAB键后移一位,否则ADS软件会报错;2. 在C语言中引入汇编程序时,要加入extern关键字的声明,同时在汇编程序段中要用EXPORT导出要被C语言使用的程序名;3. 在C语言中内嵌会变函数时,使用_
2011-10-13 20:35:53 578
原创 几种排序算法整理
1. 关于冒泡排序算法:Bubble Sort:冒泡法排序时,用两个for循环实现;循环开始时,首先用第一个元素与第二个元素比较,根据升序或是降序的条件来决定是否要交换位置;不管是否交换了位置,内循环都自增一次,然后继续进行根据条件交换位置,直到内循环达到了N-1-i
2011-10-03 19:54:07 752
原创 C语言实现素数,最小公倍数,最大公约数,回文数,质数,完数,水仙花数算法
1. 关于素数的算法:用两个for循环,外循环是要求的范围,内循环是从2到sqrt(外循环范围中的一个值+1);设置一个flag,来表明是否是素数;具体实现:#include #include int main (void){int i, j;bool flag = 0; //设立标志位,0表示非素数,1表示素数;for(i
2011-10-03 19:46:42 2865 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人