文档库 最新最全的文档下载
当前位置:文档库 › Linux驱动工程师成长之路

Linux驱动工程师成长之路

Linux驱动工程师成长之路
Linux驱动工程师成长之路

本人此刻还不是什么驱动工程师,连入门都谈不上,但我坚信在未来的3-5年我肯定能成为我想像中的人,因为我马上就要进入这一行工作了。写下这个日志来记录我是怎么最后成为我想像中的人才的,呵呵。

《Linux驱动工程师》这个东西是我在大二的时候看到有一篇讲如何学习嵌入式的,点击这里下载PDF,里面讲到嵌入式分为四层:硬件,驱动,系统,应用程序;还说linux驱动最难然后工资也最高就冲着他这句话我就决定我大学毕业的时候要去做这个linux驱动工程师,随后我就先后买了51单片机,ARM7,ARM9还有一大堆的视频教程准备来进行学习。我还跟我旁边那个哈工大哥们说:“我们学校像我这样的人很少,你们学校呢?”他说:“太少了,不过我们学校都是做这种板子卖的人比较多!”。行,你们牛!即使是买了这些东西,从大二到现在都快毕业了但感觉还是没有入门。回想一下我都学过什么啊:1:自己在ARM9上写bootloader(主要锻炼了三方面的知识:C语言应该写了有近万行的代码,ARM9的外设的基本操作方法如UART,LCD,TOUCH,SD,USB,ETHERNET...,makefile);2:移植和学习linux驱动。下面我说一下我学习Linux驱动的一个思路这也是我在面试的时候自我介绍中最重要的部分;1:硬件知识学习Linux驱动首先得了解这个驱动对应的硬件的一些基本原理和操作方法比如LCD你得了解它的场同步,行同步,像素时钟,一个像素的表示模式,还有就是这个LCD是怎么把图像显示在屏幕上的。如果是USB,SD卡就得了解相关协议。可以通过spec(协议)、datasheet来了解,这就是传说中的Linux驱动开发三件宝之二,还有一个就是linux相关源码。2:了解linux驱动框架linux下的每一类驱动差不多都是一个比较完善的子系统,比如FLASH的驱动它就属于MTD子系统从上到下分为四层:设备节点层,设备层,原始设备层,最下面的与具体硬件相关的硬件驱动层,通常要我们自己来实现就是最下面这个与具体硬件相关那部分代码。3:了解这个驱动的数据流。这个过程与第二个过程紧密相关,如果了解了驱动的框架差不多这个过程也算了解了。比如flash.在/dev/目录下有对应flash的字符设备文件和块设备文件,用户对这些文件进行读、写、ioctl操作,其间通过层层的函数调用最终将调用到最下面的硬件驱动层对硬件进行操作。了解这个过程我相信在调试驱动的时候是很有帮助。3:分析与硬件相关通常需要我们实现的那部分源代码。4:三板子上将驱动调试出来。每次调试都会出问题,但我买的板子提供的资料比较全调试过程中遇到的问题都比较浅显,即使是浅显的问题也要把它记录下来。(这个是我上次在华为面试的时候,那个人问我你调试驱动遇到过什么问题吗?你是如何解决的。当时我学习还没有到调试驱动这一步,所以那次面试也惨败收场)。

好像说了这么多,还没有进入正题《工作的选择》。在年前去了龙芯,实习2.8K,转正3.5k,环境还是不错,经理很好,头儿也很帅都是中科院的硕士。不过去了两周我就没去了身边的人都不太理解,我也一度有过后悔的时候,从龙芯出来应该是1月6号,也就是从那个时候开始我就没有再找工作,转而学习linux驱动。一直到上周日。上周日的晚上我就开始投简历一开始要找linux驱动,在智联里面输入linux驱动出来500来个职位,点开一看没有一个自己符合要求的,差不多都要3-5年经验本科,有时候好不容易有个实习的关键字在里面,一看要求硕士,严重打击了我的信心,哎不管了随便投,最后又投了一下嵌入式关键字的职位。最后就瞎申请,看看职位要求差不多就申请。周一来了,这周一共来了6个面试,创下了我求职以来的历史新高。周一下午面了一家感觉还不错不过到现在也没有给我一个通知,估计当时我要了4500把他给要跑了,这家是做测量的不是Linux驱动,差不多是把ARM当单片机用。周二上午一家也是要招linux驱动面了估计不到二分钟,他

们就要招有几年工作经验马上能干活的人,不过唯一让我欣慰的是那个前台真TDM漂亮。周二下午有一家直接没去。周三有两家,上午是做专业计算机的,下午是百纳威尔(天语)linux 中级驱动工程师,天语是我重点对待的对象。两家都很远去第一家要近2个小时,第二家要超过2个小时,从第一家到第二家要2个小时。本来打算不去第一家,直接去天语。但想了一下去吧长一下见识也行。直接面试没有笔试问了一些大概情况,没有问太细的技术问题感觉还不错。10点到的那儿,出来才10点25,直接坐车到天语,一下车就看到两个大字“天语”,真是大,里面还有篮球场,网球场,估计有我们学校这么大,李宁也在旁边,这个时候才12点,本来约的是下午三点前,去那边吃了个饭,又围着天语的大门转了几圈,这个时候上午那家来电话了让我下周一上班,说第一个月给我3.5k,第二个月给4k,我当时一听这么高,直接就答应了,还准备打道回府不去天语了,反正来就来了就去试一下,我从13:20进去到16:20才出来,一进那个6楼我就被震到了给我一个感觉-大公司,这一层就像一个大会场一样一眼望去一片隔断式的办公桌和以前在电视里面看的很像。先让做一套题做了一个小时,都是操作系统,C语言,ARM,还有LINUX驱动方面的。完了来了一个人,拿着我做的题一道一道的看,我错的了,不会的还给我讲。到目前为止也面了十几家了也做了不少题像他这样的我还是第一次碰到,他总体觉得我还做得不错,然后就问我问题:问我做过什么项目吗?我说没有(单片机的都不好意思说了)。问我IIC,UART,LCD,SD,USB,FLASH,每个我都能答上来一些我确实也都学过,但稍微一深入点问我就不行,比如问:

uboot启动时候对nandflash做哪些初始化?设置频率(瞎说的)

linux启动过程?不知道(曾经准备研究)

IIC有几根线?我说这个简单两根(sclk,data)。

UART的速度有哪些?115200,9600.UART的流控制熟悉吗?不知道。

IIC和UART有什么区别?不清楚(他说一个是同步一个是异步)。

SD卡有几根线,有哪些线?9根,4根数据线,cmd线,clk线等等

USB都有哪些过程?枚举,枚举就是要获取设备的信息。。。。(这个我答得还行)

愿意加班吗?不加班都不习惯。

我一看这情况好像没戏,虽然东西是了解一些但是没有做过什么东西。当时我觉得已经无所谓了,反正有上午那家保底。

最后他给我的评价是:没做过项目都了解这么多,已经不错了,但是如果要上项目的话会比较吃力。然后他说让我等会儿,他去找他们经理再来和我谈一下。5分钟后他带来一个人说是他们驱动经理,驱动经理来了就和我聊家常,废话了半天,我只记得他说linux驱动我们很少招本科生一般都是招硕士生,即使是本科生也是工作了好几年的。这话听我感觉很爽。出去了说让我再等等,5分钟后驱动经理又带来一个人说是他们总监,总监也不问技术问题

就说你的这种情况可以先来我们公司实习到你毕业的时候就转正,实习工资2k。我问他能不能提供住宿,他说实习期间可以提供住宿,我们也有班车,绕着3,4,5环转。让我呢回去考虑一下如果可以就去实习。

回来之后,我当时决定就去上午那家,把最优路线都查好了。晚上把这个我今天面试的情况和老孙汇报了一下,又共同探讨了一下:他说去天语,大公司,又是你梦寐以求的linux驱动,去那儿干上2-3年你不就成了高级linux驱动工程师了吗?又问了两个人都说让我去天语。最后我也决定去天语。今天上午我给那个驱动经理打电话,我再问了一下我过来是做linux驱动吗,他说是的就在我的部门,我是驱动经理。我说的决定来实习。他说那我通知人事部,人事部会再通知你。

0-前言:

以前我在学习Linux驱动的时候就特别想知道,那些正在做linux驱动工作的人到底一天都在做什么呢?如果有谁能描述一下,那让我们这些初学者更清楚的知道工作需要些什么,那我们就更好的去学习,现在我就来记录一下,我的这个菜鸟之路。

1-实验环境:

