uCOS51移植心得

uCOS51移植心得
uCOS51移植心得

uCOS51移植心得

巨龙公司系统集成开发部杨屹asdjf@https://www.360docs.net/doc/dd6470272.html,2002/10/03

引言

自从发表《uCOS51移植心得》以来,我收到了很多朋友们的来信,大家对公开源码表示鼓励,谢谢大家的支持!很多人对于编写自己的操作系统很感兴趣,uCOS51是个不错的选择。它的优点是简单易懂,学习成本低,有利于向32位CPU过渡。目前,嵌入式BBS 上的热点是:嵌入式实时多任务操作系统、单片机上网、32bitCPU(如ARM等)。其实通过uCOS51学习完全可以掌握这些热门技术的精髓,而且学习成本低廉。为此我会陆续将我在研发过程中的经验体会写出来与大家交流,共同进步。

我准备讨论以下内容:uCOS51高效内核、OS人机界面SHELL的编写、51机开发板的硬件设计、RTL8019AS网卡驱动程序、51TCP/IP协议栈设计、应用协议FTP、PPP、HTTP、SMTP、SNMP……在51上的实现技术、51OS任务划分和应用程序实例、由51软件系统向ARM的移植以及其他想到的题目。欢迎大家积极参与。

注:开发板原理图、PCB图、GAL烧录文件、芯片手册、全部源程序可以来信索取,在整理好后会共享在网上。

讨论1----uCOS51高效内核

前一段时间,我参与了一个SNMP网管板的项目,我负责硬件设计和单板软件开发。该板的硬件由MCS51+RTL8019AS组成,有64K FLASH 和64K SRAM。软件部分有操作系统和TCPIP协议栈。硬件比较简单,用了一个月就搞定了,协议栈我参考了老古开发板的部分程序又上网找了SNMP源代码也很快完成了,但是测试时发现当使用较低时钟频率的CPU时(为了降低成本),由于ASN.1编解码部分过于庞大,而我的程序又是一个大循环,AGENT的响应速度受到严重影响,用户界面也反应迟钝。更坏的消息是公司为了适应市场需求,还要在上面跑PPP和HTTP。那样的话,我就得用40MHz的AT89C51RD2或者人为的把程序断成几部分然后用状态机的方法在运行时再把它们连接起来。不过,我不想增加成本,也不想把程序搞乱,迫不得已,只好使用操作系统。

说实在的,一开始我也不是很有把握,一来我不清楚51的FLASH是否装得下这么多代码,二来我只做过OS应用开发,对于它的移植想都不敢想。不过,我在BBS上搜索了一阵儿后还是有了一些头绪。我找到了几个OS的源代码(我喜欢用现成的),按照代码大小、实时性、使用人数、众人口碑等标准,最后选定了uCOS2。我感觉它的实时性有保障,延时可预测,代码据说可小到2K,网上讨论这个话题的人也比较多,而且它的网站上有针对KEIL C51的移植实例。

经过一番查找,我得到了5个版本。其中3个是用KEIL编译的。本来我想直接把OS 代码嵌到应用程序中,但后来发现没有一个可以直接使用。有的无法用KEIL直接编译,有的需要修改DLL在软件仿真下使用。而我需要的是能在串口输入输出,不需要修改任何无关软件,能在软件仿真和硬件上运行的实时多任务操作系统。没有办法,我只好硬着头皮去改编。

我分析了自己的劣势:1。KEIL刚开始使用,不太熟悉;2。混合编程以前从没有作过;3。时间紧迫,要在1个月内搞定。而我的优势就是有5个移植实例可供参考,可以上网查

资料。一开始,我用“堆栈”、“混合编程”、“汇编”、“ucos”等关键字在C51BBS和老古论坛上检索相关信息并逐条阅读,读过之后,头脑中的思路逐渐清晰了。我了解到在KEIL的HLP目录下有A51.PDF和C51.PDF非常全面的介绍了汇编和C51,是KEIL的权威用户手册;SP初始化、内存清0等操作在STARTUP.A51文件中实现,用户可以改写它;KEIL的变量,子程序等的分配信息可以在.M51文件里查到;KEIL自己的论坛里有很多疑难问题的解答……通过阅读并经过思考,解决了堆栈起点、堆栈空间大小的设定等关键问题。论坛里的问题有些是我没有想到的,这使我发现了自己的疏漏。

在网上获得大量信息后,我开始阅读《uCOSII》中文版,一共读了3遍。第一遍是浏览,了解到uCOSII包括任务调度、时间管理、内存管理、资源管理(信号量、邮箱、消息队列)四大部分,没有文件系统、网络接口、输入输出界面。它的移植只与4个文件相关:汇编文件(OS_CPU_A.ASM)、处理器相关C文件(OS_CPU.H、OS_CPU_C.C)和配置文件(OS_CFG.H)。有64个优先级,系统占用8个,用户可创建56个任务,不支持时间片轮转。第二遍主要是把整个工作过程在头脑里过了一下,不懂的地方有针对性地查书,重点是思考工作原理和流程。我发现其实它的思路挺简单的。就是“近似地每时每刻总是让优先级最高的就绪任务处于运行状态”。为了保证这一点,它在调用系统API函数、中断结束、定时中断结束时总是执行调度算法。原作者通过事先计算好数据,简化了运算量,通过精心设计就绪表结构,使得延时可预知。任务的切换是通过模拟一次中断实现的。第三遍重点看了移植部分的内容。对照实例,研究了代码的具体实现方法。

前期准备用了20几天,真正编写代码只用了1.5天,调试用了2天。具体过程如下:

(1)拷贝书后附赠光盘sourcecode目录下的内容到C:\YY下,删除不必要的文件和EX1L.C,只剩下p187(《uCOSII》)上列出的文件。

(2)改写最简单的OS_CPU.H

数据类型的设定见C51.PDF第176页。注意BOOLEAN要定义成unsigned char 类型,因为bit类型为C51特有,不能用在结构体里。

EA=0关中断;EA=1开中断。这样定义即减少了程序行数,又避免了退出临界区后关中断造成的死机。

MCS-51堆栈从下往上增长(1=向下,0=向上),OS_STK_GROWTH定义为0

#define OS_TASK_SW() OSCtxSw() 因为MCS-51没有软中断指令,所以用程序调用代替。两者的堆栈格式相同,RETI指令复位中断系统,RET则没有。实践表明,对于MCS-51,用子程序调用入栈,用中断返回指令RETI出栈是没有问题的,反之中断入栈RET 出栈则不行。总之,对于入栈,子程序调用与中断调用效果是一样的,可以混用。在没有中断发生的情况下复位中断系统也不会影响系统正常运行。详见《uC/OS-II》第八章193页第12行

(3)改写OS_CPU_C.C

我设计的堆栈结构如下图所示:

TCB结构体中OSTCBStkPtr总是指向用户堆栈最低地址,该地址空间内存放用户堆栈长度,其上空间存放系统堆栈映像,即:用户堆栈空间大小=系统堆栈空间大小+1。

SP总是先加1再存数据,因此,SP初始时指向系统堆栈起始地址(OSStack)减1处(OSStkStart)。很明显系统堆栈存储空间大小=SP-OSStkStart。

任务切换时,先保存当前任务堆栈内容。方法是:用SP-OSStkStart得出保存字节数,将其写入用户堆栈最低地址内,以用户堆栈最低地址为起址,以OSStkStart为系统堆栈起址,由系统栈向用户栈拷贝数据,循环SP-OSStkStart次,每次拷贝前先将各自栈指针增1。

其次,恢复最高优先级任务系统堆栈。方法是:获得最高优先级任务用户堆栈最低地址,从中取出“长度”,以最高优先级任务用户堆栈最低地址为起址,以OSStkStart为系统堆栈起址,由用户栈向系统栈拷贝数据,循环“长度”数值指示的次数,每次拷贝前先将各自栈指针增1。

用户堆栈初始化时从下向上依次保存:用户堆栈长度(15),PCL,PCH,PSW,ACC,B,DPL,DPH,R0,R1,R2,R3,R4,R5,R6,R7。不保存SP,任务切换时根据用户堆栈长度计算得出。

OSTaskStkInit函数总是返回用户栈最低地址。

操作系统tick时钟我使用了51单片机的T0定时器,它的初始化代码用C写在了本文件中。

