- 博客(304)
- 资源 (15)
- 收藏
- 关注
原创 Linux中块设备驱动程序分析
基于《Linux设备驱动程序》书中的sbull程序以对Linux块设备驱动总结分析。开始之前先来了解这个块设备中的核心数据结构:struct sbull_dev { int size; /* Device size in sectors */ u8 *data;
2014-07-04 10:39:11 1809
转载 进程上下文和中断上下文、原子上下文的区别
内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核空间,而 用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限。内核模块运行在最高级别(内核态),这个级下所有的操作都受系统信 任,而应用程序运行在较低级别(用户态)。在这个级别,处理器控制着对硬件的直接访问以及对内存的非授权访问。内核态和用户态有自己的内存映射,即自己的 地址空间。 系统的两种不同
2014-03-26 20:03:19 4573
转载 Linux内核设计与实现(8)---中断和中断处理
之前写过中断相关的文章了,详细分析过ARM底层中断实现过程,这篇文章着重从操作系统设计层面理解中断系统。1.中断中断:是外围设备产生的异步事件,不同设备,中断号不同;比如在经典PC上,IRQ 0是时钟中断,IRQ 1是键盘中断;对于连接于PCI总线上的设备,中断还可以是动态分配的。异常:与中断不同,异常的产生必须考虑与处理器时钟同步,比如除零,缺页,软中断等,都是由处理器自身产生的同步
2014-03-26 19:08:10 979
原创 Uboot移植之board.c中函数指针数组
typedef int (init_fnc_t) (void); //int InitFunction() (void);此时表示申明了一个函数名为InitFunction的函数, 函数没有任何的形参,返回值类型为int型。对于 typedef int(init_fnc_t) (void); 就是对一个 int (void)类型的函数类型进行取别名init_fnc_t。 我们可以利用这个别名
2014-03-12 13:43:52 1370
原创 Linux下获取硬盘相关信息
熟悉Linux的都知道,Linux下硬盘的命名规则是had、hdb…sda、sdb之类的。但是,如何才能知道机器上到底有多少块硬盘呢? 刚开始,我以为/dev目录下会有所体现结果我发现设备文件存在并不代表这个设备。那么怎么办才好呢。后来我发现fdisk可以得到硬盘的数量。于是就阅读了一下fdisk的源代码。果然找到了Linux获取硬盘数量的方法。实例代码如下: #include
2014-03-12 10:12:10 6002 1
原创 Uboot之u-boot.lds的链接脚本
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{ . = 0x00000000; . = ALIGN(4); .text : { cpu/arm920t/start.o
2014-03-12 10:11:36 2584
转载 Hadoop中TeraSort算法分析
1、概述1TB排序通常用于衡量分布式数据处理框架的数据处理能力。Terasort是Hadoop中的的一个排序作业,在2008年,Hadoop在1TB排序基准评估中赢得第一名,耗时209秒。那么Terasort在Hadoop中是怎样实现的呢?本文主要从算法设计角度分析Terasort作业。2、算法思想实际上,当我们要把传统的串行排序算法设计成并行的排序算法时,通常会想到分而治之的策略
2013-12-13 10:39:56 2838
转载 测试眼里的Hadoop系列 之Terasort
TeraSort是Hadoop的测试中很有用的一个工具,但以前只是粗略的知道它的功能和用法,简单的用它做了几个测试用例。实际上,对于这种比较通用的工具,如果能够了解它更多一些的话,对于理解Hadoop是很有帮助的,同时也可以更好的利用它来帮助测试。最近有点时间,就了解了一些它的背景,代码实现原理等等,就先记录下来吧。1. Hadoop与Sort BenchmarksSortBenchmar
2013-12-13 10:25:53 10174 4
原创 Shell中实现类似于结构体/数组功能的脚本
#!/bin/bash#ST1, ST2,ST3存放字符串,通过数组下标访问数据# Struct {# STRING A# STRING B# STRING C# } Su;ST1="Quannan Jinlong Mujin Nanjing Longyuanba Bitou"ST2="Xiancheng Zheng Cun Zheng Zhe
2013-12-10 15:38:23 9863
原创 2014索尼校园招聘笔试
时间:2014-11-02地点:上海交通大学闵行校区下院考试时间:共2.5小时,前60分钟,基础题考试,后90分钟技术笔试1. 基础题考试 主要就考些很基础的东西,都是单项选择,前15题是英语的单项选择,考查英语的基本功—词汇。后面接着是逻辑推理题,包括数字部分和图形部分。接着是排列组合、比例题。最后是英语的阅读理解。2. 技术题(1). Linux中的
2013-11-26 14:45:24 1737
原创 常用的应用层整型编解码函数
int encode_unsigned16( uint8_t * apdu, uint16_t value){ apdu[0] = (uint8_t) ((value & 0xff00) >> 8); apdu[1] = (uint8_t) (value & 0x00ff); return 2;}int decode_unsig
2013-11-24 16:28:59 1464
原创 感受2014博通校园招聘
今年是博通第一次校园招聘,招聘职位两个,整个中国才招十几个人,所以竞争挺激烈的。宣讲会后直接接受简历,然后筛选简历,完了之后是直接面试,首面是HR面,然后才技术面。
2013-11-03 09:47:49 1471
转载 优秀程序员不知道的20个位运算技巧
一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Delight》,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一
2013-11-03 09:42:36 1035
转载 IT求职经验总结——面试和准备策略
风风火火的求职经历断断续续持续了大概2个月,最匆忙的时候,可以一天赶3个场子,有心灰意冷,也有身心俱疲。幸好最后结果还算好,所以写个东西,主要还是希望师弟师妹可以从中受到一些启发吧。首先,楼主的专业是计算机,所以这个求职经历主要也更加切合计算机类的求职无疑。(后记:十分荣幸这篇文章,被CSDN收录到热文当中,并且有很好的排名。这让我觉得受宠若惊,此文记录的基本就本人找工作总结的一些经验
2013-10-30 11:05:30 1003
原创 数据结构.二叉树的基本操作(C语言实现)
#include"bintree.h"#include#includevoid print(Item item){ printf("%d ",item);}BiTree InitBiTree(BiTNode *root){ BiTree tree = root; return tree;}BiTNode *MakeNode(Item
2013-10-28 21:08:17 4324
原创 库实现之分配内存对齐的程序aligned_malloc和aligned_free函数
分配内存管理对齐的程序void *aligned_malloc(int size, int alignment){ void *ptr = (void*)malloc(size + alignment); if (ptr) { void * aligned =(void *)(((long)ptr + alignment)
2013-10-28 08:51:13 9777 3
原创 2014英伟达校园招聘-上海
时间:2013-10-19地点:上海交通大学中院楼申请职位:嵌入式系统工程师1. 指针数组和数组指针、函数指针、指针函数2. 存储对齐3. Getmemory问题4. 6进制转换成10进制5. 时钟方向的矩阵6. 4*4键盘程序7. 模拟电路并画波形8. 图相关9.智力测试题10.Java垃圾回收机制11。 虚函数
2013-10-19 19:04:03 7366
原创 2014百度校园招聘-上海站
时间2013-10-13; 地点复旦大学第四教学楼;网申职位:软件开发工程师1、 描述OSI(开放系统互联基本参考模型)七层结构。2、 写出进程间数据共享的方式,至少三种。3、 描述TCP和UDP的区别,并各写出一个他们的上层协议。程序与算法设计1、 给出数组A={a_0,a_1,a_2,...,a_n}(n是可变的),打印出所有元素的组合2、 数组A中任意两个相邻
2013-10-16 14:25:21 2001
原创 数据结构.单链表(C语言实现)
#include#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define Elemtype int typedef
2013-10-16 10:56:37 1218
转载 高端内存和低端内存
高端内存是Linux中一个重要的概念,初涉Linux时曾经对这个概念非常迷惑。实际上这个概念比较简单,理解这个概念,需要追溯一下Linux的内存管理。 从前,CPU的地址总线只有32位,再早的就不再追溯了。32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间,在物理上理论上最多拥有4G内存(除了IO地址空间,实际内存容量小于4G),逻辑空间也只能描述4G的线性
2013-10-14 16:21:17 990
转载 网站日志HTTP返回代码解析
在网站日志中,我们经常会看到很多返回的http代码,如201、304、404、500等等。可是这些具体的返回的HTTP代码究竟什么含义呢,在此做一下知识普及吧,记不住不要紧,到时候看看就行了,但最主要的几个还要要清楚的。 一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务器超时 下面提供 HTTP 状态码的完整列表。
2013-10-10 10:41:49 979
原创 数据结构.队列(C语言实现)
#include#include#include#define Status int#define OK 1#define ERROR 0#define QElemType inttypedef struct QNode { QElemType data; struct QNode *next;
2013-10-01 15:02:15 987
原创 数据结构.循环队列(C语言实现)
#include#include#include#define Status int#define OK 1#define ERROR 0#define QElemtype int#define MAXSIZE 100typedef struct { QElemtype *base; int fr
2013-10-01 15:00:08 1018
原创 数据结构.栈(C语言实现)
#include#include#include#include#define Status int#define OK 1#define ERROR 0#define SElemtype int#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#defin
2013-10-01 14:58:20 1031
原创 基于X86平台装有Linux的中找出vmlinux
在/boot目录下没有vmlinux-2.6.xxx文件,只有经过压缩的映像文件vmlinuz-2.6.xxx。我们需要带有调试信息和符号信息的vmlinux-2.6.xxx。所以可以采用以下方法试试:ls /usr/src查看此目录下安装了哪些module。应该会有linux-header-2.6.xxxx-comon等等文件。这时,可用aptitude search $(u
2013-09-21 18:58:00 2169
转载 struct stat结构体示例
//! 需要包含de头文件#include #include int stat(const char *filename, struct stat *buf); //! prototype,原型struct stat{ dev_t st_dev; /* ID of device containing file -文件所在设备的ID*/
2013-09-21 18:57:13 895
原创 进程调度、上下文切换
多道程序设计的目的:无论何时都有进程在运行,从而使CPU利用率达到最大化分时系统的目的:在进程之间快速切换CPU以便用户在程序运行时能与其进行交互。作业队列:进程进入系统时,包括系统中的所有进程就绪队列:驻留在系统内存中的就绪的、等待运行的进程设备队列:等到特定I/O设备的进程列表进程调度队列图:就绪队列————————————>CP
2013-09-16 11:10:15 2847
翻译 Shell脚本调试技术
一. 前言shell编程在unix/linux世界中使用得非常广泛,熟练掌握shell编程也是成为一名优秀的unix/linux开发者和系统管理员的必经之路。脚本调试的主要工作就是发现引发脚本错误的原因以及在脚本源代码中定位发生错误的行,常用的手段包括分析输出的错误信息,通过在脚本中加入调试语句,输出调试信息来辅助诊断错误,利用调试工具等。但与其它高级语言相比,shell解释器缺乏相应的调
2013-09-05 16:01:27 878
转载 The Linux SCSI Generic (sg) Driver(使用说明)
在工作中,由于要对写的代码进行测试,主要需要判断数据包返回值的正确性。测试命令如:SES,SPC,SSP,SMP中涉及到的命令。觉得上面的网址挺好的,现在就来看看,整理整理,以备后用。下面主要针对sg上面的三个命令集进行说明。1:Utilities: sg3_utils and sg_utilsThe sg3_utils package contains utilities that
2013-08-29 15:48:13 7855
转载 MACHINE_START分析
在友善mini2440提供的linux2.6.32.2内核中,有如下定义:MACHINE_START(MINI2440, "FriendlyARM Mini2440 development board").phys_io = S3C2410_PA_UART,.io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,.boot_pa
2013-08-12 13:32:54 1110
转载 shell脚本中的进度指示器
在脚本或者程序运行时间较长时,为终端用户提供反馈信息,表示脚本或程序在辛勤工作,是非常重要的。本文将介绍常见的两种进度指示器(一系列原点和一条旋转线)以及一些其他提供进度指示的工具。1. 使用一系列原点来指示进度?123456789101112131415161718#!/bin
2013-08-04 13:50:28 6754
原创 从命令行获取参数address_parse函数
从命令行获取参数,先看代码:static void address_parse( BACNET_ADDRESS * dst, int argc, char *argv[]){ unsigned mac[6]; unsigned port; int count = 0; int index = 0; if (ar
2013-07-28 13:47:55 1322
原创 获取磁盘块设备描述符bdget_disk和分区块设备描述符bdev
先看代码及注释:/** * bdget_disk - do bdget() by gendisk and partition number * @disk: gendisk of interest * @partno: partition number * * Find partition @partno from @disk, do bdget() on it. *
2013-07-27 21:57:04 2386
原创 ISCSI工作流程target和initiator
随着企业级的数据呈指数增长,传统的集中式存储方案已无法满足其存储要求,因而存储区域网(storage area network,SAN)技术被广泛应用,但其存在距离短、价格贵和构建复杂等不足。基于iSCSI协议的IP存储技术是一种新兴的网络存储技术,它将IP网络技术集成到存储I/O之中,在构建异构的存储网络方面具有其它数据访问协议无法比拟的优势?,已经成为当前网络存储技术的研究热点。使用i
2013-07-25 16:49:46 3912
原创 Linux下获取存储介质扇区大小
通过proc文件系统获得,在proc文件系统中有一个名为partitions的文件。这个文件中包含本地磁盘的硬盘及分区信 息。根据Linux下设备命名规则,如果设备名的最后一个字符是数字就应该是分区,否则就是硬盘。 根据这个文件,还可以知道硬盘设备名称以及每个硬盘中分区的数量和每个分区的设备名称。 获取硬盘扇区大小信息:/* get size in bytes */intbl
2013-07-21 10:33:54 4856 1
转载 linux中解析命令行参数(getopt_long用法)
getopt_long支持长选项的命令行解析,使用man getopt_long,得到其声明如下: #include int getopt_long(int argc, char * const argv[], const char *optstring, const struct option
2013-07-19 17:35:46 827
转载 以太网卡杂记之MAC和PHY
网卡工作在osi的最后两层,物理层和数据链路层。 物理层的芯片称之为PHY。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。 以太网卡中数据链路层的芯片称之为MAC控制器, 数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。 MAC和PHY之间的关系是PCI总
2013-07-19 16:11:24 1021
原创 MIPS处理器上安装perf
在装有debianMIPS处理器中,安装perf工具时遇到的error描述如下:下载相应内核版本,进入tools/perf目录,首先大致看下Makefile的内容,是否支持MIPS平台,然后安装perf #makeMakefile:553: DWARF register mappings have not been defined for architecture mips, DWAR
2013-07-18 09:49:23 2340
原创 创建设备文件时遇到的error
最近在做BACnet协议栈开发,在做Linux设备驱动程序时需要使用GPIO口作为控制信号,于是Employing char device driver时遇到一些Bug,需要去Fix。#insmod s3c2440_gpf.ko //安装模块#lsmod //查看主设备编号,假设为xxx.#mknod /dev/gpf c xxx 0
2013-07-06 22:09:55 1065
原创 Debian下的'aptitude update'失败处理
Hit http://ftp.us.debian.org squeeze/contrib amd64 PackagesHit http://download.proxmox.com squeeze/pve amd64 PackagesFetched 1,672 B in 0s (2,041 B/s)W: GPG error: http://ftp.us.debian.org s
2013-07-05 09:17:31 1735
atom-z36xxx-z37xxx-datasheet-vol-2-329518.pdf
2020-03-31
Linphone-Qos技术.pdf
2020-03-21
ctxSip-master.zip
2019-08-18
I2C BUS Specs(I2C总线通信协议规格书)
2017-09-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人