ARM与嵌入式linux入门的建议(初学者必看)

ARM与嵌入式linux入门的建议(初学者必看)
ARM与嵌入式linux入门的建议(初学者必看)

Figolqt原创

由于很多人总问这个问题,所以这里做一个总结文档供大家参考。

这里必须先说明,以下的步骤都是针对LinuxWinCE。也许你会注意到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家提供的资料也是以linux为主。我一直很难理解,其实WinCE的界面比linux的界面好看多了,使用起来也很方便,更为重要的是,WinCE的开发和Windows下的开发基本一样,学起来简单得多,但是学linux或者使用linux做嵌入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用Win CE,因为成本高,都是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在WinCE6.0听说也开源,不过在成本和资源上linux已经有了无人能挡的优势。与此相对应的是,越来越多的电子厂商已经开始使用linux开发产品。举个例子,Google近期开发的智能手机操作系统Andr oid其实就是使用linux-2.6.23内核进行改进得到的。

第一,学习基本的裸机编程。

对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用AD S去编程,第一个实验就是控制LED。学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复杂的系统最终都会落实到这些最底层的硬件控制,因此对这些硬件的控制有了感性的认识就好很多了

学习裸机的编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?还有,noRFlash内部的每一个单元在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是一样的吗?而与norflash相对应的nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映射在内存空间上进行使用?或者简单地说应该怎么用nandflash?再有,使用ADS进对ARM9行编程时都需要使用到一个初始化的汇编文件,这个文件究竟有什么用?他里面的代码是什么意思?不要这个可以吗?

诸如此类都是对硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助,如果跳过这一步,我相信越往后学越会觉得迷茫,越觉得这写东西深不可测。因为,你的根基没打好。

不过先声明一下,本人并没有使用ADS对ARM9进行编程,我是学完AR M7后直接就使用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的过程中很少问人,客观原因是身边的老师、同学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样做有个好处,就是可以提高自己解决问题的能力,因为做这些东西总有很多问题你难以理解,别人也没有这方面的经验,也不是所有问题都有人给你答案,这时必须要自己解决问题,这样,个人的解决问题能力就显得非常关键了。因此我的建议就是一般的问题到网上搜索一下,确实找不到答案了就问问高手,还是不行了就自己去研究,不要一味去等别人帮你解决问题。

记住,问题是学习的最好机会。

写到这里基本就结束了,如果你有什么问题,或者需要交流的欢迎与我联系,我的邮箱是sagres_2004@https://www.360docs.net/doc/602236080.html,,qq群:29946422,

嵌入式linux基本操作实验一的实验报告

实验一linux基本操作实验的实验报告 一实验目的 1、熟悉嵌入式开发平台部件,了解宿主机/目标机开发模式; 2、熟悉和掌握常用Linux的命令和工具。 二实验步骤 1、连接主机和目标板;(三根线,网线直接连接实验箱和PC机,实验箱UART2连接主机的UART口)。 2、Linux命令的熟悉与操作 PC端:在PC机的桌面上打开虚拟机,并启动Linux系统,打开命令终端,操作Linux基本命令,如:查看:ls,进入目录:cd,创建文件:mkdir,删除文件:rmdir,配置网络:ifconfig,挂载:mount,设置权限:chmod,编辑器:vi,拷贝:cp等命令,要求能熟练操作。 使用方法: 1.查看:ls Ls列出文件和目录 Ls–a 显示隐藏文件 Ls–l 显示长列格式ls–al 其中:蓝:目录;绿:可执行文件;红:压缩文件;浅蓝:链接文件;灰:其他文件;红底白字:错误的链接文件 2.进入目录:cd 改变当前目录:cd 目录名(进入用户home目录:cd ~;进入上一级目录:cd -) 3.创建文件:mkdir 建立文件/目录:touch 文件名/mkdir目录名 4.删除文件:rmdir 删除空目录:rmdir目录名 5.配置网络:ifconfig 网络- (以太网和WIFI无线) ifconfig eth0 显示一个以太网卡的配置 6.挂载:mount mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘- 确定目录'/ mnt/hda2' 已经存在 umount /dev/hda2 卸载一个叫做hda2的盘- 先从挂载点'/ mnt/hda2' 退出fuser -km /mnt/hda2 当设备繁忙时强制卸载 umount -n /mnt/hda2 运行卸载操作而不写入/etc/mtab文件- 当文件为只读或当磁盘写满时非常有用 mount /dev/fd0 /mnt/floppy 挂载一个软盘 mount /dev/cdrom /mnt/cdrom挂载一个cdrom或dvdrom mount /dev/hdc /mnt/cdrecorder挂载一个cdrw或dvdrom mount /dev/hdb /mnt/cdrecorder挂载一个cdrw或dvdrom mount -o loop file.iso /mnt/cdrom挂载一个文件或ISO镜像文件

