第一篇:arm心得.
心得体会(许晶)
本次实习时间是一周,我们组所选的题目是直流电动机转速控制设计,其要求有:硬件部分要求在LPC2100系列ARM的最小系统的基础上,设计通过按键控制直流电动机速度的驱动电路,要求通过LPC2100内置的PWM发生器控制直流电动机;并将电动机速度通过串口送至PC机。软件部分要求设计以上功能的脱机运行程序,并在试验室调试通过。我负责的是硬件部分。首先我将系统分为两部分。一是电动机控制驱动电路;二是ARM最小系统。在电动机驱动中,直流电机控制使用了H桥驱动电路,控制口线为P0.21、P0.22。在ARM最小系统中,分为5部分:电源电路、复位电路、JTAG接口电路、RS232串口电路、时钟电路。
在制作原理图中,我查阅了实验指导书和课本。我所选用的是2114板子。因为LPC2114是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-STM CPU的微控制器,并带有128/256 k字节(kB)嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。
在这个过程中,我注意到了许多问题。通过最小系统的制图,我对一些问题逐渐了解,不像刚开始学习一样,感觉什么也不懂,硬装知识。我画了5部分,这几个部分让我对书上的内容更加深了学习。如:时钟电路中,我就把时钟系统和晶体振荡两节课程,重新学习。
而在软件设计中,在我的搭档编程完之后,我也对程序进行了研究。在主程序中,我们用的是i、j表示速度与方向,正转为“+”、反转为“—”;最小速度为1,最大速度为4。先让电机正向慢慢的加速,加到正传的最大速后,在按下就变成反转,然后在依次加速,往返循环,直至没有按键按下。所运用的是,调节PWM的占空比就能达到电机的速度调节。
我们组在硬件中遇到的问题并不多,主要是在画各部分原理图时找器件很不熟练,不能很快的找到。这说明我不经常用软件。其实这个软件制图很方便,各种器件几乎都能找到,找不到时也可以在上面画图。
软件中,程序在编译正确后,下载方面出现了许多问题,如连接不上;不能生成hex文件等。其实这些问题,都是因为我们对软件不熟悉所造成的。在我们多次调试、链接之后,终于完成。
经过一周实习,是我对ARM系统有了更深刻的认识。因为前期大家都找工作的原因,我并没有特别认真的学习,而这次的实习,可以让我重新再次拿起课本,认真学习。并且使我感触最深的是,由于嵌入系统的广泛应用,我应该更好的去学习它、掌握它。像掌握办公自动化一样,成为必不可少的技术。
第二篇:ARM学习心得
ARM linux学习心得(zt)
2008-08-13 13:55
由于很多人总问这个问题,所以这里做一个总结文档供大家参考。
这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。也许你会注意到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家提供的资料也是以linux为主。我一直很难理解,其实WinCE的界面比linux的界面好看多了,使用起来也很方便,更为重要的是,WinCE的开发和Windows下的开发基本一样,学起来简单得多,但是学linux或者使用linux做嵌入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在WinCE6.0听说也开源,不过在成本和资源上linux已经有了无人能挡的优势。与此相对应的是,越来越多的电子厂商已经开始使用linux开发产品。举个例子,Google近期开发的智能手机操作系统Android其实就是使用linux-2.6.23内核进行改进得到的。
第一,学习基本的裸机编程。
对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS去编程,第一个实验就是控制led。学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复杂的系统最终都会落实到这些最底层的硬件控制,因此对这些硬件的控制有了感性的认识就好很多了
学习裸机的编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?还有,norflash内部的每一个单元在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是一样的吗?而与norflash相对应的nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映射在内存空间上进行使用?或者简单地说应该怎么用nandflash?再有,使用ADS进对ARM9行编程时都需要使用到一个初始化的汇编文件,这个文件究竟有什么用?他里面的代码是什么意思?不要这个可以吗?
诸如此类都是对硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助,如果跳过这一步,我相信越往后学越会
觉得迷茫,越觉得这写东西深不可测。因为,你的根基没打好。
不过先声明一下,本人并没有使用ADS对ARM9进行编程,我是学完ARM7后直接就使用ARM9学linux系统的,因此涉及使用ADS对ARM9进行编程的问题我很难回答^_^,自己去研究研究吧。
对于这部分不久将提供一份教程,这个教程中的例程并不是我为我们所代理的板子写的,是我在我们学院实验室拿的,英培特为他们自己的实验箱写的,不过很有借鉴意义,可以作为一份有价值的参考。
第二,使用linux系统进行一些基本的实验。
在买一套板子的时候一般会提供一些linux的试验例程,好好做一段时间这个吧,这个过程也是很有意义的,也是为进一步的学习积累感性认识,你能想象一个从没有使用过linux系统的人能学好linux的编程吗?好好按照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点弱智,但是我想很多高手都会经历这个过程。
在这方面我们深蓝科技目前没有计划提供相应的例程,主要是开发板的提供商会提供很丰富的例程,我们不做重复工作,只提供他们没有的、最有价值的东西给大家。
第三,研究完整的linux系统的的运行过程。
所谓完整的linux系统包括哪些部分呢?
三部分:bootloader、linux kernel(linux内核)、rootfile(根文件系统)。那么这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的执行流程又是怎么样的呢?搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制作这个linux系统就打下了另一个重要的根基。介绍这方面的资料网上可以挖掘到几吨,自己好好研究吧。第四,开始做系统移植。
上面说到完整的linux有3部分,而且你也知道了他们之间的关系和作用,那么现在你要做的便是自己动手学会制作这些东西。
当然我不可能叫你编写这些代码,这不实现。事实上这个3者都能在网下载到相应的源代码,但是这个源代码不可能下载编译后就能在你的系统上运行,需要很多的修改,直到他能运行在你的板子上,这个修改的过程就叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,等你完成了这个过程你会发现你已经算是一个初出茅庐的高手了。
在这个过程中如果你很有研究精神的话你必然会想到看源代码。很多书介绍你
怎么阅读linux源代码,我不提倡无目的地去看linux源代码,用许三多的话说,这没有意义。等你在做移植的时候你觉得你必须去看源代码时再去找基本好书看看,这里我推荐一本好书倪继利的《linux内核的分析与编程》,这是一本针对linux-2.6.11内核的书,说得很深,建议先提高自己的C语言编程水平再去看。
至于每个部分的移植网上也可以找到好多吨的资料,自己研究研究吧,不过要提醒的是,很多介绍自己经验的东西都或多或少有所保留,你按照他说的去做总有一些问题,但是他不会告诉你怎么解决,这时就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保证能解决你的问题,因为我未必遇到过你的问题,不过我相信能给你一点建议,也许有助你解决问题。
这一步的最终目的是,从源代码的官方主页上(都是外国的,悲哀)下载标准的源代码包,然后进行修改,最终运行在板子上。
盗用阿基米德的一句话:“给我一根网线,我能将linux搞定”。
第五,研究linux驱动程序的编写。
移植系统并不是最终的目的,最终的目的是开发产品,做项目,这些都要进行驱动程序的开发。
Linux的驱动程序可以说是五花八门,linux2.4和linux2.6的编写有相当大的区别,就是同为linux2.6但是不同版本间的驱动程序也有区别,因此编写linux的驱动程序变都不是那么容易的事情,对于最新版本的驱动程序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。
这部分的推荐书籍可以参考另一篇文章《推荐几本学习嵌入式linux的书籍》。第六,研究应用程序的编写。
做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。我一直就使用这个函数库来开发自己的应用程序,不过我希望你能使用国产的MiniGUI函数库。盗用周杰伦的广告词就是“支持国产,支持MiniGUI”。MiniGUI的编程比较相似Windows下的VC编程,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。不过MiniGUI最大的不好就是没有像qtopia这样的图形操作平台,这大大限制了他的推广,我曾经幻想过与北京飞漫公司(就是MiniGUI的版权拥有者)合作使用MiniGUI函数库开发像qtopia这样的图形操作平台,不过由于水平有限这只能是幻想了,呵呵。
完成这一步你基本就学完了嵌入式linux的全部内容了。
还有一个小小的经验想和大家分享。我在学习嵌入式linux的过程中很少问人,客观原因是身边的老师、同学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样做有个好处,就是可以提高自己解决问题的能力,因为做这些东西总有很多问题你难以理解,别人也没有这方面的经验,也不是所有问题都有人给你答案,这时必须要自己解决问题,这样,个人的解决问题能力就显得非常关键了。因此我的建议就是一般的问题到网上搜索一下,确实找不到答案了就问问高手,还是不行了就自己去研究,不要一味去等别人帮你解决问题。
记住,问题是学习的最好机会。
第三篇:ARM学习方法
ARM学习方法
一步一步学习uCOS和ARM体系结构的心得
学习必备条件:
1、一块开发板——例如44B0开发板,建议初学者不要去购买那些ARM9体系结构的,因为作为初学者来说ARM9体系的东西是很复杂的,买块ARM7的就可以了(先入门,然后再提高);
2、学习必备书籍
《Pointer on C》中文名字叫《C和指针》(美)里科|译者:徐波 前提你的了解C指针吧(这本书时非常经典的书籍,完全可以看中文版的,作者翻译的非常到位)
《嵌入式实时操作系统μCOS-II(第二版)》--邵贝贝翻译的(不能不承认邵贝贝是一个非常好的翻译者)
《μC/OS-Ⅱ标准教程》--杨宗德
对于英文不好的朋友可以购买《ARM体系结构与编程》--杜春蕾(该书其实还是有很多翻译错误的,大家在看的时候要注意一下,但是不可否认的是这本书到目前为止算得上是我见过最好的讲解关于ARM体系结构的书籍了)
对于英文过关的兄弟姐妹可以直接看
《ARM+Architecture+Reference+Manual(2nd+Edition)》
3、有条件的兄弟姐妹可以选购一个仿真器 JLINK V8全功能版(这个的感谢中国的优秀工程师,是他们把原价1999多的JLINK变成了几十元钱的东西
4、开发环境--MDK350或者IARARM
如果要熟悉这些开发环境,就需要好好读一些这些开发环境的手册资料,不好意思,这个就只有英文的了。
以上4个条件具备下来,可能也不会超过500元钱。
下面来讲讲我的学习经历:
我刚开始学习的时候,自己走了不少弯路,这里就省略不说了。
第一步:在开发板上跑跑简单程序
因为你有开发板,所以你就先在网上找一下对应开发板上的ARM芯片的datasheet,你都不先搞懂芯片的手册,又谈何让自己实现很多功能呢。
熟读数据手册后,就尽可能的在开发板上实现芯片对应的每个功能,像GPIO实验,UART通讯,I2C,ADC,DAC,PWM,RTC,SPI等等。自己写自己的程序,然后在开发板上好好实践一下。
当每个功能模块都实现以后,建议你让你的开发板实验一下多个功能复合使用,比如用UART打印出ADC的值什么的。
第二步:学习uCOS
鉴于你已经购买了《嵌入式实时操作系统μCOS-II(第二版)》,除开以下三个文件:
1、OS_CPU_C.c2、OS_CPU.H,3、OS_CPU_A.asm(这个是MDK环境下的汇编文件)或OS_CPU_A.a(这个是IAR开发环境下的汇编)
这三个文件的处理机制暂时可以不用先了解怎么做的,怎么移植的,以后再说
第一次读这本书时,搞清楚什么是任务,什么是前后台,为什么要在系统中加入嵌入式操作系统。
第二次读这本书时,详细了解他的TCB(Task Control Block)和ECB(Event Control
Block)的数据结构,搞清楚整个uCOS的实现机制(这里不要先就去看uCOS的移植,这样只会让你云里雾里的)
第三次读这本书是,详细了解信号量,互斥信号量、消息队列、邮箱和时间标志组
鉴于你又购买了《μC/OS-Ⅱ标准教程》,你 可以想在VC++ 6.0开发环境下实现对信号量,互斥信号量、消息队列、邮箱和事件标志组的上机实验代码。
如果还是不能了解uCOS怎么工作的,建议你多看几遍(我可是足足看了6、7遍了,书都翻得脱页了。汗说明我很笨,希望各位看官都比我聪明,呵呵)
第三步:建立对uCOS的初步认识
在网上下载对应你的开发板ARM芯片移植好了文件OS_CPU_C.c,OS_CPU.H,OS_CPU_A.asm(当然有的开发板已经提供了这样的基础实验)
在你的开发板上跑跑uCOS,建立起自己对于uCOS在ARM7开发板上的认识。
在你所购买的ARM7开发板上编写一个自己跑uCOS得任务(这里先不要去搞中断,初学者对于uCOS下的中断程序设计根本就搞不清楚)
第四步:熟悉ARM体系结构
因为是基于ARM7的移植,建议英文不好的去看看这本书《ARM体系结构与编程》(虽然这本书的作者在翻译时有很多操作,但是还是建议初学者去购买来好好看看),对于英文好的直接在网上下载《ARM+Architecture+Reference+Manual(2nd+Edition)》看就可以了
在看这个《ARM体系结构与编程》或
《ARM+Architecture+Reference+Manual(2nd+Edition)》时,务必注意多看几次,了解以下几个方面的知识:
1、ARM模式下的指令集
2、Thumd模式下的指令集
3、异常模式及进入异常时ARM如何处理
4、一定能熟悉ARM中的汇编指令
5、熟悉CPSR,R0-R7,R8-R14,R15及在各个模式下,这些寄存器的映射。熟悉以后,再来自己做uCOS的移植了。
第五步:uCOS移植
当然在自己编写代码做移植uCOS之前,有必要看看别人的移植代码。
其实对于uCOS的移植,我们只需要编写关键的三个文件,文件如下:
1、OS_CPU_C.c(堆栈初始化操作OSTaskStkInit函数)
2、OS_CPU.H:完成在该芯片下的数据定义,比如什么unsigned char 之类的,注意一下OS_STK和OS_CPU_SR的定义,定义下关中断和开中断的方式,有三个只能选择1个,ARM芯片一般是定义为第三种方式
3、OS_CPU_A.asm(这个是MDK环境下的汇编文件)或OS_CPU_A.a(这个是IAR开发环境下的汇编),这个文件的内容就多了,要做以下几个函数的重写:
1、OSStartHighRdy函数
2、任务级的任务切换函数OSCtxSw,3、中断级的任务切换OSIntCtxSw,其实只要写好了OSCtxSw,OSIntCtxSw自然就copy一下就完了(copy的时候记者要把保存当前任务的寄存器去掉就可以了。第六步:测试自己的uCOS移植代码
第七步:在自己写的uCOS移植代码中跑跑任务。
[分享]ARM初学者学习ARM的步骤
很多人学完单片机就想学arm,但不知如何去学~现在列出一下学习这方面的步骤-----基于linux系统的学习步骤如下:(一步步来哦:)
其实这也只是个基础,以后实际做项目了还要去学很多
1、Linux 基础
安装Linux操作系统
Linux文件系统
Linux常用命令
Linux启动过程详解
熟悉Linux服务 能够独立安装Linux操作系统
能够熟练使用Linux系统的基本命令
认识Linux系统的常用服务 安装Linux操作系统
Linux基本命令实践
设置Linux环境变量
定制Linux的服务 Shell 编程基础使用vi编辑文件
使用Emacs编辑文件
使用其他编辑器
2、Shell 编程基础
Shell简介
认识后台程序
Bash编程熟悉Linux系统下的编辑环境
熟悉Linux下的各种Shell
熟练进行shell编程熟悉vi基本操作
熟悉Emacs的基本操作
比较不同shell的区别
编写一个测试服务器是否连通的shell脚本程序
编写一个查看进程是否存在的shell脚本程序
编写一个带有循环语句的shell脚本程序
3、Linux 下的 C 编程基础
linux C语言环境概述
Gcc使用方法
Gdb调试技术
Autoconf
Automake
Makefile
代码优化 熟悉Linux系统下的开发环境
熟悉Gcc编译器
熟悉Makefile规则编写Hello,World程序
使用 make命令编译程序
编写带有一个循环的程序
调试一个有问题的程序
4、嵌入式系统开发基础
嵌入式系统概述
交叉编译
配置TFTP服务
配置NFS服务
下载Bootloader和内核
嵌入式Linux应用软件开发流程
熟悉嵌入式系统概念以及开发流程
建立嵌入式系统开发环境制作cross_gcc工具链
编译并下载U-boot
编译并下载Linux内核
编译并下载Linux应用程序
4、嵌入式系统移植
Linux内核代码
平台相关代码分析
ARM平台介绍
平台移植的关键技术
移植Linux内核到 ARM平台 了解移植的概念
能够移植Linux内核移植Linux2.6内核到 ARM9开发板
5、嵌入式 Linux 下串口通信
串行I/O的基本概念
嵌入式Linux应用软件开发流程
Linux系统的文件和设备
与文件相关的系统调用
配置超级终端和MiniCOM 能够熟悉进行串口通信熟悉文件I/O 编写串口通信程序
编写多串口通信程序
6、嵌入式系统中多进程程序设计
Linux系统进程概述
嵌入式系统的进程特点
进程操作
守护进程
相关的系统调用了解Linux系统中进程的概念
能够编写多进程程序编写多进程程序
编写一个守护进程程序
sleep系统调用任务管理、同步与通信 Linux任务概述 任务调度
管道
信号
共享内存
任务管理 API 了解Linux系统任务管理机制
熟悉进程间通信的几种方式
熟悉嵌入式Linux中的任务间同步与通信
编写一个简单的管道程序实现文件传输
编写一个使用共享内存的程序
7、嵌入式系统中多线程程序设计
线程的基础知识
多线程编程方法
线程应用中的同步问题了解线程的概念
能够编写简单的多线程程序编写一个多线程程序
8、嵌入式 Linux 网络编程
网络基础知识
嵌入式Linux中TCP/IP网络结构
socket 编程
常用 API函数
分析Ping命令的实现
基本UDP套接口编程
许可证管理
PPP协议
GPRS 了解嵌入式Linux网络体系结构
能够进行嵌入式Linux环境下的socket 编程
熟悉UDP协议、PPP协议
熟悉GPRS 使用socket 编写代理服务器
使用socket 编写路由器
编写许可证服务器
指出TCP和UDP的优缺点
编写一个web服务器
编写一个运行在 ARM平台的网络播放器
9、GUI 程序开发
GUI基础
嵌入式系统GUI类型
编译QT
进行QT开发熟悉嵌入式系统常用的GUI
能够进行QT编程使用QT编写“Hello,World”程序调试一个加入信号/槽的实例
通过重载QWidget 类方法处理事件
10、Linux 字符设备驱动程序
设备驱动程序基础知识
Linux系统的模块
字符设备驱动分析
fs_operation结构
加载驱动程序了解设备驱动程序的概念
了解Linux字符设备驱动程序结构
能够编写字符设备驱动程序编写Skull驱动
编写键盘驱动
编写I/O驱动
分析一个看门狗驱动程序
对比Linux2.6内核与2.4内核中字符设备驱动的不同 Linux 块设备驱动程序块设备驱动程序工作原理
典型的块设备驱动程序分析
块设备的读写请求队列了解Linux块设备驱动程序结构
能够编写简单的块设备驱动程序比较字符设备与块设备的异同编写MMC卡驱动程序
分析一个文件系统
对比Linux2.6内核与2.4内核中块设备驱动的不同
11、文件系统
虚拟文件系统
文件系统的建立
ramfs内存文件系统
proc文件系统
devfs 文件系统
MTD技术简介
MTD块设备初始化
MTD块设备的读写操作了解Linux系统的文件系统了解嵌入式Linux的文件系统
了解MTD技术
能够编写简单的文件系统为 ARM9开发板添加 MTD支持移植JFFS2文件系统
通过proc文件系统修改操作系统参数
分析romfs 文件系统源代码
创建一个cramfs 文件系统
第四篇:ARM嵌入式linux复习心得总结1
2011.10.9 Evo杨
ARM嵌入式linux复习心得总结1:
一、Linux定制安装:
从新安装配置了一遍Linux,我使用的是Vmware7.0安装RHEL5.5,对于Linux的安装主要是要选择定制安装也就是Vmware7.0(下面简称Vm)中新建虚拟机开始部分选择”Custom(advanced)”,因为这里我所使用的FTP、sumba等服务器是需要定制加上的一开始没有注意结果悲剧了…(以后一定要仔细的选择!),在next后面应该选择最后一个选项这样自定义的选项会更加多,同样可以选择定制安装的一些选项,在这里同样有个地方要注意:
1、最好使用默认的内存分配方式
2、*(重要)选择bridged networking 的网络连接方式(这里要注意,第一次安装的时候没有注意使用的是默认值也就是NET模式,最后在设置NFS和sumba服务器的时候(也可能是其他的操作错误)无法与PC机ping通讯这里花费了大量的时间研究!后面就是Linux系统的安装了,这里我使用的是图形化界面的安装(以前大一的时候用命令行安过一次自己英语太垃圾了,安了整整一上午…)
3、在最后配置的时候防火墙要禁用,因为这里防火墙会阻止一切自发的与本机联网的事件,在后面使用NFS以及sumba服务器的时候是不能打开的,第一次安装的时候吃过这方面的亏以后要注意!
4、禁用SELinux,这个也是与安全有关的,现在暂时禁用就可以了。
二、再次回顾了一下Linux的命令,这里比较熟悉,跟走路一样这里必须专业起来!总的来说有一下几个命令必须灵活运用:
1、useradd(添加用户名,后面使用sumba服务器的时候需要用到,使用率较低)
2、passwd(添加用户密码,一般配合useradd使用,使用率较低)
3、su(切换用户,经常用)
4、shutdown(关机命令,用法有多种,我一般不用,虚拟机直接断电就行了)
5、cp(拷贝,不解释)
6、mv(移动或更名,不解释)
7、rm(删除,不解释)
8、mkdir(创建目录)
9、cd(改变工作目录,经常用)
10、pwd(显示当前目录)
11、ls(查看目录)
12、tar(针对tar.gz打包和解压,这里主要记住 tar cvzf * 和tar xvzf * 一个是压缩,一个是解压)
13、tar(针对tar打包和解压,这里主要记住 tar cvf * 和tar xvf * 一个是压缩,一个是解压)
14、unzip(解压zip文件)
15、chmod(更改权限)
16、df(查看磁盘使用情况)
17、ifconfig(查看网络配置、查看ip等)
18、netstat(查看网络状态)
19、grep(查找字符串,这个其实很重要,但自己总是忘记可能是一般不用的原因)20、rpm(用于软件安装)
21、mount(挂载,很重要用语挂载CDROM、硬盘以及共享文件等)
22、find(找到*文件存在路径)
三、vi编辑器的使用,使用比较熟练好像加“!”的都是强制执行的。
四、安装tftp服务器:
常用命令:*netstat –a | grep tftp 这里检测当前tftp的情况,在资料上是说检测安装情况,我觉得不是应该是检测启动情况,当然这个也是包括安装与否的,这里要注意!有的时候他是安装上的但是没有打开,查看配置文件是就会发现disable 默认是 = yes 意思是默认是关闭的我们有几种方法将他打开:
1、使用setup命令启动tftp
2、配置 #vi /etc/xinetd.d/tftp 中把disable中的yes改为no
3、使用命令启动 #/etc/init.d/xinetd start
五、安装NFS服务器: 这个功能是共享Linux与Linux之间文件的,后面开发ARM的时候联通内核与文件系统使用
六、安装samba服务器
首先是要配置samba服务器的配置文件位置在:#vi /etc/samba/smb.conf 在Share Definitions中添加 【root】
Comment
= Root Ditectories
Browseable
= yes
Writable
= yes
Path
= /
valid users
=
smb
valid users
=
MYDOMAIN%s 其中可以在【home】前在命令模式下输入“6yy”(复制这六行!)然后再输入“p”(粘贴)然后再修改,这样修改起来比较方便,也是绝大多数教程都使用的方法,其中要注意几点:
1、要是使用复制方法然后修改的话要注意看清楚Comment这行后面Root Ditectories 这行的Root是不要忘了修改【homes】中式Home而【root】中是Root切记!(这里自己在前一次安装的时候没有留意导致后面Samba 服务器不能使用!!)
2、smb 这是用户名这里引用一下教材的语言:添加用户,注意添加用户的用户与修改配置文件部分valid users = smb相同,如果smb用户存在则不需要添加!
配置完毕要重新启动samba服务器 #/etc/init.d/smb restart
最后在windows中运行即可。
七、Samba、NFS等PC与虚拟机的网络配置(重点)这里着重总结一下这次网络的配置,虚拟机的网络配置非常重要,即使Linux不需要上网可是他们之间的数据传送也是十分必要的,例如Vmtools这个工具,smb、NFS、tftp等,我在这里的网络配置花费了大量的时间研究,主要是samba服务器总不能配置成功,网上也有许多的方法不过讲的都很细许多功能的实现都比较抽象,我之所以总是没有成功在上面的几个方面上已经详细的解释了,这里不再次做总结,其中有几点与老师或查资料得到的几点信息在这里要总结一下:
1、在所有的服务器等联网活动之前一定要把网络通信配置好!在PC中首先要ipconfig一下查询一下PC机网络配置情况(ip、网关等)然后再在虚拟机中使用命令setup打开网络配置去掉自动分配IP选用静态ip然后将ip等项目输入进去,这里要输入的一共三项,后两项是相同的只有ip是需要改变的,切记要分配在同一个网段!这样才能实现局域网功能
2、我问了问教授Linux的一位老师他曾经因为更改了本地连接的IP导致虚拟机上的网络服务器不能用了,当更改回原来的ip才能使用,这里我并没有出现这种情况因为我在设置ip的时候使用的是动态分配地址的ip路由器,在设置完成后并没有出现服务器失效的情况所以我认为这里老师可能使用了某个ip绑定了吧。
八、Vmtools的安装使用
这个工具很好用在XP中安装比较方便,但在Linux中有点儿复杂,当然只是有点儿而已,使用Vmware自动下载就可以完成后Linux自动加载了一个cdrom里面就有一个vmtools的tar 解压包(有时需要自己加载)他在文件中找到安装文件安装即可。这里引用一下网络同仁的资源我觉得他写的吧、简单明了(http://www.xiexiebang.comtl.h> void create_file(char *filename){ If(create(filename,0666)<0)
//创建文件函数判断创建是否成功 后面的是文件的权限:可读可写不可执行!
{ printf(“create file %s failure!n”,filename);
exit(EXIT_FAILURE);} Else { Printf(“create file %s success!”,filename);} }
Int main(int argc,char *argv[])// 这里的argc是程序参数个数(如ls –a 这就是两个参数,也就是说是两个字符串,而argv【】表示的是参数名字 argv【0】=ls argv【1】=-a 后面应该还有一个参数char *env 代表的是环境变量的字符串(各种路径)){
If(argc<2)
//判断文件是否符合要求,这个一般小于0就行 { Perror(“you haven’t input the filename,please try again!n”);
Exit(EXIT_FAILURE);//这个最后等于1 其实就是个return 1; } Create_file(argv[1]);Exit(EXIT_SUCCESS);
//这个最后等于0 其实就是个return 0;
}
十一、今天心得体会:错误与进步同在!正视错误,解决错误,取得进步!
第五篇:ARM嵌入式linux复习心得总结1
2011.10.9 Evo杨
ARM嵌入式linux复习心得总结1:
一、Linux定制安装:
从新安装配置了一遍Linux,我使用的是Vmware7.0安装RHEL5.5,对于Linux的安装主要是要选择定制安装也就是Vmware7.0(下面简称Vm)中新建虚拟机开始部分选择”Custom(advanced)”,因为这里我所使用的FTP、sumba等服务器是需要定制加上的一开始没有注意结果悲剧了…(以后一定要仔细的选择!),在next后面应该选择最后一个选项这样自定义的选项会更加多,同样可以选择定制安装的一些选项,在这里同样有个地方要注意:
1、最好使用默认的内存分配方式
2、*(重要)选择bridged networking 的网络连接方式(这里要注意,第一次安装的时候没有注意使用的是默认值也就是NET模式,最后在设置NFS和sumba服务器的时候(也可能是其他的操作错误)无法与PC机ping通讯这里花费了大量的时间研究!后面就是Linux系统的安装了,这里我使用的是图形化界面的安装(以前大一的时候用命令行安过一次自己英语太垃圾了,安了整整一上午…)
3、在最后配置的时候防火墙要禁用,因为这里防火墙会阻止一切自发的与本机联网的事件,在后面使用NFS以及sumba服务器的时候是不能打开的,第一次安装的时候吃过这方面的亏以后要注意!
4、禁用SELinux,这个也是与安全有关的,现在暂时禁用就可以了。
二、再次回顾了一下Linux的命令,这里比较熟悉,跟走路一样这里必须专业起来!总的来
说有一下几个命令必须灵活运用:
1、useradd(添加用户名,后面使用sumba服务器的时候需要用到,使用率较低)
2、passwd(添加用户密码,一般配合useradd使用,使用率较低)
3、su(切换用户,经常用)
4、shutdown(关机命令,用法有多种,我一般不用,虚拟机直接断电就行了)
5、cp(拷贝,不解释)
6、mv(移动或更名,不解释)
7、rm(删除,不解释)
8、mkdir(创建目录)
9、cd(改变工作目录,经常用)
10、pwd(显示当前目录)
11、ls(查看目录)
12、tar(针对tar.gz打包和解压,这里主要记住 tar cvzf * 和tar xvzf * 一个是压缩,一个是解压)
13、tar(针对tar打包和解压,这里主要记住 tar cvf * 和tar xvf * 一个是压缩,一个是解压)
14、unzip(解压zip文件)
15、chmod(更改权限)
16、df(查看磁盘使用情况)
17、ifconfig(查看网络配置、查看ip等)
18、netstat(查看网络状态)
19、grep(查找字符串,这个其实很重要,但自己总是忘记可能是一般不用的原因)
20、rpm(用于软件安装)
21、mount(挂载,很重要用语挂载CDROM、硬盘以及共享文件等)
22、find(找到*文件存在路径)
三、vi编辑器的使用,使用比较熟练好像加“!”的都是强制执行的。
四、安装tftp服务器:
常用命令:*netstat –a | greptftp这里检测当前tftp的情况,在资料上是说检测安装情况,我觉得不是应该是检测启动情况,当然这个也是包括安装与否的,这里要注意!有的时候他是安装上的但是没有打开,查看配置文件是就会发现disable 默认是 = yes 意思是默认是关闭的我们有几种方法将他打开:
1、使用setup命令启动tftp2、配置 #vi /etc/xinetd.d/tftp 中把disable中的yes改为no3、使用命令启动 #/etc/init.d/xinetd start
五、安装NFS服务器: 这个功能是共享Linux与Linux之间文件的,后面开发ARM的时候
联通内核与文件系统使用
六、安装samba服务器
首先是要配置samba服务器的配置文件位置在:#vi /etc/samba/smb.conf
在Share Definitions中添加
【root】
Comment=Root Ditectories
Browseable=yes
Writable=yes
Path=/
valid users=smb
valid users=MYDOMAIN%s
其中可以在【home】前在命令模式下输入“6yy”(复制这六行!)然后再输入“p”(粘贴)然后再修改,这样修改起来比较方便,也是绝大多数教程都使用的方法,其中要注意几点:
1、要是使用复制方法然后修改的话要注意看清楚Comment这行后面Root
Ditectories 这行的Root是不要忘了修改【homes】中式Home而【root】
中是Root切记!(这里自己在前一次安装的时候没有留意导致后面Samba
服务器不能使用!!)
2、smb 这是用户名这里引用一下教材的语言:添加用户,注意添加用户的用户与修改配置文件部分valid users = smb相同,如果smb用户存在则不
需要添加!
配置完毕要重新启动samba服务器 #/etc/init.d/smb restart
最后在windows中运行即可。
七、Samba、NFS等PC与虚拟机的网络配置(重点)
这里着重总结一下这次网络的配置,虚拟机的网络配置非常重要,即使Linux不需要上
网可是他们之间的数据传送也是十分必要的,例如Vmtools这个工具,smb、NFS、tftp等,我在这里的网络配置花费了大量的时间研究,主要是samba服务器总不能配置成功,网上也有许多的方法不过讲的都很细许多功能的实现都比较抽象,我之所以总是没有成功在上面的几个方面上已经详细的解释了,这里不再次做总结,其中有几点与老师或查资料得到的几点信息在这里要总结一下:
1、在所有的服务器等联网活动之前一定要把网络通信配置好!在PC中首先要ipconfig
一下查询一下PC机网络配置情况(ip、网关等)然后再在虚拟机中使用命令setup打开网络配置去掉自动分配IP选用静态ip然后将ip等项目输入进去,这里要输入的一共三项,后两项是相同的只有ip是需要改变的,切记要分配在同一个网段!这样才能实现局域网功能
2、我问了问教授Linux的一位老师他曾经因为更改了本地连接的IP导致虚拟机上的网
络服务器不能用了,当更改回原来的ip才能使用,这里我并没有出现这种情况因为我在设置ip的时候使用的是动态分配地址的ip路由器,在设置完成后并没有出现服务器失效的情况所以我认为这里老师可能使用了某个ip绑定了吧。
八、Vmtools的安装使用
这个工具很好用在XP中安装比较方便,但在Linux中有点儿复杂,当然只是有点
儿而已,使用Vmware自动下载就可以完成后Linux自动加载了一个cdrom里面就有一个vmtools的tar 解压包(有时需要自己加载)他在文件中找到安装文件安装即可。这里引用一下网络同仁的资源我觉得他写的吧、简单明了(http:///viewarticle.php?id=66813)
安装linux时,一定要安装gcc和kernel-source,VMware要对内核头文件进行编译。注:linux区分大小写,例如,用户名root和Root就是两个用户了。你想进入tmp目录,而你输入的是Tmp,嘿嘿,肯定是进不去的!
按下alt+f2,输入konsole 新建一个终端。
注:如果你不是以root用户登录,你不能安装程序。用su命令可以切换到root用户,不会用命令的话,注销后用root登录。
输入 /sbin/telinit
3用root登录,输入root的密码,如果你忘了,我只能同情你了。按下alt+ctrl把鼠标切出来,点击菜单上的“安装VMware-tools”。
回到虚拟机中,挂载cdrom。
mount /dev/cdrom /mnt/cdrom进入cdrom目录
cd /mnt/cdrom将光盘中的内容复制到tmp目录下
cp VM* /tmp/
注:*号是通配符。还有,输入单个命令时按Tab自动输入。
进入tmp目录
cd /tmp
解压缩.tar.gz文件
tar zvxf VMware*.tar.gz
屏幕哗哗的闪呀!进入解压后的vmware-tools-distrib目录
cd vmware-tools-distrib
执行安装文件
./vm*.pl
一路默认回答,皆按回车键。
以上都很顺利,很多人都卡在了这里,这个该死的目录怎么也找不到,why?是因为你没安装gcc或kernel-source,回本文开头去看吧!
配置你的x windows 设置。输入yes并按回车键。
选择你linux的显示屏幕大小。
Enioy!
最后显示的是VMware开发组的注记。要让他们知道中国有这么多用破解版的,他们就不这么写了。呵呵。
输入startx启动Xwindows
OK。
我就是参考这个文章安装完成的它使用的是红旗的Linux不过我在红帽的Linux5中同样使用顺利所以将此贴贴上便于以后参考!
九、Makefile
Makefile是个将多个文件链接编译的工具使用方法很简单假设有两个文件一个是main.c 一个是fun.c以及同文件 fun.h
建立Makefile文件输入:
main:main.o fun.ogcc main.o fun.o –o main main.o:main.c fun.hgcc –c main.c –o main.o fun.o:fun.c fun.hgcc –c fun.c –o fun.o clean:rm –f main *.o(这部分代码在make clean时执行!)从中可以看出编译的规律
目标:汇编文件…..gcc 汇编文件
1、汇编文件
2、…..–o 目标文件名(这里同编译一条代码时相同)
十、文件编程-文件创建
#include
#include
#include
#include
#include
void create_file(char *filename)
{
If(create(filename,0666)<0)//创建文件函数判断创建是否成功 后面的是文件的权限:可读可写不可执行!
{printf(“create file %s failure!n”,filename);exit(EXIT_FAILURE);
}
Else
{
Printf(“create file %s success!”,filename);
}
}
Int main(int argc,char *argv[])// 这里的argc是程序参数个数(如ls –a这就是两个参数,也就是说是两个字符串,而argv【】表示的是参数名字 argv【0】=lsargv【1】=-a后面应该还有一个参数char *env 代表的是环境变量的字符串(各种路径)){
If(argc<2)//判断文件是否符合要求,这个一般小于0就行 {Perror(“you haven’t input the filename,please try again!n”);Exit(EXIT_FAILURE);//这个最后等于1其实就是个return 1;
}
Create_file(argv[1]);
Exit(EXIT_SUCCESS);//这个最后等于0其实就是个return 0;
}
十一、今天心得体会:错误与进步同在!正视错误,解决错误,取得进步!