Sunday, November 30, 2008

我的个人站点开通

http://sites.google.com/site/dyverin/
很朴素的风格.

推荐一个网站

http://www.picvi.com/
主要是一些搞笑的视频短片.
不过也包含一些性感的, 或恐怖的,或恶心的东西.
如果你反感这些,请慎入.

Monday, November 24, 2008

个人简历



◆个人概况

姓 名:段寅  性 别: 男

出生年月:1982.8 籍 贯: 湖南

学 历:本科

毕业学校: 北京理工大学

专 业:自动化

毕业时间: 2005.6

联系方式:(手机) 13683591669

E-mail: duanyin@163.com

◆英语水平

l 拥有国家英语六级证书,具备良好的英语听说读写能力;

l 能流利阅读英文信息类专业书籍和技术资料.

◆计算机水平

l 精通c语言

l 熟悉嵌入式实时操作系统和嵌入式linux;

l 熟练使用交叉编译工具和makefile 来建立和开发嵌入式软件工程;

l 熟练使用cvs,svn等版本管理软件

l 丰富的嵌入式软件调试经验

l 熟悉嵌入式板级驱动,可以独立调试pcb板

l 对dvb标准以及mpeg-2 视频压缩标准有比较深的理解.

l 对音视频解码器,网卡,显卡,声卡等复杂设备的驱动都有一定了解,具备移植和跟踪问题的能力

◆团队管理能力

l 具备管理4人项目小组的经验

◆ 项目经历

l 2005.7-2007.7 在jzby从事驱动开发 和系统维护, 主要从事 st 5516,5105,7710 平台(采用st os 20 RTOS)的图形显示相关驱动的维护. 基于这些平台的机顶盒作为公司的成熟产品,在全国很多地方的数字电视整体平移中中标.

l 2007.8- 至今 在jzby担当项目经理职位, 主要负责st 710x平台(采用嵌入式linux)的驱动和系统部分. 基于该平台的机顶盒已开始小批量供货.

Tuesday, November 18, 2008

有感于朋友升级电脑

最近有两个朋友都升级了主机. 配置都是4核+2G内存+512M显卡. 功率最少要400W. 看wsyu效果全开玩使命召唤,那效果真的不错.十分细腻逼真,感觉快达到CG的效果了. 不过个人觉的平面三维动画的效果应该差不多到极限了吧. 真的觉得这样的配置也就玩游戏和大型软件时才会真正体现它的性能. 我不觉在想,以后个人电脑的趋势不会继续朝着简单追求性能的方向的发展, 而是朝差专业细化的方向发展. 玩游戏选择专门的游戏主机. 普通个人电脑采用笔记本. 娱乐(高清视频,卡拉OK)采用家庭媒体中心. 从节能减排的方向上来讲这也是个看起来不太差的选择.

wsyu一口气下了很多以前因为机器玩不了而没下的游戏,现在都玩不过来了.  不过我还是那个理论: 细水长流. 好游戏一年还出不了几个呢. 况且一个人长时间玩这种逼真度很高的游戏,使身体长进间长于亢奋紧张状态中,性情会有所变化.


助焊剂的作用

前两天刷内存片子的时候,总算明白了助焊剂的作用.

用过量的锡刷一遍内存管脚后,很多管脚间有搭锡. 用烙铁带不出来了. 从徐工那找到一瓶助焊剂. 先用助焊剂刷一遍后,再用烙铁一带就把锡带出来了.

查了一下助焊剂的作用,有如下几点,你也能想明白了吧:
a.清洁工件表面,去除表面的氧化物;
b.防止金属表面氧化,在加热过程中,焊剂在金属表面形成一层保护层,以防止氧化;
c.降低焊料的表面张力,使焊料容易润湿和牢固焊接。
  

Monday, November 10, 2008

访问量统计

写博客是写给人看的.  但绝大部分访客是"悄悄的我走了,正如我悄悄的来".  作为主人的我体会不到宾客满至的乐趣. 不过稍加处理,还是能让访客留下点痕迹的.

有些blog站点有访问统计的功能(如我之前用的chinaunix 的),  虽然只有简单的访问量统计, 但博主看到数字的上升, 心中肯定一丝宽慰.