学习嵌入式比较好的书籍推荐给大家

学习嵌入式比较好的书籍推荐给大家 嵌入式书籍推荐 Linux基础 1、《Linux与Unix Shell 编程指南》 C语言基础 1、《C Primer Plus,5th Edition》【美】Stephen Prata着 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) 4、《嵌入式Linux应用程序开发详解》 Linux内核 1、《深入理解Linux内核》(第三版) 2、《Linux内核源代码情景分析》毛德操胡希明著 研发方向 1、《UNIX Network Programming》(UNP) 2、《TCP/IP详解》 3、《Linux内核编程》 4、《Linux设备驱动开发》(LDD) 5、《Linux高级程序设计》杨宗德著 硬件基础 1、《ARM体系结构与编程》杜春雷着 2、S3C2410 Datasheet 英语基础 1、《计算机与通信专业英语》 系统教程 1、《嵌入式系统――体系结构、编程与设计》 2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处

理器》毛德操胡希明着 3、《Building Embedded Linux Systems》 4、《嵌入式ARM系统原理与实例开发》杨宗德著 理论基础 1、《算法导论》 2、《数据结构(C语言版)》 3、《计算机组织与体系结构?性能分析》 4、《深入理解计算机系统》【美】Randal E. Bryant David O''Hallaron着 5、《操作系统:精髓与设计原理》 6、《编译原理》 7、《数据通信与计算机网络》 8、《数据压缩原理与应用》 C语言书籍推荐 1. The C programming language 《C程序设计语言》 2. Pointers on C 《C和指针》 3. C traps and pitfalls 《C陷阱与缺陷》 4. Expert C Lanuage 《专家C编程》 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs 《编程精粹--Microsoft 编写优质无错C程序秘诀》 6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 7.《C语言嵌入式系统编程修炼》 8.《高质量C++/C编程指南》林锐 尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。

困扰ARM嵌入式初学者的若干问题

困扰ARM嵌入式初学者的若干问题 对于ARM嵌入式初学者而言,心中一定充满着疑虑和困惑,很多问题也期待着找到答案。比如: 1、嵌入式要学什么?嵌入式到底有多难学? 2、学ARM需要什么基础,学ARM要发多长时间? 3、学ARM7还是ARM9,直接学ARM9怎么样? 4、如何学ARM,怎么学ARM才轻松? 在此,我针对这些问题提提自己的看法,以期对初学者有所帮助,能在学习的道路上少走些弯路。 一、百花齐放的嵌入式,需要你量力取舍 嵌入式前景广阔,就业渠道多,无疑是当前最热门最有发展前途的行业。特别是随着消费电子的智能化,3G的快速发展等等,嵌入式更显重要。如果你想从事该领域,或者成为该领域的工程师,你就会发现要掌握的东西实在太多。万事开头难,想进入该领域你得找个合适的切入点。面对百花齐放的嵌入式,切入点有很多,我建议你量力而行。 嵌入式大体上可以划分为:硬件和软件两部分。想从事嵌入式硬件的,推荐你从ARM7开始;想从事嵌入式软件的,推荐你从uCOS-II嵌入式操作系统开始。面对“ARM7+uCOS-II”方案,可能有些人会问“ARM9+Linux”方案是否也适合初学者,针对这个问题,我谈谈自己的看法: 1、ARM7比起ARM9,更适合初学者学习。 和ARM7相比,应该说ARM9在性能方面有很大提高,但ARM9更适合作为产品开发平台,并不适合初学者用于学习。主要原因如下: 从硬件设计方面,ARM7主频在100MHz以内,学生完全可以掌握其设计技术,而ARM9在200-600MHz左右,属高速设计,至少有3年以上经验的硬件工程师才可能进行设计,一般学生很难掌握。 从软件设计方面,在教学中采用源码开发的操作系统已成为共识,ARM7资源紧凑,适合运行ucos和ucLinux等源码开放的操作系统,在教学中能够充分体现嵌入式系统对资源、成本、可靠性有严格需要的特点;而ARM9是系统集成度更高的SOC,适合跑WinCE、Linux 等高级操作系统,用于教学是“大马拉小车”,这样造成学生在设计时往往不会关注资源、成本、可靠性的限制,就如同用一台PC进行教学一样,无法体现嵌入式教学的特点。 ? 从应用方面,而ARM7芯片价格比ARM9低得多,而且ARM7芯片是目前嵌入式产品市场的主流,很多手机、小灵通等产品都是基于ARM7的,占到市场份额的90%以上;采用ARM7就如同目前单片机开发与教学绝大多数采用51体系一样,ARM7就是32位微处理器领域的51,有着持久的生命力。 2、ucos比起Linux,更适合初学者学习。 ucos内核精简,代码不长,且相关书籍和学习资源相当丰富,非常适合初学者学习。学习ucos可以很快地熟悉嵌入式操作系统的核心内容,比如:内核是如何工作的,任务如何创建,任务间如何通信,内存如何管理等内容。经过一段时间的学习,可以真正理解嵌入式操作系统,对后期的学习和使用很有帮助。

