Sunday, November 30, 2008
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
有感于朋友升级电脑
wsyu一口气下了很多以前因为机器玩不了而没下的游戏,现在都玩不过来了. 不过我还是那个理论: 细水长流. 好游戏一年还出不了几个呢. 况且一个人长时间玩这种逼真度很高的游戏,使身体长进间长于亢奋紧张状态中,性情会有所变化.
助焊剂的作用
用过量的锡刷一遍内存管脚后,很多管脚间有搭锡. 用烙铁带不出来了. 从徐工那找到一瓶助焊剂. 先用助焊剂刷一遍后,再用烙铁一带就把锡带出来了.
查了一下助焊剂的作用,有如下几点,你也能想明白了吧:
a.清洁工件表面,去除表面的氧化物;
b.防止金属表面氧化,在加热过程中,焊剂在金属表面形成一层保护层,以防止氧化;
c.降低焊料的表面张力,使焊料容易润湿和牢固焊接。
Monday, November 10, 2008
访问量统计
有些blog站点有访问统计的功能(如我之前用的chinaunix 的), 虽然只有简单的访问量统计, 但博主看到数字的上升, 心中肯定一丝宽慰.
google blog这个站点虽然不提供这个功能, 但提供这个服务的站点还是很多:
Google Analytics 以及 SiteMeter 等. 上这些站点建立帐户后, 把一段代码加入到blog网页模板里就行了.
我的站点已经加入了这个功能,通过它们提供的访客信息,也许我能知道你是谁哦...
这一段时间的统计量表明,访问量还是很小的. 看来还需要多写出些有价值的文章出来.
Saturday, November 08, 2008
开始学习verilog
找了个帖子:iverilog+gtkwave编写verilog , 照着做就能看到波形了, 语法还没来得及学习... 不过至少已经上路了.. dyverin, 加油...
Friday, November 07, 2008
倩女幽魂 观感
重温经典电影<<倩女幽魂>>的想法又一次冒出. 这个电影本人没有收藏, 索性上淘宝上买. 我还是第一次在淘宝上买东西. 得先往支付宝总值. 支付宝竟然不支持中国银行,还好我还有个兴业银行的卡,里面有个百来块. 这才成功往支付宝里冲入100块. 找了家北京的商家(这样不用等太长的快递时间),买了个倩女幽魂三部曲. 一共四十多块. 不敢买便宜的,怕效果不好.
电影第二天就到了.花了两个晚上过了一遍,第一天晚上有点贪心,看了两部.
最好看的还是第一部. 这一部情节简单,就是书生宁采臣与女鬼小倩相爱,与燕赤侠一起对付千年树精,解救小倩的故事.人物也比较简单.没有着意刻画复杂的人性. 燕赤侠眼中只有好人,坏人和鬼, 好人不能杀,坏人和鬼都是该死的. 他就是受不了人世的人心叵测,偏居在雷若寺中.他虽然最终帮助宁采臣解救了小倩. 但并没有改变他的观念. 现实生活中,恐怕也有很多人受不了人的多面性以及事情的复杂性,不自觉的将人简单的区分对待,将事情简单处理.
宁采臣和小倩的爱很彻底. 但我相信这是由于宁采臣的一无所有,无牵无挂以及的小倩的身心受困,所以他们的相爱才能如此彻底,无所顾忌. 毕竟爱是他们的全部. 这样的爱情的确为人所羡慕,但又能被几人所拥有. (我又能在爱情上投入几分?)
鬼的氛围最足,也最符合我所想象的鬼的世界. 鬼的世界与人的世界没有太多冲突,只是晚上发生在无人烟的兰若寺周边. 鬼基本上与常人无异. 恐怖的气氛来源于昏暗的光线,废弃的小屋,坟山,吸血,吸阳气,符文,经文和旁人的表情等来让人联想. 并不靠夸张的实际造型.
结局凄美,让人遗憾. 也许这也是这部影片给我留下深刻印象的原因. 真希望有一天重温这个故事,得到的是一个完美的结局.
Saturday, November 01, 2008
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
虽然当项目经理已经有很长一段时间(具体多久忘了,一年左右. 问题还是不少, 也许就是因为没有使用项目管理工具的原因. 毕竟工作还是很忙的. 每天在项目管理上没法花太多的时间,造成任务布置下自己都忘了, 没有及时跟踪进度, 并且布置任务没注意设置期),希望这个工具的使用能帮助我更好的当好项目经理这个角色.
Saturday, October 18, 2008
慢性支气管炎
人很多,干什么都要排队. 所以最好还是早点去.
拍了个肺部的X光(出片等了约一个小时),没啥问题.
医生就开了点药:
消咳喘片 X2
孟鲁司特钠片 X1
一共花了约两百块钱.
希望吃了过后能好起来,跑医院还是很烦的.
Friday, October 17, 2008
我所选的医保定点医院的等级
北京市海淀医院 二级甲等
北京市中关村医院 二级甲等
北京市上地医院 二级合格
北京市海淀区清河医院 一级甲等
竟然没有一个三级的,郁闷. 当时无知啊,也许是政策不允许.
Thursday, October 16, 2008
Ptherad Cancelability
相关接口有:
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
#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参数所指定的根文件系统设备
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
以下为笔记:
是内置硬盘,还是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初探
这个命令的功能描述为:Run a command with a different root directory. 即在/目录理解成其它目录的环境下运行一个命令. 而我以前将其错误的理解成整个应用环境的功换. chroot下应用执行环境与原来的环境的差别只是/目录的实际物理路径不一样(当然会造成同样的路径所访问到的实际文件不一样)
不过实际使用中,一般都是这样用chroot:
chroot 目录
这 种用法后面没有跟一个命令作为参数,chroot会默认执行SHELL环境变量所保存的值作为命令来执行. 由于SHELL这个程序运行起来后不会退出,且会在终端下给出命令提示符,所以整个个命令执行起来后,即陷入,同时出现新shell的提示符,给人的感觉 是切换到新的用户环境. 由于新的shell会重新载入一些环境变量以及初始化脚本,故新环境下坏境变量与原来的环境变量还是有一些差别的.
要测试的话:
新建一个目录,把/bin以及/lib目录拷贝到新目录下,然后就可以chroot到新目录,输入exit即回到原来的环境.
openoffices tip
页面横向纵向设置:
在 Format --> Page 菜单里, 对应英文为Orientation: Portrait(纵向) Landscape(横向)