最后还有几点必须注意的事项。本来原则上我们不用修改与处理器无关的代码,但是由于KEIL编译器的特殊性,这些代码仍要多处改动。因为KEIL缺省情况下编译的代码不可重入,而多任务系统要求并发操作导致重入,所以要在每个C函数及其声明后标注reentrant关键字。另外,“pdata”、“data”在uCOS中用做一些函数的形参,但它同时又是KEIL的关键字,会导致编译错误,我通过把“pdata”改成“ppdata”,“data”改成“ddata”解决了此问题。OSTCBCur、OSTCBHighRdy、OSRunning、OSPrioCur、OSPrioHighRdy这几个变量在汇编程序中用到了,为了使用Ri访问而不用DPTR,应该用KEIL扩展关键字IDATA将它们定义在内部RAM中。

(4)重写OS_CPU_A.ASM

A51宏汇编的大致结构如下:

NAME 模块名;与文件名无关

;定义重定位段必须按照C51格式定义,汇编遵守C51规范。段名格式为:?PR?函数名?模块名

;声明引用全局变量和外部子程序注意关键字为“EXTRN”没有‘E’

全局变量名直接引用

无参数/无寄存器参数函数FUNC

带寄存器参数函数_FUNC

重入函数_?FUNC

;分配堆栈空间

只关心大小,堆栈起点由keil决定,通过标号可以获得keil分配的SP起点。切莫自己分配堆栈起点,只要用DS通知KEIL预留堆栈空间即可。

?STACK段名与STARTUP.A51中的段名相同,这意味着KEIL在LINK时将把两个同名段拼在一起,我预留了40H个字节,STARTUP.A51预留了1个字节,LINK完成后堆栈段总长为41H。查看yy.m51知KEIL将堆栈起点定在21H,长度41H,处于内部RAM 中。

;定义宏

宏名MACRO 实体ENDM

;子程序

OSStartHighRdy

OSCtxSw

OSIntCtxSw

OSTickISR

SerialISR

END ;声明汇编源文件结束

一般指针占3字节。+0类型+1高8位数据+2低8位数据详见C51.PDF第178页

低位地址存高8位值,高位地址存低8位值。例如0x1234,基址+0:0x12 基址+1:0x34

(5)移植串口驱动程序

在此之前我写过基于中断的串口驱动程序,包括打印字节/字/长字/字符串,读串口,初始化串口/缓冲区。把它改成重入函数即可直接使用。

系统提供的显示函数是并发的,它不是直接显示到串口,而是先输出到显存,用户不必担心IO慢速操作影响程序运行。串口输入也采用了同样的技术,他使得用户在CPU忙于处理其他任务时照样可以盲打输入命令。

(6)编写测试程序Demo(YY.C)

Demo程序创建了3个任务A、B、C优先级分别为2、3、4,A每秒显示一次,B 每3秒显示一次,C每6秒显示一次。从显示结果看,显示3个A后显示1个B,显示6个A和2个B后显示1个C,结果显然正确。

显示结果如下:

AAAAAA111111 is active

AAAAAA111111 is active

AAAAAA111111 is active

BBBBBB333333 is active

AAAAAA111111 is active

AAAAAA111111 is active

AAAAAA111111 is active

BBBBBB333333 is active

CCCCCC666666 is active

AAAAAA111111 is active

AAAAAA111111 is active

AAAAAA111111 is active

BBBBBB333333 is active

AAAAAA111111 is active

AAAAAA111111 is active

AAAAAA111111 is active

BBBBBB333333 is active

CCCCCC666666 is active

Demo程序经Keil701编译后,代码量为7-8K,可直接在KeilC51上仿真运行。

编译时要将OS_CPU_C.C、UCOS_II.C、OS_CPU_A.ASM、YY.C加入项目

以上是我这次移植uCOS51的一些心得,写出来只是让准备在51上运行操作系统的同行们少走弯路并增强使用信心。我强烈推荐大家在自己的51系统中使用uCOS这个简单实用的自己的操作系统。它的大小应该不是问题,性能上的提高却是显著的。但愿此文能对朋友们有所帮助,错误在所难免,希望各位大虾指正,诸位高手们见笑了!