google blog这个站点虽然不提供这个功能, 但提供这个服务的站点还是很多:
Google Analytics 以及 SiteMeter  等.   上这些站点建立帐户后, 把一段代码加入到blog网页模板里就行了. 

我的站点已经加入了这个功能,通过它们提供的访客信息,也许我能知道你是谁哦...

这一段时间的统计量表明,访问量还是很小的. 看来还需要多写出些有价值的文章出来. 

Saturday, November 08, 2008

开始学习verilog

搞驱动搞久了, 很想明白硬件是怎么设计, 怎么工作的.  数字逻辑都是用HDL 语言写出来的.  于是想抽出时间来学习一下...

找了个帖子:iverilog+gtkwave编写verilog , 照着做就能看到波形了, 语法还没来得及学习...  不过至少已经上路了.. dyverin, 加油...


Friday, November 07, 2008

倩女幽魂 观感

最近心情不是十分的平静.电影是安抚心灵的好东西.

重温经典电影<<倩女幽魂>>的想法又一次冒出. 这个电影本人没有收藏, 索性上淘宝上买. 我还是第一次在淘宝上买东西. 得先往支付宝总值. 支付宝竟然不支持中国银行,还好我还有个兴业银行的卡,里面有个百来块. 这才成功往支付宝里冲入100块. 找了家北京的商家(这样不用等太长的快递时间),买了个倩女幽魂三部曲. 一共四十多块. 不敢买便宜的,怕效果不好.

电影第二天就到了.花了两个晚上过了一遍,第一天晚上有点贪心,看了两部.
最好看的还是第一部. 这一部情节简单,就是书生宁采臣与女鬼小倩相爱,与燕赤侠一起对付千年树精,解救小倩的故事.人物也比较简单.没有着意刻画复杂的人性. 燕赤侠眼中只有好人,坏人和鬼, 好人不能杀,坏人和鬼都是该死的. 他就是受不了人世的人心叵测,偏居在雷若寺中.他虽然最终帮助宁采臣解救了小倩. 但并没有改变他的观念. 现实生活中,恐怕也有很多人受不了人的多面性以及事情的复杂性,不自觉的将人简单的区分对待,将事情简单处理.

宁采臣和小倩的爱很彻底. 但我相信这是由于宁采臣的一无所有,无牵无挂以及的小倩的身心受困,所以他们的相爱才能如此彻底,无所顾忌. 毕竟爱是他们的全部. 这样的爱情的确为人所羡慕,但又能被几人所拥有. (我又能在爱情上投入几分?)

鬼的氛围最足,也最符合我所想象的鬼的世界. 鬼的世界与人的世界没有太多冲突,只是晚上发生在无人烟的兰若寺周边. 鬼基本上与常人无异. 恐怖的气氛来源于昏暗的光线,废弃的小屋,坟山,吸血,吸阳气,符文,经文和旁人的表情等来让人联想. 并不靠夸张的实际造型.

结局凄美,让人遗憾. 也许这也是这部影片给我留下深刻印象的原因. 真希望有一天重温这个故事,得到的是一个完美的结局.



Saturday, November 01, 2008

qemu试用

最近学习memtest86, 故需要一台主机作为测试. 自然想到了qemu. 说实话以前还没怎么用过虚拟机软件. 所以还是感觉到新鲜的.

创建硬盘:
qemu-img create -f qcow2 c.img 3G

从cd-rom启动:
qemu -cdrom /dev/cdrom -hda c.img -m 256 -boot d
从iso启动:
qemu -cdrom my_os_install.iso -hda c.img -m 256 -boot d