《嵌入式系统与开发》构建嵌入式Linux系统-实验报告

《嵌入式数据库sqlite移植及使用》 实验报告 学生姓名:陈彤 学号:13004405 专业班级:130044 指导教师:孙国梓 完成时间:2016.5.31 实验3 嵌入式数据库sqlite移植及使用 一.实验目的 理解嵌入式软件移植的基本方法,掌握sqlite数据库软件移植的步骤,掌握sqlite开发的两种方式—命令模式和C代码开发模式的使用方法,并编程实现简单通讯录查询实验。 二.实验内容 实验3.1 移植嵌入式数据库sqlite 实验3.2 简单通讯录查询实例设计和测试 三.预备知识 Linux使用、数据库相关知识等 四.实验设备及工具(包括软件调试工具) 硬件:ARM 嵌入式开发平台、PC 机Pentium100 以上、串口线。 软件:WinXP或UBUNTU开发环境。 五.实验步骤 5.1 移植嵌入式数据库sqlite 步骤【参看教材103页】: 第一步,解压缩sqlite源码,命令tar zxvf sqlite-autoconf-3080900.tar.gz,在解压后的文件夹下,可以看到源码文件有shell.c 和sqlite3.c文件,生成Makefile的配置脚本文件configure.ac ,并检查当前文件夹下__A__(A.存在 B.不存在)Makefile文件。 第二步利用configure脚本文件生成基于ARM实验台的Makefile,具体命令为./configure CC=arm-linux-gcc –prefix=/opt/sqlite –host=arm-linux(假设安装目录为/opt/sqlite),并检查当前文件夹下___A__(A.存在 B.不存在)Makefile文件。 第三步,编译sqlite,命令为_make_,编译过程中使用的编译器为_ arm-linux-gcc _。 第四步,安装sqlit,命令为_make install_。安装完成后到_/opt/sqlite_文件夹下去查看相关文件,可以看到该文件夹下有_bin_、_include_、__lib__和share文件夹,其中可执行文件sqlite3位于_./bin_文件夹,库位于_./lib_文件夹。 第五步,将sqlite3拷贝到开发板bin目录下,将库下的文件拷贝到开发板的lib目录下【注意链接文件的创建】 第六步,数据库的使用 方式1:命令操纵数据库 在超级终端环境下创建数据库stucomm.db,命令为_sqlite3 stucomm.db_; 创建数据表stutable,字段包括id 整型,name 字符型,phoneNum 字符型,具体命令为_sqlite> create table stutable (id int(20),name char(20),phoneNum char(20));_; 插入2条记录,记录信息如下 001,zhangsan,10086 002,lisi,10000

!嵌入式系统开发资料(入门必备)

获取更多权威电子书请登录https://www.360docs.net/doc/602236080.html, ARM嵌入式系统开发综述ARM开发工程师入门宝典

获取更多权威电子书请登录https://www.360docs.net/doc/602236080.html, 前言 嵌入式系统通常是以具体应用为中心,以处理器为核心且面向实际应用的软硬件系统,其硬件是整个嵌入式系统运行的基础和平台,提供了软件运行所需的物理平台和通信接口;而嵌入式系统的软件一般包括操作系统和应用软件,它们是整个系统的控制核心,提供人机交互的信息等。所以,嵌入式系统的开发通常包括硬件和软件两部分的开发,硬件部分主要包括选择合适的MCU或者SOC 器件、存储器类型、通讯接口及I/O、电源及其他的辅助设备等;软件部分主要涉及OS porting和应用程序的开发等,与此同时,软件中断调试和实时调试、代码的优化、可移植性/可重用以及软件固化等也是嵌入式软件开发的关键。 嵌入式系统开发的每一个环节都可以独立地展开进行详细的阐述,而本文的出发点主要是为嵌入式开发的初学者者提供一个流程参考。因为对于初学者在面对一个嵌入式开发项目的时候,往往面临着诸多困难,如选择什么样的开发平台?什么样的器件类型?在进行编译时怎样实现代码优化?开发工具该如何选择和使用?在进行程序调试时应该注意那些问题以及选择什么样的嵌入式OS 等等。希望通过本文,能帮助初学者了解有关ARM嵌入式系统开发流程。