我相信每个学习驱动的人都要做两件事:一个是理论的学习,另一个是做实验;理论的学习算是比较的轻松,驱动相关书籍(我用的是《LDD3》和华清的那本《Linux设备驱动开发详解》),Linux设备驱动开发详解PDF宋宝华版下载见https://www.wendangku.net/doc/222823222.html,/Linux/2011-04/35312.htm还有网上的很多资源;学习完一个驱动的理论之后,我们就要做实验,效果出来之后,我们才会感觉,真的学习了驱动。比如学习LCD驱动,先看相关理论知识,然后就得让LCD真正显示出东西来。在以前学习C语言或者应用程序的编写时,这个实验的环境很容易的搭建起来,只要一台电脑,装个开发软件就ok了,而现在这个嵌入式,是要与具体的硬件打交道,光有电脑不行,还得有板子,有了板子还得搭建这个驱动开发的环境。我的驱动学习环境是这样的:虚拟机里装RedHat5,板子里面有烧写好的bootloader,bootloader能够和PC机进行网络通信,可以通过网络下载PC机上的内核到板子上,然后让内核跑起来。内核起来之后就通过NFS挂载根文件系统,NFS根文件系统的好处就在于,我们可以在PC机上去写程序,然后在板子上挂载的NFS根文件系统的运行,效果就会在板子上显示出来(如果不了解NFS根文件系统上网查一下),不过后期我调驱动的时候都是将驱动编进内核,然后把内核下载到板子上跑。我当时为搭建这个驱动调试环境费了很大的劲,不知道搭了多少遍,主要问题出在那个bootloader不能和PC机通信,就不能用网络下载内核了,内核搞不进去就没法调了。来到公司,领到电脑后第一个任务就是搭建开发环境,公司有专门的人负责这个开发环境的搭建,装什么软件,出了什么问题都会有专门人来给你解决,我相信其它公司也一样,你去工作不会让你在搭建环境上费劲的,除非你是重头做起。所以我在这儿和初学者说一下:不要花太多的时间去搭建那个环境,工作当中公司肯定会给你做好的。拿到开发板后按照他的手册,尽快把环境搭建好进入驱动的学习。

2-驱动调试

先说一下,我感觉驱动组的人都在做什么;他们好像都是在调试bug。从我们整个公司的研发结构来讲:有做硬件的(原理图的设计,画PCB,调试硬件),我们驱动组(专门负责驱动),应用程序组,测试组。测试组的人相当于用户,整天都在那儿测试,如果发现有bug他们就提交上来,这些bug很多都是我们驱动的事。比如声音有POP音,POP音什么意思呢,就是你手机开音乐时,最先出来一个特别高的音,这个bug是带我那个人在调,他已经调出来了,他说是因为codec和另外一个模块的上电顺序不对。找这种bug难吗?如果经验不多,最开始估计还得靠靠运气,有些bug真难调。以前我多少认为做驱动,就是写驱动,现在看来不是,有些驱动芯片厂家会给的,但也不是一拿来就好用。写程序,不难,难的是调试程序。带我那个人以前是做应用的,我问他是做应用难还是做驱动难,我记得他说:驱动就是会出一些莫名其妙的问题,估计得做到5年以上才会轻松点(他现在做了快一年了),看来驱动还真是有点难度。以前我特别想做硬件,感觉做硬件很牛啊!我们旁边就是坐着两个做硬件的,感觉他们特别的轻松,整天笑容满面,有说有笑的,边听音乐边画PCB,而且很少加班;再看这边我们做驱动的,从最上面的驱动总监,驱动经理,再到我,每个人都愁眉苦脸,哎声叹气的,抓脑袋啊!而且每个人基本都是晚上8点后才走,我们三个实习的菜鸟都是近9点才走。测试部的美女(测试部大部分都是女的)走就走光了。看来我们以后的重点任务,就是调试驱动了。

3-第一个任务:LCD驱动分析

前面说了以后我们的大部分工作就是调试驱动,要调试一个驱动,如果你不懂这个硬件工作原理,不熟读datasheet,不懂驱动的框架,不懂数据流的传递过程;你是基本没法去调试的。所以头儿给让我先分析LCD驱动(我的头是负责多媒体这块的驱动,包括LCD,camera,audio)最后还要自己写一个驱动分析的总结,给我了一些文档,还有指定了内核下对应的LCD驱动的源码。文档当然都是英文的所以学好英文还是很重要的。于是我就开始看datasheet和源代码,LCD驱动相对来说还比较简单,而且以前我也看过s32440上的LCD驱动,所以分析这个驱动还算顺利,大致驱动框架还是知道的。三天也就分析得差不多了,头儿的头儿见我分析得差不多了,就给来了个任务,说现在有版手机的屏,手机上的屏是好的,但是通过Android screencast抓屏到PC机上却是花屏,usb这条通路肯定是好的,我拿过来down了内核进去发现还真是花的,好像是像素错位了。当时我是一点思路都没有。这太奇怪了,手机上的屏是好的,居然抓出来的屏是花的,这跟驱动有关系吗?头的头儿说:framebuffer 里面的数据不对,好像是32字节对其的问题。行我什么都不用想看看吧。我的想法是,既然手机本身的屏没有问题,那说明LCD驱动的写的这一路没有问题,但抓屏这一路,应该是去读取framebuffer里面的数据,说明是读的这一路的问题,我把fbmem.c中的fb_fops 结构体的的.read函数设为空,抓出来的屏就没有显示,说明它是通过读取这个数据去显示的。但我分析了一下读的这个函数根本没有任何的问题,因为这是LCD驱动比较靠上层的函数,所有的LCD驱动,它基本都是一样的。那接着就瞎改LCD参数吧,无意之中我把屏信息的xres从原来的240改成了320就能正常显示了,最后我又改成256也能正常显示,说明这个数必须是32的整数倍就好用了。当然我不能改这个xres来解决问题,这样的话那手机上的屏肯定就不能显示正确了。得根据这个去找原理,最后在程序中某处发现像一行的像素个数必须是32的整数倍,至于为什么是32的整数倍我现在还搞懂,这得再仔细看芯片手册看能不能找到答案,如果行像素个数不是32的整数倍的话,在计算分配的缓冲区长度的时候,就是会将行像素个数凑成32的整数倍,如果是240的话那就用256来算。一个

像素用16bits(2bytes),那一行就多出来(256-240)*2=32个bytes.如果androidscreencast在抓屏时多抓了32个字节,而显示一行又只显240个像素,那么这剩下的32bytes==16个像素就移到下一行,这样整个图像就错位了,这只是我的分析。为了验证我的想法,我在fbmem.c的read函数中如果是读到240*2个字节的时候我就直接跳过接下的的32个字节。改了之后还是没有效果。这时我问了一个做这个驱动的同事,他说这个bug他已经解决了,给了我一个framebuffer_service.c说把system目录下面的.../../adb/framebuffer_service.c 替换就好了,我实验了一下还真是好了,分析了一些他的改动和原版,大概意思和我分析的原因差不多,就是多出来的那32个字节的处理。不过这里的程序已经算是应用程序了,真是令我郁闷,我以前看的都是kernel下面的代码,而从来没有去分析过system下面的代码,因为这部分已经感觉像是应用的东西了,不过还是让我开了一下眼界。第一个任务就这样结束了。

4-驱动分析总结文档

第一个任务是Android screencast抓屏花屏的问题完了之后,头儿又给了一个新任务:QFIT 转Img时出现了问题。

1-何为QFIT:

这个我之前还从来没听过,反正就是一个工具,BP代码编出来的一个工具,它用于将多个IMG合成为一个img,然后工厂将这个img烧写到flash芯片中,再将flash芯片焊在手机上。我们编出来的Img总共有6个:boot.img,system.img,userdata.img,splash.img,persist.img,recovery.img,要将这6个转在一个名叫:factoryimage2.mbn的文件。可现在只能正常转换boot.img,system.img,userdata.img,这三个,其它三个就有warning:

Use of uninitialized value in subroutine entry at Add_Spare_Area.pm line410

Use of uninitialized value in pack at Calc_Spare_Area.pm line185

让我分析这个warning是如何产生的,还有就是会对我们的img产生什么样的影响。

2-我的分析:

一:现象

(1)

(2)

上面图(1)是在windows的dos下执行qfit.cmd后的效果,图(2)便是与之相对应的Log文件。从图(1)中可以看到在操作splash.img时与boot.img,system.img不同的是在Converting..\..\build\ms\bin\TSNCJOLY\splash.img

to Local/splash.ecc之后出现了下面两个warnings

Use of uninitialized value in subroutine entry at Add_Spare_Area.pm line410.

Use of uninitialized value in pack at Calc_Spare_Area.pm line185.

根据提示很容易找到代码所在地:at Calc_Spare_Area.pm line185

main::rs_encoder(\@buffer_temp,\@ecc,$ECC_BUFFER_BYTES_516,$ECC_10 _BYTES);

从语法上来讲是传给函数rs_encoder的第二个参数\@ecc表示一个地址,用来让参数作为返回值,其具体的意义就不太清楚了。其所在的函数为:sub add_ctrl_7500_page_2048_width_16_main_and_spare_ecc_10。下面就分析这个函数是怎么被调用到的。这个可以根据Log文件来查找,因为代码所执行的所有打印信息都在log文件中会有显示出来。将图(1)和图(2)结合来看提示的warning是在打印语句Converting..\..\build\ms\bin\TSNCJOLY\splash.img to Local/splash.ecc和File= Local/splash.ecc之间。

所在文件:行数:所在函数

Make_Factory_Image.pm:107:make_factory_image

——》(表示调用)Make_Factory_Image.pm:797:process_data_file_ecc

Make_Factory_Image.pm:1164:process_data_file_ecc

{

.

.

Tools::print_log(0,"Converting$data_file_name\n to$ecc_file\n");

Calc_Spare_Area::add_ecc_to_file

my$error=Calc_Spare_Area::add_ecc_to_file()

Tools::print_log(0,"File=$ecc_file");

.

.

}