注:全部源码可来信索要(asdjf@https://www.360docs.net/doc/dd6470272.html,),以下仅为关键代码部分。

文件名: OS_CPU_A.ASM

$NOMOD51

EA BIT 0A8H.7

SP DATA 081H

B DATA 0F0H

ACC DATA 0E0H

DPH DATA 083H

DPL DATA 082H

PSW DATA 0D0H

TR0 BIT 088H.4

TH0 DATA 08CH

TL0 DA TA 08AH

NAME OS_CPU_A ;模块名

;定义重定位段

?PR?OSStartHighRdy?OS_CPU_A SEGMENT CODE

?PR?OSCtxSw?OS_CPU_A SEGMENT CODE

?PR?OSIntCtxSw?OS_CPU_A SEGMENT CODE

?PR?OSTickISR?OS_CPU_A SEGMENT CODE

?PR?_?serial?OS_CPU_A SEGMENT CODE

;声明引用全局变量和外部子程序

EXTRN IDATA (OSTCBCur)

EXTRN IDATA (OSTCBHighRdy)

EXTRN IDATA (OSRunning)

EXTRN IDATA (OSPrioCur)

EXTRN IDATA (OSPrioHighRdy)

EXTRN CODE (_?OSTaskSwHook)

EXTRN CODE (_?serial)

EXTRN CODE (_?OSIntEnter)

EXTRN CODE (_?OSIntExit)

EXTRN CODE (_?OSTimeTick)

;对外声明4个不可重入函数

PUBLIC OSStartHighRdy

PUBLIC OSCtxSw

PUBLIC OSIntCtxSw

PUBLIC OSTickISR

;PUBLIC SerialISR

;分配堆栈空间。只关心大小,堆栈起点由keil决定,通过标号可以获得keil分配的SP起点。?STACK SEGMENT IDATA

RSEG ?STACK

OSStack:

DS 40H

OSStkStart IDATA OSStack-1

;定义压栈出栈宏

PUSHALL MACRO

PUSH PSW

PUSH ACC

PUSH B

PUSH DPL

PUSH DPH

MOV A,R0 ;R0-R7入栈

PUSH ACC

MOV A,R1

PUSH ACC

MOV A,R2

PUSH ACC

MOV A,R3

PUSH ACC

MOV A,R4

PUSH ACC

MOV A,R5

PUSH ACC

MOV A,R6

PUSH ACC

MOV A,R7

PUSH ACC

;PUSH SP ;不必保存SP,任务切换时由相应程序调整

ENDM

POPALL MACRO

;POP ACC ;不必保存SP,任务切换时由相应程序调整

POP ACC ;R0-R7出栈

MOV R7,A

POP ACC

MOV R6,A

POP ACC

MOV R5,A

POP ACC

MOV R4,A

POP ACC

MOV R3,A

POP ACC

MOV R2,A

POP ACC

MOV R1,A

POP ACC

MOV R0,A

POP DPH

POP DPL

POP B

POP ACC

POP PSW

ENDM

;子程序

;-------------------------------------------------------------------------

RSEG ?PR?OSStartHighRdy?OS_CPU_A

OSStartHighRdy:

USING 0 ;上电后51自动关中断,此处不必用CLR EA指令,因为到此处还未开中断,本程序退出后,开中断。

LCALL _?OSTaskSwHook

OSCtxSw_in:

;OSTCBCur ===> DPTR 获得当前TCB指针,详见C51.PDF第178页

MOV R0,#LOW (OSTCBCur) ;获得OSTCBCur指针低地址,指针占3字节。+0类型+1高8位数据+2低8位数据

INC R0

MOV DPH,@R0 ;全局变量OSTCBCur在IDATA中

INC R0

MOV DPL,@R0

;OSTCBCur->OSTCBStkPtr ===> DPTR 获得用户堆栈指针

INC DPTR ;指针占3字节。+0类型+1高8位数据+2低8位数据

MOVX A,@DPTR ;.OSTCBStkPtr是void指针

MOV R0,A

INC DPTR

MOVX A,@DPTR

MOV R1,A

MOV DPH,R0

MOV DPL,R1

;*UserStkPtr ===> R5 用户堆栈起始地址内容(即用户堆栈长度放在此处) 详见文档说明指针用法详见C51.PDF第178页

MOVX A,@DPTR ;用户堆栈中是unsigned char类型数据

MOV R5,A ;R5=用户堆栈长度

;恢复现场堆栈内容

MOV R0,#OSStkStart

restore_stack:

INC DPTR

INC R0

MOVX A,@DPTR

MOV @R0,A

DJNZ R5,restore_stack

;恢复堆栈指针SP

MOV SP,R0

;OSRunning=TRUE

MOV R0,#LOW (OSRunning)

MOV @R0,#01

POPALL

SETB EA ;开中断

RETI

;-------------------------------------------------------------------------

RSEG ?PR?OSCtxSw?OS_CPU_A

OSCtxSw:

PUSHALL

OSIntCtxSw_in:

;获得堆栈长度和起址

MOV A,SP

CLR C

SUBB A,#OSStkStart

MOV R5,A ;获得堆栈长度

;OSTCBCur ===> DPTR 获得当前TCB指针,详见C51.PDF第178页

MOV R0,#LOW (OSTCBCur) ;获得OSTCBCur指针低地址,指针占3字节。+0类型+1高8位数据+2低8位数据

INC R0

MOV DPH,@R0 ;全局变量OSTCBCur在IDATA中

INC R0

MOV DPL,@R0

;OSTCBCur->OSTCBStkPtr ===> DPTR 获得用户堆栈指针

INC DPTR ;指针占3字节。+0类型+1高8位数据+2低8位数据

MOVX A,@DPTR ;.OSTCBStkPtr是void指针

MOV R0,A

INC DPTR

MOVX A,@DPTR

MOV R1,A

MOV DPH,R0

MOV DPL,R1

;保存堆栈长度

MOV A,R5

MOVX @DPTR,A

MOV R0,#OSStkStart ;获得堆栈起址

save_stack:

INC DPTR

INC R0

MOV A,@R0

MOVX @DPTR,A

DJNZ R5,save_stack

;调用用户程序

LCALL _?OSTaskSwHook

;OSTCBCur = OSTCBHighRdy

MOV R0,#OSTCBCur

MOV R1,#OSTCBHighRdy

MOV A,@R1

MOV @R0,A

INC R0

INC R1

MOV A,@R1

MOV @R0,A

INC R0

INC R1

MOV A,@R1

MOV @R0,A

;OSPrioCur = OSPrioHighRdy 使用这两个变量主要目的是为了使指针比较变为字节比较,以便节省时间。

MOV R0,#OSPrioCur

MOV R1,#OSPrioHighRdy

MOV A,@R1

MOV @R0,A

LJMP OSCtxSw_in

;-------------------------------------------------------------------------

RSEG ?PR?OSIntCtxSw?OS_CPU_A

OSIntCtxSw:

;调整SP指针去掉在调用OSIntExit(),OSIntCtxSw()过程中压入堆栈的多余内容

;SP=SP-4

MOV A,SP

CLR C

SUBB A,#4

MOV SP,A

LJMP OSIntCtxSw_in

;-------------------------------------------------------------------------

CSEG AT 000BH ;OSTickISR

LJMP OSTickISR ;使用定时器0

RSEG ?PR?OSTickISR?OS_CPU_A

OSTickISR:

USING 0

PUSHALL

CLR TR0

MOV TH0,#70H ;定义Tick=50次/秒(即0.02秒/次)

MOV TL0,#00H ;OS_CPU_C.C 和OS_TICKS_PER_SEC

SETB TR0

LCALL _?OSIntEnter

LCALL _?OSTimeTick

LCALL _?OSIntExit

POPALL

RETI

;-------------------------------------------------------------------------

CSEG AT 0023H ;串口中断

LJMP SerialISR ;工作于系统态,无任务切换。

RSEG ?PR?_?serial?OS_CPU_A

SerialISR:

USING 0

PUSHALL

CLR EA

LCALL _?serial

SETB EA

POPALL

RETI

;-------------------------------------------------------------------------

END

;-------------------------------------------------------------------------

文件名: OS_CPU_C.C

void *OSTaskStkInit (void (*task)(void *pd), void *ppdata, void *ptos, INT16U opt) reentrant {

OS_STK *stk;

ppdata = ppdata;

opt = opt; //opt没被用到,保留此语句防止告警产生

stk = (OS_STK *)ptos; //用户堆栈最低有效地址

*stk++ = 15; //用户堆栈长度

*stk++ = (INT16U)task & 0xFF; //任务地址低8位

*stk++ = (INT16U)task >> 8; //任务地址高8位

*stk++ = 0x00; //PSW

*stk++ = 0x0A; //ACC

*stk++ = 0x0B; //B

*stk++ = 0x00; //DPL

*stk++ = 0x00; //DPH

*stk++ = 0x00; //R0

*stk++ = 0x01; //R1

*stk++ = 0x02; //R2

*stk++ = 0x03; //R3

*stk++ = 0x04; //R4

*stk++ = 0x05; //R5

*stk++ = 0x06; //R6

*stk++ = 0x07; //R7

//不用保存SP,任务切换时根据用户堆栈长度计算得出。

return ((void *)ptos);

}

#if OS_CPU_HOOKS_EN

void OSTaskCreateHook (OS_TCB *ptcb) reentrant

{

ptcb = ptcb; /* Prevent compiler warning */

}

void OSTaskDelHook (OS_TCB *ptcb) reentrant

{

ptcb = ptcb; /* Prevent compiler warning */

}

void OSTimeTickHook (void) reentrant

{

}

#endif

//初始化定时器0

void InitTimer0(void) reentrant

{

TMOD=TMOD&0xF0;

TMOD=TMOD|0x01; //模式1(16位定时器),仅受TR0控制

TH0=0x70; //定义Tick=50次/秒(即0.02秒/次)

TL0=0x00; //OS_CPU_A.ASM 和OS_TICKS_PER_SEC

ET0=1; //允许T0中断

TR0=1;

}

文件名: YY.C

#include

#define MAX_STK_SIZE 64

void TaskStartyya(void *yydata) reentrant;

void TaskStartyyb(void *yydata) reentrant;

void TaskStartyyc(void *yydata) reentrant;

OS_STK TaskStartStkyya[MAX_STK_SIZE+1];//注意:我在ASM文件中设置?STACK空间为40H即64,不要超出范围。

OS_STK TaskStartStkyyb[MAX_STK_SIZE+1];//用户栈多一个字节存长度

OS_STK TaskStartStkyyc[MAX_STK_SIZE+1];

void main(void)

{

OSInit();

InitTimer0();

InitSerial();

InitSerialBuffer();

OSTaskCreate(TaskStartyya, (void *)0, &TaskStartStkyya[0],2);

OSTaskCreate(TaskStartyyb, (void *)0, &TaskStartStkyyb[0],3);

OSTaskCreate(TaskStartyyc, (void *)0, &TaskStartStkyyc[0],4);

OSStart();

}

void TaskStartyya(void *yydata) reentrant

{

yydata=yydata;

clrscr();

PrintStr("\n\t\t*******************************\n");

PrintStr("\t\t* Hello! The world. *\n");

PrintStr("\t\t*******************************\n\n\n");

for(;;){

PrintStr("\tAAAAAA111111 is active.\n");

OSTimeDly(OS_TICKS_PER_SEC);

}

}

void TaskStartyyb(void *yydata) reentrant

{

yydata=yydata;

for(;;){

PrintStr("\tBBBBBB333333 is active.\n");

OSTimeDly(3*OS_TICKS_PER_SEC);

}

}

void TaskStartyyc(void *yydata) reentrant

{

yydata=yydata;

for(;;){

PrintStr("\tCCCCCC666666 is active.\n");

OSTimeDly(6*OS_TICKS_PER_SEC);

}

}

争做志愿者传递正能量心得2014年半年心得体会

争做志愿者传递正能量 志愿者是一个平凡的称呼,但也是一个值得骄傲的称呼。志愿者代表着一种精神,一种崇高的精神,这种崇高性集中体现在志愿者通过志愿服务所凝结的奉献、友爱、互助、进步精神。这种精神,是值得所有人学习的,他是一种基于道德、基于良知的不图回报的精神,一种自觉自愿奉献社会的崇高精神。这种精神深刻体现了中华民族的传统美德,传递了奉献自我的正能量,反映了社会发展进步的时代要求,是社会主义集体主义精神的生动体现。 我还记得进社区之后的头等大事之一就是把个人信息 登记在志愿者情况册里,里面有社区全体工作人员和社区部分居民的名字,我很好奇,因为在我以前的概念里志愿者一般都是学生、居民、白领等有志愿意向的人,当我问起这是我们的工作么,他们告诉我,你在社区工作是要给你发工资的,而志愿服务活动不是工作,这是无偿性的,就好比你在家里干活,你会问你的妈妈要钱么?是的,志愿服务是无偿的,是我们奉献自己一份力量给社会的一项活动。 在社区工作的这么长时间我知道社区组织的志愿活动 有很多,比如四点钟课堂,为学生提供课业辅导,并组织各种兴趣拓展训练、人际交往训练和义工服务等成长性和教育性活动,这样一方面减轻双职工家庭和外来务工人员照顾子

女的压力和成本,另一方面减少孩子放学后失管、失教的状态,促进青少年的健康成长;再比如到辖区无主管楼院打扫卫生,这些楼院不像其他小区那样有物业管理,周围的卫生环境有物业负责清理,虽然也有清运公司的人去清理,可是差强人意,所以我们经常去打扫一下卫生,为居民提供一个舒适的环境;我们同社区居民组成“治安巡逻志愿者”小组,经常性执行治安巡逻,对社区发现的安全隐患,一一排查,为居民打造一个安逸的生活场所,这样的活动多之又多,我们本着“社区以民为本,民以社区为家”的宗旨,大力弘扬“奉献、友爱、互助、进步”的志愿精神,和居民一起共同建设一个和谐泰安的美好家园! 在志愿服务中,我体验着这份“志愿”的神圣与高尚,虽然活动只是由一些平凡的小事组成,但是这些平凡的点点滴滴都可能对服务的对象产生巨大的影响。当我们奉献自己一份力量的时候,心里会觉得很幸福,我在志愿活动中找到了自己的价值,我是一个受益者,我明白了很多为人处事的道理,同时也锻炼了自己的意志和耐心。 “志愿者”这三个字,充满了温馨和魅力,当一个人口中脱口而出:我是志愿者,这个人身上焕发的活力、自信、自豪定让你油然而生敬佩之情。志愿者更代表着一个信念,一种毅力,一份爱心。他把关怀带给社会,把爱心传递,把文明传播,这种爱心和文明从一个人身上传到另一个人身

嵌入式系统移植+心得

嵌入式系统作为近年来新兴的且发展很快的学科,它的应用越来越受到广大技术人员的重视。尤其起可移植性,显著的区别了通用操作系统。一款嵌入式操作系统通常运行在不同体系结构的处理器和开发板上,极大的方便了开发者开发与应用,节约了成本。 嵌入式操作系统作为移植支持嵌入式系统应用的操作系统软件,被广泛的运用于不同应用领域。纵观嵌入式系统40多年的历史,从无操作系统的嵌入式算法阶段到简单监控式的实时操作系统,一步又一步的到现在的以Internet为标志的嵌入式系统,一批又一批的先辈为其努力而奋斗。科技的革新,带动着社会的发展,人类的进步。大数据的时代必定属于我IT 人。以下我们聊一聊嵌入式系统及其移植性。 嵌入式操作系统大体分为商用型和免费型。 商用型主要是WindowsCE。Psos.os-9.qnx等其价格较为昂贵,开发成本高,广泛运用于通信。军事。航天等高端技术领域 免费型主要为Linux等主要运用于没有存储器管理单元的处理器而设置。 嵌入式基本操作共四步 主机和目标机的连接方式; UARA最经典90%的板子上,都支持的方式叫异部串行接口,也就是我们所说的串口。 USB串行接口 TCP/IP网络接口 Debug Jtag调试接口 补充说明 1.对于串口,通常用的有串口调试助手,putty工具等,工具很多,功能都差不多,会用一两款就可以; 2.对于USB线,当然必须要有USB的驱动才可以,一般芯片公司会提供,比如对于三星的芯片,USB下载主要由DNW软件来完成; 3.对于网线,则必须要有网络协议支持才可以 安装交叉编译器 方法一:分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。该方法相对比较困难,适合想深入学习构建交叉工具链的读者。如果只是想使用交叉工具链,建议使用下列的方法二构建交叉工具链。 方法二:通过Crosstool-ng脚本工具来实现一次编译,生成交叉编译工具链,该方法相对于方法一要简单许多,并且出错的机会也非常少,建议大多数情况下使用该方法构建交叉编译工具链。 方法三:直接通过网上下载已经制作好的交叉编译工具链。该方法的优点不用多说,当然是简单省事,但与此同时该方法有一定的弊端就是局限性太大,因为毕竟是别人构建好的,也就是固定的,没有灵活性,所以构建所用的库以及编译器的版本也许并不适合你要编译的程序,同时也许会在使用时出现许多莫名其妙的错误 搭建主机

正能量培训心得体会

打造正能量团队特训班心得体会 2015年8月11日在我院大会议室,为期两天的《打造正能量团队特训班》虽然已经过去多日。在那两天中所看到的、听到的、经历的已然刺激找我的大脑让我不能平静,让我的血液充满战意。在付老师的带领下,通过不同的课程体验,使得我明白了此次培训的重要性,懂得了打造高效正能量团队的必要性。 在学习中付老师通过循序渐进、深入浅出的“启发式+互动式+转化式”的教学方式,开启正能量、传递正能量、改善和解决团队建设中出现的一系列问题与瓶颈,帮助我们建立了一支充满正能量的临时团队。 通过学习,使我清楚地认识工作的实质是什么?工作不是消极被动的打工,也不是表面上的完成任务。工作的实质就是在执行中寻找自己的价值,勇敢地承担自己的责任,做到百分百对自己负责,对科室负责,对医院负责。 一、创造自己独特的文化 在讲课中付老师提出“文化就是靠以满足客户需要为导向的价值”。对于我们大多数人来说,人生有几十年时间是在工作中度过的。在工作中我们会形成自己独特的文化和工作方式,身为科室的领导者自己的文化肯定会影响到科室的每一个人,从而形成一个独特的文化圈。文化的好坏决定来我院救治患者的多少,更直接影响到我们每个人收入的多少。所以我们一定要多接触积极的、乐观的、充满正能量的人和事,形成一个好的文化。 二、干一行爱一行,对待工作保持微笑 既然我们人生的几十年不可避免的要在工作中渡过,我们没有理由不热爱工作,放弃工作就有如放弃我们的生命。因此,我们要培养自己对工作的热爱,干一行、爱一行,多一点上进心,遇事多看看、多想想。这样,我们就可以更好的了解自己的工作,充分激发工作热情。做到以结果为导向,不放弃任何问题,积极创新工作思路,锐意进取、勇于承担责任,于是工作能力逐步得到提高,人生的价值便会得到充分体现。 三、养成求真务实的工作作风,营造正能量文化氛围 虽然我们岗位可能平凡,分工各有不同,但我们都必须克服夸夸其谈、评头论足的毛病,充分发挥主观能动性,务实工作。正如付老师说的“执行就是把目标变成结果的行动”我作为窗口服务的中层领导,将严格培养自己的职业化素养,从自我做起,从小事做起,从点滴做起。一件一件抓制度落实,团结好身边的人勤勤恳恳工作,为医院的发展尽职尽责。 二〇一五年八月十八日篇二:正能量培训学习心得 正能量培训学习心得 9月26-28日,我参加了行动成功公司组织的正能量培训学习活动,首先感谢公司提供的这次难得的学习培训机会。在这三天的学习中,体会颇深,现在总结如下:在这两天的时间里我学习到了很多以往从没有学习过的知识,通过老师幽默,搞笑却又发人深思的一个个小故事里我学习到很多,对于心态和责任都有了一个新的理解。更加的了解到正能量对于自己和他人都是一种美好的品质,因为正能量的人会吸引正能量的人和事,使身边的人也都充满正能量,相反,消极的人也只会吸引消极的人和事,一个正能量的人遇到困难不逃避,不抱怨,会想办法去解决,而消极的人只会想:我做不好交给别人做就行了,或者抱怨上级为什么要交待这么难的事情给我做。在我日常的工作中也常常会遇到一些自己完全搞不定的事,比如说面对一台完全不熟悉的设备,不知道怎样去学习掌握它的运行原理,无法真正判断出设备的故障原因,有时我也在想“差不多就这样吧”,完全不想认真去搞懂问题,深究原因。通过这两天的学习,我深刻的认识到自己的不足,所以我更加确定自己要做一个正能量的人,积极的去完成工作,对自己的工作,对公司做到百分百负责。 对于责任,我也的深刻的认识到,在社会这个大家庭里,在家庭中我们所扮演的是女儿,妻子,和母亲的角色,我要对自己负责更要对自己的家人负责。在工作中,我作为设备部的

嵌入式系统移植的简单介绍

嵌入式操作系统的移植 综述:嵌入式操作系统与通用操作系统的最显著的区别之一就是它的可移植性。一款嵌入式操作系统通常可以运行在不同体系结构的处理器和开发板上。为了使嵌入式操作系统可以在某款具体的目标设备上运行,嵌入式操作系统的编写者通常无法一次性完成整个操作系统的代码,而必须把一部分与具体硬件设备相关的代码作为抽象的接口保留出来,让提供硬件的OEM厂商来完成。这样才可以保证整个操作系统的可移植性。 一、移植的定义及其目的 由于嵌入式系统所使用的芯片型号多种多样,很多芯片不能直接兼容,所以通过修改部分代码,把能在甲芯片上运行的程序,也能在与之不完全兼容的乙芯片上正确运行,就叫移植. 嵌入式操作系统移植的目的是指使操作系统能在某个微处理器或微控制器上运行。 二、移植的方法与具体操作步骤 2.1 在进行移植时,我们的首要任务就是要建立一个最基本的开发环境。该环境具备一套跨平台开发工具。它包含有编译器、连接 器、除错器等,另外还要准备制作文档系统所需的软件。以PC机作为宿主机构建一套完整的交叉编译系统来调试目标板。而在目标平台上只需要准备一段开机程序,如Ether boot,Red boot等,此程序可以在除错阶段取得系统的映像(image)文件后启动或者直接从Flash room中来引导系统。一旦启动后就进入Linux操作系统,同时也可

以使用GDB server作为远端除错工具。 2.2 内核的移植 为了使Linux内核能在不同的目标平台上运行,要求我们根据平台的处理器类型和外围接口,对Linux内核文件进行正确的配置,同时。修改内核文件Linux移植的主要步骤。如果修改完Linux的内核文件,使其能在目标平台上正确跑起来,那么整个移植过程就基本完成了。 2.3 移植的具体步骤 (1)首先获取某一版本的Linux内核源码,根据具体的目标平台对源码进行必要的改写(主要是修改体系结构相关的部分); (2)添加一部分外设驱动(如网卡驱动、USB驱动),打造一款适合于目标平台的新的操作系统,也就是常说的内核配置或内核定制;(3)对该系统进行针对目标平台的交叉编译,生成一个内核映象文件; (4)最后通过一些手段将该映象烧写到目标平台中。 三、移植过程中如何进行剪裁 3.1 进行方式 进行的方式必须有效率的建立系统,基本可行的方法有两种: (1)从其中一个发行版本中把不必要的部份全部删掉,留下我们想要的系统。 (2)把系统所有的功能依规格从新建立起来。 3.2开发环境 要建立一个最基本的开发环境,必需具备一套跨平台的开发工具

嵌入式学习心得体会5篇

嵌入式学习心得体会5篇 嵌入式学习心得体会(一) 首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。 对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的modem 射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15k以上。 另一类就是数字部分了,在大方向上又可分为51/arm的单片机类,dsp类,fpga 类,国内fpga的工程师大多是在ic设计公司从事ip核的前端验证,这部分不搞到门级,前途不太明朗,即使做个ic前端验证工程师,也要搞上几年才能胜任。dsp 硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。 而arm单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互pk,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如pxa255处理器i2c要求速度在100kbps,如果把一个i2c外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接lcd,但为什么这种lcd就不能挂在arm的总线上,还有arm7总线上可以外接个winband的sd卡控制器,但为什么这种控制器接不到arm9或是xscale处理器上,这些都是问题。 因此接口并不是一种简单的连接,要看时序,要看参数。一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师

关于正能量的心得体会范文五篇

关于正能量的心得体会范文五篇 心得体会是指一种读书、实践后所写的感受性文字。一般分为学习体会,工作体会,教学体会,读后感,观后感。以下是关于正能量的心得体会范文五篇,欢迎阅读参考! 关于正能量的心得体会(一) 感谢机关党委、机关团委对年轻人的关心,为我们订阅了《正能量》这样一本排除负面情绪、传递正向能量的心灵成长之书。工作之余,怀着激动的心情抓紧拜读完这本世界级心理学大师理查德。怀斯曼的着作,心中感慨无限。 阅读这本书,是从疑惑、好奇和心中无限的期待中开始的,还没开卷,便被书名所打动--《正能量》,到底什么是正能量?怎样获得正能量?又怎么样才能运用正能量打造全新的自己?随着阅读的一点点深入,跟随着作者的文字,内心仿佛也变得越来越光明与积极起来。 书中所说的正能量,就是一切予人向上和希望、促使人不断追求、让生活变得圆满幸福的动力和感情。通过种种实验和数据,理查德。怀斯曼严谨又趣味十足地向我们阐释了伟大的"表现"原理,运用"表现"原理激发出的正能量,可以使我们产生一个新的自我,让我们变得更加自信、充满活力,破除了我们过去秉持的"性格决定命运"、"情绪决定行为"等认知,更好地去指导我们的工作与生活。 工作中,我们需要正能量来不断激励自己。尽管有时辛苦,有时沮丧,但是我们不得不承认,工作是实现自身价值的一个重要方面。而如何在工作中最大限度发挥自我的正能量,实现自身价值,每个人都有自己的体会。就拿自己来说,在文书的岗位上工作将近一年,感受颇多。文书工作琐碎且繁杂,集政治性、业务性、机要性于一体。虽然这项工作看似不太起眼,却需要时刻绷紧神经,花费大量的精力与时间去完成,不能耽误,更不能有差错。压力当然是有,责任也很重大。 正因如此,就更需要自己抱着如履薄冰、如临深渊的紧迫感与使命感,不断学习业务知识,不断总结工作规律,不断向自己提出更高地要求。只有抱着这样的态度,才能促使自己不断地进步。这中间必定会经历痛苦,如果把工作的压力

嵌入式linux系统移植试题与答案

嵌入式Linux系统移植试题(时间:60分钟) 一、单项选择题(每题2分,共40分) 1.嵌入式linux系统移植不包括( D ) [A] bootloader [B] linux内核 [C] 根文件系统 [D] 应用程序 2.下列选项中符合gcc的编译流程的是( A ) [A] 预处理->编译->汇编->连接[B] 预处理->汇编->编译-> 连接 [C] 编译->预处理->汇编->连接 [D] 预处理->连接->汇编->编译 3.下列二进制工具哪个是丢弃目标文件的全部或者特定符号,减少文 件体积的( D ) [A] size [B] as [C] nm [D] strip 4.下列二进制工具哪个是用来反汇编的( B ) [A] nm [B] objdump [C] objcopy [D] string 5.下列二进制工具哪个是用来进行目标格式转换的( C ) [A] nm [B] objdump [C] objcopy [D] string 6.下列二进制工具哪个是用来把程序地址转换为文件名和行号的 ( D ) [A] nm [B] objdump [C] objcopy [D] addr2line

7.FS4412开发平台上,uImage被解压到什么地址( B ) [A] 0x40000000 [B] 0x40008000 [C] 0x41000000 [D] 0x43e00000 8.编译Linux内核设备树文件使用什么命令( D ) [A] make dtbi [B] make tags [C] make dtb [D] make dtbs 9.linux要求bootloader在运行内核前,让系统进入何种模式( B ) [A] user [B] svc [C] system 10.u-boot的命令中存放自启动命令的环境变量是( D ) [A] ipaddr [B] bootargs [C] bootm [D] bootcmd 11.u-boot的命令中,设置环境变量的命令是( A ) [A] setenv [B] printenv [C] tftp [D] bootm 12.u-boot中存放内核启动参数的环境变量是( C ) [A] bootcmd [B] bootdelay [C] bootargs [D] ipaddr 13.在内核配置时,哪个关键词是来包含下一级Kconfig ( B ) [A] menu endmenu [B] source [C] choice endchoice [D] depends on 14. 在内核配置时,哪个关键词是来创建一个选项菜单( D ) [A] menu endmenu [B] source [C] choice endchoice [D] config

嵌入式实验心得体会

嵌入式实验心得体会 嵌入式实验心得体会是计算机专业应该具备的常用知识,以下这篇范文整理个人对嵌入式系统的认识,和进行操作之后的个人体会,对操作的疑难的反思。下面是这篇嵌入式实验心得体会 嵌入式实验心得体会 学期开始,我们开始学习《嵌入式系统及应用》,由于初次接触嵌入式系统,感觉蛮难的,所以收获不是很大,很多的概念都比较模糊,等到学期结束开始做嵌入式课程设计时,真是茫然无从下手,自,从拿到设计主题后,我就从像热锅像上的蚂蚁,一个字“急”。最后实在没有办“法,逼着自己去学法 习,查资料,总算对嵌入式有了资浅层理解。浅 嵌入式系统本本身是一个相对模糊的定义义,一个手持的mp3和一个一pc104的微型工业业控制计算机都可以认为是嵌入是式系统。总体来说,嵌入式系统是“用于控,制,监视或者辅制 助操作机器器和设备的装备”。一个典典型的桌面linux系统统包括3个主要的软件层---linux-内核、cc库和应用程序代码。内核核是唯一可以完全控制硬件的层,内核驱动程序代件表应用程表序与硬件之间进行行会话。内核之上是c 库,,负责把posixapii转换为内核可以识别的形形式,然后调用内核,从应应用程序向内核传递参数。应用程序依靠驱动内核。来完成特定的任务。来在了解了基础知识之后,我了开始进行上机操作,当然开,,其中遇到很多的难题,很多东西都是第一次接触很,又没有别,人在旁边指导操作,完全凭借自己去摸操索索练习。其中的困难可想而知。然而坚持就是胜利而,,牙一咬眼一闭坚持做下去去,而通过本次实验,我感觉收获还是蛮多的。可感能我对于嵌入能式的知识学习的还是不太多,但是这习之外的东西收获颇丰。之

五大适合STM32的嵌入式操作系统

五大适合STM32的嵌入式操作系统 基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这五种嵌入式操作系统的特点及不足。1、μClinuxμClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比, μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。 μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU特点进行改良,且不支持内核抢占,实时性一般。 在内存管理上由于μClinux是针对没有MMU的处理器设计的,不能使用处理器的虚拟内存管理技术,只能采用实存储器管理策略。系统使用分页内存分配方式,在启动时对实际存储器进行分页。系统对内存的访问是直接的,操作系统对内存空间没有保护,多个进程可共享一个运行空间,所以,

即使是一个无特权进程调用一个无效指针也会触发一个地 址错误,并有可能引起程序崩溃甚至系统崩溃。 μClinux操作系统的中断管理是将中断处理分为两部分:顶半处理和底半处理。在顶半处理中,必须关中断运行,且仅进行必要的、非常少、速度快的处理,其他处理交给底半处理;底半处理执行那些复杂、耗时的处理,而且接受中断。因为系统中存在有许多中断的底半处理,所以会引起系统中断处理的延时。 μClinux对文件系统支持良好,由于μClinux继承了Linux完善的文件系统性能,它支持ROMFS、NFS、ext2、MS-DOS、JFFS等文件系统。但一般采用ROMFS文件系统,这种文件系统相对于一般的文件系统(如ext2)占用更少的空间。但是ROMFS文件系统不支持动态擦写保存,对于系统需要动态保存的数据须采用虚拟RAM盘/JFFS的方法进行处理。在对硬件的支持上,由于μClinux继承了Linux的大部分性能,所以至少需要512KB的RAM空间,lMB的ROM/Flash 空间。 在μClinux的移植方面,。μClinux是Linux针对嵌入式系统的一种改良,其结构比较复杂。移植μClinux,目标处理器除了需要修改与处理器相关的代码外,还需要足够容量的外部ROM和RAM。 综上可知,μClinux最大特点在于针对无MMU处理器设计,

正能量培训心得体会范文6篇

正能量培训心得体会范文6篇 正能量培训心得体会范文1 20xx年8月11日在我院大会议室,为期两天的《打造正能量团队特训班》虽然已经过去多日。在那两天中所看到的、听到的、经历的已然刺激找我的大脑让我不能平静,让我的血液充满战意。在付老师的带领下,通过不同的课程体验,使得我明白了此次培训的重要性,懂得了打造高效正能量团队的必要性。 在学习中付老师通过循序渐进、深入浅出的“启发式+互动式+转化式”的教学方式,开启正能量、传递正能量、改善和解决团队建设中出现的一系列问题与瓶颈,帮助我们建立了一支充满正能量的临时团队。 通过学习,使我清楚地认识工作的实质是什么?工作不是消极被动的”打工”,也不是表面上的”完成任务”。工作的实质就是在执行中寻找自己的价值,勇敢地承担自己的责任,做到百分百对自己负责,对科室负责,对医院负责。 一、创造自己独特的文化 在讲课中付老师提出“文化就是靠以满足客户需要为导向的价值”。对于我们大多数人来说,人生有几十年时间是在工作中度过的。在工作中我们会形成自己独特的文化和工作方式,身为科室的领导者自己的文化肯定会影响到科室的每一个人,从而形成一个独特的文化圈。文化的好坏决定来我院救治患者的多少,更直接影响到我们每个人收入的多少。所以我们一定要多接触积极的、乐观的、充满正能量的

人和事,形成一个好的文化。 二、干一行爱一行,对待工作保持微笑 既然我们人生的几十年不可避免的要在工作中渡过,我们没有理由不热爱工作,放弃工作就有如放弃我们的生命。因此,我们要培养自己对工作的热爱,干一行、爱一行,多一点上进心,遇事多看看、多想想。这样,我们就可以更好的了解自己的工作,充分激发工作热情。做到以结果为导向,不放弃任何问题,积极创新工作思路,锐意进取、勇于承担责任,于是工作能力逐步得到提高,人生的价值便会得到充分体现。 三、养成求真务实的工作作风,营造正能量文化氛围 虽然我们岗位可能平凡,分工各有不同,但我们都必须克服夸夸其谈、评头论足的毛病,充分发挥主观能动性,务实工作。正如付老师说的“执行就是把目标变成结果的行动”我作为窗口服务的中层领导,将严格培养自己的职业化素养,从自我做起,从小事做起,从点滴做起。一件一件抓制度落实,团结好身边的人勤勤恳恳工作,为医院的发展尽职尽责。 正能量培训心得体会范文2 在似水骄阳的“光辉”笼罩下,昨天参加xx正能量公司组织的拓展训练把我们每个人的脸都晒得红彤彤的,可拓展训练给我的感受还真是不少,正能量拓展培训心得体会。从来没有像这次这样,原本还不太熟识的人走到一起,就那

嵌入式心得体会

对于电焊,虽然一点都不陌生,但亲手操作的机会却只有几次,因此我很庆幸能够有这样的焊接机会,进行这样的实践。 焊接看似容易,实则需要长时间练习才能掌握。刚开始的时候,手一直在抖,尤其这次焊的还是贴片电容、电阻,原器件比以前焊的小好多,用镊子的手一抖就夹不住了,拿着烙铁的手抖得都不容易将器件焊上,焊出来的焊点也特别难看,在不断尝试,不断挑战自我的过程中,我的手不抖了,也基本能掌握锡的用量了,当焊点终于不再“丑不忍睹”的时候,对焊接也没有当初的恐惧了。对自己的动手能力也有了信心。 在焊接的过程中我学到了许多以前我不知道的东西,比如,以前我只知道有电烙铁,但不知道它还有好多种类,有单用式、两用式、调温式、恒温式、直热式、感应式、内热式和外热式。松香可以将多余的锡弄下来,用酒精可以把板擦的干净些。通过视频和查找资料,知道了在焊不同的器件时用的电烙铁的头不同,比如在焊引脚时要用尖头,焊CPU时要用刀口,为防止锡将焊引脚的小孔堵住,用松香把纸条粘在小孔上,把小孔盖住,把CPU的引脚对齐,用锡先涂满两边,固定好芯片,在焊另外两边,然后用尖头的电烙铁沾着松香将多余的锡弄下来。 本次课程设计的是信号发生器,信号发生器在EDA课程,数字信号处理课程中都曾涉及,所以还是较为熟悉的,在设计之前查阅了一些相关书籍,也从网上查找了一些相关资料,程序代码中运用到了C语言,将程序加入到嵌入式结构框架中,进行定义变量,端口,设定所用的GPIO参数等等。 在焊接的过程中我不仅学到了知识,而且让我深深地体会到一个团队中各成员合作的重要性,要善于团队合作,在进行团队合作的时候,还要耐心听取每个成员的意见,每个人都有长处和短处,只有在包容别人的同时我们才可以取长补短,不断完善和不断进步,交到更多的朋友,学到更多的知识。同时还让我明白:做任何事都要一心一意,严谨认真,反复琢磨,不能畏惧,要有信心和勇气,一定要做好充分的准备。不能盲目去做,要坚持,还要学会反思跟总结,我们不是为了完成任务而完成,这还是一个学习跟提高的过程。 在大学里学的不是知识,而是一种叫做自学的能力。在这个知识爆炸的时代,知识更新太快,靠原有的一点知识肯定不行。以后的工作中肯定会用到一些新的

2020传递正能量的心得及感悟5篇集锦

2020传递正能量的心得及感悟5篇集锦 2020传递正能量的心得及感悟集锦1 什么是正能量?在我看来,能让你积极有活力的,就是正能量。 一个阳光般和暖的微笑,就能映照出一天彩虹一样的心情,正能量其实很简单,无处不在。简而言之,能让你激动并振奋的,那就是你所需要的——正能量! 这种本是精神层面的东西如今也慢慢的实化起来,科学研 究表明,快乐的时候能分泌促进新陈代谢的物质,正能量能有 助于我们的健康。诚然,乐观开朗本来就是健康的一部分,有 一个充满正能量的积极向上的态度,总是有益无害的。 而反观现实,冷漠似乎已经成为我们的一种习惯,我们可 以对一个被车碾过的小孩视若不见,也可以对因路滑而滑到在 街上的老人熟视无睹,负面的能量似乎在暗中隐隐涌动,汇集。如果没有正能量,万物枯萎,动力机都会停下,人类更是无法 生存。对于我们来说,正能量并非维持生命,而是给予我们一 种乐观积极的人生态度和爱的力量。这种正能量是能传递的。 是的!我们需要正能量,给自己充满正能量,给社会传递正 能量! 如何找寻正能量呢?也许我们可以从他认出获得,但是整日 靠他人“接济”未来的正能量又何能缓解现代都市的压力,况

从生物学的角度来说,能量在传递过程中会不断损耗。自己动手,丰衣足食。事实上正能量也正是这样藏匿于我们的眼皮底下:也许就溶在一杯咖啡里面,也许就隐于一行优雅的诗句里,也许就呆呆地在每个慵懒闲适的恰到好处的午后等着我们。不 同于真正意义上的能量,正能量并非与什么东西是此消彼长的 关系,所以只要我们想就可以创造出无止境的正能量,从别人 出汲取,不如自己创造。 可有的人总爱抱怨说,我的上司太苛刻了,我的老师太严 厉了,我的父母一点都不关心我的想法,总之我的环境整个儿 一个都是负的,我何去寻找正能量?与积极乐观的人交往能感受到他们传递给你的正能量。正能量还包括了爱与奉献,传递爱 也是正能量传递的一种形式。把能量继续传递下去,我相信你 一定会生活在一个积极快乐的环境里。 如果不能适应它,那就尝试去改变它吧。培根说:“如果 你有一份快乐,你将它告诉别人,那么你将拥有双份的快乐。”所以,不要吝啬你的正能量,将他释放出去,你将拥有更多的 正能量,所以从今天起,给上司一个微笑,给你的老师一份赞许,赠你父母一个拥抱,慢慢的,也许你就会发现,你和你的 周围充满了正能量。如果每个人都如此的去做,正能量就将会 像太阳一样散射出去,也许我们再看到路边无助的老人,寒夜 里啼哭的幼崽,我们就都会伸出一只手。这样乌托邦式的世界 将会是何等的有意义,有快乐?

嵌入式实习报告总结

嵌入式实习报告总结 随着信息化技术的发展和数字化产品的普及,以计算机技 术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的热点,通信、计算机、消费电子技术(3C)合一的趋势正在逐步形成,无所不在的网络和无所不在的计算( , )正在将人类带入一个崭新的信息社会。 二、实习目的 学习和了解了嵌入式在生活中的重要作用和发展过程,熟练掌握硬件体系结构,熟悉下的嵌入式编程流程,积累自己的软件编写经验,能够参与并实现一个真实和完整的嵌入式项目,为今后的学习和将从事的技术工作打下坚实的基础 三、实习任务 第一阶段操作和编程基础 主要介绍的基本命令和基础编程知识,包括 的文件操作和目录操作命令,编辑器,编译器,调试器和项目管理工具等知识。 第二阶段嵌入式C语言编程基础 主要介绍在嵌入式开发编程中C语言的重要概念和编程技巧中的重点难点,以复习串讲和实例分析的形式,重点介绍包括函数与程序结构,指针、数组和链表,库函数的使用等知识。

第三阶段上C强化编程训练 主要包括整数算法训练,递归和栈编程训练,位操作训练,指针训练,字符串训练和常用C库函数编程接口实践,强化学员对下基本编程开发的理解和编码调试的能力。 第四阶段环境高级编程及项目开发编程实践 主要包括系统编程(信号/系统调用/管道消息队列/共享内存等),文件编程(文件描述符/文件读写接口/原子操作/阻塞与非阻塞等,多任务和多线程编程(进程标识/ 用户标识与多线程概念/线程同步等),网络编程(网络基本概念/套接口编程/网络字节次序结构编程);掌握下编程的开发流程,熟悉网络编程的调用接口函数和相关数据结构,使学员初步具备在上进行系统编程开发的能力。同时综合之前所学内容和编程技术,以小组为单位进行一个团队合作项目的开发,考核内容包括文件编程,多线程编程,网络编程和项目文档编写。 第五阶段嵌入式处理器体系结构及编程实践 主要介绍体系结构及其基本编程知识,包括指令分类,寻址方式、指令集、存储系统、异常中断处理、汇编语言以及C\和汇编语言的混合编程等知识。同时结合嵌入式开发板硬件设计原理和基本硬件设计流程,分析各种外设的工作原理和驱动机制,并自己动手实践完成一个开发板上的编程大作业。

大学生关于“传递正能量,挑起正责任”的心得体会

大学生关于“传递正能量,挑起正责任”的心得体会当今社会,正能量是每个人所必须的,而责任,一直以来都是每个人所应当担当的。正能量由于被传递,让大家凝聚在一起;正责任由于被挑起,让大家能够脚踏实地。正能量因正责任而产生,正责任因正能量而变得故意义。 传递正能量的条件是,能量首先必须是正的、积极的、健康的、催人奋进的、给人气力的、布满希望的能量。因此,在我们看题目的时候,不能单纯地从一个角度观察,而是要从时间思惟和空间思惟综合分析。其次,眼光要长远,纵观整个时间维度,从未来动身,绝不能因一件小事或一些小***而不保全局的围着原地打转。学会从整体、全面看题目很重要。 孔子曰:“己所不欲,勿施于人。”这也是对传递正能量的要求。一个人能够知其所止,止于至善,然后意志才有定力;意志有了定力,然后心才能静下来,不会妄动;能做到心不妄动,然后才能安于处境随遇而安;能够随遇而安,然后才能处事精当思虑周详;能够思虑周详,才能得到至善的境地。彰显人人本有,本身所具的光明德性,再推己及人,使人人都能去除污染而自新,而且精益求精,做到最完善的地步并且保持不变。孔子又曰:“七十者为所欲为。”心中布满自信,让生活安闲而无拘束。随着青春的流逝、容颜的改变,人生就是有这样的错觉:逝去的总是美好的,具有的总是缺憾的,因而,在远望昨日的背影时,眼里只有烦恼的身影来往返回。我们该何去何从,我们该如何选择呢?没必要对小事琐屑较量,我们的生活需要青春正能量。

只有心存善念,才能使自己活得更出色,活出属于自己的人生,进而传递自己的正能量。 一个人的责任的价值不在于它是否是巨大,而在于它是否是能为宿主提供正能量。假如明天比今天进步一点点,改变一点点,那末成功的路就会因此铺下去。团队合作对正责任很重要,朋友是团队的组成,同时也是整个团队的灵魂。学会人际交往,找到自己的朋友,没必要寻求数目,关键是要能够与自己互补,在碰到困难的时候,大家相互扶持。怀着一颗功利的心,只会让你得到一时的满足,相继而至的窘境可以一下子把你打垮。 大学四年,应当有自己的规划,挑起自己的正责任。人生不能缺少拼搏,爱拼才会赢。安于自己的处境,由命运安排方式是被动的,不可取的。努力学习,闲时沉淀积累,奋则厚积薄发。路,一直都在,固然道路是曲折的,但意志是笔挺的。路漫漫其修远兮,吾将上下而求索。或许压力如期到来,又或许不期而至,此时则需要将它转化成动力。时刻记住,前程是光明的。 实践之检验真理的唯一标准。多去尝试,从而改变和进步自己,渐渐地去锻炼自己。坚持下去,并贯彻始终。不要忘记做事要仔细,考虑要周密周到。一个人内心真诚,一定会表现在外。所以一个人独处时,一定更为谨慎谨慎,不敢随便,由于机会是留给有预备的人的。每个人都被生命询问,而他只有用自己的生命才能回答此题目;只有以“负责”来答复生命。因此,“能够负责”是人类存在最重要的本质。这样责任在肩膀上才能根深蒂固,才会是真实的值得挑起的正责

嵌入式心得体会解读

嵌入式心得体会 嵌入式心得体会一:嵌入式学习心得体会 4月10号,为期一个阶段的Linux开发基础培训课程圆满结束,回首这些天所留下的点点滴滴,感触深深,学习上知识点的积累,灵活运用的过程中感受到了Linux操作的快速高效性能,这也是我所追求的效率! 当初初涉培训课程的第一门课程时,都说Linux操作很繁琐复杂,心里总有些顾忌,带着种种不安与些许拼博的决心,开始了自我提升阶段的“充电”,由徐海兵老师教授我们基础课程的培训,我们则像着小学生般认真的记着笔记,仔细听着并学会如何去在实践中运用所学的Linux下的各种强大的命令集。 在Unit 1中,徐老师详细生动的为我们讲述了有关Linux的诞生、初成长以及辉煌的发展至今,今后应用范围则愈来愈广泛,讲解了为Linux这个伟大的OS做出巨大贡献的一位位出色的、伟大的人物,他们那种学习钻研的精神、锲而不舍的信念、勇于把握住难得的机会,从小处着手,踏踏实实的创造出了对人类科技发展做出卓越贡献的Linux(Unix)系统,他们的种种,都值得我们去深刻反省、刻苦学习、传承并永远发展下去。 查看ip地址和重启网络服务是我学的第一个命令: ifconfig eth0、ifconfig eth0 IP 地址、service network restart。了解到远程登录软件可用xmanager。 secureCRT是我们常用的,安装好后利用其登录到了Red hat Linux,需要知道Linux 主机的ip 地址。徐老师为我们介绍了重要内容:SHELL,即运行程序的程序,如echo $$SHELL可查看SHELL的环境变量是csh还是bash。指令pwd可查看当前所在路径,passwd:更改Linux下的密码,仅限root用户有此权限,当然我们是利用虚拟机VMware 程序来运行Linux OS的,懂得了如何设置虚拟机的网卡设置、暂停、恢复、全屏等。 简单的学习后进入Unit 2,命令行的句法让我懂得了用法规则,一系列的命令功能强大:

(学习心得体会)学雷锋精神心得:传递社会正能量

传递社会正能量 “如果你是一滴水,你是否滋润了一寸土地?如果你是一线阳光,你是否照亮了一分黑暗?如果你是一颗粮食,你是否哺育了有用的生命?如果你是一颗最小的螺丝钉,你是否永远坚守着你生活的岗位…… ”雷锋,一名普通战士,却令亿万人难以忘却,他以平凡而伟大的行动,铸就了不朽的精神丰碑。 今年3月5日正值毛泽东同志题词“向雷锋同志学习”50周年。每当这个时候,社会各界都会用各种各样的方式来纪念这位平凡却伟大的人。____(省、市、区、县)____(省、市、区、县)花桥镇深入践行雷锋精神,唱响主旋律,赋予雷锋精神更多时代内涵,让雷锋精神在传承中散发出时代的光芒,传递社会正能量。 在爱岗敬业中体现生命的价值。学习雷锋精神,像雷锋那样爱岗敬业。做到干一行,爱一行,钻一行,精一行,做一颗永不生锈的螺丝钉,用青春和智慧谱写人生华章。花桥镇农办主任、文化站长陈小妹正是这样的“螺丝钉”。陈小妹数十年如一日,把一个乡镇文化站办得风生水起,受到中央电视台等主流媒体的关注,即使积劳成疾,仍然坚守岗位、忘我工作,在全镇党员干部中树立了一个良好榜样,赢得了广大群众的广泛赞誉。农家书屋让农民在家门口可以看到自己喜欢的书报、杂志。土地流转让许多农民从土地中解放出来,安心在工业上班,一大批农民企业家走上农业规模经营之路,成为农村致富的领军人物。大绿化建设奠定了____(省、市、区、县)级生态镇的基础,退耕还林、粮食补贴发放让广大农民充分享受党的惠民政策。

在助人为乐中彰显道德力量。学习雷锋精神,要像雷锋那样做人,用行动继承雷锋精神。女农民企业家翟小红正是这样做的。她积极参加“春蕾计划”资助活动,当留守儿童的爱心妈妈,每逢春节、儿童节,她不管有多忙,总是要挤出时间为孩子们送去礼物,陪孩子们玩。除了在物质上给孩子们资助之外,还尽力帮助他们化解在学习成长中的烦恼。她还成立了巾帼志愿者队伍,结对帮扶留守儿童志愿者队伍。现在许多大学生村官当起了志愿者,给留守儿童进行学习辅导和心理疏导。并且在三八节期间组织志愿者队伍开展慰问空巢老人。据统计,全镇去年“春蕾计划”和接受社会各界资助共x元,结对帮助贫困学生x人。另外,在春节期间,县、镇妇联筹措资金x万元,慰问了x名贫困妇女;母亲节前夕,走访慰问了部分贫困母亲,并为每位贫困母亲送去x元慰问金。 在农村主题教育中培养公仆情怀。[莲山课件]xx镇通过在农村党员干部中开展以“科学发展领航向、美好乡村谱华章”为主题的教育活动,扎实做好“双联系”活动,并结合学习弘扬雷锋精神,打牢“听党的话”的思想根基。教育广大党员干部像雷锋那样自觉学习党的理论,树牢政治信仰,始终听党的话、跟党走。学习雷锋忠诚于党的精神品格,无时无刻不把“听党的话”作为自己的最高思想行动准则。充分发挥社会主义核心价值体系和当代人核心价值观的主导引领作用,像雷锋那样心系人民,牢记我党的根本宗旨,全心全意为人民服务。把人民群众的需要作为第一需要,把人民群众满意作为第一标准;把人民的利益看得高于一切、重于一切,想人民群众之所想,急人民群众之所急,帮人民群众之所需,将雷锋精神深深扎根在广大党员心中。

嵌入式系统学习心得总结

嵌入式系统学习心得总结 嵌入式系统学习心得总结 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。以下为你带来嵌入式系统学习心得总结,希望对你有所帮助! 嵌入式系统学习心得总结篇1 嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。 看到了嵌入式系统的范围,你也应该知道嵌入式系统工程师是做什么的,就是开发上面的那些电子产品的工程师。 关于如何学习嵌入式? 学习嵌入式,该学习什么基本的知识呢? 首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言,你说不掌握它可以吗?至于如何学习C语言,我想这些基础的知识每个人都有自己的方法,关键要去学习,看书也好,网上找些视频看也好。很多人会问,

C语言要学到怎么样,我觉得这没有标准的答案。我想至少你在明白了一些基础的概念后,就该写代码了,动手才是最重要的,当你动手了,遇到问题了,再反过来学习,反过来查查课本,那时的收获就不是你死看书能得到的。 其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。 还有应该学习嵌入式系统,如linux或者wince下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习MTK、塞班、Android等操作系统,Android是以后发展的趋势,现在很热门,Android也是基于linux系统封装的,所以建议先学习下linux。 还有,应该学习下单片机或者ARM或者MIPS,很多人说我没有单片机的经验,直接学ARM可以吗?我觉得那完全没有问题的,当然如果你学习过单片机,那最好不过了,以后学习ARM就更简单了。 最后如果你把以上的知识都有所了解后,就该去阅读阅读一些优秀的代码,比如结合arm芯片手册学习去学习下UBOOT的源代码,了解下最小的系统开发,那对你整个嵌入式开发的非常有帮助的,可以的话,还可以学习下linux的源代码,当然如果你直接阅读2.6的代码,我想你会很痛苦的,可以先看看linux 代码早期的版本,比如0.12 的代码等等,麻雀虽小,五脏俱全,如果你全看完了,那我想

相关文档
最新文档