- 博客(92)
- 资源 (4)
- 收藏
- 关注
转载 QEMU-KVM I/O性能优化之Virtio-blk-data-plane
这篇文章介绍了基于virtio-blk的加速技术virtio-blk-data-plane,转过来收藏下,当然这个技术在当前业界的应用中正逐步被vhost_user机制取代,后续一起关注。原文地址:http://blog.csdn.net/memblaze_2011/article/details/48808147为了充分利用服务器资源,根据工作负载动态配置服务器,减少服务部署周期等...
2019-05-21 14:21:00 1726
原创 RAID卡技术简析
经过一段时间的折腾,工作的事终于解决了,新工作一上来的第一件事就要熟悉RAID卡存储机制,先简单了解下RAID卡吧。 提到RAID卡就不得不提什么是RAID,RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文即为独立磁盘冗余阵列,或简称磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来形成一个硬盘组(逻辑
2011-11-27 20:07:54 9611 1
原创 Linux驱动的platform机制
最近在看SPI、I2C这样简单点的总线驱动程序,从Linux2.6起,内核引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。现在Linux中大部分的设备驱动都可以使用这套机制,总线为platform_bus,设备用platform_device表示,驱动用platform_driver进行注册。 Linux的这种platform drive
2011-11-10 22:56:10 6725 1
原创 Linux内核初始化过程的源码分析疑点记录+好书推荐(附下载)
这个对基于PowerPC的Linux内核源码剖析的文章已经写了三篇了(见前三篇博文),由于可以找到的关于PowerPC E300处理器的Linux文章基本没有,这些都是一点点摸索的,可能存在不少的错误,特别是第3篇,自我感觉很差,开始计划写这个系列的时候,自以为已经很了解PowerPC的内部体系了,现在回首,还是有很大的提升空间啊。这个系列到这里也算是一个中节点了,我打算先放一放,处理好工作上的琐
2011-11-03 21:25:30 10610 4
原创 基于PowerPC的Linux内核之旅:第2站-__secondary_start(start_here)-下
上篇中介绍了基于PowerPC的Linux第二阶段启动过程的一部分,由于MMU的初始化涉及的内容较多,而且代码量很大,所以这部分分为上下两部。本部分继续阐述MMU硬件的初始化和最终真正使能MMU的过程。 在开始之前,先指出前面文章出现的一个错误,在对mmu_off函数中的RFI指令的介绍时,我简单的认为是中断返回,但后来想想,CPU初始化时,中断还没有使能,所以中断返回的说法是不正确的,
2011-11-03 21:07:45 14689 2
原创 基于PowerPC的Linux内核之旅:第2站-__secondary_start(start_here)-上
前面一篇的early_init执行完成后,CPU启动早期的基本初始化工作算是做完了,这时内核会开始重定向并复制运行,代码如下:bl reloc_offset mr r26,r3 addis r4,r3,KERNELBASE@h /* current address of _start */ lis r5,PHYSICAL_START@h cmplw 0,r4,r5 /* a
2011-10-31 21:22:20 9790 3
原创 基于PowerPC的Linux内核之旅:第1站-early_init
很早之前就有写基于PowerPC架构的Linux源代码分析的文章的想法,但无奈于Linux源码量太大,逻辑也很复杂,再加上本身对PowerPC汇编了解不多,闲暇时间也没有太多,一直都没有什么机会。上个月,工作上的事情因为硬件的耽误稍微少了些,再加上自己之前分析U-Boot的源码时学了不少PowerPC汇编的知识,又移植了Linux中的SPI和Nand Flash的驱动源码到vxWorks,感觉时机
2011-10-26 22:16:33 11624
原创 Linux内核特性之VDSO
这段时间看Linux内核源码的时候,经常碰到vdso这个东西(像在Feature-fixup中,获取时间等操作时),网上搜了一下,才知道了含义,原来这是Linux为了解决和glibc兼容而想出的绝招啊。下面是从Fedora中文邮件列表转过来的,和大家分享一下。 往往内核添加了一个功能,glibc要花很久才会用上。本来linux那边为这个功能是否进入内核已经吵半天了,glibc这边又要为是
2011-10-25 18:55:58 34769 1
原创 U-Boot源码分析之Makefile
之前用过两个版本u-boot,分析过它的Start.S文件(PowerPC、ARM)源代码,也移植过内部的各部分硬件驱动及组件(串口、I2C、SPI、Flash文件系统、USB、DMA等)源码,自我感觉比较熟悉了。但最近逛CSDN论坛发现有不少人在问U-Boot中的Makefil
2011-10-15 15:26:44 8887
原创 转帖:中国程序员的真实写照!悲哀····
这个漫画是从http://blog.csdn.net/force_eagle/article/details/1863325#comments转载的。的确很是经典,和我目前的境地惊人的相似啊!!
2011-10-15 11:24:46 6693 11
原创 CSDN博客,你怎么了?
和多数程序员喜欢熬夜不同,我喜欢早起,可能在大学长期受到校园网的浸淫,早起才会有好网速玩,现在养成习惯了。可是今天早上我6点多起床来,第一个打开CSDN博客,却又看到了世界之窗访问出问题的提示,CSDN博客系统又出问题了,这是这个星期以来的第二次了,这让人倍感烦恼。 最
2011-10-15 10:32:59 4698 33
原创 FatFS文件系统详解-附移植建议
最近做的spi flash,本打算弄个文件系统,由于之前用过了JFFS、YAFFS和TrueFFS,代码量都相当的大,这次想找款代码量不那么吓人的,学习一下,听说配置会相对复杂一些。选来选去,最终选定了FatFS,代码量足够的小,最新的R0.09版本只有1个.c文件(当然,还有一
2011-10-12 21:05:41 37188 8
原创 FreeScale mpc8xxx + vxWorks平台下spi flash驱动开发三步走
最近在弄PowerPC平台上的spi flash的驱动程序,总体比较简单,在借鉴了U-Boot中的相关源码后,花了两周左右的时间搞定了,对于spi总线之前一直都有了解,但未能实际接触,这次在vxWorks上尝试了一下,确实有不小的收获。由于网上关于vxWorks平台的资料稀少,就
2011-10-12 20:23:01 11047 5
原创 GNU C中不为人知的特色:__attribute__机制
十一放假放的不亦乐乎啊,今天才静下来看看技术,偶然碰到了__attribute__,虽然之前在看Linux内核代码时见过很多次,但还是对它熟视无睹,罪过啊,下面的文章是从源码网上转载的,原文在这里:http://www.yuanma.org/data/2006/0625/arti
2011-10-07 18:20:27 25262 19
原创 vxWorks FAQ中文版收藏-转载之下
3.BSP FAQ3.1 不同BSP3.2 处理器3.2.1 Power PC3.2.1.1 问题关于MPC860BSP(新手上路):在读前辈程序的时候遇到这样一些语句: lis r3, 0x0090 ori r3, r3, 0x0000 #plp=9,
2011-09-25 23:06:35 8143
原创 vxWorks FAQ中文版收藏-转载之上
这是从别处转载的,可以将它复制下来,查找自己碰到的问题,可能有解答额,呵呵。前言(Surface):随着国内使用VxWorks的用户越来越多,为了方便VxWorkers少走一些弯路,特别推出了中文FAQ,其中很多的FAQ来自comp.os.vxworks和原创。(很多FAQ都
2011-09-25 22:59:13 10273
原创 PowerPc下的寻址模式
本篇文章主要描述了Powerpc的寻址模式,让自己对内存映射、寻址的概念理解深入些。其中大量借鉴了http://www.yuanma.org/data/2007/0312/article_2406.htm处的文章,还望谅解。 在开始讨论寻址模式之前,让我们首先来回顾一下
2011-09-25 16:13:16 7715
原创 PowerPC汇编指令集简析-(1)
在了解PowerPC汇编指令前,需要先看下编程所用的寄存器模型,PowerPC系统结构为大多数运算指令都定义了Register-Register的操作,这些操作的源操作数从寄存器取得,或作为嵌入指令操作码中的立即数提供。这里的e300核可分为用户编程模型和管理员编程模型,该模型有
2011-09-25 14:33:38 25549 1
原创 vxWorks中USB驱动栈-2
接上篇文章 介绍完了Host,再来看下Peripheral驱动栈,下图为Peripheral驱动栈的结构图: 风河USB Peripheral驱动栈中,位于底层的是目标控制器TC,它是Peripheral栈中用于连接USB的硬件部分。对于每种类型的TC,都会有对应的
2011-09-13 22:36:43 7111 1
原创 vxWorks中USB驱动栈-1
USB模块可以分为多端口主机(MPH)模块和双角色(DR)模块,它们都能够连接一个或者二个外部端口,这些模块和外部端口总称为USB接口。Mpc8379的USB模块采用的是DR,它的寄存器和数据结构均基于Intel的EHCI(Enhanced Host Controller Int
2011-09-11 09:44:16 8233 1
原创 大小端及内存对齐问题细议
在接触PowerPC开发时,难免会碰到大小端转换的问题,PowerPC系统核心是大端的,而像DMA、DSP、PCIE、FPGA都是小端的,所以有必要把它们详细记录一下。我们常常看到“alignment", "endian"之类的字眼, 但很少有C语言教材提到这些概念。实际上它们是
2011-09-06 20:16:14 10431 1
原创 堵塞与非堵塞IO模式详解
在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明:阻塞IO:socket 的阻塞模式意味着必须要做完IO 操作(包括错误)才会返回。 非阻塞IO:非阻塞模式下无论操作是否完成都会立刻返回,需要通过其他方式来
2011-09-03 22:57:16 3588
原创 PCI-E配置MSI中断流程解析
在调试PCI-E的MSI中断前,需要先保证将传统中断调通,然后再调试这个。MSI中断究其本质,就是一个存储器读写事件。将MSI Address设置为内存中的某个地址(可以为64位),产生MSI中断时,中断源会在MSI Address所在的地址写入MSI Data。也就是说,如果有
2011-09-03 20:52:57 34556 9
转载 基于Newlib库的PowerPC交叉编译器制作详解
对PowerPC的交叉编译工具的介绍确实不像ARM那么多,之前用ELDK费了好大的力气,但是它太大了,使用不方便。所以转载下这篇文章,使用的东西较小,留着以后学习。 如果有需要转载,请在使用的地方,随手附上我的空间地址,谢谢。http://blog.csdn.n
2011-08-30 22:57:24 3948 1
原创 程序员常犯的5个非技术性错误-转
这个是在网上看的,感觉个人也有好几个这样的缺点,最明显的就是第一点了,经常把大把的周末时间浪费掉了。不过还好还年轻,转下此文,链接也都保留以便查阅,当做警示吧! 英文原文:5 top non-technical mistakes made by programmer
2011-08-26 23:28:01 1540
原创 Linux下中断处理程序源码分析
之前调试vxworks下PCIE的中断程序,都封装好了,所以只用了个intConnect,感觉没学到东西,就再看了下Linux的源码。 下面是最近调试中断时额外研习了一下Linux的内核代码,下面就直接贴代码和注释了,大量借鉴了网上牛人的见解,还望海涵!!int m
2011-08-26 22:24:36 3896 1
原创 传说中的《程序员装B指南》,程序员童鞋们请认真学习-转帖
最近似乎某些装B指南比较火,刚好周五的晚上闲着没事,于是我也随便写一个《程序员装B指南》,话说装B是一种能延年益寿的好习惯,大家随便看看,开心就好……一、准备工作“工欲善其事必先利其器。”1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好。一个
2011-08-22 22:11:25 3309 5
原创 U-boot源代码全分析系列(基于PowerPC)-3
这里首先更正下上一篇中的一个错误,最后一步中的跳转代码当时一时仓促贴错了,先改正如下:7、跳转到Stage2入口处 这也是Stage1的最后一步,程序在执行到这一步后,基本的硬件初始化工作也就完成了,下面是跳转的代码:clear_bss: /* 执行清空bs
2011-08-21 14:03:51 6199 2
原创 U-boot源代码全分析系列(基于PowerPC)-2
3、初始化CPU相关 下面为初始化CPU的代码,实现的功能依次为屏蔽watchdog、初始化中断控制寄存器、清空Cache、关闭MMU等。 .globl init_e300_coreinit_e300_core: /* time t 10 */ /* Ini
2011-08-18 22:55:16 6328 4
原创 U-boot源代码全分析系列(基于PowerPC)-1
一、概述 U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目,是从FADSROM、8xxROM、PPCBOOT逐步发展演化而来的。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源
2011-08-18 22:17:16 8320 3
原创 PowerPC PCI-E调试相关资料小结
最近在PowerPC的板子上加一个FPGA,需要用PCI-E连接,就调试了PCI-E。由于vxWorks本身已经将驱动写好了,使用时直接调用即可,但是很快就出现了问题:一开始直接使用mmap的方式映射FPGA的总线上到应用程序的内存空间中尝试读写,这种方法比较简单,不需要内核与应
2011-08-17 19:19:10 15286
原创 Boost学习系列6-多线程(下)
虽然boost::mutex 提供了lock和try_lock两个方法,但是 boost::timed_mutex 只支持 timed_lock,这就是上面示例那么使用的原因。如果不用timed_lock的话,也可以像以前的例子那样用 boost::mutex。 就像
2011-08-14 20:40:56 3349
原创 Boost学习系列6-多线程(上)
一、概述 线程是在同一程序同一时间内允许执行不同函数的离散处理队列,这使得在一个长时间进行某种特殊运算的函数在执行时不阻碍其他的函数时变得十分重要。线程实际上允许同时执行两种函数,而这两者不必相互等待。 一旦一个应用程序启动,它仅包含一个默认线程。此线程执行m
2011-08-14 20:01:54 5143
原创 PowerPC E300处理器核超详细介绍
这个是我在网上找到的一篇文章,是翻译的风河mpc83xx系列的说明书而来的,文章中很细致的讲解了PowerPC e300内核的结构,想要看懂u-boot启动的Stage1段代码,或想了解启动时e300处理器的初始化过程,此文非常值得一读。特在此处略加介绍,并放出下载在我的资源中,
2011-08-14 12:13:19 8241
原创 Linux中PowerPC的中断原理分析
在了解中断处理机制前,先看一下PowerPC的中断源,这里使用的是e300c3的内核,从E300核的角度,中断源可分为异常和外部中断,异常是e300内核产生的,如出现非法指令,或者是访问存储器时出现TLB Miss等情况。这种情况太复杂了,没有深究,这里所说的中断为外部中断。所谓
2011-08-11 19:27:59 10265
原创 vxWorks下常用的几种延时方法
在应用编程的时候,通常会碰到需要一个任务在特定的延时之后执行一个指定的动作,如等待外设以确保数据可靠,控制扬声器发声时间以及串口通信超时重发等。这就需要利用定时器机制来计量特定长度的时间段。 vxWorks作为实时嵌入式系统,提供多样的定时接口函数。下面结合我的项目经历
2011-08-09 20:46:46 31299
原创 找工作的20条吐血经验-转
今天刚刚看到,觉得原作者写的比较用心,挺贴切的,转过来和大家共同分享一下。原文连接:http://www.piaobozhe.com/read.php?tid=1030 04年毕业,还没有单干的资本,我分析我自己也不适合单干,一直在打工,也倾向于一辈子打工。我工作快两
2011-08-07 11:32:54 4229 2
原创 PowerPC下PCI、PCI-E设备的配置空间
PCI总线规定访问配置空间的总线事务,称为配置读写事务。不同于存储访问事务使用存储地址访问,而是使用ID号来寻址访问PCI配置空间。 PCI设备的ID号由总线号(BUS NUMBER)、设备号(DEVICE NUMBER)和功能号(FUNCTION NUMBER)组成。
2011-08-07 09:40:08 15016 13
原创 PowerPC的PCI总线的dts配置
这段时间要弄下PCI Express的相关调试和驱动开发工作,老规矩,先在网上找找资料,这类的东西还蛮少的,已经买了本书,打算边学边自己总结吧,这篇文章是PowerPc下对PCI总线的配置方法。 powerpc使用称为FDT 扁平设备描述树的机制传递给内核硬件配置参数,
2011-08-06 09:26:55 9592 1
原创 Boost学习系列5-字符串处理-(下)
四、正则表达式库 Boost.Regex Boost C++的正则表达式库Boost.Regex可以应用正则表达式于C++。正则表达式大大减轻了搜索特定模式字符串的负担,在很多语言中都是强大的功能。虽然现在C++仍然需要以 Boost C++库的形式提供这一功能,但
2011-08-02 22:14:21 5170
Linux PowerPC详解:核心篇
2011-11-03
PowerPC E300处理器核详细介绍
2011-08-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人