从这个process_data_file_ecc函数里面的上面粘出来的代码可以看出来,warning就出在add_ecc_to_file这个函数中,下面看add_ecc_to_file函数

Calc_Spare_Area.pm:60:add_ecc_to_file

{

Add_Spare_Area::calc_ecc({

array_ref=>\@Buffer,

cfg_ref=>$cfg_ref,

page_layout=>$page_layout,

});

$string=pack('C*',@Buffer);

print{$ECCFILE}$string;

Tools::print_log(5,".");

}

log中所提示的

Use of uninitialized value in pack at Calc_Spare_Area.pm line185.

便是add_ecc_to_file函数中的$string=pack('C*',@Buffer);这条语句。而

Use of uninitialized value in subroutine entry at Add_Spare_Area.pm line410.先于

Use of uninitialized value in pack at Calc_Spare_Area.pm line185.所以

Use of uninitialized value in subroutine entry at Add_Spare_Area.pm line410.便是在

Add_Spare_Area::calc_ecc()中的,下面看Add_Spare_Area::calc_ecc()

Add_Spare_Area.pm:92:sub calc_ecc{

my($arg_ref)=@_;

my$page_layout=$arg_ref->{page_layout};

#$DB::single=1;

#Tools::printf_log(10,"\ngaomaolin:calc_eec:page_layout= 0x%04d",$page_layout);

if(defined$dispatch_add_spare{$page_layout}){

&{$dispatch_add_spare{$page_layout}}($arg_ref);#this is a function call

return0;

}

else{

main::popup_msg_ok_error('Add_Spare_Area::calc_ecc',"Unsupported page_layout=$page_layout");

#Tools::print_log(0,"Unsupported page_layout=$page_layout\n");

return1;

}

}

可以看到这里面调用了

&{$dispatch_add_spare{$page_layout}}($arg_ref);#this is a function call

可以看到

Add_Spare_Area.pm:69:sub dispatch_init{

%dispatch_add_spare=Calc_Spare_Area::dispatch_add_init;

for my$index(0..15){

$array_16_0xFF_bytes[$index]=0xFF;

}

}调用Calc_Spare_Area::dispatch_add_init对dispatch_add_spare进行了初始化。

仔细去看一下Calc_Spare_Area:1119:dispatch_add_init函数的实现便可以知道dispatch_add_init将总共24个计算ecc的函数装在一个数组,然后根据传进的索引值进行调用。其中第0x12个函数的调用就是导致warnings:Use of uninitialized value in subroutine entry at Add_Spare_Area.pm line410.的函数:

$CTRL_7500_PAGE_2048_WIDTH_16_MAIN_AND_SPARE_ECC_10=> 'add_ctrl_7500_page_2048_width_16_main_and_spare_ecc_10',

再回到