获取更多权威电子书请登录https://www.360docs.net/doc/602236080.html, 目录 前言 (2) 1 嵌入式开发平台 (4) 1.1 ARM的开发平台: (4) 1.2 器件选型 (7) 2 工具选择 (11) 3 编译和连接 (13) 3.1 RVCT的优化级别与优化方向 (16) 3.2 Multifile compilation (21) 3.3调试 (22) 4 操作系统 (23) 4.1 哪里可以得到os 软件包 (Open Source and Linux Kernel) (25) 4.2 安装镜像 (26) 4.3 交叉编译 (26) 总结 (27)

ARM嵌入式基础知识

ARM嵌入式 目录 一、开发工具 二、操作系统 嵌入式linux与ARM开发板的入门建议 一、开发工具 二、操作系统 嵌入式linux与ARM开发板的入门建议 展开 ARM嵌入式简介 ARM(Advanced RISC Machines),既可认为是一个公司的名字,也可认为是对一类微处理器的统称。 ARM是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。 1991 年 ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用 ARM技术知识产权( IP )核的微处理器,即我们通常所说的 ARM 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于 ARM 技术的微处理器应用约占据了 32 位 RISC 微处理器 75 %以上的市场份额, ARM 技术正在逐步渗入到我们生活的各个方面。 ARM 公司是专门从事基于 RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的 ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的 ARM 微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用 ARM 公司的授权,因此既使得 ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。 ARM处理器的三大特点是:耗电少功能强、16位/32位双指令集和众多合作伙伴。 根据IEEE(国际电机工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(原文为devices used to control, monitor, or assist the operation of equipment, machinery or plants)。这主要是从应用上加以定义的,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。嵌入式系统的核心是嵌入式微处理器。 今天嵌入式系统带来的工业年产值已超过了1万亿美元,1997年来自美国嵌入式系统大会(Embedded System Conference)的报告指出,未来5年仅基于嵌入式计算机系统的全数字电视产品,就将在美国产生一个每年1500亿美元的新市场。美国汽车大王福特公司的高级经理也曾宣称,“福特出售的‘计算能力’已超过了IBM”,由此可以想见嵌入式计算机工业的规模和广度。1998年11月在美国加州举行的嵌入式系统大会上,基于RTOS的Embedded Internet成为一个技术新热点。在国内,“维纳斯计划”和“女锅计划”一度闹得沸沸扬扬,机

南邮嵌入式系统B实验报告2016年度-2017年度-2

_* 南京邮电大学通信学院 实验报告 实验名称:基于ADS开发环境的程序设计 嵌入式Linux交叉开发环境的建立 嵌入式Linux环境下的程序设计 多线程程序设计 课程名称嵌入式系统B 班级学号 姓名 开课学期2016/2017学年第2学期

实验一基于ADS开发环境的程序设计 一、实验目的 1、学习ADS开发环境的使用; 2、学习和掌握ADS环境下的汇编语言及C语言程序设计; 3、学习和掌握汇编语言及C语言的混合编程方法。 二、实验内容 1、编写和调试汇编语言程序; 2、编写和调试C语言程序; 3、编写和调试汇编语言及C语言的混合程序; 三、实验过程与结果 1、寄存器R0和R1中有两个正整数,求这两个数的最大公约数,结果保存在R3中。 代码1:使用C内嵌汇编 #include int find_gcd(int x,int y) { int gcdnum; __asm { MOV r0, x MOV r1, y LOOP: CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE LOOP MOV r3, r0 MOV gcdnum,r3 //stop // B stop // END } return gcdnum; } int main() { int a; a = find_gcd(18,9);

printf("gcdnum:%d\n",a); return 0; } 代码2:使用纯汇编语言 AREA example1,CODE,readonly ENTRY MOV r0, #4 MOV r1, #9 start CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE start MOV r3, r0 stop B stop END 2、寄存器R0 、R1和R2中有三个正整数,求出其中最大的数,并将其保存在R3中。 代码1:使用纯汇编语言 AREA examp,CODE,READONL Y ENTRY MOV R0,#10 MOV R1,#30 MOV R2,#20 Start CMP R0,R1 BLE lbl_a CMP R0,R2 MOVGT R3,R0 MOVLE R3,R2 B lbl_b lbl_a CMP R1,R2 MOVGT R3,R1 MOVLE R3,R2 lbl_b B . END 代码2:使用C内嵌汇编语言 #include int find_maxnum(int a,int b,int c)

6、汇编学习从入门到精通(荐书)

