- 博客(71)
- 资源 (8)
- 收藏
- 关注
翻译 Xenomai安装
目录1 简介2 安装步骤 2.1 准备目标内核 2.2 配置和建立目标内核 2.3 建立用户空间的支持 2.3.1 特征冲突解决 2.3.2 通用配置项 2.3.3 特定体系结构的配置项 2.3.4 交叉编译3 典型的安装过程 3.1 x86_32/6
2013-11-19 16:59:22 5354 1
翻译 Xenomai-实现一个GNU/Linux上的RTOS的仿真框架
Xenomai-实现一个GNU/Linux上的RTOS的仿真框架Philippe Gerum第一版Copyright ©2004Copyright © 2002 Philippe Gerum 在遵循由自由软件基金会发布的1.2或更高版本的GNU Free Documentation License的前提下授予许可复制,分发和/或修改本文件。无固定段落,封面
2013-11-18 08:02:26 3005
原创 30天自制操作系统笔记(五六)
经过一天的努力,第五第六天的内容也做完了,下面让我们来看一下成果吧:下图为用字节写的字符打印出字母‘A’:下图为使用移植的字库打印“Hello,world”:下图为使用移植的字库,并且使用sprintf()函数打印的字符串:下图为打印源码中的变量的值,同样也使用了sprintf()函数:下图为绘制鼠标的操作:下
2013-11-29 08:27:54 1700
原创 Interfaces
Abstract classes and methodsInterfaces However, an interface is more than just an abstract class taken to the extreme, since it allows you to perform a variation of "multiple inheritance" by creat
2013-11-27 20:09:05 1127
原创 30天自制操作系统笔记(四)
首先我们先展示一下第四天的成果:图一:显示纯色图二:显示格子图三:使用调色板显示格子图四:画正方形最后的图为一个小界面:第四天的内容其实不难,但是由于前三天写的代码部分有问题,导致今天调试了一天才找到问题所在问题的更正已经在下面的源文件中指出。代码中唯一没有指出的是Makefile文件中的溢出小错误,将文件名字写错啦具体为:n
2013-11-27 19:12:25 2801 1
原创 30天自制操作系统笔记(三)
今天学习了第三天的内容,相比较前两天的内容有点难,但是还好成果出来啦。本次主要的改进之处是修改了主函数的名字,是我们可以不拘泥作者的要求。我们先看一下运行结果截图:此图为正常的运行结果,到现在操作系统采用了汇编+C语言的方式。我们看一下操作系统的主函数:/*告诉C编译器,有一个函数在别的文件里*/void io_hlt(void);void UcanMain(void){
2013-11-26 19:04:21 2872 1
原创 30天自制操作系统笔记(一二)
第一天与第二天看完第一天与第二天的内容,感觉这两天的内容不难下面是系统的运行截图:下面是系统的源文件:ucan23ipl.nas; ucan23-os; TAB-4 ORG 0x7c00 ;指明程序的装载地址; 以下这段是标准FAT12格式软盘专用的代码 JMP entry DB 0x90 DB "UCAN23LD" ;启动区的名称可以是任意的字符串(8字节)
2013-11-25 19:00:13 3208 2
原创 调试器(GDB)的基本使用方法(之一)
使用gcc的-g选项生成调试信息:$ gcc -Wall -O2 -g sourcefile 注意:-O2的'O'是大写字母,不是零。编译:$ gcc -Wall -O2 -g -o TestStrcpy TestStrcpy.c 其中源文件为:/* file
2013-11-22 17:01:43 2777
原创 获取进程的内核转储
使用命令ulimit可以查看内核转储功能是否开启:$ ulimit -c0-c选项表示内核转储文件的大小限制。0表示内核转储无效。可以使用下面的命令开启:$ ulimit -c unlimited再次查看:$ ulimit -c unlimited运行测试程序./test_ulimit 段错误 (核心已转储)当前目录下会生成core文件,下面查看
2013-11-21 19:40:33 2031
转载 THE META KEY
THE META KEY If you venture into the Readline documentation, which can be found in the “READLINE” section of the bash man page, you will encounter the term meta key. On modern keyboards this m
2013-11-21 09:02:38 1027
原创 Sentence Created by fortune(a command)
You would if you could but you can't so you won't.You will be awarded a medal for disregarding safety in saving someone.This night methinks is but the daylight sick. -- William
2013-11-20 21:37:41 1044
原创 Sentence Created by Ubuntu
Tomorrow, this will be part of the unchangeable past but fortunately, it can still be changed today.The holy passion of Friendship is of so sweet and steady and loyal andenduring a nature th
2013-11-20 21:28:40 1061
原创 命令行高级快捷键
1、鼠标移动命令组合键动作CTRL+A光标移动到行首CTRL+E光标移动到行末CTRL+F光标向前移动一个字符;跟“→”一样CTRL+B光标向后移动一个字符;跟“←”一样ALT+F光标向前移动一个单词ALT+B光标向后移动一个单词ALT+L清屏并把光标移动到左上角。c
2013-11-20 11:25:36 1053
转载 UBUNTU AND SUDO
One of the recurrent problems for regular users is how to perform certain tasks that require superuser privileges. These tasks include installing and updating software, editing system configuration fi
2013-11-19 18:41:41 1179
转载 SOME SPECIAL PERMISSIONS
Though we usually see an octal permission mask expressed as a three-digit number, it is more technically correct to express it in four digits. Why? Because, in addition to read, write, and execute per
2013-11-19 18:39:11 1064
原创 USB驱动程序(第十三章 )
1、USB设备基础(1)端点:半双工的 USB端点有四种不同的类型,分别具有不同的输送数据的方式:控制、中断、批量、等时 内核中使用struct usb_host_endpoint结构体来描述USB端点,该结构体在另一个名为struct usb_endpoint_descriptor的结构体中包含了真正的端点信息。该结构体关心的字段有: bEndpointA
2013-11-19 13:42:59 1449
原创 PCI驱动程序(第十二章 )
1、PCI(Peripheral Component Interconnect) 外围设备互联2、PCI接口(1)PCI寻址:每个PCI外设由一个总线编号,一个设备编号及一个功能编号来标识(biāo zhì 同“标志”,“①表明特征的记号。②表明某种特征。”)。(2)在显示硬件地址时,有时显示为两个值(一个8位的总线编号和一个8位的设备及功能编号),有时显示为三个值(总线、设备和功能)
2013-11-19 13:42:06 1446
原创 第十一章 内核的数据类型
1、有关移植性的问题(1)时间间隔(2)页大小(3)字节序(4)数据对齐 若果要访问未对齐的数据,则应该使用下面的宏: #include get_unaligned(ptr); put_unaligned(val, ptr); 在32系统中时4字节对齐,在64位系统中时8字节对齐。(5)指针和错误值 返回
2013-11-19 13:41:10 961
原创 中断处理(第十章 )
1、安装中断处理例程 #include int request_irq(unsigned int irq, //正确时返回0 irqreturn_t (*handler) (int, void *, struct pt_regs *), unsigned lon
2013-11-19 13:40:41 1191
原创 与硬件通信(第九章 )
1、I/O端口和I/O内存 I/O寄存器和常规内存 Linux提供了4个宏来解决由编译器和硬件重新排序引起的问题: #include void barrier(void); #include void rmb(void); void read_barrier_depends(void); void
2013-11-19 13:39:58 1043
原创 内存分配(第八章)
1、kmalloc函数内幕 函数原型: #include void *kmalloc(size_t size, int flags);(1)flags: GFP_ATOMIC: GFP_KERNEL: GFP_USER: GFP_HIGHUSER: GFP_NOIO: GFP_NOFS
2013-11-19 13:39:04 1143
原创 时间、延迟及延缓操作(第七章 )
1、使用jiffies计数器 需包含头文件(注:在本人测试的时候系统找不到该头文件,不知道是不是本书的错误之处,在linux系统编程中Robert Love 这样注明的: The Linux kernel now supports “tickless” operation, so this is no longer strictly true.)2、处理器特定的寄存器
2013-11-19 13:37:42 1259
原创 高级字符驱动(第六章 )
1、用户空间的ioctl系统调用原型: int ioctl(int fd, unsigned long cmd, ...);//第三个参数的具体形式依赖于第二个参数,其作为第二个参数的参数值。 驱动程序的ioctl函数原型: int (*ioctl) (struct inode *inode, struct file *filp, unsigned int cm
2013-11-19 13:36:45 962
原创 并发和竟态(第五章 )
1、Linux信号量实现: (1)直接创建信号量: void sema_init(struct semaphore *sem, int val); 其中val是赋予信号量一个初始的值。 (2)用下面的方法声明和初始化一个互斥体: DECLARE_MUTEX(name); //一个称为name的信号量被初始化为1 DECLAR
2013-11-19 13:35:56 1129
原创 调试技术(第四章 )
1、输出文件/proc/kmsg的内容时,回应为里面的内容为空而将进程暂时阻塞,等到有数据是再输出。2、在打印一条可能被重复的信息之前,应调用函数 int printk_ratelimit(void); 如果该函数返回一个非零值则可以继续并打印我们的消息,否则就应该跳过,例: if (printk_ratelimit()){ print
2013-11-19 13:34:56 1118
原创 字符设备驱动程序(第三章 )
(1)dev_t是表示设备编号的数据类型: #include dev_t(2)从设备好重取出主/次设备编号: int MAJOR(dev_t dev); int MINOR(dev_t dev);(3)从主/从设备编号构造一个设备号: de_t MKDEV(unsigned int major, unsigned int min
2013-11-19 11:26:54 887
原创 Linux设备驱动程序(第二章)
1、内核开发中没有现成的函数库可以的调用,而只能调用由内核导出的函数。2、printf函数与printk函数除了几个细小的差别外功能几乎相同,最大的不同在于printk函数缺少对浮点数的支持。快速参考 (1)用来装载和卸载模块到正在运行的内核的用户空间的工具: insmod modprobe rmmod (2)用于指定模块的初始化
2013-11-19 11:25:59 991
原创 Linux命令入门(二)
1、rm:删除文件 利用-i选项可以实现删除中的交互(询问是否确认删除)。2、less和more:分屏显示文件 less和more都是分屏显示文件,但是less需要按q键来返回,而more则不需要。3、hostname:显示系统名4、cp -i:可以以交互式的方式来防止用户误将已经存在的文件覆盖。5、mv -i:可以以交互式的方式来防止用户误将已经存在的文件
2013-11-19 11:24:01 1042
原创 Linux命令入门(一)
命令行下校正错误: 1、删除单词:CONTROL+W 2、删除行:CONTROL+U,如果不好使可以试试CONTROL+XSU/SUDO:慎用root权限 sudo -i会以root权限运行一个新的shell。如何查找相关文档: 1、--help选项 例:$cat --help 如果显示信息超过了一屏,可以通过管道用l
2013-11-19 11:23:02 1000
原创 FILE I/O
1、od -c file.hole 此命令用来查看文件的内容,其中-c的意思是以字符的形式查看。2、 ls -ls file.hole file.nohole 此命令用来比较两个文件的大小,此处是用来比较有hole和没有hole文件的大小。3、4、#include ssize_t read(int filedes, void *buf, size_t nbytes);
2013-11-19 11:20:37 991
原创 UNIX system overview
1、在passwd文件中,数据存放的格式: sar:x:205:105:Stephen Rago:/home/sar:/bin/ksh2、方法stat和fstat返回包含一个文件所有属性信息的结构体。3、每创建一个目录就会有两个文件名存在——'.'当前目录,'..'当前目录的上级目录4、Unix系统中以'/'开始的是绝对路径,其他的是相对路径,相对路径是针对当前目录而言的。
2013-11-19 11:18:30 1149
转载 Overriding and Hiding Methods
Instance MethodsAn instance method in a subclass with the same signature (name, plus the number and the type of its parameters) and return type as an instance method in the superclass overrides the
2013-11-19 08:40:55 1149
原创 Polymorphism
Polymorphism is the third essential feature of an object-oriented programming language, after data abstraction and inheritance.Upcasting revisitedForgetting the object type The twistMethod-ca
2013-11-18 19:40:31 1091
原创 Reusing Classes
Composition syntaxInheritance syntaxInitializing the base class Constructors with argumentsThe preceding example has default constructors; that is, they don’t have any arguments. It’s easy for
2013-11-18 19:39:33 973
原创 Access Control
package: the library unitCode organizationIf you use a package statement, it must appear as the first non-comment in the file.Creating unique package namesimport 从别的包中引入类时,所对应类和方法须为publicCol
2013-11-18 19:38:41 972
原创 Initialization & Cleanup
Guaranteed initialization with the constructorDistinguishing overloaded methodsThere’s a simple rule: Each overloaded method must take a unique list of argument types. 方法参数个数相同,但是参数类型排序不同也可以。If
2013-11-18 19:37:36 1050
原创 Controlling Execution
ReturnThe return keyword has two purposes: It specifies what value a method will return (if it doesn’t have a void return value) and it causes the current method to exit, returning that value.
2013-11-18 19:36:38 1013
原创 Operators
Mathematical operators If you create a Random object with no arguments, Java uses the current time as a seed for the random number generator, and will thus produce different output for each exec
2013-11-18 19:35:40 1188
原创 Everything Is an Object
You manipulate objects with referencesYou must create all the objectsWhere storage livesThere are five different places to store data: 1. Registers. This is the fastest storage because it exi
2013-11-18 19:34:17 1190
原创 Introduction to Objects
The progress of abstraction1. Everything is an object. Think of an object as a fancy variable; it stores data, but you can “make requests” to that object, asking it to perform operations on itsel
2013-11-18 19:33:16 1217
Linux系统目录解析
2015-03-06
数据结构考研资料(严蔚敏)
2011-05-24
Linux编程白皮书
2010-05-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人