Add_Spare_Area.pm:92:sub calc_ecc{

my($arg_ref)=@_;

my$page_layout=$arg_ref->{page_layout};

#$DB::single=1;

#Tools::printf_log(10,"\ngaomaolin:calc_eec:page_layout= 0x%04d",$page_layout);

if(defined$dispatch_add_spare{$page_layout}){

&{$dispatch_add_spare{$page_layout}}($arg_ref);#this is a function call

这里可以看到&{$dispatch_add_spare{$page_layout}}是根据page_layout来选择不同的ecc计算函数来实现的。下面我们就追踪这个page_layout的来源。

二:page_layout出于何处:

QFIT.pl:3867:sub show_no_target_connected{}

——》my$cfg_ref=Tools::get_config_data();

——》display_configuration($cfg_ref)

——》my$page_layout=Calc_Spare_Area::calc_page_layout

仔细查看calc_page_layout这个函数的实现

my$found_page_layout= $page_layout{$nand_controller}{$device_type}{$page_bytes_user}{$flash _width}{$ecc_over_main_spare}{$partition_file};

#all other partition files

$found_page_layout= $page_layout{$nand_controller}{$device_type}{$page_bytes_user}{$flash _width}{$ecc_over_main_spare};

就是通过上面这两句话来对page_layout进行计算的,在这里面加上打印语句将,$found_page_layout打印出来在log里面有如下信息:

calc_page_layout in Make_Factory_Image409

gaomaolin0:page_layout=0x001780:BOOT0x000002270x00000028 main_and_spare_ecc_101x_pages..\..\build\ms\bin\TSNCJOLY\boot.img

calc_page_layout in Make_Factory_Image409

gaomaolin0:page_layout=0x001890:SYSTEM0x0000024F0x00000640 main_and_spare_ecc_101x_pages..\..\build\ms\bin\TSNCJOLY\system.img

calc_page_layout in Make_Factory_Image409

gaomaolin1:page_layout=0x0012100:SPLASH0x0000088F0x00000008 main_and_spare_ecc_101x_pages..\..\build\ms\bin\TSNCJOLY\splash.img

110:CACHE0x000008970x00000140main_and_spare_ecc_101x_pages

calc_page_layout in Make_Factory_Image409

gaomaolin0:page_layout=0x0018120:USERDATA0x000009D70x000005F5 main_and_spare_ecc_101x_pages..\..\build\ms\bin\TSNCJOLY\userdata.img

calc_page_layout in Make_Factory_Image409

gaomaolin1:page_layout=0x0012130:PERSIST0x00000FCC0x0000000C main_and_spare_ecc_101x_pages..\..\build\ms\bin\TSNCJOLY\persist.img

calc_page_layout in Make_Factory_Image409

gaomaolin1:page_layout=0x0012140:RECOVERY0x00000FD80x00000028 main_and_spare_ecc_101x_pages..\..\build\ms\bin\TSNCJOLY\recovery.img

从上面的打印信息可以看出出warning的三个Img(splash.img,persist.img,recovery.img)的page_layout都是0x12。

下面是我们组长写的:

在使用qfit生成factoryimage2.mbn时,转换splash.img persist.imgh和recovery.img会有一些warning信息出现:

Use of uninitialized value in subroutine entry at Add_Spare_Area.pm line410

Use of uninitialized value in pack at Calc_Spare_Area.pm line185

经查第一条信息出现在文件Add_Spare_Area.pm中add_ctrl_7500_page_2048_width_16_main_and_spare_ ecc_10中。

但我们boot,system,userdata走的是add_ctrl7500_page2048_width16_main512_spare4_ecc10_G1。

所以感觉这是两种不同的生成ecc的方式。但对于同一个flash来说,应该是一种。

所以最终我在Calc_Spare_Area.pm中加了一下代码,使所有生成ecc的函数都走add_ctrl7500_page2048_width16_main512_spare4_ecc10_G1,不知这样是否正确?

(主要是不清楚你们编译深成img中的格式)

$page_layout{'nand_controller_7500'}{'SLC'}{2048}{16}{'main_and_spare _ecc_10'}{'splash.img'}

=$Ctrl7500_page2048_width16_main512_spare4_ecc10_G1;

$page_layout{'nand_controller_7500'}{'SLC'}{2048}{16}{'main_and_spare _ecc_10'}{'persist.img'}

=$Ctrl7500_page2048_width16_main512_spare4_ecc10_G2;

$page_layout{'nand_controller_7500'}{'SLC'}{2048}{16}{'main_and_spare _ecc_10'}{'recovery.img'}

=$Ctrl7500_page2048_width16_main512_spare4_ecc10_G2;

我们nand的信息是:

Page:2048,block:64page,block num:4096,bus width:16,block size:128K flash size:512M

问题:

将手机的boot,system,splash,userdata,recovery,全部擦掉,然后再依次烧入。再开机时手机就死在了开机logo中。从串口输出的bootloader信息来看是发生了数据异常。但是如果再将splash擦掉,再烧写一遍。就不会有这个问题了。

分析问题:

通过打印log,最后将出错的代码定位在了释放内存函数free()中的list_delete(node),当中。说明在访问Node进出了问题。从程序执行的流程来看,先是从logo的高度,宽度和bpp计算出logo所需要的内存;然后以这个大小去向系统申请内存。然后再从flash当中读取logo数据。而从flash中读,是以整页为单位。这样之后读取出来的数据就要大于上面根据logo的尺寸所计算的大小,也就可能大于所申请的内存,从而导致占用了其它没有被申请的内存了。这样就出了问题。

解决方法:

以将logo的大小以flash页对齐之后,再去申请内存。

疑问:

为什么再次擦除,烧写slpash.img后,就过了呢?我把list_delete(node)中node的pre,next指针都打印出来后,发现next的值都是非法的,但前后都不同。现在不知道是什么原因。

老大说了,下周新的手机要回来了,用的是400*800的屏,到时候就由我来调这个屏了。把屏的spec和背光的spec都给了我让我先看看。

以前分析了LCD(framebuffer)的驱动框架,但是对于背光还没有分析过,其底层到底是怎么工作都不知道。看了两天其间总是不能理解它是怎么工作的,到现在总算有了点感觉。

背光和LCD屏是两个独立的设备。背光也就是放在LCD屏后面的几个LED,LCD模组厂商将他们集成到一个块,从屏那一堆引出的管脚里面就有几个是led的,如果将这几个相应的管脚接上正负极那背光就亮了。如何来调节这个背光的亮度呢?通过pwm,也就是时而上电时而断电,上电的时间越多(占空比)也就是越亮。这很容易理解。为了帮助我们控制背光我们这里用了一个芯片RT9379B。从它的spec的Typical Application Circuit可以看出从它的EN管脚输入pwm,然后它的LED管脚也就相应的输出pwm去控制屏上的led。

疑惑一:

一开始我认为需要在EN端不断的输入pwm,LED端才相应不断的输出pwm,但是从代码控制上来看,代码总是在输出了几个设置背光的pulse之后就不再向EN输入pulse了。我当时就想不明白,为什么只输出几个pulse呢?死活想不通,去问了人,模模糊糊的知道了,原理在设置背光的时候只需要输入你想要设置的等级的pulse个数,比如你要设置8级背光,就输入8个pulse,10级就输出10个pulse。这样之后芯片也就知道你所想要的等级了,它就会自动去输出相应的pwm到屏上的led中。说得也是,如果不是这样还要你这个芯片干什么呢,我直接用io管脚模拟pwm不就得了。

疑惑二:

从代码控制上,背光越亮发送的pulse越少,从手机的实验结果也是这样。而我以前想当然的认为发送的pulse越多应该越亮。从spec上也没有读出来如果控制亮度。从spec的Brightness Control里面有一句话是“the detail operation of brightness dimming is showed in the figure1”看了头天figure1也都没看出来它表达个什么意思。后来和同事讨论一下终于明白它什么意思了。它的这个背光亮度分为32个等级,从那个时序图上可以看到脉冲1下面对应的就是31/32,脉冲2下面对就的就是30/31,这样对应起来也就懂了,呵呵。

一名优秀的结构设计师的成长之路

先介绍一下自己,我学的土木工程,一毕业就从事结构设计。从08年任公司结构所长(结构所有20个人),现兼任公司副总工。公司总人数90,民营企业,甲级设计单位。以上介绍只是为了说明我下面的话是真实的,是在一线工作多年的经验,是站在领导岗位上阐述自己喜欢的员工类型。下面开始介绍。 经常在一些土木论坛上逛,看到过很多结构从业人员诉说自己很困惑的帖子,有的同志担心自己学历低,比不过人家研究生和本科生,比不过名牌院校的毕业生;有的同志在单位没人带,做了几年也没学到多少东西,想跳槽有找不到合适的单位,并且担心新单位是否也一样;有的同志在单位受压制,可能不屑于去逢迎领导,结果比自己能力差的员工混的比自己还好;有的同志还没毕业就有了恐惧,很想从事设计,又担心自己做不好。以下我从几个方面来叙述我总结的经验,与大家共勉。 1.干结构设计学历、职称等只是敲门砖,不是最重要的。 要说学历、职称没一点用那是不可能的,我单位现在招结构人员一律是研究生,本科生以下一般不考虑了。中级职称以上肯定优先。但这只是一个敲门砖,进了门以后还要看自己的能力。有人可能说既然知道只是敲门砖,单位招人为什么还限制学历?因为从很多人身上得出的结论,学历越高,能力还是越强的(平均起来)。这里只是说的平均,肯定不是绝对。我们结构所有20个员工,从个人能力来开,研究生不一定就比本科生强,毕业8年的不一定就比毕业5年的能力强。我们的总工,40来岁,人家是中专毕业,没上过高中,但善于学习,专研能力很强,一注基础专业都是一次性过(高数重来没学过的,厉害吧)。所以,不要担心自己的学历,只要你肯学习,能力全靠自己。什么样的才算有能力?请往下看。 2.领导最看重的能力。 做图速度、做图质量、内部之间的沟通能力、与外部的沟通能力、现场解决问题的能力,这些基本上是优秀结构师应具备的能力。现在设计行业竞争很激烈,设计院也基本上都改制为股份制企业,你能给公司带来效益,才会的到领导的青睐,所以做图速度很重要。比如我们这里,同样的楼,别人1周能做两栋,而你只能完成一栋,且质量还比别人的差,甲方天天跟在屁股后面要图,你说我会更喜欢谁?有人说了,不可能吧,速度会差这么多?真的会有的,人家作图快,不光是人家手快,聪明人善于终结,作图前会有个统筹安排,怎么做会事半功倍。有些人做一样的图永远也总结不出快的经验。关于沟通能力,有内部沟通和外部沟通。有的员工与建筑或设备专业沟通时老沟通不到点子上,说的人家听不懂,态度又不好,最后结果是反映到领导这:建筑某某不合作,死活不改,结构实现不了,你看怎么办?外部沟通更重要,结构设计者需要稳重,但关键时刻还必须能说。现在很多甲方不太懂技术问题,我们设计中遇到一些需要甲方定的事情就要用一种通俗的语言跟他们解释清楚。有些员工一见到甲方就恐惧,说的专业术语人家又听不懂,总得领导出面解决。现场解决问题的能力与自己的专业水平息息相关,做的不好的员工一去工地回来就带回来一堆问题,现场解决不了,还老是让施工监理以为我们水平很差。还有要有自己的思想,遇到问题要自己想一个解决办法,然后请教别人的时候先阐述一下自己的办法看可行不,再去请教有没更好的办法。别一上去就只说:你看怎么办。应该说:你看我这个方法可行不,有没有刚好的办法? 3.关于个人的追求,工作的态度、与同事的相处。 结构设计是一门很严谨的学科,技术含量高。所以有能力的人总会得到重用。领导不是傻子,会故意去提拔一些能力低不懂技术的人,而故意压制能力强的,那是会出问题的。设计师应看重单位的什么,薪水是一方面,还有很重要的就是成长的环境,对新员工有没有很

技术型管理者的自我成长之路

技术型管理者的自我成长之 路 -标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

学习导航 通过学习本课程,你将能够: ●了解优秀专才转化为管理精英的背景; ●掌握技术型管理者角色转换的关键所在; ●熟知企业的成长历程及各个发展阶段; ●明白企业管理的主要功能; ●完成从优秀专才到管理者的初步转变。 技术型管理者的自我成长之路 一、技术型管理者的基础知识 1.优秀专才转化为管理精英的五个背景 企业内部人才的培养 企业在发展过程中会逐渐形成自身的经营理念和企业文化,由于在企业中长期熏陶,有着良好专业背景的技术专才会与企业达成一种共识——认同企业的理念和文化。所以,这些优秀专才就会很自然地成为企业内部人才培养的“第二梯队”。 企业发展规模的扩大 在发展过程中,企业的规模会不断扩大,从一个厂到多个厂,从一元化经营到多元化经营,从企业化经营到集团化经营……这种不断扩充的结果之一,就是促使企业要从内部培养人才后备力量。 需求多元化、技术多元化 企业面对的是多元化需求的市场,最初企业常常以生产市场竞争激烈的产品为主,随着企业发展就要不断寻找新的客户需求,并提供他们所需的新产品。这也就是人们常说的从“红海”走向“蓝海”的过程。在这个多元化发展的趋势中,相应就会产生技术的多元化,这就要求管理者具备极强的掌握和开发新技术的能力。 技术含量的增加

当前,我国正从传统的制造大国向制造强国和研发强国迈进,整体技术水准正在不断地深化。在这个过程中,企业产品的技术含量会越来越高,也就要求企业管理者具备更高的技术水平。 技优则管 当前,中国企业面临着技术强国的大环境和快速发展的挑战,许多优秀专才会非常自然地进入管理团队。一方面,许多企业会给优秀技术人才架设一条从技术到管理的晋升跑道;另一方面,掌握企业核心专利和关键技术的高级技术人才,事实上已经运用自身的技术和知识影响了企业的经营绩效和发展,这种影响力的发挥也是一种管理。因此,正如中国古代社会的“学而优则仕”一样,对于企业中的优秀专才而言,“技优则管”是其成长的一条必由之路。 2.专业人员与管理者的七个不同特质 从优秀专才到管理精英,是一个从一枝独秀到满园皆春的过程,也是一个扬弃和挑战的历练之旅。优秀专才尽管有深厚的专业知识,但进入管理层后,工作的出发点、目标和视角等都会大不一样。在这个过程中,优秀专才必须要发挥优势,克服短板,顺利完成角色的转换。专业人员与管理者的区别如表1所示: 表1 专业人员与管理者的不同特质 专业人员管理者 完成任务带领团队 细致缜密抓大放小 非黑即白非黑非白 针对任务针对目标 关心过程以终为始 专业技术管理艺术 收敛思维发散思维 完成任务 VS 带领团队 专业人员的工作目标是独自完成某项任务;管理者的工作目标则是带领团队完成任务,在整个过程中,管理者要对各方面的细节有着非常深入细致的了解。 细致缜密 VS 抓大放小

从结构设计过程谈结构工程师素质培养

从结构设计过程谈结构工程师素质培养 1、社会关于工业工程师的定位 “工业工程师是什么样的人”不是什么理论问题,而是一个实践问题。由于侧重面和时代的不同,国内外有关工业工程师的说法很多,归纳起来大致有5种,即:一、工业工程师是这样的人,他们是最佳工作系统的设计者;二、是决策者和各级管理者的助手;三、是管理与技术、经理与工程师们、部门与部门、企业与外部环境之间的接口、沟通者和协调人;四、他们也是区别于管理和其他技术人员而有自己独立和具体业务的专业工程师;五、他们还是敢于和善于提出新见解、新思路,并能够及时接受、倡导、推进暂时一般人尚难接受或还未意识到的、没有一定部门或岗位负责的新技术、新工艺、新材料、新方法、新思想、新策略的高参、革新者或“不管部长”。 这些说法从不同角度反映了工业工程师的工作性质、内容和作用。其核心或最基本的是第1种说法,即工业工程师是最佳工作系统的设计者。换言之,工业工程师所从事的工作就是一种以某一系统为对象的优化设计/再设计工作,从而使输入系统的人力与其他各种资源得到最充分有效的利用,杜绝/减少各种浪费,实现系统的最大/佳的输出。 第2种说法是从工业工程师所处地位、作用的角度,说明他们是各级领导的助手、参谋和智囊,协助管理者发现问题,作出正确的生产和经营决策,为管理提供科学依据。可见IE专业并不直接培养决策层——厂长、经理等管理者,而是培养工程师,一种特殊的工程师。但反过来说,管理者却必须具备IE知识,特别是IE意识。否则,他们也不可能按照工业工程的要求,合理地、科学地组织生产经营活动,把企业搞好。同时另一方面,正如美国IIE学会所说:工业工程师却常常发展为高级经理,因为他们比其他专业工程师具有更多的经营技巧和训练,其结果是,今日许多大公司的高层领导人都具有工业工程的背景。 第3种说法说出了工业工程师有别于其他专业工程师的“接口工程师”的特点,是领导层和其他部门或专业工程师所不能替代的。他们始终从全局和整体出发,为各级管理者提供方便,为各部门参谋和咨询,并对各部门(如设计、制造和供应)之间的业务进行协调与综合。 第4种说法则着重说明不能把工业工程师的工作都理解为系统的总体规划

浅谈终身学习与卓越工程师成长之路

Advances in Education教育进展, 2018, 8(1), 52-57 Published Online January 2018 in Hans. https://www.wendangku.net/doc/222823222.html,/journal/ae https://https://www.wendangku.net/doc/222823222.html,/10.12677/ae.2018.81010 Some Discussions on the Relationship between Lifelong Learning and the Development of Excellent Engineers Qingli Zhang, Guijie Lui Engineering College, Ocean University of China, Qingdao Shandong Received: Jan. 8th, 2018; accepted: Jan. 22nd, 2018; published: Jan. 29th, 2018 Abstract Excellent engineer training has two classes inside and outside the school. And the development of excellent engineers also has two stages: the birth and the growth period. The training system of excellent engineers in school was established on the analysis of excellent engineer training stan-dards. The lifelong learning is introduced into the growth of the engineer on the premise of ana-lyzing the development of excellent engineers. The rise in space has formed from a single project to comprehensive project, from the technology job to the management job. A system of learning and growth of excellent engineers in the workplace has been established. Excellent engineers who have professional knowledge and skills were trained. And they have rich experience in manage-ment of high-level personnel. Keywords Excellent Engineers, Train, Lifelong Learning, Continuing Education 浅谈终身学习与卓越工程师成长之路 张庆力,刘贵杰 中国海洋大学,工程学院,山东青岛 收稿日期:2018年1月8日;录用日期:2018年1月22日;发布日期:2018年1月29日 摘要 卓越工程师的培养存在校内校外两个课堂,卓越工程师的成长道路分为形成期和成长期两个阶段,在分

结构工程师的“35 岁之惑” - 建筑结构

16 建闻天下 Building Structure We learn we go 结构工程师的“35岁之惑” 缪六华/中国建筑上海设计研究院有限公司,上海200040 人生三十而立,四十不惑,在每个阶段都有相应的问题和想法。 应届硕士毕业生进入设计院大约工作5年后达到30岁,此时专业上已经奠定好基础,各种结构类型和 体系例如框架、框-剪、剪力墙、框-筒等都一般会有 所涉猎,地上和地下的结构都设计过,有了比较完整的工作经验,在项目上基本能独挡一面,在职场上处于上升阶段。在设计院大约工作10年以后达到35岁,此时专业上全面发展,除了具备完整的结构设计经验以外,对整个结构体系会有所思考和总结,能完成结构方案选型、结构体系定案等工作,能完成超限项目设计的文本和报告,以及完成计算和图纸校对工作,一般处于专业负责人或领导的位置,职场上处于稳定或瓶颈阶段。 去年北京OKOK “稷下会”论坛曾举办过一次座谈会,很多设计院的结构工程师汇聚一堂,这些工作多年的结构工程师聚在一起侃侃而谈,不约而同谈到了结构工程师35岁以后的职业发展、职业转型甚至创业的问题。 国内的设计院尤其民营设计院的加班非常多,很多结构工程师每周工作时间不少于60小时,当设计任务繁重时工作时间甚至更多,结构计算和施工图绘制都是很辛苦的工作,而且工程师过了35岁以后身体素质逐渐下降,可能较难继续适应高强度、快节奏的工作和生活,另外由于不同年龄段职业发展的要求或个人心态上的变化,工程师就面临再次的职业抉择。一般说来有3个方向可供选择:1)坚持和发展;2)职业转型;3)创业。 一些结构工程师自身的设计经验、技术达到较高层次,商业人脉也有了一定的积累,不希望再为别人打工,因此选择了创业。这样的例子很多,低端的如个人从设计院所分包项目的结构专业施工图,高端的如自己开设了专业或综合事务所,或在大型设计院内开设工作室或部门。 几位同事今年上半年开始了创业之路,虽然目前建筑设计市场受房地产调控大环境的影响普遍不佳,市场竞争激烈、利润低,但毕竟创业就是一个开始,如果能够坚持下来并逐步打开局面,就会有一个美好的未来;若创业失败,仍可留在设计单位工作和生活。 一般来说,单一性的结构专业设计团体在设计市场上生存压力较大,这和国情以及结构专业性质有 关。国外的建筑师习惯向外分包各专业设计任务,而国内的设计单位一般具有完整的专业配置,很少向外分包各专业设计任务,具有中国特色的“炒更”活动也因为设计费价格过低,只适合个人而不适合团体承接。另外,在民用建筑中建筑(方案和施工图)属于龙头专业,在工业建筑中工艺或建筑属于龙头专业,结构专业一般都为辅助配套专业,很难单独承揽设计项目,竞争激烈、可替代性强。因此建议结构工程师在创业时宜和其他相关专业人员合作,共同创立综合性的设计团体,减少创业风险。 另一些结构工程师在积累了丰富的设计经验之后开始了职业转型,例如加入房地产公司的设计部门或工程管理部门,或加入大型单位的基建部门。职业转型之后,在与设计院和施工单位工作交流时其专业技术经验可以得到充分发挥。我们院在与房地产公司项目合作时遇到很多这样的转型工程师,他们一般隶属设计部门,对设计院的设计成果进行过程控制和图纸审查,主要着眼于结构体系的合理性和建设成本的经济性,保证设计院的设计成果是房地产公司真正想要的东西,在项目中起到了很好的作用。例如某项目,在甲方结构工程师的要求之下,基础形式由桩筏基础改为筏板基础,节省了工程造价,节约了项目施工时间,给企业带来较好的经济效应。 其实工程设计仅仅是工程建设管理过程中的一小部分,结构专业设计更是如此,从管理学的角度看,专业设计之外有更广阔的领域等待工程师去面对和发展。结构工程师进入房地产公司,除了巩固原有的专业知识以外,还需要学习很多全新的知识,例如结构工程师要适当懂建筑专业、设备专业的知识,要面对很多新的交叉学科,例如住宅项目要了解很多和结构专业相关的经济指标和结构专业在商业项目中的适应性等等。 地产公司的工作性质比较繁杂,结构工程师进入地产公司以后,除了面对结构专业性工作外还要面对很多非专业性事务,工作中专业技术比重下降,同时地产公司的人际关系也更为多样性,结构工程师应及时调整心态、适应新的工作环境。就中国目前薪酬体系现状而言,结构工程师进入地产公司往往也能取得良好的经济回报。 当然更多的人留在设计单位坚持和发展,主动或被动,喜欢或不喜欢,这群人也有很多的迷茫和困惑。