汇编学习从入门到精通Step By Step 2007年12月15日星期六00:34 信息来源:https://www.360docs.net/doc/602236080.html,/hkbyest/archive/2007/07/22/1702065.aspx Cracker,一个充满诱惑的词。别误会,我这里说的是软件破解,想做骇客的一边去,这年头没人说骇客,都是“黑客”了,嘎嘎~ 公元1999年的炎热夏季,我捧起我哥留在家的清华黄皮本《IBM-PC汇编语言程序设计》,苦读。一个星期后我那脆弱的小心灵如玻璃般碎裂了,为了弥补伤痛我哭爹求妈弄了8k大洋配了台当时算是主流的PC,要知道那是64M内存!8.4G硬盘啊!还有传说中的Celeon 300A CPU。不过很可惜的是在当时那32k小猫当道的时代,没有宽带网络,没有软件,没有资料,没有论坛,理所当然我对伟大的计算机科学体系的第一步探索就此夭折,此时陪伴我的是那些盗版光盘中的游戏,把CRACK_XXX文件从光盘复制到硬盘成了时常的工作,偶尔看到光盘中的nfo 文件,心里也闪过一丝对破解的憧憬。 上了大学后有网可用了,慢慢地接触到了一些黑客入侵的知识,想当黑客是每一个充满好奇的小青年的神圣愿望,整天看这看那,偷偷改了下别人的网页就欢喜得好像第一次偷到鸡的黄鼠狼。 大一开设的汇编教材就是那不知版了多少次的《IBM-PC汇编语言程序设计》,凭着之前的那星期苦读,考试混了个80分。可惜当时头脑发热,大学60分万岁思想无疑更为主流,现在想想真是可惜了宝贵的学习时间。 不知不觉快毕业了,这时手头上的《黑客防线》,《黑客X档案》积了一大摞,整天注来注去的也厌烦了,校园网上的肉鸡一打一打更不知道拿来干什么。这时兴趣自然转向了crack,看着杂志上天书般的汇编代码,望望手头还算崭新的汇编课本,叹了口气,重新学那已经忘光了的汇编语言吧。咬牙再咬牙,看完寻址方式那章后我还是认输,不认不行啊,头快裂了,第三次努力终告失败。虽然此时也可以爆破一些简单的软件,虽然也知道搞破解不需要很多的汇编知识,但我还是固执地希望能学好这门基础中的基础课程。 毕业了,进入社会了,找工作,上班,换工作成了主流旋律,每天精疲力尽的哪有时间呢?在最初的中国移动到考公务员再到深圳再到家里希望的金融机构,一系列的曲折失败等待耗光了我的热情,我失业了,赋闲在家无所事事,唯一陪伴我的是那些杂志,课本,以及过时的第二台电脑。我不想工作,我对找工作有一种恐惧,我靠酒精麻醉自己,颓废一段日子后也觉得生活太过无聊了,努力看书考了个CCNA想出去,结果还是被现实的就业环境所打败。三年时间,一无所获。 再之后来到女朋友处陪伴她度过刚毕业踏入社会工作的适应时期,这段时间随便找了个电脑技术工作,每月赚那么个几百块做生活费。不过这半年让我收获比较大的就是时间充裕,接触到了不少新东西,我下定决心要把汇编学好,这时我在网上看到了别人推荐的王爽《汇编语言》,没抱什么希望在当当网购了人生中的第一次物,19块6毛,我记得很清楚,呵呵。 废话终于完了,感谢各位能看到这里,下面进入正题吧。

不可不知的嵌入式工程师经验(总结篇)

不可不知的嵌入式工程师经验(总结篇) 本文将从技术和就业经验等角度为即将进入嵌入式开发的工程师们,详细讲述了嵌入的概念,嵌入式开发之间的异同以及应该如何做出选择。以下都是前辈的一些经验之谈,希望对大家有所帮助。 第一.工程师眼中的“嵌入式系统” 在工程师看来:着重理解“嵌入”的概念,主要从三个方面上来理解。 1.从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要靠外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现。目前的这种串口控制器芯片早已集成到CPU内部,还有PC机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到 1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目标基于ARM体系统结构下由intel进行整合后成Xscale内核的最高的处理器了。 2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。 3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的“嵌入”。 以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,因为毕竟嵌入式系统是计算

学好arm嵌入式的最佳方法----初学者必看

嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。 嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类: 一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support Package(像PC 的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。 另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全*软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有"花头"可做的),所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议等),掌握这些新技术的人当然很找。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。搞企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都得按客户要求改变,往往疲于奔命,重复劳动。相比而言,搞嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事。所开发的产品通常是通用的,不会因客户的不同而修改。一个产品型号开发完了,往往有较长一段空闲时间(或只是对软件进行一些小修补),有时间进行充电和休整。另外,从事嵌入式软件的每个人工作范围相对狭窄,所涉及的专业技术范围就是那些(ARM、RTOS、MPEG、802.11等),时间长了这些东西会越搞越有经验,卖卖老本,几句指导也够让那些初入道者琢磨半年的。若搞应用软件,可能下一个客户要换成一个完全不同的软件开发平台,那就苦了。