直接启动整个主机的linux 系统:
sudo qemu -kernel /boot/vmlinuz-2.6.25-14.fc9.i686 -initrd /boot/initrd-2.6.25-14.fc9.i686.img -hda /dev/sda -append "ro root=UUID=b53ebbb4-dc5e-4b04-b88b-93f5c892bb29 rhgb quiet"
警告:
WARNING: unless you know what you do, it is better to only make READ-ONLY accesses to the hard disk otherwise you may corrupt your host data (use the `-snapshot' command line option or modify the device permissions accordingly).

run memtest86 under qemu:
http://www.coreboot.org/Memtest86

Saturday, October 25, 2008

开始试用planner

安装了fedora9,发现菜单里自带了project management 工具planner.  于是准备试着用, 来管理工作上的项目. 当然效果要至少一星期还能出来, 到时我再来写试用心得.

虽然当项目经理已经有很长一段时间(具体多久忘了,一年左右. 问题还是不少, 也许就是因为没有使用项目管理工具的原因. 毕竟工作还是很忙的. 每天在项目管理上没法花太多的时间,造成任务布置下自己都忘了, 没有及时跟踪进度, 并且布置任务没注意设置期),希望这个工具的使用能帮助我更好的当好项目经理这个角色.

Saturday, October 18, 2008

慢性支气管炎

今早跑去海淀医院去看慢性支气管炎的问题.

人很多,干什么都要排队. 所以最好还是早点去.

拍了个肺部的X光(出片等了约一个小时),没啥问题.
医生就开了点药:
消咳喘片 X2
孟鲁司特钠片 X1
一共花了约两百块钱.

希望吃了过后能好起来,跑医院还是很烦的.

Friday, October 17, 2008

我所选的医保定点医院的等级

(这些信息可以http://www.bjld.gov.cn 上查到)
北京市海淀医院 二级甲等
北京市中关村医院 二级甲等
北京市上地医院 二级合格
北京市海淀区清河医院 一级甲等

竟然没有一个三级的,郁闷. 当时无知啊,也许是政策不允许.

Thursday, October 16, 2008

Ptherad Cancelability

Ptherad Cancelability 的标准说明见: POSIX.1 2.9.5 Thread Cancellation.

相关接口有:
int pthread_setcancelstate(int state, int *oldstate);
int pthread_setcanceltype(int type, int *oldtype);
void pthread_testcancel(void);

其中:
pthread_setcancelstate 来控制是否允许 cancel.
pthread_setcanceltype 用来控制 Ptherad Cancelability Type: 有deferred 和 asynchronous 两种. deferred 的实现方式为当调用 pthead_cancel时, 在pthread 管理结构中置上一个标志, pthread调用一些libc库函数时,会默认检测和处理这个标志, 也可以显示调用pthread_testcancel 来检测并处理这个标志. asynchronous 的实现方式为 通过 tgkill 系统调用来发送 SIGCANCEL 信号(此信号不能通过pthead_kill发送,无法通过参数检查).

Sunday, October 05, 2008

成都出差的一些照片

出差接近一个月. 没写下些什么,图省事,只放上些挑选出来的几组照片

2008_0906锦里
2008_0906锦里


2008_0914烷花溪
2008_0914烷花溪


2008_0930峨眉山
2008_0930峨眉山

Saturday, September 27, 2008

体验成都的长途客运服务

第一次来成都,就觉得这个城市还不错. 绿化挺多, 城市也还比较整结. 至少比长沙还是要好些. 前几天从成都去了趟绵阳.又体验到一次成都的好. 我是在昭觉寺坐的车. 到绵阳的车次很密集,不用怎么候车. 进站后,每台车的乘务员站在车前等候乘客. 并且乘务员统一着装. 这个我在其它长途车站没有看到过. 一下感觉这个服务品质肯定不一样. 上车后不一会车就开了. 乘务员先后用中文和英文说了一遍例行的欢迎话语. 我英语水平还没高到能去评价乘务员的英语水平,不过至少说明车站对乘务员的英语水平是有要求的. 然后乘务员给每人乘客发放一小瓶纯净水. 虽然这水可能是企业赞助的,但给人的感觉很好.
我第一次认识到:原来长途客运的服务也是可以做得这样好的.

Monday, September 15, 2008

address space resource

内核中有很多资源,但属于IO资源的有:
#define IORESOURCE_IO        0x00000100    /* Resource type */
#define IORESOURCE_MEM        0x00000200
#define IORESOURCE_IRQ        0x00000400
#define IORESOURCE_DMA        0x00000800

本文我主要研究IORESOURCE_IO IORESOURCE_MEM,及地址空间的管理,涉及的文件只有kernel/resource.c.
这两种资源本质上都是一段地址空间. 只是类型不一样
IORESOURCE_IO 指的是IO地址空间,这个空间从kernel编程上来看,只能通过专门的接口函数才能访问.硬件层面上,cpu需要用特殊指令才能访问或需要用特殊访问方 式才能访问,不能直接用指针来寻址.在PC机上,其指的就是PCI/CPU IO address space.在嵌入式中,基本上没有io address space.
IORESOURCE_MEM 指的是属于外设或者用于和设备通讯的支持直接寻址的地址空间.PC机上,主板上北桥上连的内存都是交给kernel直接管理,或者都是用于软件执行,所以 这部分内存不属于IORESOURCE_MEM, IORESOURCE_MEM主要是指PCI设备的 memory address space. 但在嵌入式上, 主板上的sdram一般是设备与cpu共享的. 故交给kernel直接管理的内存只是一部分.余下的内存以及寄存器空间都作为IORESOURCE_MEM来管理.

只所以需要管理,是 因为像PCI总路线设备的这些地址空间是设备向系统申请的,故是可配置的,并且设备并身可能热插拨或更换,故其变成一种可分配的资源. 故内核用算法来管理分配与释放操作,防止冲突和便于查询维护.但实际PC中,BIOS一般会做分配操作,内核需要是把分配结果添加进来,故提供了注册(或 者叫做添加)接口. 在嵌入式系统中,外设的地址也通常是固定的,只需要添加即可.

这两种资源,内核采用同样的管理算法--二叉树.相当于内核维护两个独立的二叉树. 按地址基地址与地址长度范围作为管理数据.可以添加,分配,释放节点.分配过程中可以避
免空间冲突,添加时可以识别空间冲突.根节点在kernel/resource.c中以全局变量方式定义.根节点用于限制地址空间的范围.

主要接口:
int insert_resource(struct resource *parent, struct resource *new)
int adjust_resource(struct resource *res, unsigned long start, unsigned long size)
int allocate_resource(struct resource *root, struct resource *new,
              unsigned long size,
              unsigned long min, unsigned long max,
              unsigned long align,
              void (*alignf)(void *, struct resource *,
                     unsigned long, unsigned long),
              void *alignf_data)
int release_resource(struct resource *old)
int request_resource(struct resource *root, struct resource *new)

上面的接口对上述4种资源类型都有效,对于IORESOURCE_IO 和 IORESOURCE_MEM这两种资源,使用这两个接口更为方便
request_region(start,n,name)
release_region(start,n)
        io space
request_mem_region(start,n,name)
release_mem_region(start,n)
        mem space

在 /proc 文件系统中,ioports和iomem分别显示系统当前这两种资源.


嵌入式设备的外设一般先作为platform device添加到platform bus上,其主要目的就是向系统注册资源,在platform_add_devices时做,
如:
/* Watchdog timer parameters */
static struct resource wdt_resource[] = {
    /* Watchdog timer only needs a register address */
    [0] = {
        .start = 0xFFC00008,
        .end = 0xFFC00010,
        .flags = IORESOURCE_MEM,
    }
};

struct platform_device wdt_device = {
    .name = "wdt",
    .id = -1,
    .num_resources = ARRAY_SIZE(wdt_resource),
    .resource = wdt_resource,
};
platform_add_devices(wdt_device,1);


故如已知设备的物理地址,并不一定需要request_mem_region,因为这个操作并没有涉及到任何硬件,与软件访问也没有任何关系..但一般还是推荐做.

I/O port 访问流程( 不用mem模拟方式):
request_region()   #在设备驱动模块加载或opn() 函数中进行,物理i/o port地址由pci bios模块分配
inb(),outb()等     #在设备驱动初始化,write(),red(),ioctl() 等函数中进行
relase_region      #在设备驱动模块卸载或release() 函数中进行

I/O port 访问流程( 用mem模拟方式):
request_region()
ioport_map         #在设备驱动模块加载或opn() 函数中进行,物理i/o port地址由pci bios模块分配
ioread8,iowrite8等 #在设备驱动初始化,write(),red(),ioctl() 等函数中进行
ioport_unmap()
relase_region      #在设备驱动模块卸载或release() 函数中进行


request_mem_region
ioremap         #在设备驱动模块加载或opn() 函数中进行,物理i/o port地址由pci bios模块分配
ioread8,iowrite8等 #在设备驱动初始化,write(),red(),ioctl() 等函数中进行
iounmap()
relase_region      #在设备驱动模块卸载或release() 函数中进行

内核如何识别root参数所指定的根文件系统设备

把内核的sysfs配置选择去掉后,发现无法mount根文件系统了. 于是,看内核是怎么识别root参数的,以及其与sysfs的关系.
 root 参数的处理在是do_mount.c的prepare_namespace函数里. 基本原理为:先munt devfs到/dev目录,然后根据root参数中指定的设备文件名字,从devfs中找到设备文件对应的dev对象,这样就可以开始mount操作了. 不过devfs文件系统已被废弃了. 相应的功能由sysfs取代. 逻辑差不多.
  另外 /dev/nfs 并不是实际设备文件,只是根代表文件系统为nfs文件系统. 故处理逻辑中不会用到devfs或sysfs. 所以去掉 sysfs 后,内核仍然能mount 上nfs根文件系统,而无法mount上flash mtd partition上的根文件系统.

(移动)硬盘安装fedora9

拿着公司的笔记本回来装fedora9,发现光驱不能用. 故重新温习了一下硬盘安装linux的操作.
以下为笔记:

是内置硬盘,还是usb移动硬盘,方法都是一样的. 故这里不加区分.

基本原理: 开机BIOS加载硬盘上的引导程序grub,gurb从硬盘上引导一个kernel和简单安装程序. 简单安装程序启动后,此时有足够的设备驱动, 再由你来选择具体安装方式: 硬盘安装(ISO)或网络安装(NFS),并进行相应的配置.

上 面提到的安装程序的kernek和简单安装程序都在ISO文件的isolinux目录下,分别叫vmlinuz和initrd.img. 我们将其解出到硬盘的某个分区上(gurb不支持NTFS文件系统). 简单安装程序不支持NTFS文件系统,所以ISO文件要存放在非NTFS分区上.

因此第一步要安装grub.由于gurb要由 BIOS引导,故gurb要安装在任何可启动的磁盘驱动器上. 如你的内置硬盘,或USB存储介质(如BIOS支持的话). 如果电脑的内置硬盘上已经安装有windows,可以在windows里进行安装gurb. 下载WINGURB,选择grub-install,设备选你的内置硬盘即可. 由于grub支持命令行编辑启动,所以无需配置,只要安装上就行. 重启后即进入到grub启动界面,按c进入命令行模式, 用root命令设定vmlinuxz以及initrd.img所在的分区为root分区. 接着用kernel命令和initrd分别选定 vmlinuxz和initrd.img. 最后输入 boot 即可启动. 配置完语言和键盘后,即选择安装方式,选硬盘安装并且指定好ISO所在分区和目录即开始常规的安装过程.

chroot初探

最初使用chroot这个命令是在 fedora 系列的救援模式下,实现根文件系统由光盘上的文件系统切换到本地硬盘上的文件系统. 最近由于开发中要用到这个命令,故好好看了看文档,加深一下了解.

  这个命令的功能描述为:Run a command with a different root directory. 即在/目录理解成其它目录的环境下运行一个命令. 而我以前将其错误的理解成整个应用环境的功换. chroot下应用执行环境与原来的环境的差别只是/目录的实际物理路径不一样(当然会造成同样的路径所访问到的实际文件不一样)

 不过实际使用中,一般都是这样用chroot:
chroot 目录
 这 种用法后面没有跟一个命令作为参数,chroot会默认执行SHELL环境变量所保存的值作为命令来执行. 由于SHELL这个程序运行起来后不会退出,且会在终端下给出命令提示符,所以整个个命令执行起来后,即陷入,同时出现新shell的提示符,给人的感觉 是切换到新的用户环境. 由于新的shell会重新载入一些环境变量以及初始化脚本,故新环境下坏境变量与原来的环境变量还是有一些差别的.

要测试的话:
新建一个目录,把/bin以及/lib目录拷贝到新目录下,然后就可以chroot到新目录,输入exit即回到原来的环境.

openoffices tip

以前一直习惯于用文本文件来作笔记. 回过头来看这些笔记的时候发现表现力还是不够,或者不够清晰. 于是开始转到openoffice来. 摸索了一阵后,终于可以应付简单的排版了. 以下为备忘:

页面横向纵向设置:
在 Format --> Page 菜单里,  对应英文为Orientation:  Portrait(纵向)  Landscape(横向)