一个电子工程师的成长经历

一个电子工程师的成长经历——南方的老树 我是一个电子工程师,我把我原来写的关于电子工程师怎样成长的一个帖子改改放在这里。 实际上,技术这种东西的规律是大同小异的,虽然是电子工程师的成长的道路,但是,其它领域的技术人员,我想也是一样的。 因为我也是比较痛苦地用了较长的时间才完成了从初学者到一个系统工程师的转变,所以啊,将自己这点体会写出来,希望能起到一点微薄的作用。 作为一个初出校门的大学生,如果有高手带的话,实际上只需要大概6个月到1年的时间就能实现这个转变。 只要你够勤奋、善于沟通、人品好。 前2者大家都可以理解;人品好就是大家看着这个人顺眼,愿意帮他,什么都愿意跟他讲,相处不厌倦。 要是狗脾气、自私,谁爱理你?要知道,自私的人,也愿意跟人品好的人在一起。 一个电子工程师,或者说,一个电子系统设计工程师,需要有机会,这种机会是靠自己去争取,“哭着喊着要进步”,有这种精神,还需要明师带着,就可以。 可是,上了班,谁会带你?很少,或者没有。市场竞争激烈,过去还说:“教会徒弟饿死师父”,这种现象,国营单位或许严重一些,民营企业中你需要给老板创造效益,至于学习,是在工作中学,老板是不会让你不干活而学习的,只能边干边学。 我把技术人员的成长之路分成几个阶段: 1.入门 1~2年 2.登堂入室 3年 3.勤奋至卓越 4.沟通、协作 5.对某个行业深入理解,做出产品 5年 第一步入门-51核心和基本电路 中国人有10亿啊,每年有多少大学生毕业呢?我不知道。但是我看到有一张照片,招聘会上熙熙攘攘,人来人往,十分震撼。从来没有一个时刻让我感觉到中国的人力资源是如此的丰富。但是,从现在的大学毕业出来的学生学到了什么东西呢?一些理论,跟实际脱钩的理论。有没有用呢?有点用。但是,在企业中,需要的是实际干点事情出来,实际解决问题。所以说,很多企业不想要大学本科出来的大学生,说动手,没有动手能力,不知道电阻电容长得什么样子,能够做什么?但是又自视甚高,对工资的期望值比较高。等到能够干点事情了,又拍拍屁股跑了。所以企业现在喜欢使用大专中专甚至是职业学校培训出来的小孩,至少这些孩子们知道自己的份量,能够实实在在地做事。要知道,他们很多人的天赋并不差,很多人是家庭条件不好,打小就是苦孩子,没有条件接受良好的教育。一旦给机会,他们都比较珍惜。 现在的大学,误人子弟甚多。扩招是没有错,但是,实验室扩了吗?教室扩了吗?教师扩了吗?至少实验室是没有扩。老树认得的一个研究生说,只有到了一个阶段,才能到实验室作实验。很多导师就是把学生当奴隶一样干活,要是在干活中能够学到东西那就算是运气好的;运气不好的,直接就是导师的廉价的劳力了,学不到东西,活倒干了不少。 但是,既然学生要拿文凭,要应付考试,没有办法,那怎么自救? 在入门这个阶段,需要去学习大量的知识,摸清你所在的领域所需要的知识体系,从最基本的学起。 如果励志要做一名出色的电子工程师,老树可以谈谈自己的看法。 做一个电子工程师,先从51学起,这是得到公认的。不需老树饶舌。 首先,去买一个开发板,越便宜的越好,在上面可以练练keil C。最好再买一个仿真