嵌入式经典书籍100册

嵌入式工程师必读100本专业书籍 ——从小白到大牛你只差这100本书《大话数据结构》 《鸟哥的linux私房菜》 《疯狂android讲义》 《第一行代码》 《linux内核设计与实现》 《驱动设计开发》 《linux内核解密》 《unix环境高级编程》 《linux内核设计与实现》 《essential C++》 《嵌入式linux》 《linux设备驱动》 《c语言深度解剖》 《linux下的c编程》 《C Primer Plus(第五版)》 《ARM体系结构与编程(第二版)》 《lINUX设备驱动开发详解(第三版)》 《android开发艺术探讨》 《c++plus》 《Unix环境高级编程》 《与大数据同行——学习和教育的未来》 《用户体验的要素》 《编程与艺术》 《ARM嵌入式体系结构与接口技术》 《cortex-m0接口编程》 《C语言程序设计:现代方法》 《C++ Primer》

《数据结构》(严蔚敏) 《算法导论》 《Linux设备驱动开发》 《代码大全》 《深入理解计算机系统》 《UNIX环境高级编程》 《计算机安全原理》 《UNIX网络编程》 《HeadFirst设计模式》 《linux驱动》(宋保华) 《C++ primer4》 《qt5精彩实例》 《ldd3》 《C++高级编程》 《c语言教程》 《实战linux编程精髓》 《ARM教程》 《JAVA编程思想》 《HTML+CSS网页设计与布局从入门到精通》《C语言深度解剖》 《深度实践嵌入式Linux系统移植》 《unix高级编程》 《c嵌入式一站式教学》 《编译原理》 《深度实践嵌入式Linux系统移植》《UNIX环境高级编程》 《linux网络编程》 《C语言程序设计》 《unix环境高级编程》 《嵌入式linuxc语言程序设计基础教程》

国嵌嵌入式linux学习视频

转:2018国嵌嵌入式linux学习视频 给各位学习嵌入式的童鞋参考一下,很好的教程哦。 最新公布的有两套培训视频,第1套为《国嵌嵌入式培训视频》-2440版,该套视频是国嵌使用2440开发板教案的现场培训班视频,包含了2018年1月最新版的《嵌入式体验入门班》、《嵌入式Linux应用程序开发》、《ARM系统进阶班》、《嵌入式Linux内核驱动进阶班》完整视频。 第2套为《国嵌嵌入式培训视频》-6410版,该套视频是国嵌使用6410开发板教案的现场培训班视频,包含了2018年1月最新版的《嵌入式体验入门班》、《嵌入式Linux应用程序开发》、《嵌入式Linux内核驱动进阶班》完整视频。 特别提醒:如果你是嵌入式初学者,并且还没有购买开发板,建议你下载《国嵌嵌入式培训视频》-2440版来进行学习,如果你已经购买了6410开发板,那建议直接下载《国嵌嵌入式培训视频》-6410版来学习。 如果还有同学需要购买国嵌《ARM系统深入班》、《ARM系统深入班》、《嵌入式Linux内核驱动深入班》、《系统移植专题班》《嵌入式linux高级工程班》,可以自己去联系国嵌https://www.360docs.net/doc/602236080.html, 6410版课程下载说明:该套6410课程里面包含了《嵌入式体验入门班》<不同于2440)、《应用程序开发班》<同2440版)、《嵌入式Linux内核驱动进阶班》<不同于2440),并且同时包含了对tiny6410/mini6410,OK6410的支持,大家下载时根据自己情况选择适合自己的部分下载。 国嵌2018-2440最新版(2018-1月> 公开视频光盘目录结构 国嵌视频1.iso -学习方法与课程体系介绍<学前必看) -学习方法介绍.avi -国嵌嵌入式课程体系.pdf -嵌入式Linux学习方法.pdf -国嵌课程1-嵌入式入门体验班<上) -第1天<嵌入式系统概述) -国嵌体验入门班-1-1<嵌入式系统概述).avi -国嵌体验入门班-1-2

嵌入式学习心得

嵌入式学习心得 如何学习嵌入式系统(基于ARM平台) 前言 网上看到众多网友都问了关于嵌入式系统方面的很多问题,很多都可在这里找到答案,希望我的这篇文章能给他们以启发。也请大家不要轻易转载。 一、嵌入式系统的概念 着重理解“嵌入”的概念 主要从三个方面上来理解。 1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC 机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目标基于ARM体系统结构下由intel进行整合后成Xscale内核的最高的处理器了。 2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。 3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的“嵌入”。 以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,历为毕竟嵌入式系统是计算机范畴下的一门综合性学科 二、嵌入式系统的分层与专业的分类。 嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。 1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。 硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、C语言。 2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows 下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运

