摘要: #include <stm32f10x_lib.h> #include <stm32f10x_map.h> #include "usbreg.h" #include "usbuser.h" #include "usbcore.h" #include "usb_hw.h" #define _DEBUG_ #include "debug.h" #define USB_EP_NUM 4 /*端点缓冲区的开始地址 *因为每个缓冲块都需要一个端点描术表 *而所有的端点描述表放在,U 阅读全文
posted @ 2012-03-14 20:01 重归混沌 阅读(3601) 评论(0) 推荐(0) 编辑
摘要: 最近在使用STM32的USB模块开发个项目,还以为挺简单,结果搞了快两天才把USB的包缓冲区的访问搞定,在此做个小总结吧。 STM32的USB模块包缓冲区有512B,但是在STM32的参考手册中的存储器映像中却表明0x40006000-0x400063ff,整整多了512B,怎么会这样呢,同时在尝试着编程时也遇到了一个问题:在usb_core.c文件的Setup0_Process(void)这个函数中,有这么一段:uint16_t offset = 1;if (pInformation->ControlState != PAUSE){ pInformation->USBbmRequ 阅读全文
posted @ 2012-03-14 16:07 重归混沌 阅读(1149) 评论(0) 推荐(0) 编辑
摘要: 今天看代码时突然发现,好像看到linus在写代码时的一些准则了,再根据赵博士的一句话"内核开发者不可能总是关注这些细节问题的!“,然后参照自己的理解总结出来一些准则,本人初学,如果有问题还请留言指正。 1.在关于锁的操作上,希望是原子操作,所以不管什么先关中断再说 2.在互斥资源上,如果下面可能睡眠,那么先上锁再说,这点可以从inode.c中的read_inode函数中可以看出! 3.如果进程修改了某些indoe等一些公共内容,如果下面有bread之类可能睡眠的函数那么先把i_dirty置1,以免丢失数据。 4.貌似只要是进程打开的,不是用作公共有途的,如打开一个i_node用来添加 阅读全文
posted @ 2012-03-12 20:00 重归混沌 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 今天看到empty_dir函数发现他并不是比较i_size==32来判断是否为空,而是去读所有的块来判断是否为空,然后就觉得很奇怪,不过总觉得事出必有因,翻来覆去的找了一下,终于有了点发现,去看了一下add_entry和sys_rmdir这两个函数终于发现了一个事实!那就是目录文件的大小只会增大不会减小。下面是实验的截图:在这个实验里我们可以看到当我建立了test2 test3 test4四个文件后test1目录变成了80,但是我删除这3个目录项后,test1目录并没有减少,这就说明了,在empty_dir中为什么linus遍历来确定目录是不是为空了!不知道这算不算是一个小bug,还是mini 阅读全文
posted @ 2012-03-11 15:38 重归混沌 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 今天看到文件系统namei.c中的add_entry部分了,发现一个问题 block = create_block(dir,i/DIR_ENTRIES_PER_BLOCK); if (!block) return NULL; if (!(bh = bread(dir->i_dev,block))) { i += DIR_ENTRIES_PER_BLOCK; continue; } de = (struct dir_entry *) bh->b_data;可以看到,create_block也是就是当目录... 阅读全文
posted @ 2012-03-08 16:03 重归混沌 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题。关于SUID、SGID的问题也经常有人提问,但回答的人一般答得不够详细,加上曾经回答过两个网友的问题,还查了一些资料,决定整理成本文,以供大家参考。限于本人的水平问题,文章中如果有不当之处,请广大网友指正。一、UNIX下关于文件权限的表示方法和解析SUID 是 Set User ID, SGID 是 Set Group ID的意思。UNIX下可以用ls -l 命令来看到文件的权限。用ls命令所得到的表示法的格式是类似这样的:-rwxr-xr-x 。下面解析一下格式所表示的意 阅读全文
posted @ 2012-03-07 21:33 重归混沌 阅读(747) 评论(0) 推荐(0) 编辑
摘要: 在看文件系统始终觉得有点理解不了,今天偶有所悟还是赶紧记下来为好!看文件系统时要搞清以下几点:1.文件系统是用专门的工具来格式化的,也就是说内核中文件系统的代码是不含文件系统的初始化的。其实所谓的操作系统安装就是通过一个工具来制作文件系统然后将系统文件拷入最后再加个引导,但是这个过程比单纯的格式化要麻烦许多,因为安装时要制作根文件系统而不是仅仅格式化,但原理相似!2.要搞明白在设备中,各种设备也是就i_node的,而这个i_node也就在安装操作系统时就被制作好的。也就是说不管我们mount也好umount也好仅仅是从硬盘目录中读i_node号就行了,并不需要来自己给设备分配结点号。3.这也就 阅读全文
posted @ 2012-03-04 20:55 重归混沌 阅读(296) 评论(0) 推荐(0) 编辑
摘要: #设置邮件的编辑器set editor="vim"#设置邮件的发送程序set sendmail="/usr/sbin/exim4"set check_new = yesset timeout = 60#将各个邮箱分类存储set record="/home/findstr/.mail/sent" #发件箱set postponed="/home/findstr/.mail/ponstponed" #延迟发件箱set mbox="/home/findstr/.mail/inbox"#设置你有可能收到 阅读全文
posted @ 2012-03-01 15:29 重归混沌 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 1.一定要及时换行,要不然latex是不会替你自动换行缩进的,相反如果我第几十个字来换一次那么它就会替我自动缩进下换行。2.关于中文首段缩进问题可用 \usepackage{indentfirst} + \setlength{\parindent}{2em} 来实现3.\setcounter{section}{-1}可使章节从0序号开始4.\usepackage[top=25mm,left=25mm,right=20mm,bottom=20mm]{geometry}可以来定制文档格式5.\documentclass[a4paper,12pt]{article}可以用来指定纸张和通用字体大小6. 阅读全文
posted @ 2012-02-24 15:40 重归混沌 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 编译完内核后进入linux3.0内核后,习惯性的打开virtualbox,然后突然发现virtualbox提示错误,然后又出现一个对话框,上面写着:Nevertheless, there is no shortage of changes, such as the auto grouping of processes within a session, which has caused a lot of commotion in the Linux online world as it is expected to considerably increase the reaction s... 阅读全文
posted @ 2012-02-19 20:30 重归混沌 阅读(532) 评论(0) 推荐(0) 编辑