架构师之路----一个四年-JAVA-程序员的工作经历

论坛的帖子看的多了,讲大道理的也很多,可是真正懂的并去做的有多少?本人第一次发帖子,不说什么道理,只是个人的一点经历,很普通但是本人这几年的亲身经历。 首先介绍下自己,男,06 年毕业来的北京,从事J2EE 开发,现在 4 个年头了。 06 年和刚毕业的很多同行一样。二本毕业,CET-4,没有其它证书也没得过什么奖,很普通,面临找工作的问题。不过运气不错,刚来北京二周就拿了二个offer,一个是北京磁共振研究所,从事VB,DEPHI 开发,另一个是一个新成立的公司,从事JAVA 开发。我选择了后者,当时自己接受过 4 个月的培训,可能会比一般的学生多些动手能力,这公司的上机本来是一道题的,做一个GUI 画图程序,很简单,时间三天,不过我用了一天就搞定了,所以公司又多考了我二道上机题。只做出来了一道,当时很害怕公司不要我,后来才知道是公司有意试我的,无论后面两道我做成什么样,一样会拿到offer。刚毕业吗,没社会经验。工资2000,税后1600,试用80%,三个月,不过我二个月转正了,第 5 个月时提到了3000,第8 个月时提到了4000。当时开心的很,老板初看是很老实的人,开会还是私下给了我很多希望,甚至邀请我去他家去玩,自认为和老板的关系很好。不过后来证实这点是错误的,千万不要和你的老板走的太近。就是同事关系。工作内容吗是负责公司一个可视化程序的开发和对应的B/S 插件以及对外支持工作,产品要卖钱吗,当时工作真的很卖力,在这公司的时间真的把心都给公司了,基本没有11 点前过家,有时是工作,有时是学习,刚毕业吗,没经验,尤其是支持还需要很广的知识面。在这公司呆了三年,当时公司就20 多人,所以有些工作不是分的那么清,我呢基本是一个人做三个人的活,开发,测试,支持,后来又兼职售前。当时工作太忙,北京又太大,有时一天要跑几个地方,公司仅有的一辆车基本成了我的专用车了。当时老板对我也不错,这样过了两年多,我学了很多知识,而且了解了公司运作和产品开发流程,并一手支撑起了支持部门,一共 5 个人。 到第二年半的时间,公司新招了一批程序员,都是 2 -4 年工作经验的,他们工资都是7000+,我呢当时是4500,所以有点不得劲,找老板谈了次,我要求是5500,结果不欢而散,老板向我保证的是 5 年后,会有20W 的个人买房补助和车补,这时我才明白人们常说的不要和你的老板做朋友是啥意思。完了后我故意没以前工作努力了,但也没误过事。只是不会多做事,老板没办法给我涨到了5200。我这时才有了跳槽的想法,一个月后提出辞职。结果老板骂了我,说我应该提前3-4 个月和他说,还说我没职业道德。合同法规定是一个月,半个月时工作交接完了,到了一个月我要走了,办离职证明,公司不给开,不让我走,这之前老板找了谈了三回,最后一回才提涨工资的事,说实在的我当时就是因为这事要走的,不过都谈三回了,也没啥意思了。 当时我找到工作了,那边让我报到,这边不给证明,后来我和老板商量我先报到,然后再回来半个月,再帮半个月时间。还是不欢而散,我一生气,就直接走了,结果到了那边没有离职证明可以签个协议就行了。当时还有工资没结,取工资时老板不给我让扣一个月的,我真的生气了,我说我不要了,明天我去告他。我走到门口,老板拉住我又说可以给工资但不给开离职证明,我还是那句话,老板没办法,后来手续和工资都给我了。安心去第二家公司上班。 不过说实在的,我还是很感激这个公司和老板的,教了我N 多东西,我也在这公司学了N 多东西,很多是和技术没关的。 09 年,第二家公司是开发组长,带了7个人做J2EE,当时我就不会设计大的系统,不过我们经理是高级架构师,所以应聘时根本没在乎工资还是5000。这公司很大,但开发流程不太正规,底层开发人员不受重视,做了很多大的项目,和组员和经理处的都不错,我刚来时我们经理又是业务又是技术的累死了,我之前做过很多不同职位,所以我来了后技术这块我们经理基本是没操过心,唯一做的工作是看我的阶段报告。整体把控一下。和我们经理这时真的是朋友了,因为不涉及到钱。所以当时我请假啥的根本不用走流程,只要我事做完了,可以不来,也可以在家做,一周基本3-4 天班。 后来因为家里的原因,我08 年的房子要下来了,而且也结婚了,老婆是上家公司的同事。而且到2010 年时老婆又有小孩了,迫于经济原因只能走了。走时我们经理没有当面留我,只是找我抽烟的时候多了好多,而且从来不提我找工作的事,这事他早知道。说实的,我是真的不想走。 我之前没在网上写过任何东西,也没有博客和网站,甚至连QQ 空间都没。有时怀疑是不是搞IT 的,回

结构工程师工作总结范文3篇

结构工程师工作总结范文3篇 Model work summary of Structural Engineer (latest edition) 汇报人:JinTai College

结构工程师工作总结范文3篇 前言:工作总结是将一个时间段的工作进行一次全面系统的总检查、总评价、总分析,并分析不足。通过总结,可以把零散的、肤浅的感性认识上升为系统、深刻的理性认识,从而得出科学的结论,以便改正缺点,吸取经验教训,指引下一步工作顺利展开。本文档根据工作总结的书写内容要求,带有自我性、回顾性、客观性和经验性的特点全面复盘,具有实践指导意义。便于学习和使用,本文档下载后内容可按需编辑修改及打印。 本文简要目录如下:【下载该文档后使用Word打开,按住键盘Ctrl键且鼠标单击目录内容即可跳转到对应篇章】 1、篇章1:结构工程师工作总结模板常用版 2、篇章2:结构工程师工作总结范文 3、篇章3:结构工程师工作总结范本(通用版) 篇章1:结构工程师工作总结模板常用版 xx项目从XX年4月中旬正式施工到现在,其中制管车间门架式钢结构总面积 9820㎡,预留仓库门架式钢结构总面积3840㎡,主体分别于XX年6月初,XX年10月中旬全线投入使用,这成绩与公司的正确领导及项目部全体员工的辛苦劳动是分不开的,也是我们设计部、物资部、工程部等公司上下团结协作的结果。在工程的整体建设过程中,也深刻认识到团队