一个初学者的嵌入式培训体会

一个初学者的嵌入式培训体会现在嵌入式做为计算机发展的一个新的方向越来越得到社会的重视。随之而来的是很多培训班的诞生,但是如何能在琳琅满目的培训机构中找到一个能真正学到东西的培训班呢,这是摆在众多想学嵌入式的人面前的第一个问题。我在了解了众多培训机构并且试听之后,最终选择了Tocore 嵌入式培训,之所以选择,是因为我看重老师的实际能力和认真负责的态度。我非常荣幸能够成为Tocore中的一员。 嵌入式开发,做为一个新的计算机发展方向,已经越来越受到社会的重视,社会上的需要也十分巨大,可是真正懂得嵌入式开发的人才缺不是很多,归结去原因主要是一下几个方面: 一:因为它是新兴的一个发展方向,懂得的人自然不多。 二:学习嵌入式需要比较庞杂的知识结构。操作系统、微机原理、C/C++语言、数据结构等。 三:嵌入式学习,上手很困难,不知道从哪里着手去学习。 在刚开始接触的时候,我也是抱着本书,自己摸索,可是越看越迷茫,连很多书里的名词都不知道是什么意思,去网上查也没有得到答案。可是在Tocore我得到了很好的指点,在这里,由于老师都是十分有经验的项目经理,他们懂得如何去学习,从哪里开始入手,这对于我这样的背景知

识比较薄弱又接触时间比较短的人来说实在是太有帮助了。 虽然课程还没有完,可是在这段时间的学习中,我按照老师的指导在完善的课程体系下进行系统的学习,已经掌握了U-boot、kernel以及linux移植的基本框架,(我想在今后的学习中一定会对这些知识更加熟悉以至精通!)这对于2个月前什么都不懂的我来说已经是很大的提高了!用得是ARM9的板子,这也是市场上现在比较新的,比较流行的板子,很多公司在实际的产品开发中就用的是ARM9。在课堂上,老师的讲解和我们的练习相结合,理论联系实际。老师除了讲解知识外,还结合了大量的实际案例和操作,这对于我对问题的理解和知识的记忆有很大帮助。 最后谈谈对学习态度的一点看法。嵌入式学习,是比较耗时的,前期需要很多知识做铺垫,有很多人在这个过程中走了不少弯路,于是开始失去耐心、失去信心,以至最终放弃学习。所以我想有必要强调一下问题,在刚开始的时候,自己什么都不懂,可是学习的愿望很强烈,每次上课都希望上完课就能如何如何,可是下来发现自己好像离自己原本的目标还很远,于是心里着急,自己跑到网上搜了很多资料,每天乱看,可是并没有很大的帮助。我想说的是,学习嵌入式一定要有耐心和毅力,不能急躁,按照课程的安排自己多做一些总结和练习,等到知识慢慢的积累下来就会有一种豁然开朗的感觉。

嵌入式软件工程师职业规划