合作的重要性,一些自身的不足,团队的融洽度等等都是影响工程顺利进行的关键因素。为此,现将工程工作总结如下:一、工期进度方面 工程在建前期,在公司上下一致的努力下,整体运作良好,工程从安全,质量,进度等各方面呈现良好趋势,但是原材料的加工好坏是一项重要环节,为此在材料进场过程中,对其材料的审核验收关系到工程安全、进度等重大环节。(材料常出现的问题:1,材料与原图纸不符。参照图纸逐一检验,确保材料的无误性;其次原材料在加工生产过程中公司加大力度对其进行监督以确保材料的正确生产为之后的不必要麻烦做好保证。2,原材料进场相应资料不完善。建议在配发材料过程中,组织相应资料人员准备相应资料随车配发。3,做好图纸会审,原图设计的常理见识可能有时会与现场安装生产相冲突,造成后期现场变更,误工误时)鉴于以上,我希望能在工地开工之前,集公司相应领导,设计部,物资部,工程部(建议施工队在条件允许的情况下同会)等相应负责人召开一个"工前会议",针对图纸、合同、原材料采集、材料配发统筹,设计技术,现场管理问题做一个全方位的分析、统筹、商榷,划分相应职责,团结团队力量。

Linux驱动工程师成长之路

本人此刻还不是什么驱动工程师,连入门都谈不上,但我坚信在未来的3-5年我肯定能成为我想像中的人,因为我马上就要进入这一行工作了。写下这个日志来记录我是怎么最后成为我想像中的人才的,呵呵。 《Linux驱动工程师》这个东西是我在大二的时候看到有一篇讲如何学习嵌入式的,点击这里下载PDF,里面讲到嵌入式分为四层:硬件,驱动,系统,应用程序;还说linux驱动最难然后工资也最高就冲着他这句话我就决定我大学毕业的时候要去做这个linux驱动工程师,随后我就先后买了51单片机,ARM7,ARM9还有一大堆的视频教程准备来进行学习。我还跟我旁边那个哈工大哥们说:“我们学校像我这样的人很少,你们学校呢?”他说:“太少了,不过我们学校都是做这种板子卖的人比较多!”。行,你们牛!即使是买了这些东西,从大二到现在都快毕业了但感觉还是没有入门。回想一下我都学过什么啊:1:自己在ARM9上写bootloader(主要锻炼了三方面的知识:C语言应该写了有近万行的代码,ARM9的外设的基本操作方法如UART,LCD,TOUCH,SD,USB,ETHERNET...,makefile);2:移植和学习linux驱动。下面我说一下我学习Linux驱动的一个思路这也是我在面试的时候自我介绍中最重要的部分;1:硬件知识学习Linux驱动首先得了解这个驱动对应的硬件的一些基本原理和操作方法比如LCD你得了解它的场同步,行同步,像素时钟,一个像素的表示模式,还有就是这个LCD是怎么把图像显示在屏幕上的。如果是USB,SD卡就得了解相关协议。可以通过spec(协议)、datasheet来了解,这就是传说中的Linux驱动开发三件宝之二,还有一个就是linux相关源码。2:了解linux驱动框架linux下的每一类驱动差不多都是一个比较完善的子系统,比如FLASH的驱动它就属于MTD子系统从上到下分为四层:设备节点层,设备层,原始设备层,最下面的与具体硬件相关的硬件驱动层,通常要我们自己来实现就是最下面这个与具体硬件相关那部分代码。3:了解这个驱动的数据流。这个过程与第二个过程紧密相关,如果了解了驱动的框架差不多这个过程也算了解了。比如flash.在/dev/目录下有对应flash的字符设备文件和块设备文件,用户对这些文件进行读、写、ioctl操作,其间通过层层的函数调用最终将调用到最下面的硬件驱动层对硬件进行操作。了解这个过程我相信在调试驱动的时候是很有帮助。3:分析与硬件相关通常需要我们实现的那部分源代码。4:三板子上将驱动调试出来。每次调试都会出问题,但我买的板子提供的资料比较全调试过程中遇到的问题都比较浅显,即使是浅显的问题也要把它记录下来。(这个是我上次在华为面试的时候,那个人问我你调试驱动遇到过什么问题吗?你是如何解决的。当时我学习还没有到调试驱动这一步,所以那次面试也惨败收场)。 好像说了这么多,还没有进入正题《工作的选择》。在年前去了龙芯,实习2.8K,转正3.5k,环境还是不错,经理很好,头儿也很帅都是中科院的硕士。不过去了两周我就没去了身边的人都不太理解,我也一度有过后悔的时候,从龙芯出来应该是1月6号,也就是从那个时候开始我就没有再找工作,转而学习linux驱动。一直到上周日。上周日的晚上我就开始投简历一开始要找linux驱动,在智联里面输入linux驱动出来500来个职位,点开一看没有一个自己符合要求的,差不多都要3-5年经验本科,有时候好不容易有个实习的关键字在里面,一看要求硕士,严重打击了我的信心,哎不管了随便投,最后又投了一下嵌入式关键字的职位。最后就瞎申请,看看职位要求差不多就申请。周一来了,这周一共来了6个面试,创下了我求职以来的历史新高。周一下午面了一家感觉还不错不过到现在也没有给我一个通知,估计当时我要了4500把他给要跑了,这家是做测量的不是Linux驱动,差不多是把ARM当单片机用。周二上午一家也是要招linux驱动面了估计不到二分钟,他

结构工程师工作计划

结构工程师工作计划 为了更好开展工作,工作计划非常有必要,下面是小编为您带来的结构工程师工作计划,欢迎大家参阅! 结构工程师工作计划我工作中还有很多处置不当的缺点和不足,很多方面都还需要学习,更加需要公司领导与同事的帮助.指导和支持,具体表现为以下一些方面: 1. 工作中主动与事前控制能力有待提高:主要表现为对软景施工图纸确定前的控制能力不强 园林景观工程与相关专业交叉施工部位多,有时因设计部门各专业设计师未能及时沟通,导致园林景观工程施工图纸在施工过程中出现诸多问题,如:①各专业管线埋设在园林施工作业面下的位置存在不合理情况(部分管线埋设位置刚好在绿化种植大型苗木下方),发现时只能调整大型苗木种植位置,影响植物配置的合理性,使得最终的景观效果达不到设计要求。②由于相关专业设计标高的变更,园林又未做相应调整,施工到此部位时才发现问题,最后只能进行小范围设计变更调整,致使园林施工作业面收口不完美,影响景观效果。③园林绿化种植苗木的配置设计未考虑植物的生长特性 a.阳生植物和阴生植物设计种植位置不合理,影响植物正常生长; b.有些带刺的植物设计种植位置过于靠近行人能接近的园路.休息平台等部位,给行人易造成伤害.尤其是小孩; c.灌木丛的配置设计中相对长势快的灌木种植区域与草坪直接衔接,高差过大,使得现场植物配置显得混乱。上述是今年的软景施工过程中出现的比较常见的问题,如果在我的工作中仔细核对软景施工图纸.对存在不合理和矛盾的设计问题及时提出处理方案,就可以提前完善软景专业施工图纸,形成优良的景观效果。在今后的工作中还要进一步提升自己各个方面的学习力,避免类似现象再次发生。 2. 在工程质量管理.进度管理.安全管理方面能力还需进一步提高 在质量管理方面:为确保绿化工程的施工质量和效果,应更加严格把控材料关。严格验收,所有进场的苗木必须满足设计要求才能进场种植,对已选定的苗木因在

GIS数据工程师成长之路

GIS数据工程师成长路 1. 题记 Esri中国社区已经走过了6个年头,自己进入这个大家庭也整整4年有余;社区为大家提供一个相互学习、交流的平台,通过社区也结识了很多GIS行业达人、技术牛人,为自己的成长路增添许多捷径。在六周年之际,书此一文简单阐述“GIS数据工程师”成长之路;相信对那些即将踏入GIS行业和那些对于不知如何成长之人有可鉴之处。 2. 从Desktop开始 在GIS行业中,数据工程师职位门槛低,成长速度稍慢;更多被人理解为没有前途的职位。个人认为其实不然,行行出状元,只要肯努力必将回报。 不管你来自什么背景,非专业抑或是科班,今天起一切从零开始,从桌面版开始。 2.1. 数据编辑起步 学习桌面版,我曾和无数的初入行业人士说过:数据工程师没有做过矢量化、没有做个数据编辑工作的人,很难体会、理解数据工作。所以,在此建议必须通读外加练习Esri 官方出品《编辑手册》。Desktop10以后帮助文件已是中文版,其中的编辑操作帮助很是有用,同时,网页版帮助更是让你如鱼得水。如果你能有心做到将网页版帮助离线到本地的话,那么你离成功不远啦,至少你的学习态度和方法是我所认同的。 当然,在论坛中具有很多很多的有用的总结,这些经验之谈让你如虎添翼。 《GIS建库矢量化工具使用技巧分享》 https://www.wendangku.net/doc/222823222.html,/esri/viewthread.php?tid=39850 《两个数据编辑的技巧-(Modify Feature)》 https://www.wendangku.net/doc/222823222.html,/esri/viewthread.php?tid=85123

《解决不小心移动要素的办法》 https://www.wendangku.net/doc/222823222.html,/esri/viewthread.php?tid=33653 《自动接边(edge match)方法》 https://www.wendangku.net/doc/222823222.html,/ESRI/ ... %26amp%3Btypeid%3D4 《ArcGIS中两种配准方式:矢量配准栅格,栅格配准矢量》 https://www.wendangku.net/doc/222823222.html,/ESRI/ ... %26amp%3Btypeid%3D4 2.2. 坐标系统那些事 编辑学习的过程中,你将遇见N多问题,就算是科班的你,也不得不在此时补充理论知识。进入我们GIS行业,我对每个人都考核有关坐标系的那些事。 在社区,有很多达人用了很多形象化的语言来对你讲解,希望自己能够好好去学习,要从事这行,就花些时间真正去理解透了;磨刀不误砍柴工。 有关坐标系常见问题的问与答 https://www.wendangku.net/doc/222823222.html,/esri/viewthread.php?tid=121932 坐标系定义 https://www.wendangku.net/doc/222823222.html,/esri/viewthread.php?tid=92293 关于坐标系 https://www.wendangku.net/doc/222823222.html,/esri/viewthread.php?tid=82798 地理坐标系与投影坐标系的区别 https://www.wendangku.net/doc/222823222.html,/esri/viewthread.php?tid=103307 2.3. 不得不学的拓扑 拓扑学是比较有意思的学科,学习拓扑是GIS人理解空间地理信息最有效的方法。GIS 人必须具有空间思维能力,一切从空间出发。我们处理空间数据最有意思的地方就是从空间

技术型管理者的自我成长之路

习导航 通过学习本课程,你将能够: ● 了解优秀专才转化为管理精英的背景; ● 掌握技术型管理者角色转换的关键所在; ● 熟知企业的成长历程及各个发展阶段; ● 明白企业管理的主要功能; ● 完成从优秀专才到管理者的初步转变。 技术型管理者的自我成长之路 一、技术型管理者的基础知识 1.优秀专才转化为管理精英的五个背景 企业内部人才的培养 企业在发展过程中会逐渐形成自身的经营理念和企业文化,由于在企业中长期熏陶,有着良好专业背景的技术专才会与企业达成一种共识——认同企业的理念和文化。所以,这些优秀专才就会很自然地成为企业内部人才培养的“第二梯队”。 企业发展规模的扩大 在发展过程中,企业的规模会不断扩大,从一个厂到多个厂,从一元化经营到多元化经营,从企业化经营到集团化经营……这种不断扩充的结果之一,就是促使企业要从内部培养人才后备力量。 需求多元化、技术多元化 企业面对的是多元化需求的市场,最初企业常常以生产市场竞争激烈的产品为主,随着企业发展就要不断寻找新的客户需求,并提供他们所需的新产品。这也就是人们常说的从“红海”走向“蓝海”的过程。在这个多元化发展的趋势中,相应就会产生技术的多元化,这就要求管理者具备极强的掌握和开发新技术的能力。 技术含量的增加 当前,我国正从传统的制造大国向制造强国和研发强国迈进,整体技术水准正在不断地深化。在这个过程中,企业产品的技术含量会越来越高,也就要求企业管理者具备更高的技

术水平。 技优则管 当前,中国企业面临着技术强国的大环境和快速发展的挑战,许多优秀专才会非常自然地进入管理团队。一方面,许多企业会给优秀技术人才架设一条从技术到管理的晋升跑道;另一方面,掌握企业核心专利和关键技术的高级技术人才,事实上已经运用自身的技术和知识影响了企业的经营绩效和发展,这种影响力的发挥也是一种管理。因此,正如中国古代社会的“学而优则仕”一样,对于企业中的优秀专才而言,“技优则管”是其成长的一条必由之路。 2.专业人员与管理者的七个不同特质 从优秀专才到管理精英,是一个从一枝独秀到满园皆春的过程,也是一个扬弃和挑战的历练之旅。优秀专才尽管有深厚的专业知识,但进入管理层后,工作的出发点、目标和视角等都会大不一样。在这个过程中,优秀专才必须要发挥优势,克服短板,顺利完成角色的转换。专业人员与管理者的区别如表1所示: 表1 专业人员与管理者的不同特质 专业人员管理者 完成任务带领团队 细致缜密抓大放小 非黑即白非黑非白 针对任务针对目标 关心过程以终为始 专业技术管理艺术 收敛思维发散思维 完成任务 VS带领团队 专业人员的工作目标是独自完成某项任务;管理者的工作目标则是带领团队完成任务,在整个过程中,管理者要对各方面的细节有着非常深入细致的了解。 细致缜密 VS抓大放小 一般来说,专业技术人员的思维是细致缜密的,当其进入管理层成为管理者后,则需要

android从程序员到架构师之路介绍

麦可网https://www.wendangku.net/doc/222823222.html,/ 高端android体系化学习 Android:从程序员到架构师之路 Android发展多年的今天,很多工程师都遇到职业发展瓶颈了,不知道如何向上走,因此麦可网携手台湾Android教父高焕堂老师推出了《Android架构师之路》这套国内唯一的课程,通过这套课程学习,学员们会学习高老师提出的EIT架构设计模式,能从普通Android工程师往Android架构设计师这个新的台阶攀登,同时更加熟悉Android本身体系结构设计,也可以换位以Android系统的设计师角度来思考问题。 由于Android是开源开放的平台,国内开发者不仅涉及App应用开发,也深入到底层软硬整合开发。 随着Android产业急速扩大,上下层模块日益增多,复杂性增高。无论是软硬件开发者都需要优越的架构思维、模式和方法,来支撑复杂的软硬整合、跨平台和自动化测试问题。 本课程解析移动应用开发的架构思维、模式和方法;并落实为Android的多层框架体系;所介绍的架构设计决策,都能落实为代码,为一个非常务实的课程。 随着这套课程的推出,麦可网已经有了高级应用,Framework,底层嵌入式,架构师之路等一系列互补系统的Android课程,全面覆盖纵横领域。毫无悬念的麦可网已经具备了国内最强大,系统,专业的Android课程体系。 这套课程的针对人群:Android开发已经有至少两年经验的IT工程师,多年开发经验想深入了解Android这个开源平台的资深工程师,Android项目团队的技术管理者。 我们不建议:不建议Android初学者学习这套课程;不建议没有项目经验者学习这套课程;不建议没有遇到瓶颈者学习这套课程。 有人问:架构课程是否会讲解的很虚?这套课程有超过2/5 都是案例,结合代码和UML案例来分析各个设计场景,所以大可放心,欢迎点击我们的试听课程。

【结构设计】结构工程师十年设计经验总结

结构工程师十年设计经验总结 1关于箱、筏基础底板挑板的阳角问题: (1)阳角面积在整个基础底面积中所占比例极小,干脆砍了.可砍成直角或斜角. (2)如果底板钢筋双向双排,且在悬挑部分不变,阳角不必加辐射筋,谁见过独立基础加辐射筋的?当然加了也无坏处. (3)如果甲方及老板不是太可恶的话,可将悬挑板的单向板的分布钢筋改为直径12的,别小看这一改,一个工程省个3、2万不成问题. 2关于箱、筏基础底板的挑板问题: 1)从结构角度来讲,如果能出挑板,能调匀边跨底板钢筋,特别是当底板钢筋通长布置时,不会因边跨钢筋而加大整个底板的通长筋,较节约. (2)出挑板后,能降低基底附加应力,当基础形式处在天然地基和其他人工地基的坎上时,加挑板就可能采用天然地基.必要时可加较大跨 度的周圈窗井. (3)能降低整体沉降,当荷载偏心时,在特定部位设挑板,还可调整沉降差和整体倾斜. (4)窗井部位可以认为是挑板上砌墙,不宜再出长挑板.虽然在计算时此处板并不应按挑板计算.当然此问题并不绝对,当有数层地下室,窗井横隔墙较密,且横隔墙能与内部墙体连通时,可灵活考虑.

(5)当地下水位很高,出基础挑板,有利于解决抗浮问题. (6)从建筑角度讲,取消挑板,可方便柔性防水做法.当为多层建筑时,结构也可谦让一下建筑. 3关于箍筋在梁配筋中的比例问题(约10~20%): 例如一8米跨梁,截面为400X600,配筋:上6根25,截断1/3,下5根25,箍筋范围内加密.纵筋总量:385*9*8=281kg,箍筋: 0395*35*50=69,箍筋/纵筋=1/4,如果双肢箍仅为1/8,箍筋相对纵筋来讲所占比例较小,故不必在箍筋上抠门.且不说要强剪弱弯.已经是构造配箍除外. 4关于梁、板的计算跨度: 一般的手册或教科书上所讲的计算跨度,如净跨的11倍等,这些规定和概念仅适用于常规的结构设计,在应用日广的宽扁梁中是不合适的.梁板结构,简单点讲,可认为是在梁的中心线上有一刚性支座,取消梁的概念,将梁板统一认为是一变截面板.在扁梁结构中,梁高比板厚大不了多少时,应将计算长度取至梁中心,选梁中心处的弯距和梁厚,及梁边弯距和板厚配筋,取二者大值配筋.(借用台阶式独立基础变截面处的概念)柱子也可认为是超大截面梁,所以梁配筋时应取柱边弯距.削峰是正常的,不削峰才有问题. 5纵筋搭接长度为若干倍钢筋直径d,一般情况下,d取钢筋直径的较小值,这是有个前提,即大直径钢筋强度并未充分利用.否则应取钢筋直径的较大值.如框架结构顶层的柱子纵筋有时比下层大,d应取较大的钢筋直径,甚至纵筋应向下延伸一层.其实,两根钢筋放一起,用铁丝捆

相关文档
相关文档 最新文档