嵌入式软件工程师职业规划 谢谢大家,非常高兴有机会再次回到校园和大家共同探讨“软件工程师职业规划”这样一个话题。 在这个讲座开始之前,我想让大家先看一个图片,这个图片是实景拍摄,在北京的中关村,是招聘会的一个现场的画面,密密麻麻的全是人。大家看到之后有什么感觉呢?你们可能感觉很有震撼力,对于我来说就是勾起了痛苦的回忆。确实想找一份自己满意的工作不是很容易,特别是对于我们软件专业的学生来说去找一份工作就需要规划,我今天就把我的一些经验介绍给大家,使大学能够及早地规划好自己的人生。 大家最小的也是大一的吧,我觉得即便是大一,离找工作也不远了。我们怎么使我们自己在面临找工作难的环境的时候能够有很强的竞争力,我觉得大家应该从大一的时候就开始有意识地去规划自己的人生、去塑造自己,使自己能适应这样的环境,这就是我们今天要讲的一个主题。 今天我们的主题是做软件的人的规划,我们这个主题有以下几个要点:第一,我们要分析一下中国软件产业的发展现状,大家既然将来要从事这个行业,要在这个行业“混碗饭吃”,所以一定要了解我国现今的软件行业到底发展到一个什么样的时期,它有什么特点,我觉得这个是我们应该了解的第一个话题。第二,我们要了解一下我们国家目前软件人才的体系结构,它有什么特点,它出了什么问题。因为只有了解了这一点,我们大家才能够对症下药,才能按照这样的需求去规划我们的知识、技能等。第三点,我就跟大家讲一下,我们要做一个合格的软件工程师或者准备做一个合格的软件工程师应该具备哪些基本的素质和知识。这些基本的素质和知识往往是你第一次去面试一个公司的时候,那个面试官要考核你的最主要的东西。 第一个,我们先来看一下我们国家软件行业发展的现状。软件是IT产业中的一个环节。硬件、软件、IT服务是组成IT产业结构的三大块。软件和硬件看起来区别很大,但是对于我们来说动起来其实差别不大。因为在硬件中的一些理论、一些方法现在已经慢慢渗透到软件行业了。IT服务是个什么概念呢?大家知道,软件也好,硬件也好,它们不断地发展,越来越壮大,那么对于一个企业来说,它如何能够从IT的发展中受益呢?比如说一个企业想有一套这样的软件帮助它进行业务的管理,那它怎么能方便的获得这样的一些利益呢?IT服务就是对于这样的情况发展起来的一个分支。大家可以这样理解:软件和硬件是核心,IT服务是包在外面的接口,我们每个个人也好、每一个这样的企业也好,可以通过IT服务去获取一些利益。这就是我们简单地给大家介绍一下IT产业结构的一些方面。 我们主要还是搞软件,下面我就来给大家介绍一下软件行业发展的概况,特别是在我国软件行业的发展情况。我们通过数据可以看出我们国家的IT行业特别是软件行业呈现一个非常快的上升的势头,连续5年以28%的速度递增。这样的数据告诉我们IT行业在我国应该还是一个飞速发展上升的时期。再就是现在的社会对软件工程师也好、网络工程师也好,对人才的需求非常大,目前每年至少在40万人以上,这是一个相当庞大的数字,大家可以计算一下,我们国家每年毕业的大学生是多少,可以分析一下这个需求量在大学毕业生中所占的比例。

嵌入式Linux之我行 史上最牛最详细的uboot移植,不看别后悔

嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一) 嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux 的朋友提供方便。如有错误之处,谢请指正。 ?共享资源,欢迎转载:https://www.360docs.net/doc/602236080.html, 一、移植环境 ?主机:VMWare--Fedora 9 ?开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 ?编译器:arm-linux-gcc-4.3.2.tgz ?u-boot:u-boot-2009.08.tar.bz2 二、移植步骤 本次移植的功能特点包括: ?支持Nand Flash读写 ?支持从Nor/Nand Flash启动 ?支持CS8900或者DM9000网卡 ?支持Yaffs文件系统 ?支持USB下载(还未实现) 1.了解u-boot主要的目录结构和启动流程,如下图。

u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。各个部分的流程图如下:

2. 建立自己的开发板项目并测试编译。 目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM 处理器的支持,有smdk2400、smdk2410和smdk6400,但没有2440,所以我们就在这里建立自己的开发板项目。 1)因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目,取名叫my2440 2)因2440和2410的资源差不多,所以就以2410项目的代码作为模板,以后再修改

嵌入式linux实验指导书

目录 实验一 linux常用指令练习 (3) 1、在线帮助指令 (3) 2、linux开关机及注销指令。 (3) 重启指令: (3) 1)、reboot命令 (3) 2)、init 6命令 (3) 关机指令: (3) 1)、halt命令 (3) 2)、poweroff命令 (4) 3)、init 0命令 (4) 4)、shutdown命令 (4) 注销指令: (4) 3、用户管理命令 (4) 1)、用户切换su命令 (4) 2)、添加用户命令adduser/useradd (5) 3)、删除用户及更改用户属性 (5) 4)、设置用户密码 (6) 5)、查看用户信息 (6) 4、文件目录操作指令 (7) 1)、改变当前工作目录命令(cd) (7) 2)、显示当前路径pwd (7) 3)、查看当前目录下的文件命令ls (7) 4)、新建目录指令mkdir (8) 5)、删除目录命令rmdir (8) 6)、新建文件命令touch (8) 7)、删除文件指令rm (8) 8)、文件和目录的复制命令cp (8) 9)、文件和目录的移动命令mv (9) 10)、更改文件或目录的使用权限chmod (9) 11)、查看文件的命令cat (9) 12)、文件链接命令ln (9) 13)、文件压缩解压命令 (10) 5、网络相关命令 (11) 6、磁盘管理命令 (11) 7、挂载文件命令mount (12) 8、其他系统命令 (12) 练习1: (13) 练习2: (15) 练习3: (16) 练习4: (21) 实验二 VI文本编辑器的使用 (24) 1、练习使用VI指令 (24) 2、利用VI编写一个hello.c文件 (24)

相关文档
最新文档